Я учу 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-08 02:55 pm (UTC)Абсолютно верно. Но тогда Схема явно не хуже для обучения, чем другие языки (а какой то предмет все равно должен выбрать язык, чтобы студенты могли на практике попробовать концептуальные идеи). Тогда почему бы не Схему? Как раз он хорош тем, что, как сказали другие, все правила очень просты и все правила языка умещаются в тонкую брошюрку. Студентик может сразу пойти в лабораторную и написать:
(define (power a b)
(if (= b 0) 1 (* a (power a (- b 1)))
и получить тут-же результат, вместо того, чтобы создавать, классы, сабрутины, и т.д. Таким образом с любыми примерами легче и т.д. -- то есть хороший язык для обучения. А потом уже пусть программируют в чем хотят :).
(видите, не прикоснувшись к программированию уже несколько лет, я могу написать что-то на схеме, тем не менее, скорее запуталась бы в синтаксе если бы попробовала привести пример рекурсии в C или, тем более, в чем-нибудь вроде C++).
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