лисп

Feb. 8th, 2003 01:49 pm
avva: (Default)
[personal profile] avva
Я учу Lisp (язык программирования такой, для тех, кто не знает). Немного стыдно, что до сих пор его не знал (совсем простые куски кода я умею читать, подцепил где-то случайно, в emacs'е скорее всего; но писать не могу, и язык по-настоящему не понимаю), но как-то не нужен он мне был. Да он мне и сейчас не нужен особенно, но захотелось вот заполнить эту лакуну. От лакуны к лакуне -- так, глядишь, и дойдёшь до чего-то хорошего.

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

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

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

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

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

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

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

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

Date: 2003-02-08 04:04 am (UTC)
From: [identity profile] bish0nen.livejournal.com
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:

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

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

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

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

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

Re:

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

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

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

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

Re:

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

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

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

Date: 2003-02-08 04:42 am (UTC)
From: [identity profile] dimulka-9.livejournal.com
Все? :) Хм.. меня прямо-таки подбивает найти незнакомый Вам язык. :)

Да, коммон лучше. На мой взгляд, конечно.
Пакеты, хэш-массивы...

Скажите, а KRL и FRL (хотя это уже не совсем язык)? ARL?

Re:

Date: 2003-02-08 04:48 am (UTC)
From: [identity profile] avva.livejournal.com
Не все, а почти все ;) Рефал не знаю совсем, APL - очень посредственно, хочу его ещё отдельно выучить как-нибудь.

KRL - это который knowledge representation? Не знаю тоже.

Date: 2003-02-08 04:53 am (UTC)
From: [identity profile] dimulka-9.livejournal.com
Да, Knowledge Representation Language - язык представления знаний. Именно он. :)

Позвольте Вас во френды. Я думаю, это необходимость :)

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

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

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

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

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

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

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

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

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

Re:

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

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

Re:

Date: 2003-02-08 06:04 am (UTC)
From: [identity profile] cmm.livejournal.com
экономия концепций -- сама по себе вещь хорошая.

но увлекаться, конечно, не стоит. :)

Date: 2003-02-08 06:52 am (UTC)
From: [identity profile] angerona.livejournal.com
Еще как обязаны. Я как раз с ними полностью согласна -- очень помогает во всем потом, тем более, что этот самый курс обычно направлен не на изучение Схемы, а на изучение основных принципов программирования (и иллюстрируется программами на схеме). Зная схему и этот курс, все остальное действительно становится легче.

Date: 2003-02-08 11:35 am (UTC)
From: [identity profile] bety.livejournal.com
Я не спорю, что такой курс весьма полезен, но только в том случае, если слушатели имеют уже хотя бы самое элементарное представление о программировании. Ведь согласитесь, что рекурсия сама по себе, отнюдь не проста для восприятия, и человек, которому её показывают ещё до того, как он толком понял что такое "if.. then.." чувствует себя несколько потерянно. Лично мне было легко, поскольку я учила в школе Паскаль (да и рекурсию тоже), но среди моих сокурсников, было довольно много, совсем не глупых людей, которым пришлось с этим курсом тяжко.
Возможно, что тем, которым удалось справиться и было потом в чем-то проще, но все равно не вижу причин создавать такие сложности. Разве только, чтобы отсеивать народ, что они с успехом и делают.

Date: 2003-02-08 12:02 pm (UTC)
From: [identity profile] angerona.livejournal.com
Нет, мне кажется, что это полезно тем, у кого нет никакого знакомства с программированием. У меня как раз никаких абсолютно навыков не было -- и вы правы, что рекурсия, как первый элемент обучения, совсем нетривиально. Требуется обьяснение и время, чтобы мозги повернулись именно так, как надо -- но происходит некий сдвиг и раз, и оно становится понятным.

Как раз наоборот те, у кого были какие-то навыки других языков, часто отказывались понимать и продолжали думать стандартными строками из C или паскаля. Мне кажется, что они воспринимали слишком близко сам язык и слишком расплывчиво то, что они пытались этим языком сказать. А обучение Схеме, как первому языку, как раз выбивает этот симбиоз смысла и слов и, наоборот, учит различать то, что надо запрограммировать от того, как выглядят строительные блоки языка.

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

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

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

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

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

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

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

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

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

Date: 2003-02-08 01:43 pm (UTC)
From: [identity profile] bety.livejournal.com
Как раз наоборот те, у кого были какие-то навыки других языков, часто отказывались понимать и продолжали думать стандартными строками из С или паскаля.
Мне как раз такие "те" казались скорее исключением , нежели чем правилом. Хотя наверняка это все очень индивидуально и круг знакомств на курсе в любом случае не является достаточным для статистической выборки :)

То что Схема, "учит различать то, что надо запрограммировать от того, как выглядят строительные блоки языка", безусловно верно, но так ведь он же не единственный -- на всех предметах впоследствии в качестве языка для объяснения алгоритмов используется псевдокод, что тоже приучает мыслить абстрактно.
Page 1 of 3 << [1] [2] [3] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 30th, 2025 04:24 am
Powered by Dreamwidth Studios