Лисп/Историософия: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 1:
{{Эпиграф|[Лисп есть] величайший единственный язык программирования из когда-либо сотворённых.<br />
{{Подпись|— [[w:Алан Кэй|Алан Кэй]].}}}}
<div style="max-width:52em;margin:1em auto 0 4%;">
Почему, несмотря на репутабельные доводы о [[Лисп/Превосходство|полном превосходстве Лиспа]] над другими языками программирования, народ не пошёл следом за таким убеждением, не одарил Лиспего всеобщей славой?
<blockquote>«[Лисп есть] величайший единственный язык программирования из когда-либо сотворённых.»</blockquote>{{Подпись|— [[w:Алан Кэй|Алан Кэй]], тьюринговский лауреат за [[Smalltalk|Смоллток]] и [[объектно-ориентированное программирование]].}}
 
Поищем ответаответ в сравнении. Популярные языки программирования создавались и создаются обычно инженерами, телефонизаторами, «хакерами» (и простыми студентами), веб-дизайнерами, лингвистами, математиками, любителями языка Си, японцами… для целей вроде создания веб-сайтов, популяризации среди школьников и первокурсников, программирования экзотичных операционных систем или стиральных машин, обработки текстовых файлов или создания «более удобного» соперника существующим языкам.</div>
Почему, несмотря на репутабельные доводы о полном превосходстве Лиспа над другими языками программирования, народ не пошёл следом за таким убеждением, не одарил Лисп всеобщей славой?
 
Поищем ответа в сравнении. Популярные языки программирования создавались и создаются обычно инженерами, телефонизаторами, «хакерами» (и простыми студентами), веб-дизайнерами, лингвистами, математиками, любителями языка Си, японцами… для целей вроде создания веб-сайтов, популяризации среди школьников и первокурсников, программирования экзотичных операционных систем или стиральных машин, обработки текстовых файлов или создания «более удобного» соперника существующим языкам.
 
<blockquote>«{{Эпиграф|Говорят, мол, [[Ruby|Руби]] это плохо переваренный Лисп или Смоллток, и я с этимэто согласенпринимаю. Но он милее обычным людям.»<br /blockquote>
{{Подпись|— [[w:Юкихиро Мацумото|Юкихиро Мацумото]], создатель Ruby}}}}
 
<div style="max-width:52em;margin:1em auto 0 4%;">
Лисп же изначально испытывал передовые приёмы исчисления и структурирования программм. Удивительно, но все из этих нововведений проникли в сознание программистской общественности лишь как последующие заимствования их в более популярных языках. То есть в тех языках, что милее обычным людям.
 
Многие из этих заимствований были сразу приняты за стандарт (условные операторы, символьное исчисление, переменные как указатели), иные чуть погодя (рекурсия, сборка мусора, интерактивность, синтаксическое сокращение). Всё же, не в малой части нововведения Лиспа ''лишь теперь'' начинают обретать понимание среднего молодого программиста. Некоторые из них даже поныне остаются таинственным древним знанием, робкое применение которого в других языках тотчас объявляется отважным нововведением [бывшим в Лиспе один-два десятилетия]. Примеры: функциональная парадигма, метапрограммирование, родовые функции, именованные и условные параметры; программный код как структура из выражений и многое другое.
 
Из этой наблюдаемой тенденции можно смело заключить: Лисп «сечёт» лишь небольшая прослойка академиков и искин-хакеров лишь потому, что сам он '''ведёт''' дальнейшее развитие иных языков общего назначения, с запозданием от года до десятков лет.</div>
 
<blockquote>{{Эпиграф|[Созданием [[Java|Джавы]]] мы не стремились отыграть программистов на Лиспе; мы целились на программистов [[Си++]]. Многих из них мы утащили куда-то на полпути к Лиспу.<br /blockquote>
{{Подпись|— Гай Стил<ref>Член стандартизационных комитетов для Си, Фортрана, Коммон Лиспа, Джавы; член IEEE, соавтор диалекта SchemeСхим.</ref>}}</div>}}
 
==Отличия==
Строка 34 ⟶ 37 :
<span style="margin-left:-0.1em">Лисп</span> же, будучи усвоен программистом, не торопит навязывать свои структуры и процедуры, а даёт все приспособления для творения новых, — творения, фактически, собственного языка. Опять же, библиотечные функции и классы делают подобное в других языках. Но Лисп идёт намного дальше, позволяя создавать ''«библиотечное что-угодно»'': не только функции или классы, а любую абстракцию вычислительных процессов и структур данных. Например, КЛОС — система классового программирования в Общем Лиспе, — это лишь набор макросов. Это равно что на каком-нибудь Си-шарпе написать библиотеку… например, логического программирования. А вот на Лиспе целая реализация Пролога вместилась в 180 неторопливых строк.<ref name="onlisp">(англ.) [http://www.paulgraham.com/onlisptext.html Paul Graham, ''On Lisp'', ISBN 0130305529]</ref>
 
<span style="margin-left:-0.1em">Так</span>, Лисп позволяет программировать эффективнейшим способом: создать удобный набор понятий и составить из них решение вычислительной задачи. Или же наоборот: разделить задачу на систему более простых понятий, (и не обязательно только «модулей», «структур», «процедур», «объектов»,) а затем без особых ограничений реализовать те понятия и взаимосвязи между ними.
{{Info|Одна из задач, предлагаемых в этом учебнике — придумать новую «парадигму» или «философию» программирования, затем реализовать её в Лиспе.}}
 
<span style="margin-left:-0.1em">Так</span>, Лисп позволяет программировать эффективнейшим способом: создать удобный набор понятий и составить из них решение вычислительной задачи. Или же наоборот: разделить задачу на систему более простых понятий, (и не обязательно только«модулей», «структур», «процедур», «объектов»,) а затем без особых ограничений реализовать те понятия и взаимосвязи между ними.
</div>
 
Строка 43 ⟶ 44 :
Остережение выше было обращено к программистам, привыкшим к нелисповым языкам. Но и совершенным новичкам может быть немудро начинать с изучения Лиспа.<ref>Даже по Эрику Рэймонду[http://www.catb.org/~esr/faqs/hacker-howto.html#skills1], Лисп должен быть не первым изученным языком, а лишь одним из пяти-шести первых, наряду с [[Язык Си в примерах|Си]][[Си++|[++]]], [[:Категория:Python|Пайтоном]], [[Java|Джавой]] и Пёрлом ^.^ kawaii ;-)</ref> Во-первых, это сложный язык, а Общий Лисп — сложнейший из диалектов. Во-вторых, он непопулярен: намного трудней найти с ним трудоустройство, хостинг для веб-приложений или помощь.
 
С другой стороны, всё-таки, [[Лисп/Превосходство|Лисп не перестаёт быть хвалим]] выдающимися представителями рода человеческого. При всей сложности, может ли Лисп всё же оказаться кратчайшим путём от амбиции начинающего программиста к работающему, отлаженному вычислительному шедевру?
Однако, изучение Лиспа будет полезно хотя бы для [[Словарик философствующего информатика|глубокого понимания информатики и проектирования программ]].
 
Вопрос ищет, скорее, область определения положительного ответа. Часто можно встретить мнение, дескать, каждой задаче — своё решение, каждому программисту — свой язык. Так, Лисп изначально доминирует в области «искусственного интеллекта» (области довольно широкоохватной.) Однако на нём сделали большой доход творцы самых разных видов программного обеспечения. Это заслуга Лиспа, или же продукт случайности, так что использование Лиспа было компромиссом? Или, возможно, Лисп подходит только для определённого типа личности? Одно дело — эксцентричные «хакеры» и 50-летние кандидаты, проповедующие Лисп, другое дело — чёткая картина, описанная выше.
<blockquote>«Мне кажется, что для многих задач Лисп, возможно, будет замещён языком, делающим с Лиспом то, что Лисп делает с машинным языком. […] Но в более высокоуровневом, чем Лисп, языке декларативная часть может оказаться столь большой, что тексты на нём могут не соответствовать программам. Если нечто, заменящее интерпретатор, достаточно умно́, то написанное пользователем будет скорее декларативным описанием фактов о некой цели и доступных для её достижения средств, чем программа как таковая.»</blockquote>{{Подпись|— [[w:Джон Маккарти|Джон Маккарти]], «Лисп: заметки о прошлом и будущем», 1980 год<ref>[http://www-formal.stanford.edu/jmc/lisp20th/node5.html ''Mysteries and other Matters'']</ref>}}
 
</div>
Не умея дать уверенного и чёткого ответа, сошлёмся на эссе, написанного директором исследований компании «Гугл» и по совместительству знаменитым лиспником: [http://www.williamspublishing.com/21-days.html «Научись программировать за десять лет»] (русский перевод; оригинал — [http://norvig.com/21-days.html Teach Yourself Programming in Ten Years].) Однако Норвиг, опять-таки, вышел из академической среды по искуственному интеллекту…
 
ОднакоТак или иначе, изучение Лиспа будет полезно хотя бы для [[Словарик философствующего информатика|глубокого понимания информатики и проектирования программ]].</div>
 
[…]
----
<div style="max-width:52em;margin:1em auto 0 3%;">