LINUX.ORG.RU

Lisp, Haskell, Smalltalk, Forth... что дальше?


1

0

Навеяно предыдущей темой.

Последнее время совершенно отчетливо прослеживается, как маргинальные языки передают друг другу олимпийский факел, в смысле их популярности на ЛОРе.

Факел был когда-то зажжен незабвенным Проффессором Луговскером, и достался он лиспу. Прошло несколько лет, и теперь даже самый распоследний нубас на ЛОРе расскажет вам про REPL, метапрограммирование, квазиквотацию, eval, Slime и про жаба-monkey-кодеров. Лисп стал популярен на ЛОРе, и утратил позиции «элитного» языка, дискутировать о котором могли единицы.

Ниша долго не пустовала. Некоторое время факел находился у Haskell, а последние месяцы его гордо несет Smalltalk (я сужу исключительно по количеству новостей и дискуссий о нем). Но теперь завзятые маргинальщики начинают интересоваться Forth'ом, из чего я делаю вывод о том, что факел Smalltalk'а начал коптить, в силу его популяризации на ЛОРе.

Предлагаю коллективно поразмыслить над тем, какой язык мог бы принять эстафету у Форта. Из маргинальных неэзотерических языков осталось не так уж и много. Clean? Pure? Factor?

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

>Если что - могу развернуть.

разверни, будь лаской.

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

> Про несовместимость реализаций - бред. Если что - могу развернуть.

Разверните уж, сделайте одолжение.

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

> Или потоки тоже не нужны?

Конечно, не нужны! Нам же сказали: лисп, он работает по-другому :)

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

> Уже одно то, что лисперы сотнями велосипедят прослойки совместимости,

(вместо того, чтобы писать программы, ага) должно наводить на мысли.


Сколько можно бредить? Ну о чём ты вообще? Вот мои проекты: http://github.com/archimag - где там «прослойки совместимости»?

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

Ммм.. а у вас жаббер есть?
Лучше, ИМХО, здесь, чем в толксах

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

А «лисперы», это как-бы не партия, у них не один мозг на всех

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

> Все write-only языки маргинальны

Ну и какое это имеет отношение к теме обсуждения?

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

По идее - ничего особенно страшного.
Но с I/O то еще более ничего.

тут собрание троллей просто.

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

бордо-треды, портабл-треды, cffi, uffi, cffi-net, cffi-unix, usocket, trivial-garbage, trivial-features, trivial-gray-streams, trivial-sockets... лень копаться дальше

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

А где лавсан говорил про то, что форт надо использовать везде? Он просто захотел поучиться форту, что в этом плохого?

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

> лень копаться дальше

Раскрыть мыль ясно тоже лень? А то ведь ты просто бредишь, не понимая что говоришь.

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

Мысль раскрыта явно Кукой. Несовместимость коммонлисповых реализаций.

не понимая что говоришь.

Телепаты в треде?

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

Если выкинуть никем не используемое устаревшее и/или кривое говно из списка, то получим:

bordeaux-threads - нити
cffi - FFI
usocket - сокеты
trivial-garbage - GC, финалайзеры, weak references
trivial-features - сведения о системе, процессоре и т.п.
trivial-gray-streams - потоки

плюс еще есть
closer-mop - метаобъектный протокол

Т.е. существует несколько де факто стандартных библиотек-прослоек-совместимости. Выучить то, где их взять и как ими пользоваться - очень просто. Абсолютно никакой проблемы тут нет.

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

> Мысль раскрыта явно Кукой. Несовместимость коммонлисповых реализаций.

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

Телепаты в треде?


Нет, это очевидно для тех, кто в курсе ситуации.

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

Можно и одной фразой было отделаться, но пожалуй немного порассуждаю.

//

У CL специфичная история - тот зоопарк что есть сейчас это ничто по сравнению с тем зоопарком «лиспов», что существовал в 70-80. Собственно CLtL1, как известно, и был реакцией на разрозненность тогдашних диалектов. Но в 80-ые годы «лисп» ещё прочно ассоциировался с ИИ - в итоге стандарт CL эта стандарт сплошь из абстрактных языковых вещей (разве что pathnames), в нём нет ничего про взаимодействие с ОС и внешним миром, но того что в нём есть - того действительно много. Понятно, что Scheme тогда был альтернативой монструозности CL.

Тем временем, к 90-ым произошло то, что произошло - рынок заполонили дешёвые PC, появились Windows, Linux тот же. А Symbolic, Лисп-Осы, машины и прочие ИИ мечтания остались не у дел. Так, в итоге, к 1995, когда появилась вторая версия стандарта, CL повис в воздухе - со всеми тоннами кода (тот же репозиторий CMU).

Так что не удивительно что реализаций много, все они укуренные и не совместимые ни в чём кроме CLtL2 части. CCL берёт начала ещё с одной реализации конца 80-ых (в которую делались не малые коммерческие вливания), SBCL <- CMU CL - тоже из того времени (тут ещё инвестиции DARPA, кстати, те же люди потом делали компилятор Dylan - вот это вообще «провальный» язык).

Вот, ну а с 2000 и в последующее десятилетие была уже совсем другая история, хотя и омрачённая тем legacy.

\\

А теперь по существу - kuka, приводит какие-то ссылки на обвертки, кто-то ещё грешит на них. Но дело вот в чём - сейчас с точки зрения пользователя нет разницы в API, оно всё унифицированно такими обвёртками. Выбор реализации это просто «хочу это, или то», разницы в API нет - будь то потоки, FFI, сисколы или ещё что-то. Все обвёртки и прочие обобщающие библиотеки были созданы сообществом в последние 10 лет и, фактически, являются современной реакцией на зоопарк реализаций. Хотя да - есть кое в чём провальные места, ну всё ведь не может быть идеально.

Так что можете считать тот репозиторий, который сейчас использует любой CL разработчик, CLtL3 стандартом де-факто - стандарт взаимодействия с real world (что было упущено в официальном стандарте, но и не могло быть туда включено - никто не знал какие будут архетектуры). Вопрос только в том, что все эти библиотеки не объедены, и нет одной «новой» реализации, которая бы напрямую предоставляла именно такой API. Но, ИМХО, это не может быть сделано силами сообщества - только на одном энтузиазме.

Короче - если бы вы писали на CL, вы бы не жаловались - «там аргументы то», «сдесь треды сё» - это как раз-таки не проблема. Уж такие вещи за 10 лет как-то разрешились.

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

>библиотек-прослоек-совместимости

Ну вот и отлично. Зачем нужны прослойки если всё якобы совместимо? Или все таки Кука прав и совместимость иллюзорная, которая заканчивается ровно там, где заканчиваются прослойки? Зачем же вы врете, господа лисперы?

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

Понимаешь, стандарт языка реализован всеми известными компиляторами CL (в отличии от плюсов, для которого хрен найдешь компилятор, реализующий ВЕСЬ стандарт).

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

> Яснее пожалуйста, я не понимаю что вы говорите.

Clojure, Scheme, Emacs Lisp etc. - лисп он же не только CL, вот например есть С - есть сотни компиляторов для него, есть интерпретаторы и т.п., есть единый стандарт - и можно им пользоваться, в лиспе такого нет, сначала тебе говорят - вот есть CL, он хорош, потом оказывается что лучше было взять Clojure или т.п., но вот беда - они то несовместимы

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

Ну это просто разные языки, если что. Да, CL может быть и крут, но если ты хотел написать плагин для emacs'a, то надо было выбать _другой_ язык: emacs lisp.

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

по поводу Бруно - вы себе сильно льстите. в ваших словах нет ничего нового, в отличии от...

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

> то надо было выбать _другой_ язык: emacs lisp.

ну понятно - это не «лисп», а другой язык, но зачем тогда говорить про совместимости в лиспе? говорите тогда про конкретную реализацию

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

Еще раз. Common Lisp и Scheme - разные языки. Похожи только тем, что «выросли» из того самого LISP'a.

(Если на лоре говорят лисп, то, скорее всего, имеется в виду либо common lisp, либо все сборище lisp-диалектов в целом. Так что common lisp с common lisp'ом совместим)

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

> Clojure, Scheme, Emacs Lisp etc. - лисп он же не только CL

Это всё очень разные языки, примерно как C/C++/Java/C# и т.п. Лично я всегда говорию про CL

сначала тебе говорят - вот есть CL, он хорош, потом оказывается

что лучше было взять Clojure или т.п.,



Просто не надо слушать глупости разные.

потом оказывается что лучше было взять Clojure или т.п., но вот

беда - они то несовместимы



Общего у них это скобочки. Это принципиально разные языки. Неужели это так трудно понять?

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

> Если на лоре говорят лисп, то, скорее всего, имеется в виду либо common lisp, либо все сборище lisp-диалектов в целом

если говорить про совместимость, то глупо говорить про совместимость с самим собой - верно? значит когда лисперы говорят, что проблем с ней нет - они должны говорить про «все сборище lisp-диалектов в целом»

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

> т.е. таки очень-очень часто

Научитесь выражать свою мысль ясно. Хотеть совместимость между CL и Clojure тоже самое, что хотеть совместимость между Java и С#.

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

>> сначала тебе говорят - вот есть CL, он хорош, потом оказывается

что лучше было взять Clojure или т.п.,


Просто не надо слушать глупости разные.


Т.е. всегда надо использовать common lisp, а на clojure забить болт?

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

> Просто не надо слушать глупости разные.

а что из этого глупость? CL не хорош, или не стоит использовать Clojure?

Это принципиально разные языки. Неужели это так трудно понять?


так епт - и я о том же, привыкайте тогда сами писать CL, а не лисп - т.к. лисп в общем и целом этом набор несовместимых языков и реализаций

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

> они должны говорить про «все сборище lisp-диалектов в целом»

Вы выставляете себя не очень умным человеком.

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

Ну вот и отлично.
Зачем нужны прослойки если всё якобы совместимо?
Или все таки Кука прав и совместимость иллюзорная, которая заканчивается ровно там, где заканчиваются прослойки?

Всё так, кука прав, ты прав

Зачем же вы врете, господа лисперы?

нифига

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

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

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

> так епт - и я о том же, привыкайте тогда сами писать C

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

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

> Говорят про совместимость _реализаций_

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

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

> Вы выставляете себя не очень умным человеком.

давайте без переходов на личности - хорошо? а то лисперы этим всегда славились( в отличие от ума ), большая часть из них не пишут именно про CL, когда рассказывают, что вот в случае чего можно пользоваться Clojure, а GIMP прикручен Scheme и т.п., они называют это все лиспом и расхваливают в целом, а потом - это все разные языки, ты дурак, учи одно, не слушай идиотов, что советуют другой диалект и т.п.

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

> большая часть из них не пишут именно про CL, когда рассказывают, что

вот в случае чего можно пользоваться Clojure, а GIMP прикручен Scheme


Вы путаете лисперов и троллей. Ещё раз: это всё очень разные языки, общего у них одни скобки.

archimag ★★★
()

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

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

> Вы путаете лисперов и троллей

ну значит на ЛОРе последних явно большинство

Ещё раз: это всё очень разные языки, общего у них одни скобки.


я говорил обратное?

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

> Обходить при помощи как DOM-like, так и event-driven API.

То есть, говноинтерпретатор писать? Фи.

А в лиспе?

А ничего не буду. Напишу по макре на каждый узел AST, и Лисп сам его скомпилирует эффективно.

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

>Вы путаете лисперов и троллей.

На этом ресурсе это одно и то же, никто ничего не путает.

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