LINUX.ORG.RU
ФорумTalks

Закапывателям лиспа

 


1

7

В жизни каждого «языкового» сообщества рано или поздно наступает один интересный период: когда самые вопиющие проблемы языка уже решены и аксакалы с нетерпением ожидают бурлящего потока неофитов, но сам этот поток еще до сообщества не добрался, наиболее преданные идеалам иерархи обращают свой взор в неизведанные (ими) дали. И незамедлительно их зрительные органы оскорбляются видом хтоничного чудовища, не проявляющего никакого уважения к их заветам и заповедям. Оскорбление, нанесенное нашим апостолам настолько велико, что они, не раздумывая ни минуты, немедленно собирают могучую дружину из лучших людей сообщества, вооружают ее освященными лопатами и благословляют его на исполнение священной миссии: Lisp должен быть закопан.

Краткая и неполная хроника лопатных походов на Lisp:

Время: 70-е - 80-е года прошлого века
Закапывающие: C
Итог: 
C: с боями выбил себе нишу низкоуровневого программирования и окуклился.
Lisp: потеряны Lisp-машины, сообщество объединилось под знаменем Common Lisp.
Время: конец 80-х - 90-е года прошлого века
Закапывающие: C++
Итог: 
C++: превратился в мумифицированный труп, изредка гальванизируемый для выжимания чуть большей производительности.
Lisp: ничего не заметил.
Время: начало 90-х
Закапывающие: Dylan
Итог: 
Dylan: породил несколько личинок, забыт.
Lisp: счел Dylan отличной шуткой.
Время: конец 90-х - начало 00-х
Закапывающие: Java
Итог: 
Java: до сих пор стучится лбом в хитиновый панцирь.
Lisp: урча и пожмякивая вобрал в себя виртуальные машины.
Время: начало-середина 2000-х
Закапывающие: личинки Dylan (Python, Ruby) и примкнувший к ним PERL
Итог: PERL выкинут на свалку истории, Python и Ruby выгнаны ссаными тряпками в веб.
Lisp: показательно проигнорировал недоязычки.
Время: 2000-е - 2010-е
Закапывающие: Caml, Haskell
Итог: 
Закапывающие: держатся впереди за счет бурной активности не испорченных адекватностью прозелитов.
Lisp: гонится за незадачливыми закопщиками, с громоподобным "ОМ НОМ НОМ НОМ" вбирая в себя их идеи. 

Источник: http://repl-stories.blogspot.com/2012/05/blog-post.html

Перемещено post-factum из development

★★★★★

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

Они должны знать, как их зовут. Так что тогда уж

Ex, Ey, Ez = mk_vars( 'Ex Ey Ez',  'компоненты электрического поля' )

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

AIv ★★★★★
()
Ответ на: комментарий от quantum-troll

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

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

причём под Линукс

Забавное примечание. Я уже давно забыл, что можно писать под что-то другое :)

на C++ видел кучу проектов
А на лисп не видел ни проектов, ни вакансий.

Ну и какой из этого можно сделать вывод? Я много писал на C++/Python/Javascript/XSLT (и по не много на некоторых других) и проблема подобрать вакансию меня как бы давно не интересует, но мне больше нравится писать на C. Естественно, я стремлюсь увеличить удовольствие (т.е. писать на CL) и уменьшить боль (т.е. не писать не C++).

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

А вывод простой, не нужен.

Вам не нужен, а мне нужен, вот и весь результат многостраничного обсуждения :).

archimag ★★★
()

вот сегодня листал учебник по программированию для студентов и там половина учебника посвящена LISP... его там используют в качестве примера по созданию (всевдо)искусственного интеллекта. Учебник датирован 2007 годом и студенты по нему сейчас учатся, так что хоронить LISP ещё рано.

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

Это вынужденная мера. Иначе придется дублировать имена переменных при задании, а это черевато гораздо более серьезными последствиями. Конечно, можно было задавать переменные, потом запускать какую нить ф-ю которая аналищирует пр-во имен и на основе id восстанавливает имена... но это уже содомия. На самом деле можно конечно задавать переменные и обычным образом, есть класс var - но это неудобно.

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

Вы так говорите, будто в лиспе совсем нельзя инфиксную нотацию:

CL-USER> {1 + 2}
3
CL-USER> {2 - 3}
-1
CL-USER> {2 expt 3}
8
CL-USER> (sqrt {{2 expt 6} + 5})
8.306623

Artificial_Thought ★★★★
()

Ленина тоже никак не закопают.

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

в перспективе вброс на все 4 дня праздников

Не-е, оно уже сейчас затихает...почти до нулевой активности. :)

DeVliegendeHollander ★★
()

C: с боями выбил себе нишу низкоуровневого программирования и окуклился.

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

Lisp: ничего не заметил.

PERL выкинут на свалку истории

Отсыпьте мне такой травы...

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

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

Автору личкрафта, например. Тот, дождавшись лямбд в плюсах, радостно потащил их в своё детище, прежде чем до дебиана дополз gcc с их поддержкой (~~)

hobbit ★★★★★
()

Краткая и неполная хроника лопатных походов на Lisp:

КГ/АМ. Другого в голову ничего не пришло. :) Ну хрень же! Больше всего не люблю таких горе-мифологов и горе-воспевателей Лиспа.

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

Стоит. Хотя бы потому что Одерский (на практике!!) показал, что нет никакой «пропасти» между ООП и ФП, а значит межу ООП и формальными методами.

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

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

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

Ну, ты же в универе не Скалу изучал и, как мне думается, даже не Смаллтолк, CLOS, Эйфель. Скорее всего, ты изучал Единственно Верную и Правильную Модель. А вот там действительно изучать и обсуждать нечего.

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

о да!

C = A * B;
это «нечитабельное говно», вот как надо:
;;Умножение матриц(списков)
(defun multiply (A B)
(let ((res nil) (tores nil))
(dolist (a A)
(dolist (b (trans B))
(push (reduce #'+ (mapcar #'* a b)) tores))
(push (nreverse tores) res)
(setf tores nil))
(reverse res)))
лично я тут ничего не понял, кроме комментария. Дык я-же и родился на Земле, а не хрен знает на какой планете. У меня папа мама были, а не ктулхунг с тентаклями, мне не понять...

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

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

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

Хотя автор темы тоже хорош. Не ожидал от него такого. Все про университеты, а тут, бац, такой вброс материала для переработки.

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

dave

Как я уже написал, у критиканствующих антилисперов довольно унылые сообщения.

не говори - без тентаклей уныло...

И да, если у кого-то C++ вызывает попоболь, то можно улицы подметать, или там каким-нибудь г-ном торговать... Эти занятия более востребованы, чем кодинг на LISP'е и прочей чашуе.

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

Слишком много любви к крестам. Есть же еще инструменты.

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

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

можно улицы подметать, или там каким-нибудь г-ном торговать...
Эти занятия более востребованы, чем кодинг на LISP'е

Ты не поверишь, но эти занятия более востребованы и чем кодинг на С++. Там что уже можешь начинать выбирать себе метлу.

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

Слишком много любви к крестам. Есть же еще инструменты.

это хороший и годный инструмент. Если уметь им пользоваться.

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

Ты не поверишь, но эти занятия более востребованы и чем кодинг на С++. Там что уже можешь начинать выбирать себе метлу.

проблема одна - за подметание улиц платят в разы меньше, чем за кодинг на плюсах. За кодинг на лиспе ВООБЩЕ не платят.

//thread

drBatty ★★
()

Итог. C, С++, Java, Ruby, Python и даже Perl с окамлем более распространены чем LISP.

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

ну значит должна быть дока в формате odg где все разрисовано со стрелочками и как «соединять» кусочки api. с примерами, опять же.

если есть «объект» типа «конечный автомат» то граф состояний для него рисуем. если него несколько перекрывающихся состояний, но рулят цветные стрелки и кружки. типа ifstream есть в режиме А, Б, В, и плюс флажок Y={true/false} тогда у нас есть три кружка А Б В и стрелки между ними цветные синим для Y=true, красным для Y=false, фиолетовым или штриховкой попеременной - где пофиг.

Так должна выглядеть документация, которую делают перед тем, как писать код. Если её нет, то будет и говно код, и говно апи и говно в адрес разработчика.

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

ООП можно бы было понять,если бы его четко определили как скрытие деталей реализации. iostream - ящик. vector - ящик. hashtable - ящик. к каждому свой протокол доступа.

только это не ООП. а разбиение проекта на этапы и нормальные проектирование и разработка

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

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

наверно вы имеете ввиду яблочную компанию. всегда когда сталкиваюсь с разработкой под их уродские продукты, возникает ощущение, будто в говнолюк нырнул. чуть шаг в сторону от «разрешенного», как тут же возникают corevideo, coreaudio, coreimage, corefoundation и прочие убожества, которые даже между собой едва совместимы.

вы, кстати, не сталкивались с задачей вида «нарисовать что-то силами core-image или cocoa на пихбуфе и засунуть его в кодек»? или «записать это все в avi»? ExportMovieFromProcedures тут вам не поможет :), несмотря на всю документацию: там забыли сказать, что она не работает. а понять сходу что вообще такое channellayout в coreaudio?

А я ведь уверен, что ублюдкотронам, разработавшим все это corecraware платят бешенные бабки.

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

найди те комьюните где

ну значит должна быть

всё что для вас значимо и пилите свою вселенную.

всё остальное инстументы ( часто бесплатные) и вы платите либо временем либо деньгой(акумулирование время)

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

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

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

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

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

Вот, уже ушибнутые Бучем подтягиваются.

Пока тут не ляпнули: «Готовьтесь потратить времени на проектирование, больше чем на реализацию» (хотя это и не Буч), это сделаю я.

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

В математике все таки 2+2 (и в подавляющем большинстве ЯП тоже), и это гораздо естественней для ествственнонаучного сотрудника.

Я не программист и что такое лисп ни разу не знаю. Но почему Вы выбрали в качестве эталона математику? Почему не квантовая механика? Там к примеру есть оператор переноса. И операторный подход более ближе к реальной физической картине мира и потому писать (+ x a ) намного более естественно.

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

У-я движения в классической механике, законы сохранения, у-я Максвелла, ГД, у-я физкинетики Вы тоже всегда в операторном виде пишете? И, главное, численные схемы (то, что непосредственно кодится) - тоже в операторном виде?

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

Но почему Вы выбрали в качестве эталона математику?

Математику все проходят в школе, и если есть эталон «общепонятности» - это именно школьная математическая нотация.

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

ну да, поделия говнокодеров вроде вас я видел уже порядочно.

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

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

И, главное, численные схемы (то, что непосредственно кодится) - тоже в операторном виде?

Одну работу сделал только фана ради на Lisp (простенькие вычисления). И сама идея (function bla bla) очень понравилась - действительно простая однотипная и (хотя вы оспариваете) самая что ни наесть естественная конструкция. Но могу согласиться, что Lisp мертв. И прежде всего из-за того что нет уймы библиотек, а те что есть оставляют желать лучшего.

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

простая и естественная конструкция

Конкатенативные программисты берут данные и преобразуют их в другие данные, когда же лисперы думают, что же натворить, и только затем берут данные.
На мой взгляд, 2 2 + намного естественнее, чем (+ 2 2). И уж тем более проще.
http://concatenative.org/wiki/view/Pipeline style

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