Lt304888.ru

Туристические услуги

Cat (язык программирования)

23-10-2023

Cat
Класс языка:

Конкатенативный язык программирования

Появился в:

2006[1]

Автор(ы):

Christopher Diggins

Релиз:

1.0 beta 4. (16 апреля 2008)

Типизация данных:

строгая, статическая, с выводом типов

Испытал влияние:

Joy, СIL, Java bytecode, Haskell, Factor, Forth

Лицензия

MIT License

Сайт:

cat-language.com

Cat — функциональный стековый язык программирования вдохновлен языком программирования Joy, от которого он отличается тем, что обеспечивает статическую типизацию с выводом типов (как, например, в ML и Haskell). Это один из подходов, к решению проблемы надёжности, существующей в стековых языках[2] Так же включает макроязык MetaCat[3], позволяющий расширение языка Cat путём переопределения термов.

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], написанной на С++ виртуальной машиной.

Примечания

  1. The Cat Programming Language, Lambda the Ultimate
  2. Factor: a dynamic stack-based programming language (англ.) — Slava Pestov, Daniel Ehrenberg, Joe Groff. Dynamic Languages Symposium 2010, см. раздел Related Works
  3. MetaCat
  4. Cat - A Statically Typed Programming Language Interpreter in C#, Christopher Diggins, 4 Nov 2006, The Code Project
  5. scheme-cat - a separate project for embedding Cat in Scheme by Ben Chambers
  6. Online Cat interpreter
  7. Cat in Python - implementation by Andrew Nelis
  8. Cat in Haskell
    На основе: Techniques for Embedding Postfix Languages in Haskell by Chris Okasaki. Haskell Workshop, October 2002, pages 105-113.+source code
  9. Cat interpreter in Omega using thrists (threaded lists) by Gabor Greif
  10. Typed callcc in a stack-based language
  11. cvml на Google Code

Литература

  • Christopher Diggins Cat: A Functional Stack-Based Little Language (англ.) // Dr. Dobb's Journal. — April 15, 2008.
  • Christopher Diggins. Typing Functional Stack-Based Languages (PDF, 0.7 МБ). Submitted for consideration to ICFP 2007
  • Christopher Diggins. Simple Type Inference for Higher-Order Stack-Oriented Languages (PDF, 100Kb), Technical Report Cat-TR-2008-001, Draft April 20, 2008

Ссылки

  • cat-language.com — оф. сайт
  • cat-language, The Cat Programming Language Project на Google Code
  • Cat Language discussion group
  • Christopher Diggins's Home Page


Cat (язык программирования).

© 2020–2023 lt304888.ru, Россия, Волжский, ул. Больничная 49, +7 (8443) 85-29-01