WikiDer > Цитрин (язык программирования)
![]() | Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
![]() | |
Парадигма | Объектно-ориентированный, на основе прототипа |
---|---|
Разработано | Габор де Муидж, Аавеш Джилани |
Разработчик | Габор де Муидж, Аавеш Джилани |
Впервые появился | 2014 |
Стабильный выпуск | 0.9.2 / 2020 |
Печатная дисциплина | динамичный |
Операционные системы | Кроссплатформенность (мультиплатформенность) |
Лицензия | BSD |
Расширения имени файла | ctr |
Интернет сайт | цитрин-ланг |
Основной реализации | |
C | |
Под влиянием | |
Болтовня Себя |
Цитрин универсальный язык программирования за Кроссплатформенность (мультиплатформенность) операционные системы. Он ориентирован на удобочитаемость и ремонтопригодность. Читаемость достигается за счет синтаксического и концептуального минимализма. Язык в значительной степени вдохновлен Болтовня и Себя но имеет некоторые очень отличительные особенности. Как и Smalltalk, Citrine рассматривает все как объекты и фокусируется на отправке сообщений этим объектам. Однако в отличие от Smalltalk, в Citrine отсутствует понятие класса. В этом отношении Цитрин больше похож на Self и JavaScript потому что он использует прототипы. Сочетание Smalltalk-подобных сообщений и прототипов - вот что делает Citrine уникальным.
Начиная с версии 0.7 Citrine сосредоточился на поддержке родных человеческих языков, а не только на английском, чтобы помочь людям уменьшить количество ошибок из-за путаницы и недопонимания из-за языковых барьеров. В Citrine 0.7 и выше есть переводчик для перевода между человеческими языками.
Синтаксис
Цитрин имеет очень ограниченный синтаксис и очень тесно связан со Smalltalk. Все в Цитрине объект, есть 5 литералов:
Ноль
Верно, неверно
0,1,2,3
'Нить'
{... params .. ... блок кода ...}
Литерал блока кода использует трубка символ для отделения параметров от логики '|', если параметры отсутствуют, вместо '' следует использовать обратную косую черту.
Citrine поддерживает только полнострочные комментарии, комментарии начинаются с символа «#».
Программа Citrine - это в основном последовательность сообщений, отправляемых объектам. Например, чтобы определить, является ли 5 четным числом, сообщение «четный?» отправляется на номер 5.
5 четное?
Это называется унарный сообщение, потому что оно не принимает аргументов. А двоичный сообщение всегда представляет собой один символ UTF-8; это отличается от Smalltalk, где есть фиксированный набор двоичных сообщений. Вот пример:
6 + 7.
Здесь двоичное сообщение «+» отправляется на номер 6, аргумент этого двоичного сообщения - «7», это приведет к созданию нового числового объекта «13». Для присвоения результата этой операции переменной используется оператор присваивания:: =.
общий := Деньги + долг.
Также обратите внимание, что каждая строка в программе Citrine заканчивается точкой, как и в Smalltalk. Помимо унарных и двоичных сообщений, Citrine предлагает сообщения с ключевыми словами, которые принимают аргументы, перемежающиеся с самим сообщением, точно так же, как Smalltalk и Цель-C.
☞ Икс := Число между: 1 и: 5.
Приведенный выше фрагмент кода вернет логический объект. Истинный.
Поток управления
Как и в Smalltalk, поток управления в Citrine реализован за счет стратегического использования сообщений. Например, для написания условного оператора требуется отправить блок кода в логическое значение.
(Деньги > цена) истинный: { ✎ записывать: «Да, вы можете себе это позволить». }.
Точно так же цикл for записывается как:
{ :шаг ✎ записывать: 'это шаг:' + шаг. } * 10.
Чтобы выйти из цикла в Citrine, нужно отправить сообщение break в логическое значение, это позволяет условный выход из цикла без необходимости вычитать условия разрыва:
{ :я (я = 3) перемена. ✎ записывать: я.} * 5.
Трубопроводы
В отличие от Smalltalk, в Citrine нет точки с запятой для отправки сообщения исходному получателю. Вместо этого у Citrine есть токен-запятая ',', используемый для цепочки сообщений с ключевыми словами, это позволяет писать в стиле Unix трубопроводы. В следующем коде используется конвейерный синтаксис для замены всех символов 'o' нулями, результирующая строка будет примерно такой: '1010101 ...'.
onesAndZeroes := '1o1o1o1o1o1' расколоть: 'о', карта: mapUp, присоединиться: '0'.
Прототипы
Самое большое отличие от Smalltalk - это использование прототипов. Цитрин не имеет понятия класса, он знает только об объектах. Объект создается с использованием нового сообщения:
Кот := Объект новый.
Этот объект можно заставить отвечать на сообщения, приказав объекту прослушивать события. Это что-то вроде методов добавления в таких языках, как Ява:
Кот на: 'мяу' делать: { Ручка записывать: 'мяу!'.}.
Как было сказано выше, наследование основано на прототипах. Чтобы получить объект от другого объекта, новое сообщение должно быть отправлено расширяемому объекту:
☞ Животное := Объект новый.Животное на: 'makeSound' делать: { ✎ записывать: '?'.}.☞ Кот := Животное новый.Кот на: 'makeSound' делать: { ✎ записывать: 'мяу!'.}.☞ Том := Кот новый.Том makeSound.
Unicode
Citrine широко использует юникод UTF-8, и объекты, и сообщения могут состоять из символов юникода. Длина всей строки рассчитывается с использованием UTF-8. Цитрин различает длину и размер строки в байтах:
'текст' длина.
возвращает длину строки в указателях кода UTF-8, а:
'текст' байты.
возвращает количество байтов.
Определение объема
Цитрин использует динамическое определение вместо лексическая область видимости. Таким образом, нет необходимости внедрение зависимости или глобальные переменные, но об этом может быть труднее, чем о лексической области видимости. Это похоже на языки программирования, такие как Emacs Lisp и БАЗОВЫЙ. В кодовых блоках вар ключевое слово необходимо использовать для объявления локальной переменной.
Следующая демонстрация делает объект Mailer доступным в модуле:
Заявление := { ☞ почтовик := Почтовая программа новый. модуль пробег.}.
Смотрите также
- Болтовня язык программирования
Рекомендации
- демо в сообществе новых языков программирования
- Цитрин Обзор Jaxenter
- Объявление на Reddit
- InfoWorld интервью
внешняя ссылка
- Официальный веб-сайт
- исходный код, Исходный код на github