ПикоЛисп
Парадигмы | Функциональный , процедурный , объектно-ориентированный , декларативный , рефлексивный , мета. |
---|---|
Семья | Лисп |
Разработано | Александр Бургер |
Впервые появился | 1988 год |
Дисциплина набора текста | утка , динамичная , сильная |
Язык реализации | ЛЛВМ , ПикоЛисп |
ТЫ | ПОСИКС |
Лицензия | С |
Расширения имен файлов | .л |
Веб-сайт | пиколис |
Диалекты | |
Эрзац PicoLisp, miniPicoLisp [1] |
PicoLisp — язык программирования, диалект языка Lisp . Он работает в операционных системах , включая Linux и других, совместимых с интерфейсом переносимой операционной системы (POSIX). Его наиболее характерными чертами являются простота и минимализм . Он построен на одном внутреннем типе данных : ячейке. На уровне языка программист может использовать три разных типа данных (числа, символы и списки), представленные ячейками и различающиеся битами в конце ячейки. [2] Это бесплатное программное обеспечение с открытым исходным кодом , выпущенное под лицензией MIT (X11).
Особенности [ править ]
Функции могут принимать произвольные типы и количество аргументов. Макросы нужны лишь в редких случаях и реализуются с помощью функции кавычек. PicoLisp не включает лямбда-функцию Лиспа . Это связано с тем, что функция quote изменена и теперь возвращает все свои аргументы невычисленными, а не только car
из первого. [3]
Особенностью является встроенная функция создания, чтения, обновления и удаления (CRUD). Постоянные символы являются первоклассными гражданами (объектами), они автоматически загружаются из файлов базы данных при доступе и записываются обратно при изменении. Приложения пишутся с использованием иерархии классов сущностей и отношений .
Другие функции включают в себя: механизм Prolog , механизм базы данных и запросы к базе данных, распределенные базы данных, встраивание функций языка C и собственные вызовы функций C, управление дочерними процессами, межпроцессное взаимодействие браузера , графический интерфейс пользователя (GUI) , а также интернационализацию и локализацию .
История [ править ]
В 1980-х годах PicoLisp начал разработку на Macintosh и использовался в коммерческих приложениях. [ который? ] развитие с тех пор. [ нужна ссылка ] Дизайн PicoLisp больше всего похож на первую версию MacLisp, Interlisp и, главным образом, на Portable Standard Lisp. [4] Он был портирован на DOS и SCO Unix . С 1993 года он использовался в основном в Linux. В середине 1990-х годов были добавлены функции базы данных.
Первые версии были написаны на смеси языков C и ассемблера . В 1999 году была сделана первая переписанная версия с нуля, полностью на языке C. В 2002 году эта версия была выпущена под лицензией GNU General Public License (GNU GPL). В 2010 году она была изменена на лицензию MIT/X11.
В 2009 году была выпущена 64-битная версия, еще одна переписанная, на этот раз написанная на обобщенном ассемблере, который, в свою очередь, реализован на PicoLisp. В этой версии добавлена поддержка сопрограмм .
В декабре 2010 года версия Java под названием Ersatz PicoLisp . была выпущена [5]
В сентябре 2014 года Бургер объявил о проекте PilMCU в списке рассылки разработки PicoLisp — попытке совместно с Джорджем Орайсом реализовать PicoLisp напрямую на аппаратном уровне. [6]
В июле 2015 года Burger анонсировала PilOS — операционную систему PicoLisp, минимальный прототип, основанный на модификации PilMCU, предназначенной для встроенных приложений. [7] Он работает на стандартном оборудовании ПК x86-64, непосредственно из BIOS и включает в себя все функции 64-битного PicoLisp (за исключением вызовов собственных функций, поскольку нет другой встроенной среды, такой как стандартная библиотека C); в принципе, он работает как собственная операционная система. [8]
Летом 2016 года была начата разработка PilBox («PicoLisp Box») — универсального для Android приложения , позволяющего писать приложения на чистом PicoLisp. Он до сих пор развивается и поддерживается. [9]
В 2021 году PicoLisp был повторно реализован в LLVM и выпущен как pil21 . Исходный язык, скомпилированный в LLVM-IR, также имеет синтаксис PicoLisp.
1958 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ЛИСП 1, 1.5, ЛИСП 2 (заброшенный) | |||||||||||||||
Маклисп | |||||||||||||||
Интерлисп | |||||||||||||||
леев | |||||||||||||||
Лисп-машина Лисп | |||||||||||||||
Схема | Р5РС | Р6РС | R7RS маленький | ||||||||||||
НОЛЬ | |||||||||||||||
ЗИЛ (язык реализации Zork) | |||||||||||||||
Франц Лисп | |||||||||||||||
Общий Лисп | стандарт ANSI | ||||||||||||||
Лисп | |||||||||||||||
Схема СО | |||||||||||||||
XLISP | |||||||||||||||
Т | |||||||||||||||
На схеме | |||||||||||||||
Эмакс Лисп | |||||||||||||||
АвтоЛИСП | |||||||||||||||
ПикоЛисп | |||||||||||||||
Гамбит | |||||||||||||||
EuLisp | |||||||||||||||
ИСЛИСП | |||||||||||||||
ОпенЛисп | |||||||||||||||
Схема PLT | Ракетка | ||||||||||||||
новыйЛИСП | |||||||||||||||
GNU Коварство | |||||||||||||||
Визуальный ЛИСП | |||||||||||||||
Кложур | |||||||||||||||
Дуга | |||||||||||||||
ЛФЭ | |||||||||||||||
Он | |||||||||||||||
Хиалисп |
Ссылки [ править ]
- ^ «Загрузка ПикоЛисп» . Лаборатория программного обеспечения . Проверено 18 ноября 2018 г.
- ^ Бургер, Александр. «Внутренние структуры» . Лаборатория программного обеспечения . Проверено 18 ноября 2018 г.
- ^ «Даже мелкие детали имеют значение!» .
- ^ «Re: Корни PicoLisp» .
- ^ Бургер, Александр (8 мая 2013 г.). «Эрзац ПикоЛисп» . Лаборатория программного обеспечения .
- ^ «Анонс: PicoLisp в аппаратном обеспечении» .
- ^ «PilMCU мертв – да здравствует PilOS!» .
- ^ «PicoLisp Wiki: Пилос» .
- ^ «PicoLisp PilBox в Google PlayStore» .