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

Содержимое удалено Содержимое добавлено
мНет описания правки
мНет описания правки
Строка 1:
Почему, несмотря на репутабельные доводы о полном превосходстве Лиспа над другими языками программирования, реальностьнарод не пошлапошёл следом за таким убеждением? Почему Лисп, не нашёлодарил места в пантеонеЛисп популярнейшихвсеобщей языковславой?
 
Поищем ответа в сравнении. Популярные языки программирования создавались и создаются обычно инженерами, телефонизаторами, «хакерами» (и простыми студентами), веб-дизайнерами, лингвистами, математиками, любителями языка Си, японцами… для целей вроде создания веб-сайтов, популяризации среди школьников и первокурсников, программирования экзотичных операционных систем или стиральных машин, обработки текстовых файлов или создания «более удобного» соперника существующим языкам.
Строка 5:
<span style="margin-left:-0.1em">Лисп</span> ничем таким похвастаться не может. Его изобрёл в 1958 году Джон Маккарти. <ref>{{wikipedia|Джон Маккарти}}Информатик, когнитолог, философ. Творец термина [[w:Искусственный интеллект|«искусственный интеллект»]] (1955), прародитель (1956) [[w:логическое программирование|логического программирования]], отец-основатель функционального программирования (одновременно с Лиспом), лауреат премии Тьюринга (1971) и других.</ref>
 
Вместо попыток некого соперничества <small>(да ведь и соперничать в середине века было особо не с кем)</small>, разработчики ЛиспаЛисп изначально не боялисьбоялся испытывать на нём всё новые приёмы исчисления и структурирования программм. Удивительно, но все из этих нововведений проникли в сознание программистской общественности лишь как последующие заимствования их в более полулярных языках. Многие из этих заимствований были сразу приняты за стандарт (условные операторы, символьное исчисление, переменные как указатели), иные чуть погодя (рекурсия, сборка мусора, интерактивность, синтаксическое сокращение).
 
Удивительно,Всё но все из этих нововведений проникли в сознание программистской общественности лишь как последующие заимствования их в более полулярных языках. Многие из этих заимствований были сразу приняты за стандарт (условные операторыже, символьное исчисление, переменные как указатели), иные чуть погодя (рекурсия, сборка мусора, интерактивность, синтаксическое сокращение). Но не в малой части нововведения Лиспа ''лишь теперь'' начинают обретать понимание среднего молодого программиста. Некоторые из них даже поныне остаются таинственным древним знанием, робкое применение которого в других языках тотчас объявляется отважным нововведением [существовавшимбывшим в Лиспе один-два десятилетия]. Примеры: функциональная парадигма, метапрограммирование, родовые функции, именованные и условные параметры; программный код как структура из выражений и многое другое.
 
Из этой наблюдаемой тенденции можно смело заключить: Лисп «сечёт» лишь небольшая прослойка академиков и искин-хакеров лишь потому, что сам он '''ведёт''' дальнейшее развитие иных языков общего назначения, с запозданием от года до десятков лет.
Строка 22:
 
===Восходящее программирование===
<span style="margin-left:-0.1em">Частный</span> аспект этого нового способа назван «восходящим программированием» (по-английски — ''bottom-up'' programming<ref name="onlispbottom-up">PaulСтатья Graham,[http://www.paulgraham.com/progbot.html ''OnProgramming Lisp'',Bottom ISBNUp] 0130305529на английском; часть книги «On Lisp».</ref> — «программирование со дна вверх»). Вообще-то любая программа составляется и «снизу», и «сверху», — если она, конечно, написана не прямо на автокоде. Программист на Фортране/Алголе/Си++/Джаве «восходит» по лестнице концептуальной сложности программы всякий раз, когда пишет библиотеку. Но целую программу не создашь на одних библиотеках, да и ограничения языка вскоре дают о себе знать. Так программист встаёт на более традиционный путь «нисходящего программирования»: начиная с наиболее общего взгляда на проектируемую систему, мысленно дробит её на такие части, какие легче всего представить средствами данного языка и существующими библиотеками.
 
<span style="margin-left:-0.1em">Лисп</span> же, будучи усвоен программистом, не торопит навязывать свои структуры и процедуры, а даёт все приспособления для творения новых, — творения, фактически, собственного языка. Опять же, библиотечные функции и классы делают подобное в других языках. Но Лисп идёт намного дальше, позволяя создавать ''«библиотечное что-угодно»'': не только функции или классы, а любую абстракцию вычислительных процессов и структур данных. Например, КЛОС — система классового программирования в Общем Лиспе, — это лишь набор макросов. Это равно что на каком-нибудь Си-шарпе написать библиотеку… например, логического программирования. А вот на Лиспе целая реализация Пролога вместилась в 180 неторопливых строк.<ref name="onlisp">(англ.) [http://www.paulgraham.com/onlisptext.html Paul Graham, ''On Lisp'', ISBN 0130305529]</ref>
 
{{Info|Одна из задач, предлагаемых в этом учебнике — придумать новую «парадигму» или «философию» программирования, затем реализовать её в Лиспе.}}