LINUX.ORG.RU

50 лет языку LISP

 , mccarthy,


1

0

Сегодня знаменательная дата, старейшему после фортрана языку программирования исполнилось 50 лет. Несмотря на столь почтенный для языка программирования возраст, он до сих пор активно развивается, используется в новых проектах и десятилетиями использует концепции, которые в новых языках стали появляться только недавно. Кое-кто считает даже, что когда все остальные языки канут в небытие, LISP останется, потому что это единственный язык, про который можно сказать, что он не придуман, а математически вычислен Джоном Маккарти.

>>> Подробности

anonymous

Проверено: Shaman007 ()

Ответ на: комментарий от demoriz

>Из всех когда либо существовавших языков именно он, однако, более прочих этого достоин.

Амбиции, комплекс маленькой собачки. Только как не тявкай выше головы не прыгнешь.

demoriz
()
Ответ на: комментарий от demoriz

> Амбиции, комплекс маленькой собачки. Только как не тявкай выше головы не прыгнешь.

Ты быдло и плебей. Типичный блаб-кодер, про которых Грэм писал.

Во первых, Лисп из всех живых языков самый старый. Во вторых, он самый простой из высокоуровневых языков. В третьих, именно из него были позаимствованны ВСЕ идеи, которые есть сейчас в мейнстримных языках, именно он и является их общим предком.

Но ты ж, сука, простая быдлокодеряшка, куда тебе такие сложные вещи осознать. Ты мыслишь на уровне быдла - вебсайтишко слабать, игруху для быдлодеток...

anonymous
()
Ответ на: комментарий от demoriz

Блин, да ты ж похапешник. Представитель самой низшей и самой убогой касты. Фи. Я то думал, с человеком разговариваю, а тут неприкасаемый. Брысь отсюда!

anonymous
()
Ответ на: комментарий от demoriz

Кстати, быдляшка-похапешник, ты в курсе, что самый быстрый компилятор похапе написан как раз таки на Схеме?

anonymous
()
Ответ на: комментарий от anonymous

>Ты быдло и плебей. Типичный блаб-кодер, про которых Грэм писал.

Во первых, Лисп из всех живых языков самый старый. Во вторых, он самый простой из высокоуровневых языков. В третьих, именно из него были позаимствованны ВСЕ идеи, которые есть сейчас в мейнстримных языках, именно он и является их общим предком.

Но ты ж, сука, простая быдлокодеряшка, куда тебе такие сложные вещи осознать. Ты мыслишь на уровне быдла - вебсайтишко слабать, игруху для быдлодеток...

:))))))))))))))))))))))))))))))))))))))))))))

осторожней...

Мама увидит ругать будет :)

demoriz
()

Кстати, всем тем примитивным и убогим, которые тут катят бочку на Лисп, всем этим никчемным жалким ремесленникам - похапешникам, жабакодерам, плюсплюсникам, следует в обязательном порядке прочитать вот это:

http://www.paulgraham.com/avg.html

anonymous
()
Ответ на: комментарий от demoriz

LISP is the real "one hundread year language". Others just come and go, and of course, suck.

// angirer

anonymous
()
Ответ на: комментарий от demoriz

Что, быдляшка, по делу возразить нечего?

Назови любой популярный язык - и я покажу, какие фичи этого языка позаимствованы из Лиспа.

anonymous
()
Ответ на: комментарий от anonymous

>Блин, да ты ж похапешник. Представитель самой низшей и самой убогой касты. Фи. Я то думал, с человеком разговариваю, а тут неприкасаемый. Брысь отсюда!

детский сад. судя по тому что ты ананимус я знал несколько языков до того как ты вообще по русски разговаривал. это последний раз когда я ведусь на вопли недомерка.

demoriz
()
Ответ на: комментарий от anonymous

> Кстати, всем тем примитивным и убогим, которые тут катят бочку на Лисп, всем этим никчемным жалким ремесленникам - похапешникам, жабакодерам, плюсплюсникам, следует в обязательном порядке прочитать вот это: > > http://www.paulgraham.com/avg.html

Куда уж им, они даже англицкий осилить не в состоянии.

// trader

anonymous
()
Ответ на: комментарий от demoriz

demoriz, можете ответить на простой в общем-то вопрос?

Почему для того чтобы программировать в Java аспекты, мне нужен отдельный язык AspectJ, а в Lisp - только лишь использовать библиотеку AspectCL?

anonymous
()
Ответ на: комментарий от demoriz

Вас, я вижу, в детсве лисп укусил?

anonymous
()
Ответ на: комментарий от demoriz

> я знал несколько языков

Ага, ага, "несколько" - perl, c и php, да? Ни хера ты не знал. Фортран знаешь? Lisp (если не знаешь - то какого хера вообще о нём имеешь наглость иметь мнение)? ML? FP? APL? Simula? Smalltalk? J? Forth? Prolog? Ни хера не знаешь из перечисленного? Так ты тогда просто никто, ноль.

Чем лисперы (то есть, элита) отличаются от быдлокодеров, так это тем, что они то всякие там быдлокодерские примитивные язычки хорошо знают. А вот быдлокодеры, бесящиеся на то, что элита их превосходит, и что уровень элиты для них недостижим, как раз лиспа то и не знают. Но смеют осуждать. Забавно, не правда ли?

anonymous
()
Ответ на: комментарий от Sun-ch

> L-3 Communications at the Air Force _Research_Laboratory_ ...

(важное подчёркнуто)

> ... They list both LISP and Scheme as their top preference for programming languages.


Иначе говоря, некая команда (лисперов?) объявляет, что предпочитает Лисп и Схему. Неудивительно, блин! :) А наша дворовая команда вообще предпочитает World of Warkraft. Военные - парни, конечно, серьёзные, но вряд ли отличающиеся от проф. команд программистов повышенным интеллектом. Пример: TCP/IP.

> Если я не ошибаюсь, амерские военные за все это время, сертифицировали только 2 языка - лисп и аду.


Вот именно. А хорошего софта (на других языках) сделано тысячи! Вопрос: это другие такие дураки или военные такие ограниченные?

Да и военщина - не мерило успеха, т.к. их критерии далеки от обывательских. Нам лучше сделать быстро и потом подлатать, уделяя время удобству пользователя. Военным нужна надёжность, восстанавливаемость, простота, скорость, защищённость. Я бы не сказал, что ЛИСП тут рулит - его динамическая природа априори отсекает "скорость", "простоту" и "надёжность". Не многовато? :) Да и "сертифицировали" - понятие растяжимое: для каких применений сертифицирован ЛИСП?
Ну и совсем уж объективно рассуждая, давайте почитаем ОТЧЁТ, где говорится: мы, пиндосские военные, протестировали столько-то языков, на таких-то платформах, на таких-то задачах (код задач в студию). Мы обнаружили, что всё кругом г-но, кроме Лиспа и Ады, потому что... (далее следуют однозначные логические выводы и сопоставления цифр).
Будет отчёт - тогда и можно поговорить об авторитете/профессионализме "американских военных". Согласен?

matumba ★★★★★
()
Ответ на: комментарий от anonymous

Я не люблю элитарность, лисп вовсе не элита, любой его может выучить - было бы желание.

// лиспер, не родишвийся таковым, а ставший.

anonymous
()
Ответ на: комментарий от matumba

А ты своей головой думать не могешь? Если большинство не использует лисп, то и ты не можешь (не можешь признать, не можешь не троллить, подставить-нужное)?

anonymous
()
Ответ на: комментарий от anonymous

> любой его может выучить - было бы желание.

Любой может вступить в ряды элиты - было бы желание и мозги. Так что, никаких противоречий.

Проблема быдлокодеров в том, что желания и мозгов у них нет. Мозги у них нетренированные - они никогда не решали сложных задач. Мотивации к саморазвитию у них нет тем более, они происходят из тех социальных слоёв, где "умников" принято не любить.

anonymous
()
Ответ на: комментарий от anonymous

> Я тоже немного посмотрел и так и не понял в чем profit. По моему все это быстрее и понятнее текстом написать, а так мышевазюканье какое-то.

слои в архитектуре наглядней визуализируются. Скрыл ненужные столбцы/строки -- и вот он, аспект целиком.
"текстом написать" -- да, интересно что в S-выражениях так и получаются отдельные колонки, только в другом порядке. Научиться сворачивать строки, если колонки не входят в выражения -- и пользы от такого сворачивания будет больше, чем сейчас.
Интереснее всего будет, конечно, когда вся эта матрица станет программируемой, чтобы не только мышой возюкать (хотя юнит-тесты там совсем простые получилались), но и тот же DSL построить наглядно, на примере.

anonymous
()
Ответ на: комментарий от anonymous

...который оказывает такой, с позволенья, срач?

Ps. Лисп на лиспе у нас есть: короткий и ясный (http://www.linux.org.ru/jump-message.jsp?msgid=3184185&cid=3185668) Вот пример лиспа на C# (https://lsharp.svn.sourceforge.net/svnroot/lsharp) Он конечно в пост не втиснется - 3метра проект, но и слегка пофичастее будет. Тем не менее, использование такой архитектуры кода будет не таким лаконичным ;) Жду исходников лиспа на джава. Хочу узреть насколько джава лаконична :)

anonymous
()
Ответ на: комментарий от anonymous

> Например на лисп не пишут корпоративные информационные системы (КИС) - их пишут на Java.

http://www.software-lab.de/down.html

An introduction to writing browser-based applications in Pico Lisp, using the XHTML/CSS GUI-Framework, can be found in the "Pico Lisp Application Development" tutorial. In the last section, it describes a minimal but quite complete Application. ERP in 700 lines! :-)

http://www.software-lab.de/dbui.html

anonymous
()
Ответ на: комментарий от anonymous

> Я уже clozure на win32 с тредами пробовал.

И я попробовал, пока без тредов.

1. Все кодировки в самом лиспе - бяка, которая мне и в SBCL не нравится, плюс их очень мало. Правда не смотрел - на сколько легко их добавить и можно ли это делать "на лету".

2. Для тех кто захочет возразить "для работы с кодировками подключи iconv и делай что хочешь" - да, но из-за п.1. системные вызовы, возвращающие строки, работают "неадекватно" :(

хм, пилить и пилить...

yyk ★★★★★
()
Ответ на: комментарий от yyk

> Все кодировки в самом лиспе - бяка, которая мне и в SBCL не нравится, плюс их очень мало.

CL-USER> (setq чочо "что вы, простите, сказали?")

; in: LAMBDA NIL
;     (SETQ ЧОЧО "что вы, простите, сказали?")
; 
; caught WARNING:
;   undefined variable: ЧОЧО

; 
; caught WARNING:
;   This variable is undefined:
;     ЧОЧО
; 
; compilation unit finished
;   caught 2 WARNING conditions
"что вы, простите, сказали?"
CL-USER> чочо
"что вы, простите, сказали?"

anonymous
()
Ответ на: комментарий от anonymous

> Думаю, чего реально не хватает старым языкам так это их полного пересмотрения.

...но тогда эти языки перестанут быть "старыми"! :) Плюс библиотеки - кому нужен ЕЩЁ ОДИН язык, который не тянет старые наработки?

matumba ★★★★★
()

Немного интересного (на мой взгляд):

Изначально postgresql был написан на лиспе.

Javascript был реализован / прототипирован на лиспе.

Yahoo долгое время использовало viaweb на лиспе.

QPX - система резервирования авиабилетов написана на лиспе.

Common Lisp - первый стандартизированный объектно-ориентированный язык.

И http://abhishek.geek.nz/docs/features-of-common-lisp

anonymous
()
Ответ на: комментарий от anonymous

> Давайте ради интереса посчитаем, сколько (по времени и по затратам) займет разработка типовых проектов (из вышеперечисленного) на лисп и на традиционном для задачи языке. А потом сравним

давайте, это было бы интересно и практично. На реальном жизненном примере.

anonymous
()
Ответ на: комментарий от anonymous

>CL-USER> (setq чочо "что вы, простите, сказали?")

Так и ECL может... какой код первого символа в этой строке?

yyk ★★★★★
()
Ответ на: комментарий от anonymous

$ clisp 
  i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
  I I I I I I I      8     8   8           8     8     o  8    8
  I  \ `+' /  I      8         8           8     8        8    8
   \  `-+-'  /       8         8           8      ooooo   8oooo
    `-__|__-'        8         8           8           8  8
        |            8     o   8           8     o     8  8
  ------+------       ooooo    8oooooo  ooo8ooo   ooooo   8

Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2006


[1]>  (setq чочо "что вы, простите, сказали?")
"что вы, простите, сказали?"
[2]> чочо 
"что вы, простите, сказали?"

rtc ★★
()
Ответ на: комментарий от anonymous

>Обоснования здесь следующие:
>1) Лисп не приносит технологической выгоды: для лисп не существует коннекторов к промышленным СУБД, транзактной кеширующей прослойки ORM, развитого AOP (хотя здесь лисп может показать себя), MVC-фреймворков, GUI-библиотек (для rich-клиентов). Наконец, лисп просто не является объектно-ориентированным языком - а ничего лучшего для моделирования предметной области, чем ООП, человечество еще не придумало.


коннекторы существуют, хотя есть ООСУБД на лиспе. То же самое с ORM. "развитое AOP" -- см. в том примере http://www.software-lab.de/dbui.html, будь это реальный пример, код формы генерировался бы макрами из единой модели данных и метаданных. Про "ничего лучшего для моделирования предметной области, чем ООП,человечество еще не придумало" -- я бы поспорил, в основном, в том какое именно ООП тут необходимо (скорее всего, подальше от статической типизации, поближе к прототипированию в духе Self или "составным классам с горизонтальным наследованием", префикс классам в духе (class +MyCls +Cls1 +Cls2 +Cls3) из PicoLisp)

> 2) Лисп не приносит экономической выгоды. Пусть мы даже постулируем, что лисп-разработчик стоит столько же, сколько Java-разработчик, и пишет код так же быстро (что, в общем, нонсенс - во-первых, лисперы высоко задирают нос и сильно задаются в плане зарплат, во-вторых, работают менее продуктивно в силу отсутствия полноценного IDE). Но промышленный проект - это не только написание кода.


это да (по организации работ дешёвой рабсилой, что "работают менее продуктивно" и "пишет код так же быстро" можно поспорить).

>На первой странице очень хорошо написали: "невозможность писать, рефакторить и поддерживать большое количество кода большой командой разработчиков". Это - краеугольный камень процесса промышленной разработки.


просто рефакторить будет не быдлоко^W программист, а какой-то Language-Oriented Workbench. В случае с Java/MPS это чудо совсем толсто и невменяемо, правда картинки рисует симпатичные, но внутри -- тихий ужас, в случае лиспа есть надежда, что взлетит.

> При попытке заложить краеугольный камень из лисп, рушится все построенное здание.

>Все вышеописанное закрывает путь для лисп в область enterprise.

anonymous
()
Ответ на: комментарий от yyk

>>CL-USER> (setq чочо "что вы, простите, сказали?")

>(directory "*.*")

Не сразу "догнал" - говоря про количество кодировок и прочее я имел в виду clozure. SBCL упомянут лишь как ещё один пример "встроенных кодировок".

yyk ★★★★★
()
Ответ на: комментарий от anonymous

> Немного интересного (на мой взгляд):

> Изначально postgresql был написан на лиспе.

> Javascript был реализован / прототипирован на лиспе.

> Yahoo долгое время использовало viaweb на лиспе.

> QPX - система резервирования авиабилетов написана на лиспе.

> Common Lisp - первый стандартизированный объектно-ориентированный язык.

> И http://abhishek.geek.nz/docs/features-of-common-lisp

The first prototype of Caml language was written in LISP.

// winter

anonymous
()
Ответ на: комментарий от anonymous

> На Лиспе пишут операционные системы. И они на голову превосходили в своё время всех конкурентов, написанных на Си. Только вот железо дорогое было (Symbolics).

Кстати, просветите вот про лисп-машины и сильную типизацию. "В то время можно было сделать железо, на котором лисп работал с полной проверкой типов, и быстрее, чем на обычном" -- каким образом выполнялась типизация? И почему это было быстрее машин с обычной системой команд?
Про связь аппаратных форт-процессоров и ява-процессоров вроде понятно. А что мешает сделать аппаратную лисп-машину (вроде форт-процессора), будет ли она быстрее, в чём (как померять) и за счёт чего?

anonymous
()
Ответ на: комментарий от anonymous

>* (let ((foo "Юникод")) (values (length foo) (map 'list #'char-code foo)))

>6
>(1070 1085 1080 1082 1086 1076)

Хм, значит дока отстаёт. Список всех кодировок вывести можно?
И таки что на счёт (directory ...)?

yyk ★★★★★
()
Ответ на: комментарий от anonymous

В период истерии "звездных войн", при господине Рейгане, Lisp очень активно использовался в военных проектах.

Sun-ch
()
Ответ на: комментарий от yyk

И может сразу disassemble какой-нибудь простенькой функции? :)

yyk ★★★★★
()
Ответ на: комментарий от anonymous

>Блин, да ты ж похапешник. Представитель самой низшей и самой убогой касты.

Плюсофаков забыл. Они не просто пишут быдлокод как похапешники, они пишут быдлокод медленно.

Absurd ★★★
()
Ответ на: комментарий от anonymous

> Но вряд ли можно назвать язык, более практичный и полезный, чем С/С++.

можно, например, ява, или "голый Си". Тут вопрос, а что делает язык "практичным и полезным", платформа/библиотеки или его универсальная применимость.

> Пожалуйста, примеры. Желательно сложнее, чем тетрис.


http://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp , NaughtyDog
или посмотреть в сторону более современных Indy игр. Там осваивают казуальные D,Python/PyGame, CL , интересно читать интересно post mortem -- наверно потому что это FUN, а "написать игру на С++ или Java" -- в этом мало FUN.

> но тогда выходит что сам по себе лисп гроша выеденного не стоит.


лисп хорошо подходит на роль универсального языка для метамоделирования (и соответственно, архитектуры MDA, активные объекты, и т.п.)

> "Лисп в ентерпрайзе" - звучит как "еврей в тундре".


ты это, уточни какой ынтырпрайс тебе нужен. Вот банки или финанализ или биржи -- это ынтырпрайс или нет? KM там есть, база знаний (параметров техпроцесса, фин.модели и т.п.) -- есть или ещё нет, всё ещё OLTP? OLAP или какой-то анализ, классификация есть или нет?

anonymous
()
Ответ на: комментарий от Absurd

50 лет Лиспу.. А жизнь слишком коротка, чтобы писать на С++ :)

anonymous
()
Ответ на: комментарий от anonymous

> Назови любой популярный язык - и я покажу, какие фичи этого языка позаимствованы из Лиспа.

Так мы программируем не на идеях, а на РЕАЛИЗАЦИЯХ. Если в ЛИСПе есть цикл, но работает он медленно, к чёрту такой цикл! И так с любой фичей.

Но главное, чего нет у ЛИСПа - это будущего. :) Так какой смысл что-либо сравнивать и искать корни?

matumba ★★★★★
()
Ответ на: комментарий от yyk

Таки да:

anonymous@laptop: ~% mkdir тест
anonymous@laptop: ~% cd тест
anonymous@laptop: ~% touch файл
anonymous@laptop: ~/тест% ccl 
Welcome to Clozure Common Lisp Version 1.3-dev-r11170M-trunk  (LinuxX8664)!
? (directory "*")
(#P"/home/stas/ÑеÑÑ/Ñ
                      айл")


? (disassemble (lambda (a) (+ a 1)))
L0
  (leaq (@ (:^ L0) (% rip)) (% fn))
  (cmpl ($ 8) (% nargs))                          ;[7]
  (jne L89)                                       ;[10]
  (pushq (% rbp))                                 ;[12]
  (movq (% rsp) (% rbp))                          ;[13]
  (pushq (% arg_z))                               ;[16]
  (leaq (@ (:^ L69) (% fn)) (% ra0))              ;[17]
  (pushq (% ra0))                                 ;[24]
  (movq (@ -8 (% rbp)) (% arg_y))                 ;[26]
  (movq ($ 8) (% arg_z))                          ;[30]
  (movl ($ 16) (% nargs))                         ;[37]
  (movq (@ '+ (% fn)) (% temp0))                  ;[42]
  (pushq (@ 77752))                               ;[49]
  (jmpq (@ 10 (% temp0)))                         ;[56]
L69
  (leaq (@ (:^ L0) (% rip)) (% fn))
  (jmpq (@ .SPNVALRET))                           ;[76]
L89
  (uuo-error-wrong-number-of-args)
NIL

anonymous
()
Ответ на: комментарий от matumba

Уважаемый, вы даже троллить не умеете.

anonymous
()
Ответ на: комментарий от yyk

> таки что на счёт (directory ...)?

CL-USER> (directory "/home/myuser/директория/*") (#P"/home/myuser/директория/файл1" #P"/home/myuser/директория/файл2")

anonymous
()
Ответ на: комментарий от matumba

matumba, говорить "у лиспа нет будущего" это то же самое, что говорить " лямбда-исчислений нет будущего" или "у математики нет будущего". Заврались, сееер.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.