LINUX.ORG.RU

Улучшенный документ стандарта языка программирования Common Lisp

 ,


0

4

Альтернатива официальному стандарту ANSI X3.226-1994 (ANSI INCITS 226-1994), бесплатно и в лучшем качестве с индексом.

http://cvberry.com/tech_writings/notes/common_lisp_standard_draft.html

PDF файл с индексом:

http://cvberry.com/downloads/cl-ansi-standard-draft-w-sidebar.pdf

Исходные коды:

https://gitlab.com/vancan1ty/clstandard_build

Ответ на: комментарий от monk

Размером почти как стандарт C++14

Ну да, такой же монстр. Только вот цепепе оказался более востребованным для среднего ума.

anonymous ()
Ответ на: комментарий от Oxdeadbeef

Всё проще. C и C++ просто оказались быстрее. Поэтому C убил Lisp-машины, а C++ не даёт развернуться Common Lisp'у.

monk ★★★★★ ()
Ответ на: комментарий от monk

C++ не даёт развернуться Common Lisp'у.

А Микрософт злонамеренно и коварно не дало развернуться БолженОСу. Ага.

Stahl ★★☆ ()
Ответ на: комментарий от Stahl

А Микрософт злонамеренно и коварно не дало развернуться БолженОСу. Ага.

А тебе не даёт развернуться дилемма о пустом базовом классе. Ага.

anonymous ()
Ответ на: комментарий от monk

Всё проще. C и C++ просто оказались быстрее. Поэтому C убил Lisp-машины, а C++ не даёт развернуться Common Lisp'у.

Согласен на счёт Си. Насчёт цепепе - тут вопрос. Всё-таки дело, наверное, в синтаксисе. Для большинства проникнуться умом к мощи S-выражений - непомерная для ума задача. Другое дело сахар для однопроходного компилятора под соусом фигурных скобочек. Ещё и работает, в конечном итоге, быстрее на порядок. (Если не падает от SIGSEGV, конечно, к чему цепепе программисты привыкают где-то за год упорных тренировок. Лол.)

anonymous ()
Ответ на: комментарий от iZEN

Всё равно Modula-3 лучше и продуманнее этих ваших недоязычков от программирования.

Да уж.

anonymous ()
Ответ на: комментарий от anonymous

Для большинства проникнуться умом к мощи S-выражений - непомерная для ума задача.

Если бы можно было их отвязать от GC...

monk ★★★★★ ()
Ответ на: комментарий от monk

Если бы можно было их отвязать от GC...

GC - это круто, на самом деле. Не потому, что некоторые испытывают страх в коленках при одной только мысли о ручном управлении памятью. Ну, в самом деле, какая малость вызвать free(), или положиться на деструктор в цепепе. А потому, что сама концепция централизованного управления памятью куда более логична и лаконична, чем размазывание подчисток и подтёрок по всей кодовой базе. Конечно, GC по факту не столь предсказуем, чем все эти RAII, но это не мешает писать на Java и там и здесь, причём с успехом таким, о котором даже любителям цепепе приходится только мечтать и с горечью признавать, что их любимый монстро-язык становится всё меньше и меньше востребованным. Вперёд вышли языки именно с GC - аля Java, JavaScript, Python и т.д. Так что дело не в GC.

anonymous ()
Ответ на: комментарий от dave

Питон прямо вырос в моих глазах. Я думал, там банальный подсчет ссылок

Так и есть. GC там используется при необходимости, когда есть циклические ссылки.

anonymous ()
Ответ на: комментарий от dave

Dragon book давно читал? Или какой-нибудь аналог.

anonymous ()
Ответ на: комментарий от Bad_ptr

а почему ещё никто не написал макрос для статической проверки типов

В Racket написали. Typed/racket реально мегамакрос.

В Common Lisp статический проверяльщик поломает весь CLOS и большую часть библиотеки CL.

monk ★★★★★ ()
Ответ на: комментарий от monk

В Common Lisp статический проверяльщик поломает весь CLOS и большую часть библиотеки CL

Почему? Ну и можно написать свою библиотеку, которая от этого не поломается и пользоваться ей.

Bad_ptr ★★★★ ()
Ответ на: комментарий от Bad_ptr

Почему?

Потому что в CLOS метод может измениться в произвольный момент (и изменить свой тип). Причём, если переопределение defun можно запретить, то добавление defmethod — суть CLOS.

Ну и можно написать свою библиотеку, которая от этого не поломается и пользоваться ей.

Это уже будет не CL. Можно тогда просто взять typed/racket.

monk ★★★★★ ()

PDF файл с индексом

Собранный без hyperref-а...

anonymous ()
Ответ на: комментарий от anonymous

Forth компактнее модулы

Это да. Но Forth требует перестройки мозга. А на это времени не у всех хватит. Modula же изучается в обозримое время, и команда разработчиков-единомышленников для решения поставленных задач создаётся вокруг этого простого языка структурного программирования (безопасного аналога Си) довольно быстро. Разобраться в коде на Modula новичкам труда не составит, в отличие от зауми костылей и исключений на C/C++.

iZEN ★★★★★ ()
Ответ на: комментарий от Bad_ptr

Ну и можно написать свою библиотеку, которая от этого не поломается и пользоваться ей.

это какбе можно сказать про множество предлагаемых к реализации в любых языках ломающих фич - «можно же переписать так, чтобы работало». А что при этом делать с тьмой тем (ну или хотя бы с десятком - языкозависимо) уже имеющихся либ и программулин?

arkhnchul ★★ ()
Ответ на: комментарий от iZEN

Modula же изучается в обозримое время, и команда разработчиков-единомышленников для решения поставленных задач создаётся вокруг этого простого языка структурного программирования

а что команда будет делать, когда ей потребуется писать, скажем, в мускульную или редисовскую базу? Файл с жсоном или хмл-ю распарсить? вытащить примитивы из svg и немношк поиграть с точками?

если что - это вполне себе вопросы, и если описанное таки таки делается (желательно не через костыльные обертки к сишным либам), то хотелось бы знать, как.

ЗЫ вот для меня модула - язык из великого множества «можно очень красиво считать факториалы, но как только становится нужно как-то взаимодейтсвовать с окружающей жестокой голактегой...»

arkhnchul ★★ ()
Ответ на: комментарий от anonymous

Тогда отбой. Рано еще питончиком интересоваться. Вот, когда завезут настоящий GC. Только случится ли это?

dave ★★★★★ ()
Ответ на: комментарий от anonymous

Значит всё что запилено на данный момент на бетоне - банальные несложные приложения?

А разве нет? Есть хоть одно приложения хотя бы на миллион строк?

monk ★★★★★ ()
Ответ на: комментарий от monk

Сложное приложение => хреново спроектированное приложение. Мне начинает казаться что речь идёт именно об этом. Тогда о каких технических преимуществах может идти речь?

anonymous ()
Ответ на: комментарий от honix

https://github.com/carp-lang/Carp

Это Rust со скобками. Причём без std::rc.

и еще один https://github.com/wolfgangj/bone-lisp тоже, похоже, заглох

Интерпретатор без массивов и хэшей. Это грустно.

----

Вроде нашёл то, что надо: https://github.com/tomhrr/dale

Есть макросы, есть сишные типы, макросы могут быть типизированные, на типах и макросах можно сочинить даже монады.

monk ★★★★★ ()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от anonymous

Сложное приложение => хреново спроектированное приложение. Мне начинает казаться что речь идёт именно об этом.

В ядре линукса полтора десятка миллионов строк. Он хреново спроектирован?

monk ★★★★★ ()
Ответ на: комментарий от monk

--recursive

3 Components

    3.1 Compute (Nova)
    3.2 Networking (Neutron)
    3.3 Block Storage (Cinder)
    3.4 Identity (Keystone)
    3.5 Image (Glance)
    3.6 Object Storage (Swift)
    3.7 Dashboard (Horizon)
    3.8 Orchestration (Heat)
    3.9 Workflow (Mistral)
    3.10 Telemetry (Ceilometer)
    3.11 Database (Trove)
    3.12 Elastic Map Reduce (Sahara)
    3.13 Bare Metal (Ironic)
    3.14 Messaging (Zaqar)
    3.15 Shared File System (Manila)
    3.16 DNS (Designate)
    3.17 Search (Searchlight)
    3.18 Key Manager (Barbic)
aedeph_ ★★ ()
Последнее исправление: aedeph_ (всего исправлений: 1)
Ответ на: комментарий от iZEN

тогда почему именно 'модула-3'? а не modula-2, oberon-2, HLA aka 'Hi-Level Assembly' from «The Art of Assembly Book» :), да та же Ada? ну или там nimrod / nim?

вот например, XDS: сайт гитхаб

там, как писал Недоря в своём диссере — двуязыковая система Modula-2 (низкоуровневый, без GC) и Oberon-2 (высокоуровневый, с GC). практически почти что LLVM, только на Modula-2. тоже SSA.

XDS-ide на Eclipse и сейчас можно потыкать — работает «из коробки», юзает тулчейны XDS-native и XDS-C (кодогенерацией через С).

довольно годная среда, вот только 32-бит, и исподников нетути.

можно, наверное, другую модулу взять потыкать в качестве реализации, да тот же AOS/ Active Oberon. но сама идея про двуязыковую среду — зело годная.

anonymous ()
Ответ на: комментарий от iZEN

PL/M жывее всех живых !!! :-))

внезапно, поковырял исходники CP/M. и компилятор PL/M оттуда.

местами оно годнее, чем C: фортраноподобный «ассемблер высокого уровня» с минимумом конструкций.

трансляторы на фортране. можно допортировать до современного актуального x86-64.

тыц:

ISIS

In Dr. Dobb's Journal #21, there was an article «ISIS: Anatomy of a Real-World Operating System», written by Perry Hutchison of Iowa State University. Recieved Dec 23 1977 by DDJ, his article discusses ISIS internals based on his analysis of ISIS «written entirely in PL/M» and as run on an Intel Intellec MDS system.

для апофигея

anonymous ()
Ответ на: комментарий от iZEN

можно написать на форте транслятор модулы.

anonymous ()
Ответ на: комментарий от arkhnchul

а что команда будет делать, когда ей потребуется писать, скажем, в мускульную или редисовскую базу? Файл с жсоном или хмл-ю распарсить? вытащить примитивы из svg и немношк поиграть с точками?

да есть там батарейки


см. в батарейках примеры

c-calling-m3	examples / c-calling-m3	
calling-c-unix	examples / calling-c-unix	
calling-c-win32	examples / calling-c-win32

FFI там нормальный.

вообще язык довольно понятный

anonymous ()
Ответ на: комментарий от anonymous

есть два типа сложности:

  • complicated — «дурная сложность», «сложно потому что так получилось» ибо «ниасилели просто» (чем поливали, вот то самое и выросло), и
  • sophisticated — «хитрый план» безумного уч0ного, ибо сама задача сложная.

так вот, вторая сложность вполне себе ОК. и не всегда

Сложное приложение => хреново спроектированное приложение.

в этом смысле: «хреново спроектированное» <=> «хреновая структура модулей», но может быть и sophisticated clean design, с нормальной структурой модулей (но сложными задачами).

anonymous ()
Ответ на: комментарий от monk

в ядре Plan9 и далее, Inferno — несколько тысяч строк. десятков.

при этом Inferno ещё и работает как подсистема поверх не железа, а другой ОС.

спроектировано нормально: можно реализовать функциональность как файловый/объектный сервер в юзерспейсе либо как сервер в ядре либо добавлением сисколлов как блоб либо добавлением драйвера сервера приложений в ядро, то есть двигать функциональность из ядра наружу, прозрачно с минимумом изменений в коде, уже протестированную разработкой в юзерспейсе.

в Inferno ещё и Dalvik VM Dis с AOT есть.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.