Лисп/Историософия: различия между версиями
Содержимое удалено Содержимое добавлено
→Отличия: опечатка - приЙдётся |
Ramir (обсуждение | вклад) мНет описания правки |
||
Строка 1:
{{Эпиграф|[Лисп есть] величайший единственный язык
{{Подпись|— [[w:Алан Кэй|Алан Кэй]].}}}}
<div style="max-width:52em;margin:
▲Поищем ответ в сравнении. Популярные языки программирования создавались и создаются обычно инженерами, телефонизаторами, «хакерами» (и простыми студентами), веб-дизайнерами, лингвистами, математиками, любителями языка Си, японцами… для целей вроде создания веб-сайтов, популяризации среди школьников и первокурсников, программирования экзотичных операционных систем или стиральных машин, обработки текстовых файлов или создания «более удобного» соперника существующим языкам.</div>
{{Эпиграф|Говорят, мол, [[Ruby|Руби]] это плохо переваренный Лисп или Смоллток, и мне приходится согласиться. Но он милее обычным людям.
{{Подпись|— [[w:Юкихиро Мацумото|Юкихиро Мацумото]], создатель Ruby}}}}
▲<div style="max-width:52em;margin:1em auto 0 4%;">
Лисп же изначально испытывал передовые приёмы исчисления и структурирования программ. Удивительно, но все из этих нововведений проникли в сознание программистской общественности лишь как последующие заимствования их в более популярных языках. То есть в тех языках, что милее обычным людям.
Многие из этих заимствований были сразу приняты за
Из этой наблюдаемой тенденции можно смело заключить: Лисп «сечёт» лишь небольшая прослойка академиков, и поэтому он ведёт дальнейшее развитие иных языков общего назначения, с запозданием от года до десятков лет.</div>▼
▲Из этой наблюдаемой тенденции можно смело заключить: Лисп «
{{Эпиграф|[Созданием [[Java|Джавы]] в 1990-х годах] мы не стремились отыграть программистов на Лиспе; мы целились на программистов [[Си++]]. Многих из них мы утащили куда-то на полпути к Лиспу.
{{Подпись|— Гай Стил<ref>Член стандартизационных комитетов для Си, Фортрана, Коммон Лиспа, Джавы; член IEEE, соавтор диалекта Схим.</ref>}}}}
<div style="max-width:52em;margin:
▲<div style="max-width:52em;margin:1em auto 0 4%;">Помимо того, однако, Лисп таит некую ''особую'' мощь, на которую не желают покуситься даже самые талантливые и амбициозные языкотворцы. Пол Грэхэм [http://paulgraham.com/diff.html описал] её так:
<div style="float:none; padding: 3px 15px 3px 15px;">
Строка 31 ⟶ 24 :
9. Всегдашняя доступность языка. Нету существенного разграничения между чтением, компиляцией и исполнением.
</i>[Замысел №]<i>8, который (вместе с 9) делает возможным Лисповы макросы, покамест уникален в Лиспе, наверное, потому, что (а) требует всех этих скобок, или нечта столь же плохого, и (б) если вы сделаете этот последний шаг умощнения, вы не сможете заявляться изобретателем нового языка — лишь только создателем нового диалекта Лиспа ;
==Отличия==
В силу вышесказанного, даже бывалым программистам при изучении Лиспа порою придётся переучиваться:
#Отличать значения некоторых терминов в Лиспе от таковых в
#Изучать необычные заменители привычных
#Привыкать к иной манере программирования, поощряемой уникальными
Первое —
А вот последнее требование —
===Восходящее программирование===
<span style="margin-left:-0.1em">Частный</span> аспект этого нового способа назван «восходящим программированием» (по-английски — ''bottom-up'' programming<ref name="bottom-up">Статья [http://www.paulgraham.com/progbot.html Programming Bottom Up] на английском; часть книги «On Lisp».</ref> — «программирование со дна вверх»). Вообще-то любая программа составляется и «снизу», и «сверху», — если она, конечно, написана не прямо на автокоде. Программист на Фортране/Алголе/Си++/Джаве «восходит» по лестнице концептуальной сложности программы всякий раз, когда пишет библиотеку. Но целую программу не создашь на одних библиотеках, да и ограничения языка вскоре дают о себе знать. Так программист встаёт на более традиционный путь «нисходящего программирования»: начиная с наиболее общего взгляда на проектируемую систему, мысленно дробит её на такие части, какие легче всего представить средствами данного языка и существующими библиотеками.
<span style="margin-left:-0.1em">Лисп</span> же, будучи усвоен программистом, не торопит навязывать свои структуры и процедуры, а даёт все приспособления для творения новых, — творения, фактически, собственного языка. Опять же, библиотечные функции и классы делают подобное в других языках. Но Лисп идёт намного дальше, позволяя создавать ''«библиотечное
<span style="margin-left:-0.1em">Так</span>, Лисп позволяет программировать эффективнейшим способом: создать удобный набор понятий и составить из них решение вычислительной задачи. Или же наоборот: разделить задачу на систему более простых понятий, (и не обязательно только «модулей», «структур», «процедур», «объектов»,) а затем без особых ограничений реализовать те понятия и взаимосвязи
===Начинающим программистам===
Остережение выше было обращено к программистам, привыкшим к нелисповым языкам. Но и совершенным новичкам может быть немудро начинать с изучения Лиспа.<ref>Даже по Эрику Рэймонду[http://www.catb.org/~esr/faqs/hacker-howto.html#skills1], Лисп должен быть не первым изученным языком, а лишь одним из пяти-шести первых, наряду с [[Язык Си в примерах|Си]][[Си++|[++]]], [[:Категория:Python|Пайтоном]], [[Java|Джавой]] и Пёрлом ^.^ kawaii ;-)</ref> Во-первых, это сложный язык, а Общий Лисп — сложнейший из диалектов. Во-вторых, он непопулярен: намного трудней найти с ним трудоустройство, хостинг для веб-приложений или помощь.
С другой стороны, всё-таки,
Вопрос ищет, скорее, область определения положительного ответа. Часто можно встретить мнение, дескать, каждой задаче —
Не умея дать уверенного и чёткого ответа, сошлёмся на эссе, написанного директором исследований компании «Гугл» и по совместительству знаменитым лиспником: [http://www.williamspublishing.com/21-days.html «Научись программировать за десять лет»] (русский перевод; оригинал — [http://norvig.com/21-days.html Teach Yourself Programming in Ten Years].) Однако Норвиг
Так или иначе, изучение Лиспа будет полезно хотя бы для [[Словарик философствующего информатика|глубокого понимания информатики и проектирования программ]].</div>
|