LINUX.ORG.RU

Не учите Common Lisp!

 ,


1

7

Хочу предостеречь форумчан от изучения Common Lisp. Возьмите самую лучшую имплементацию — SBCL и скомпилируйте следуюущие лямбды:

;; Взятие элемента по индексу x из массива x
(lambda (x) (aref x x))
;; Взятие элемента по индексу y из массива x и прибавление к x
(lambda (x y) (+ x (aref x y)))
;; Один из путей выполнения: прибавление X к NIL
(lambda (x y) (+ x (funcall (lambda (x) (if x 0 x)) y)))

Ни на одной из этих бессмысленных функций компилятор не ругнётся. Вы скажете: «А что такого? Это же язык с динамической типизацией!» А то, что если вы хотите хоть насколько нибудь быстрого кода, вам нужно делать какие-то утверждения о типах, производя только лишь статический анализ кода.

Минус коммон лиспа как языка — слишком разрешательский стандарт. Почти сплошь и рядом там фразы вроде «Эффект, производимый объявлением inline, определяется реализацией» или «Реализация вольна игнорировать то-то и вместо этого делать то-то». Из-за этого разработчики того же SBCL будут игнорировать твои баг репорты, где из-за неправильного поведения компилятора (с точки других опубликованных алгоритмов) твой код будет работать раза в 2 или 3 медленнее, чем должен бы.

Написали бы в стандарте «реализация ДОЛЖНА поступать так-то и так-то», и можно было бы тыкать разрабов носом в это место и требовать корректного поведения. А раз написали «реализация может делать, что ей захочется», то и прижучить их нельзя. В итоге все занимаются чем хотят, кроме починки багов.

Короче, учите языки с хорошей теоретической базой и статической типизацией. Байкам @lovesan не верьте ни одной.



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

это означает (если наморщить затылок) что интерпретатор

Там нет интерпретатора. ТАМ НЕТ ИНТЕРПРЕТАТОРА!!!1

dura4ok11
() автор топика

Не учите Common Lisp!

Не волнуйся, никто и не собирался.

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

лавсан - главный лиспер нашего городка. а сишарпирует он чтобы штаны держались.

вакансий по лиспу то нету.

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

Есть огромная туча. Вон тот же ж Atlas Engineer, раз уж тут какой-то аноним Nyxt упомянул. А Лавсана не берут, потому что он позер

dura4ok11
() автор топика
Ответ на: комментарий от alysnix

У вас @Zubok вон был, кодом которого люди пользуются. Его, условно, можно было бы записать в главные лисперы

Или я путаю с @k_andy? А может, они оба

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

Ну поддержка ООП там есть

Ну, она и в С++ есть. И в С даже. Это не показатель.

Но реального применения так ни одного и не придумал %)

Про парадокс Блаба слышали?

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

А это вы в заголовок лисп вынесли, а претензии к динамической типизации выставили. Ну и толку? Вот если б заход был: „Дети, учите лисп, а лучший лисп это кложа“, то может чего б и вышло.

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

Тайная мечта всех emacs’еров — перевести emacs на нормальный лисп, хоть cl, хоть схему. Сколько emacs существует, столько и пытаемся. Когда-нибудь обязательно получится.

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

Про парадокс Блаба слышали?

Не «Блаба», а «блаба».

Парадоксально, что он придуман чтобы оправдать непопулярность языка, который не просто не имеет более мощных инструментов чем современные (ему; не говорю даже о современных сейчас) мейнстримные, но даже и языком программирования в современном понимании считаться не может, ни по синтаксису, ни по организации кода, ни по способу исполнения. Лапшескобки они и есть.

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

нет конечно.

Вот. Если чел хочет выучить CL, то это явно не из-за для поиска работы. ПО этому твой аргумент так себе.

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

Человек хочет стать лучше, как инженер, всесторонне развивается, изучает лисп. А найдёт/создаст ли он работу на CL или будет применять изучаенные парадигмы на других языках — это уж как получится.

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

Отличный вброс!

Но ТС прав. CL и правда говно. Была попытка реанимации и запиливания нормального языка на базе CL под названием CL21 (для 21 века), но оно сдохло так и не родившись. CL – это такой C++ из мира лиспов, в который натаскали всего подряд из других язычков и получился лютый монстр, целиком никому нахрен не всравшийся. Плюс болезни самого лиспа.

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

Ты, старый тролль, конечно, но ты все-равно нихера не понимаешь. CL хорош такой какой есть, уже лучше многого другого.

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

Если он так хорош, то почему на нём никто не пишет? Даже на хачкеле пишут больше чем на лиспах, а уж хачкелю в нишевости-то не отказать никак.

hateyoufeel ★★★★★
()

Камрад, зачем себя так обозвал (никнамэ)?

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

Да, Тейлор Свифт реально хорошо продаёт свою музыку. А лисперы свой недоязычок никому продать не могут.

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

Тейлор Свифт реально хороша потому что ее много кто слушает? «Думайте» как грится

Да, для всех этих людей она достаточно хороша. И думать нечего.

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

[поддержка ООП] и в С++ есть. И в С даже

С учётом того, что нужность ООП как такового сильно преувеличена — велика ли разница, простой это ООП или с перламутровыми пуговицами?

парадокс Блаба

Я же не говорю, что продолжения и перезапуски не нужны. Может, кому-то они жизненно необходимы.

Я говорю — мне ни разу не пригодились. И таких людей, видимо, немало — которым от этих фич никакого профита, кроме лишней сложности.

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

ничтожное количество лисперов

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

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

Вообще нет. Говно эта ваша растишка. В частности потому что идея «доказательства корректности» в компиляторе изначально не подходит для практического использования.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Растосрач внутри вялого лиспосрача?

Вообще нет

Так вот и проверим.

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

Если честно то заебался объяснять людям примитивные вещи

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

сделай и я даже куплю у тебя её за косарь. тут прорекламишь, и таких будет много, думаю.

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

Я бы купил. Вон, даже и без рекламы уже два потенциальных покупателя сходу. Отечественных лиспокниг давно не было. Желающих купить и прочесть может будет и не много, но достаточно, чтобы как минимум затраты на её написание окупились.

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

В частности потому что идея «доказательства корректности» в компиляторе изначально не подходит для практического использования.

Лисперы не осилили статическую типизацию.

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

статическую типизацию

Дихотомия статическая-динамическая типизация ложная. Типы следует рассматривать в контексте цели их применения, а не то, как именно эти цели достигаются.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

идея «доказательства корректности» в компиляторе изначально не подходит для практического использования.

вот это вот наброс 0_0; любая примитивная проверка типа это уже такое простенькое доказательство даже если это сишечка, оптимизирующие компиляторы/jit-ы на которых написана абсолютное большинство софта невозможны без таких вот доказательств, железо с которого ты это пишешь верифицировано какими-нибудь Agda-ми и Сoq-ми, которые самоё суть такое доказательство - куда ещё практичнее-то

zurg
()

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

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

даже если это сишечка

В сишечке типы используются не для доказательства корректности. Какие-то выводы про корректность это побочный эффект и целиком инициатива современных компиляторов. Можно сделать компилятор сишечки без проверок корректности.

оптимизирующие компиляторы

Какое отношение оптимизация имеет к проверке корректности? Те же современные компиляторы сишечки и крестов кладут жирный болт на корректность при оптимизации ибо УБ. Да и в растишке нет-нет да и пихнут unsafe ради скорости.

железо с которого ты это пишешь верифицировано какими-нибудь Agda-ми и Сoq-ми

Обрати внимание, железо верифицировано не каким-нибудь verilog-ом, а сторонними инструментами. Я совершенно не против статических анализаторов кода и других подобных систем анализа. Но они работают в целом без привязки к типам именно языка (хотя и могут учитывать эту информацию, если она имеется), используя различные связи в коде, в том числе выходящие за рамки языка как такового (паттерны, стили, стороннее описание бизнес-логики и т.п.).

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 2)
Ответ на: комментарий от rtxtxtrx

интерпретатор которого пишется на коленке в сотню-другую строк

Продемонстрируй. Сборщик мусора не забудь в эту пару сотню строк уложить.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Дихотомия статическая-динамическая типизация ложная.

Почти. То есть, да, но ты явно не это имеешь ввиду.

С точки зрения систем типов, в языках с динамической типизацией всего один тип – объект.

Типы следует рассматривать в контексте цели их применения, а не то, как именно эти цели достигаются.

Цель применения ровно одна: описать в рамках ЯП некие инварианты относительно кода и проверить эти инварианты во время сборки.

hateyoufeel ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.