LISP

Материал из Неолурк, народный Lurkmore
Перейти к навигации Перейти к поиску

(defarticle LISP

(epigraph

Любая достаточно сложная программа на C или Фортране содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины языка Common Lisp[1]
— '(Филип Гринспен))
…в том числе и сам Common Lisp
В Лиспе, если охота аспектно-ориентированного программирования, нужно лишь настругать немного макрокоманд, и готово. В Java, нужен Грегор Кичалес, создающий новую фирму, и месяцы и годы попыток заставить всё работать.
— '(Петер Норвиг)))

(defterm LISP («язык программирования» (состоящий (из (смайликов (чуть (более (чем (целиком)))))))))

(defstatement Считается, что[2] LISP (означает '(LISt Processor — обработчик списков.)))

(defquote '(Ибо воистину. Первый Язык, жемчужина посреди простых камней, и нет языков кроме Него. Скобки, в которых пустота — тело Его, мистическое двуединство кода и данных — дух Его, божественная рекурсия — сердце Его. Истинно говорю вам, избегающий света Его есть безумец, вот, свершается кара над главой его, и убогостью отмечены поделия его, подобные пустым глиняным горшкам рядом с хрустальным сосудом благодати Его. Принявший же и постигший истинный свет Его подобен прямой и отточенной стреле, чисты помыслы его и крепка рука его, и благословенны творения его, дарующие радость и утоляющие печали, ибо одухотворены духом Его и отмечены благодатью Его.)
— '(ЛОР о Лиспе)))

(defsection «история-создания»[править]

'(

  • «Перволисп был открыт матершинником Джоном Маккарти (более известным как отец понятия «искусственный интеллект») и программистом Филлис Фокс, реализовавшими в начале 1960 г. процедуру eval для инструкций, записанных в списки вместе с данными, что позволило объединить данные и код в единый тип S-expression (symbolic expression) и отказаться от отдельного M-expression (meta expression) для инструкций, имевшего другой синтаксис.»
  • «Emacs Lisp разработан Ричардом Столлманом для редактора GNU Emacs. Является самым старым лиспом из остающихся в ходу.»
  • «ANSI Common Lisp (стандарт ANSI X3.226-1994) был разработан, чтобы связать воедино в одном стандарте разнообразные лиспы (Interlisp, LML и пр.), является наиболее практичным диалектом, на котором пишут вебсерверы, вебсайты и вебдваноль.»
  • «Scheme создали Гай Стил[3] и Джеральд Сассман в качестве учебного языка для демонстрации колдовских возможностей машины и написания книги SICP. В процессе работы над языком они достигли такой глубины сатори, что сочиняли до десятка разных интерпретаторов в неделю.»)
  • «Инженеры из Apple Computer, не останавливаясь на достигнутом (Object Pascal), создали Dylan, совмещающий синтаксис Паскаля с возможностями Lisp, но всем было похуй. А потом вернулся Джобс, и в Apple воцарился Objective C, совмещающий типобезопасность C со скоростью SmallTalk

))

(defsection кошерность[править]

'(

Holy vsl lisp.jpg
  • «функциональная основа (хотя на самом деле лисп — язык мультипарадигменный)»
  • «прямой доступ к AST — на лиспе очень легко метапрограммировать. За это его любит, например, Луговский, Лейн»
  • «истинные макрокоманды, а не всякое препроцессорное говно»
  • «интерпретатор Лиспа, написанный на Лиспе, занимает 15 строк, который еще раз показывает, что лисп — это вам не хухры-мухры [4]»
  • «возможность отлаживать, модифицировать, обновлять работающую программу, не перезагружая ее»
  • «мощный рантайм»[5]
  • «эффективные кроссплатформенные реализации»
  • «уважается Луговским — nuff said.»))

(defsection галерея[править]

(defentity goat.se! '(

(((L I S P )( L I S P ) ( L I S P ) ( L I S P )))
* (     \             \            )    \       *
B(       )             \          )      )      B
e(       `.             )         )       :     e
a`        )             )        \)       )     a
t \       ) )       )  \\\   --__ \\       :    t
i  \      \)   _--~~          ~--__) \     )    i  
n   \      \_-~                    ~-_\    )    n
g    \_     \        _.--------.______\)   )    g
      \     \______(( _ ___ _ (_(__H  \   )      
t      \   .  S ___)  ______ (_(____t  )  )     t
h       (\ )   I ____)) APPLY\ (_____D  )_)     h
e      ( (\)   C_____)  EVAL )  (___P   )  \    e
      (   (   _P_____)\______)  )) _) )     \    
a     (    \  )__   \\_________)) (__)       )  a
v    ( \    \____)   `----   --'             )  v
e    (  \_          ___\       )_          _) ) e
r   (              )    (     )  \            ) r
a   (             )    (   λ   )  \           ) a
g   (          ) )    (         )  \           )g
e   (         ) )      (__)(___)    )          )e
s  (           )        (    )       )         )s
*  (          )         (    )       )         )*
(((L I S P )( L I S P ) ( L I S P ) ( L I S P )))

)))

(defsection «см. также»[править]

(defsubsection статьи[править]

'(

(defsubsection ссылки[править]

'(

  • (deflink ae:Lisp «Единственно правильное мнение о лиспе»)
  • (deflink en.w:LISP «Английская педивикия о лиспе»)
  • (deflink http://lisp.ru/ ())
  • (deflink en.w:Knights of the Lambda Calculus «Рыцари лямбда-исчисления»)
  • (deflink http://paulgraham.com/onlisp.html ())
  • (deflink [2] «уроки ЛИСПа для чайников»)
  • (deflink http://habrahabr.ru/post/237297/ )
  • Interview with an Adware Author — интервью с программистом фирмы Direct Revenue, который писал на Scheme трояны, гадившие на декстопе и в браузерах рекламными поп-апами.))

(defsubsection примечания[править]

'(

  1. (Т.н. „Десятое правило Гринспена“ (первых девяти не существует))
  2. (Есть мнение, что на самом деле LISP означает Lots of Irritating Superfluous Parentheses, хотя некоторые говорят что на самом деле это Lost in a Sea of Parentheses. Существует также трактовка Lots of Incomprehensible Statements with Parenthesis
  3. (Впоследствии соавтор Явы
  4. ниасилил на RSDN [1]
  5. (let ((x '(a b))) (setf (cdr x) x))

))))

Movax1010h.png Глубокий смысл скрыт в этих неестественных языках
Языки программированияПромышленные: BATC#CC++JavaJavaScript (AJAX) • PascalPerlPHPPythonRubyABAPАссемблерВасикFortran (Профессор)
Эзотерические: BrainFuckHQ9++ErlangForthHaskellLISP (My other car) • PrologTclΤΕΧOracleMySQLGolangВ++Scala
ПрофессииБыдлокодерПрограммистТестировщикХакерХеллоуворлдщикIT-звёзды
Методы и стилиReverse EngineeringАнти-паттернВыстрелить себе в ногуГрязный хакКод (индусский) • КостыльМетод научного тыкаПомолясьСвистелки и перделкиОчередьСпортивное программированиеОбфускацияБета-тестАльфа-тестШаблоныRegReplace
Средства разработкиSublime TextПодсветка синтаксиса кодаUnstable DiffusionAPIPythonTutorCodeWarsDataCampUnity3D
ЛюдиИлья КанторЮрий КлючевскийЭдуард Лаас
Прочее++i + ++iDeadline%s640 килобайтCMSDummy modeЕГГОГFoobarGod is real, unless explicitly declared as integerGOTOIfconfigKISSRegExpSICPsql.ruXyzzyДискетаИнжалид дежицеКОИ-8ЛогМанРекурсияСУБДТест ТьюрингаУмение разбираться в чужом кодеФаза ЛуныФатальный недостатокПроблема 2000ТаймстампКэшЗапись в файл без кэша (Perl)Танцы с бубномКодач