Я учу Lisp (язык программирования такой, для тех, кто не знает). Немного стыдно, что до сих пор его не знал (совсем простые куски кода я умею читать, подцепил где-то случайно, в emacs'е скорее всего; но писать не могу, и язык по-настоящему не понимаю), но как-то не нужен он мне был. Да он мне и сейчас не нужен особенно, но захотелось вот заполнить эту лакуну. От лакуны к лакуне -- так, глядишь, и дойдёшь до чего-то хорошего.
Взял в библиотеке две книги пару недель назад: Lisp (Winston&Horn, 3rd edition), и Programming in Common Lisp (Brooks). Сегодня начал их читать, и если найду ещё немного времени, скачаю и установлю какой-нибудь Лисп поиграться.
Книга Винстона и Хорна более подробна, основательна; вместе с тем более "попсовая" что ли. В тексте сквозит настойчивое стремление объяснить читателю, что Лисп - это совсем не страшно. Вместо car и cdr всегда используются first и last. И много ещё подобных мелочей. Книга Брукса куда более лаконична, написана более уверенным тоном и для людей, уже что-то знающих и уверенных в себе.
Концептуальная простота Лиспа меня восхищает. Я вообще очень падок на концептуальную простоту, и потому очень люблю, например, Smalltalk и Forth, хоть и не работал в них сколько-нибудь долго, не писал ничего действительно серьёзного. Теперь Лисп, наверное, присоединится к этому списку.
Взял в библиотеке две книги пару недель назад: Lisp (Winston&Horn, 3rd edition), и Programming in Common Lisp (Brooks). Сегодня начал их читать, и если найду ещё немного времени, скачаю и установлю какой-нибудь Лисп поиграться.
Книга Винстона и Хорна более подробна, основательна; вместе с тем более "попсовая" что ли. В тексте сквозит настойчивое стремление объяснить читателю, что Лисп - это совсем не страшно. Вместо car и cdr всегда используются first и last. И много ещё подобных мелочей. Книга Брукса куда более лаконична, написана более уверенным тоном и для людей, уже что-то знающих и уверенных в себе.
Концептуальная простота Лиспа меня восхищает. Я вообще очень падок на концептуальную простоту, и потому очень люблю, например, Smalltalk и Forth, хоть и не работал в них сколько-нибудь долго, не писал ничего действительно серьёзного. Теперь Лисп, наверное, присоединится к этому списку.
no subject
Date: 2003-02-09 04:24 am (UTC)А хуже Схема, на мои взгляд, все-таки тем, что рекурсивное мышление не совсем естественно, или просто нам не привычно. Действительно, как Вы говорите, в какой-то момент происходит щелчок и рекурсия усваивается, но зачем так усложнять абсорбцию ? :)
Безусловно Вы правы в том , что какой-то язык нужен, чтобы начинающие сами могли "пощупать" идеи на практике, но разве не проше это делать на языке, пусть даже и с более сложным синтаксисом, но более близком нашему восприятию ? Ведь не обучают же детей в первом классе двоичному исчислению, хотя цифорок там и меньше.
P.S Если Вы хотите, мы можем перенести эту дискуссию в Ваш или мой журнал, потому что боюсь, что мы уже утомили Анатолия :)
no subject
Date: 2003-02-09 06:49 am (UTC)Позвольте, какие только целые числа? Более красивых математических решений, чем на схеме, я не видела. Если использовать streams, то вообще получается замечательно красиво. А рекурсия -- как раз очень сильный концепт и такой, который понять надо. Вот все эти if, then, понимаются очень просто (тем более, что и в схеме они есть).
Я честно говорю с опытом: 4 года помогала преподавать этот самый начальный класс на схеме. Один семестр мы попробовали сделать это на Java (ну или совместить со схемой) -- это был такой страшный бардак, что стонали и студенты и преподаватели и профессора сказали что больше такого извращения не будет. Ну попробуйте написать компайлер или евальюэтор на джаве -- сколько для этого понадобится строк и файлов? И сколько будет ошибок? Можно ли это давать как одно (!) домашнее задание в начальном классе? (да, пусть тот евальюэтор, что студенты пишут на схеме, не совсем сильный, и оптимизации в нем нет, но ведь они изучают и понимают саму концепцию). Или object-oriented adventure game тоже за одно домашнее задание? пусть там нет gui -- пусть там только текст, как встареньком MUDe, но пишут же.
То, что вы сказали про схему против паскаля зависит не от схемы, а от разных типов языков -- типированных против нетипированных. Нетипированных тоже много -- схема, лисп, smalltalk, еще куча, я уверена. Затевать спор про то, какие из них лучше, не будем -- это излюбленная тема спора, вроде big-endian vs. little-endian, и решения никогда не будет. Мне кажется, что для обучения, схема очень удобна.
no subject
Date: 2003-02-09 07:36 am (UTC)Не назову и даже пытаться не буду :) Они оба, как мы с Вами прекрасно знаем, эквивалентны машине Тюринга. Под функциональностью я (и мне кажется другие тоже) имела ввиду всякие удобства, или даже не знаю, как это иначе назвать -- в общем то, из-за чего машине Тюринга на практике предпочитают другие языки.
Насчёт того, что преимущество Схемы в том, что на ней на первом же курсе можно без всяких проблем написать интерпретатор -- согласна, и даже сама собиралась было это упоминуть - но опять же , по-моему это недостаточное преимущество, по сравнению с возникающими сложностями. Однако, Вашему опыту мне трудно что-либо противопоставить, по-этому готова признать, что, возможно, Вам действительно виднее :)
no subject
экспрессивность.
no subject