Cat — функциональный стековый язык программирования вдохновлен языком программирования Joy, от которого он отличается тем, что обеспечивает статическую типизацию с выводом типов (как, например, в ML и Haskell). Это один из подходов к решению проблемы надёжности, существующей в стековых языках[2] Так же включает макроязык MetaCat[3], позволяющий расширение языка Cat путём переопределения термов.
| Cat | |
|---|---|
| | |
| Класс языка | Конкатенативный язык программирования |
| Появился в | 2006[1] |
| Автор | Christopher Diggins |
| Выпуск | 1.0 beta 4. (16 апреля 2008) |
| Система типов | строгая, статическая, с выводом типов |
| Испытал влияние | Joy, СIL, Java bytecode, Haskell, Factor, Forth |
| Лицензия | MIT License |
| Сайт | cat-language.com |
Cat разрабатывался как высокоуровневый промежуточный язык, который также может использоваться как самостоятельный язык для разработки простых приложений. Таким образом, он занимает нишу аналогичную PostScript. Другое назначение этого языка — преподавание основных понятий программирования.
define fib {
dup 1 <=
[]
[dup 1 - fib swap 2 - fib +]
if
}
1
[dup fib write ", " write inc]
[dup 16 lteq]
while
"..." writeln
define fact {
dup 1 <=
[pop 1]
[dup 1 - fact *]
if
}
0
[dup write "! = " write dup fact writeln inc]
[dup 16 lteq]
while
Базовая реализация Cat представляет собой написанный на C# интерпретатор[4] и компилятор в CIL-код. Доступны также интерпретаторы Cat, написанные на Scheme[5], JavaScript[6], Python[7], Haskell[8], Ωmega (англ.)[9], Standard ML[10].
В настоящее время Christopher Diggins работает над проектом cvml (Chickadee Virtual Machine Language)[11], написанной на C++ виртуальной машиной.
Это заготовка статьи о компьютерных языках. Вы можете помочь проекту, дополнив её. |