avva: (Default)
avva ([personal profile] avva) wrote2003-02-08 01:49 pm

лисп

Я учу Lisp (язык программирования такой, для тех, кто не знает). Немного стыдно, что до сих пор его не знал (совсем простые куски кода я умею читать, подцепил где-то случайно, в emacs'е скорее всего; но писать не могу, и язык по-настоящему не понимаю), но как-то не нужен он мне был. Да он мне и сейчас не нужен особенно, но захотелось вот заполнить эту лакуну. От лакуны к лакуне -- так, глядишь, и дойдёшь до чего-то хорошего.

Взял в библиотеке две книги пару недель назад: Lisp (Winston&Horn, 3rd edition), и Programming in Common Lisp (Brooks). Сегодня начал их читать, и если найду ещё немного времени, скачаю и установлю какой-нибудь Лисп поиграться.

Книга Винстона и Хорна более подробна, основательна; вместе с тем более "попсовая" что ли. В тексте сквозит настойчивое стремление объяснить читателю, что Лисп - это совсем не страшно. Вместо car и cdr всегда используются first и last. И много ещё подобных мелочей. Книга Брукса куда более лаконична, написана более уверенным тоном и для людей, уже что-то знающих и уверенных в себе.

Концептуальная простота Лиспа меня восхищает. Я вообще очень падок на концептуальную простоту, и потому очень люблю, например, Smalltalk и Forth, хоть и не работал в них сколько-нибудь долго, не писал ничего действительно серьёзного. Теперь Лисп, наверное, присоединится к этому списку.

[identity profile] dimulka-9.livejournal.com 2003-02-08 03:57 am (UTC)(link)
Ох, не смог пропустить этот пост.

Лисп, юность, детство мое. Ах... Скажите, зачем Вам это сейчас? Я уже давно не слышал о применении этого языка.

Тут недавно предложили работа в Южной Корее, требовалось знание ассемблера, ох. Тоже ведь писал на этом языке. Машинные коды - это нечто такое волшебное, что может понять только неискушенное дельфями и перлами сердце. Это классика. Это инструмент прямого доступа к душе компьютера, к его чувствам, к его возможностям. Это ключ к пониманию лампочек на его экране, к шуршанию его диска, к зависанию его программ. Это красота слога. Это воплощенное кокетство в краткости. Это программа из 4 байт, позволяющая перезагрузить компьютер.

Эх. Это я. Это мое. Это навсегда.

Re:

[identity profile] avva.livejournal.com 2003-02-08 04:08 am (UTC)(link)
Скажите, зачем Вам это сейчас? Я уже давно не слышал о применении этого языка.

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

Для программиста полезно знать -- не много языков, а много разных, принципиально отличающихся друг от друга языков. Разных типов языков. Лисп - это целый тип языков программирования, заключённый в самом себе. Это отдельный мир, другой способ смотреть на программирование и на задачи, стоящие перед программистом. Пора попробовать впитать в себя и эту традицию, это понимание. Из таких примерно соображений.

Тут недавно предложили работа в Южной Корее, требовалось знание ассемблера, ох. Тоже ведь писал на этом языке. Машинные коды - это нечто такое волшебное, что может понять только неискушенное дельфями и перлами сердце. Это классика. Это инструмент прямого доступа к душе компьютера, к его чувствам, к его возможностям. Это ключ к пониманию лампочек на его экране, к шуршанию его диска, к зависанию его программ. Это красота слога. Это воплощенное кокетство в краткости. Это программа из 4 байт, позволяющая перезагрузить компьютер.

Очень хорошо Вас понимаю. В прошлой жизни я много и с огромным удовольствием писал на ассемблере. Включая все возможные прямые доступы, оптимизацию графики на скорость (и был в этом асом одно время), и даже однажды оптимизацию кода на размер для embedded систем. Это были прекрасные времена.

[identity profile] dimulka-9.livejournal.com 2003-02-08 04:30 am (UTC)(link)
Можно с уверенностью выделить несколько классов языков программирования. И попробовать "лабать" на любом языке из каждого класса. Этого вполне хватит для незамутнения мозгов, если такой именно цели Вы добиваетесь.
Лисп. Реомендую посмотреть на Форт. Некоторые вещи диаметрально противоположны, но класс один. Вам, уверен, понравится.
Вообще, функциональные языки типа Лиспа (Лого, АРЛ, ...) хорошо сравнивать с логическими типа Пролога, Кэнивера... А уж Снобол и Рефал вообще чудесные превращения прочих языков в новые. :)
Кстати, какой Лисп? Родной первый либо же common, standart, france?

Re:

[identity profile] avva.livejournal.com 2003-02-08 04:32 am (UTC)(link)
Я уже знаю почти все языки, что Вы назвали ;) но вот Лисп как раз нет. Особенно Форт люблю, кстати.

Кстати, какой Лисп?

Пока что, думаю, Common Lisp будет адекватен.

(no subject)

[identity profile] dimulka-9.livejournal.com - 2003-02-08 04:42 (UTC) - Expand

Re:

[identity profile] avva.livejournal.com - 2003-02-08 04:48 (UTC) - Expand

(no subject)

[identity profile] dimulka-9.livejournal.com - 2003-02-08 04:53 (UTC) - Expand

[identity profile] bolk.livejournal.com 2003-02-08 03:58 am (UTC)(link)
Refal очень рекомендую.

[identity profile] ailev.livejournal.com 2003-02-08 11:08 pm (UTC)(link)
Я бы тоже рекомендовал вместо Лиспа попробовать Рефал. Если не из прикладных (франц-лисп, насколько я знаю, является сейчас самым эффективным компилятором на планете ;) соображений, а из философско-концептуальных, то вообще рефал однозначно.

Re:

[identity profile] avva.livejournal.com 2003-02-08 11:24 pm (UTC)(link)
Это не вопрос или-или ;) а вопрос аллокации времени. Всё же важность знания Лиспа мне сейчас более очевидна, чем важность знания Рефала. Но, несомненно, и до Рефала доберусь.

[identity profile] bish0nen.livejournal.com 2003-02-08 04:04 am (UTC)(link)
Pauh Graham, "ANSI Common Lisp" - совершенно замечательная книга для того, чтобы начать, плюс он пишет приятным языком. Я как раз в этот момент её перечитываю от скуки и из удовольствия от его книг. На его же вебсайте (http://www.paulgraham.com/)) есть PDF продвинутых техник программирования на Лиспе, "On Lisp". Есть ещё чудная книга, "Structure and Interpretation of Computer Programs" (aka SICP), её не грех любому иметь настольной книгой, она даже доступна на сайте MIT'а в электронном виде, там, правда, в качестве языка примеров используется Scheme (мне Scheme нравится больше, так как, на мой взгляд, Lisp страдает некоторой избыточностью - весь стандарт Scheme умещается в 50 (+-2) страниц, а это - всего лишь размер оглавления стандарта на ANSI Lisp).

Re:

[identity profile] avva.livejournal.com 2003-02-08 04:14 am (UTC)(link)
Спасибо. Я буквально вчера прочитал любопытную статью Грэма.

Я думал было учить Схему, а не Лисп, но решил, что всё же от Схемы более попахивает ученичеством. Мне хочется не только понять данную парадигму программирования, но и знать мощный язык, который её воплощает. К тому же изучение Лиспа даёт дополнительную отдачу ввиду его исторической роли и важности. Так мне кажется.

[identity profile] ex-sgt783.livejournal.com 2003-02-08 05:09 am (UTC)(link)
Да, Грэм рулит, хоть и весьма biased насчет Лиспа, местами слишком.

Там еще много любопытных статей, в том числе про то, как Лисп помог ему опередить конкурентов в создании одного из первых e-commerce движков, который теперь Yahoo! Store.

Когда прочитаешь про Лисп, обязательно посмотри что-нибудь про CLOS (если до сих пор не).

[identity profile] cmm.livejournal.com 2003-02-08 05:34 am (UTC)(link)
> Я думал было учить Схему, а не Лисп, но решил, что всё же от Схемы более попахивает ученичеством.

точно-точно.   Схема концептуально "элегантнее", но работать с ней разумно только академикам, да.

а стандарт у нея меньше, потому что в нём нету нифига.   обожаю просто этот аргумент.

ежели книжков на бумаге хочешь, так у меня их есть.

[identity profile] bety.livejournal.com 2003-02-08 05:53 am (UTC)(link)
ага, и еще некоторые почему-то считают, что кроме академиков, Схему просто обязаны изучать студенты первого курса, в качестве самого первого компьютерного предмета, вообще. А на потом говорят, что цикл "while", это типа итеративной рекурсии, только проще :)

Re:

[identity profile] cmm.livejournal.com - 2003-02-08 06:04 (UTC) - Expand

(no subject)

[identity profile] angerona.livejournal.com - 2003-02-08 06:52 (UTC) - Expand

(no subject)

[identity profile] bety.livejournal.com - 2003-02-08 11:35 (UTC) - Expand

(no subject)

[identity profile] angerona.livejournal.com - 2003-02-08 12:02 (UTC) - Expand

(no subject)

[identity profile] bety.livejournal.com - 2003-02-08 13:43 (UTC) - Expand

(no subject)

[identity profile] angerona.livejournal.com - 2003-02-08 14:55 (UTC) - Expand

(no subject)

[identity profile] bety.livejournal.com - 2003-02-09 04:24 (UTC) - Expand

(no subject)

[identity profile] angerona.livejournal.com - 2003-02-09 06:49 (UTC) - Expand

(no subject)

[identity profile] bety.livejournal.com - 2003-02-09 07:36 (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2003-02-09 09:14 (UTC) - Expand

(no subject)

[identity profile] bety.livejournal.com - 2003-02-09 13:39 (UTC) - Expand

(no subject)

[identity profile] sobaker.livejournal.com - 2003-02-10 01:01 (UTC) - Expand

(no subject)

[identity profile] bety.livejournal.com - 2003-02-10 04:32 (UTC) - Expand

[identity profile] bish0nen.livejournal.com 2003-02-08 07:24 pm (UTC)(link)
а стандарт у нея меньше,

Размер стандарта Схемы - не фетиш и не самоцель, разумеется. Но вот, например, от миллиона стандартизированных способов доступа к элементу массива/sequence в Лиспе (svref мы будем использовать потому, что он оптимизирован для одномерных массивов, а aref - нет) - от этого, право же, просто навзрыд рыдать хочется.

потому что в нём нету нифига. обожаю просто этот аргумент.

В какой степени это правда (отсутствует штатная объектная система), но у Схемы теперь есть SRFIs, которые заполняют многие дыры. Некоторые реализации Схемы приходят со своими очень интересными расширениями (weak boxes, fluids, will executors, units w/ signatures etc), отсутствующими в других реализациях, к сожалению.

Re:

[identity profile] cmm.livejournal.com - 2003-02-09 02:04 (UTC) - Expand

(no subject)

[identity profile] bish0nen.livejournal.com - 2003-02-09 07:23 (UTC) - Expand

Re:

[identity profile] cmm.livejournal.com - 2003-02-09 09:07 (UTC) - Expand

[identity profile] bish0nen.livejournal.com 2003-02-08 07:10 pm (UTC)(link)
Я на самом деле вовсе не агитировал за подмену Лиспа Схемой, а лишь сослался на очень интересную книжку, плюс пара фраз на то, что такое Схема. Правда, мне не совсем понятно, что Вы подразумеваете под ученичеством (и, как далее по тексту назвали "для академиков"), мне кажется, это незнакомства с сутью предмета обсуждения. И на Scheme (как и на Lisp'е) пишут коммерческий софт, кружки любителей Схемы на своих занятиях обсуждают ажно SXML transforms, SSAX, Scheme continuations and their application to web programming. Утверждение было бы верно лет десять назад, когда не было ни Bigloo Scheme, ни mzscheme, ни R5RS с SRFIs (например).

[identity profile] bobuk.livejournal.com 2003-02-08 04:17 am (UTC)(link)
Если очень хочется простоты и очевидности - стоит посмотреть в сторону Scheme. На много более лаконично чем Lisp, но примерно тот же подход.

(Anonymous) 2003-02-08 05:27 am (UTC)(link)
Интересно, почему выбрали лист, а не пролог, например? С точки зрения концепциин, пролог, мне кажется, интереснее. Во всяком случае 20 лет назад он считался "попсовее". :)

Re:

[identity profile] avva.livejournal.com 2003-02-08 05:38 am (UTC)(link)
Я просто знаю уже Пролог. Когда-то очень его любил, лет 9-10 назад примерно (ох, как давно). С тех пор им не пользовался, но суть его, изюминку, мне кажется, помню хорошо.

почему старый LISP?

[identity profile] lnvp.livejournal.com 2003-02-08 12:42 pm (UTC)(link)
Уважаемый Анатолий, почему именно старый функциональный язык без типового контроля? Возьмите Haskell или ML, и интереснее, и полезнее будет (богатая система типов, новые концепции — монады, например). Разница между ними: Haskell ленивый и чистый, популярен среди новаторов-экспериментаторов; ML — строгий (в смысле, не ленивый) и не чистый, более мэйнстримовый и использующийся на практике; у него несколько популярных дилаектов (Standart ML, очень эффективный OCaml).
(пардон за репостинг, палец соскочил)

Re: почему старый LISP?

[identity profile] avva.livejournal.com 2003-02-08 12:47 pm (UTC)(link)
Лисп - не совсем функциональный язык; я бы вообще выделил его в отдельную категорию. И эта категория заслуживает изучения.

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

А до Хаскеля я ещё доберусь.

Re: почему старый LISP?

[identity profile] cmm.livejournal.com 2003-02-08 01:38 pm (UTC)(link)
> почему именно старый функциональный язык без типового контроля?

три грубые ошибки в одном предложении.   так держать, товарисч!

(Anonymous) 2003-02-08 05:28 am (UTC)(link)
"Лист" = "лисп"

[identity profile] alexeiv.livejournal.com 2003-02-08 06:44 pm (UTC)(link)
говорят, на КоммонЛиспе круто писать CGI. Я сам еще не пробовал, правда.

CLOS

[identity profile] vzaliva.livejournal.com 2003-02-08 07:59 pm (UTC)(link)
Я тоже люблю LISP. Там CLOS представляет отдельный интерес.
Кстати есть хорошая книга которую рекомендую:
The Art of the Metaobject Protocol
(http://www.amazon.com/exec/obidos/ASIN/0262610744/wwwcrocodilorg)

nine_k: A stream of colors expanding from brain (Default)

[personal profile] nine_k 2003-02-10 02:57 am (UTC)(link)
Из концептуально простых есть ещё замечательный TCL ;-)

Видел однажды под номерным знаком машины 'My other car is cdr'. Был восхищён.

[identity profile] uptheirons.livejournal.com 2003-12-13 10:13 am (UTC)(link)
Common Lisp стоит знать.
хотя бы для того, чтобы полноценно писать на мультипарадигменном языке.