Lurkmore

LISP

(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 кошерность

'(

  • «функциональная основа (хотя на самом деле лисп — язык мультипарадигменный)»
  • «прямой доступ к 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 ссылки

'(

(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))

))))


w:LISP en.w:LISP ae:Lisp