Entry tags:
Несортированные заметки по треку SICP (книга по Scheme)
Кстати, вот SICP на вебе.
По предисловию: "Стал основой текстовых редакторОВ, шеллОВ и CAD-ОВ". Где теперь те редакторы, или тот ЛИСП в них? Аддоны к Автокаду давно пишут на плюсах и т.д. SchemeShell - кто им пользуется? EMACS-ом пользутся, но он своё отживает - есть Eclipse. "Хорошая ОС, но в ней хреновый текстовый редактор".
Замена итерации на рекурсию требует некоторой практики мышления - особенно на "хвостовую" рекурсию, которую Лисп-машина таки-развернёт в итерацию.
* Синтаксис :) Оказывается, в нём есть-таки локальные имена.
Подстановочная и нормальная модели вычисления. Оказывается, Лисп-программу можно вычислять разными путями :)
* Отслеживание породжаемого процесса в Лисп-машине. Хвостовая и "деревянная" рекурсии имеют очень-очень разное воздействие на выполнение программы, а заметить разницу достаточно сложно - минус Лиспу.
* Как легко решается задачка о размене монет. Почти как на Прологе, тоьлко больше скобок :)
* Передача процедур параметром или возвращаемым значением. С этим всё понятно, это мы до сих пор видели только в виде неудобоваримых function objects. Ну ничего, разгрызём libboost_lambda, ещё не ту будет :)
Кстати, почитал туториал по libboost_lambda. А знаете, не так страшен чёрт, как его малюют. Очень приятный синтаксис :) Но опасный. Есть шанс запутать текст на плюсах ещё хуже чем на Лиспе :)
* Почему Лисп-программы из упражнений первой главы будут вычисляться по-разонму, если их считать в разных моделях. Если эти программы корректны, конечно. См. упражнение 1.5:
Ben Bitdiddle has invented a test to determine whether the interpreter he is faced with is using applicative-order evaluation or normal-order evaluation. He defines the following two procedures:
Then he evaluates the expression
- может, здесь для аппликативной модели просто будет бесконечная рекурсия? Тогда программа решает свою задачу, мягко скажем, неоптимально.
* Есть ли принципиальное отличие определения функции (deffunc в Common Lisp) от define, setq и let? Я знаю, что они немного отличаются синтаксически, но отличаются ли функционально?
* Что в русском PDF-е SICP-а с чарсетом? На PC показывает русские буквы, но Copy-n-Paste вклеивает мусор в кодировке us-ascii. Наладонник показывает тот же us-ascii. Может, кто-то знает, как подредактироват этот PDF на предмет информации о чарсете?
Просьба остальным участникам трека, хоть они и далеко впереди, просмотреть первые главы и написать аналогичный документик.
Потом его можно распечатать и предложить остальным пройтись по нему.
Да, Саша Долгин так и не получил от нас вразумительного ответа, что же хорошо писать на Лиспе, кроме неизвестных почти никому задач ИИ. Будем искать :)
Цитаты:
(Сергей забыл на работе документы на машину) "Бегать за документами ногами - это по си-плюс-плюсному. Позвони гардам".
(по поводу каких-то рецептов того, как писать хороший код) "Чтобы попки были сухими и чистыми, их надо чисить и сушить".
По предисловию: "Стал основой текстовых редакторОВ, шеллОВ и CAD-ОВ". Где теперь те редакторы, или тот ЛИСП в них? Аддоны к Автокаду давно пишут на плюсах и т.д. SchemeShell - кто им пользуется? EMACS-ом пользутся, но он своё отживает - есть Eclipse. "Хорошая ОС, но в ней хреновый текстовый редактор".
Замена итерации на рекурсию требует некоторой практики мышления - особенно на "хвостовую" рекурсию, которую Лисп-машина таки-развернёт в итерацию.
Что было нового
* Синтаксис :) Оказывается, в нём есть-таки локальные имена.
Подстановочная и нормальная модели вычисления. Оказывается, Лисп-программу можно вычислять разными путями :)
* Отслеживание породжаемого процесса в Лисп-машине. Хвостовая и "деревянная" рекурсии имеют очень-очень разное воздействие на выполнение программы, а заметить разницу достаточно сложно - минус Лиспу.
* Как легко решается задачка о размене монет. Почти как на Прологе, тоьлко больше скобок :)
* Передача процедур параметром или возвращаемым значением. С этим всё понятно, это мы до сих пор видели только в виде неудобоваримых function objects. Ну ничего, разгрызём libboost_lambda, ещё не ту будет :)
Кстати, почитал туториал по libboost_lambda. А знаете, не так страшен чёрт, как его малюют. Очень приятный синтаксис :) Но опасный. Есть шанс запутать текст на плюсах ещё хуже чем на Лиспе :)
Что осталось непонятным
* Почему Лисп-программы из упражнений первой главы будут вычисляться по-разонму, если их считать в разных моделях. Если эти программы корректны, конечно. См. упражнение 1.5:
Ben Bitdiddle has invented a test to determine whether the interpreter he is faced with is using applicative-order evaluation or normal-order evaluation. He defines the following two procedures:
(define (p) (p))
(define (test x y)
(if (= x 0)
0
y))
Then he evaluates the expression
(test 0 (p))
- может, здесь для аппликативной модели просто будет бесконечная рекурсия? Тогда программа решает свою задачу, мягко скажем, неоптимально.
* Есть ли принципиальное отличие определения функции (deffunc в Common Lisp) от define, setq и let? Я знаю, что они немного отличаются синтаксически, но отличаются ли функционально?
* Что в русском PDF-е SICP-а с чарсетом? На PC показывает русские буквы, но Copy-n-Paste вклеивает мусор в кодировке us-ascii. Наладонник показывает тот же us-ascii. Может, кто-то знает, как подредактироват этот PDF на предмет информации о чарсете?
Просьба остальным участникам трека, хоть они и далеко впереди, просмотреть первые главы и написать аналогичный документик.
Потом его можно распечатать и предложить остальным пройтись по нему.
Да, Саша Долгин так и не получил от нас вразумительного ответа, что же хорошо писать на Лиспе, кроме неизвестных почти никому задач ИИ. Будем искать :)
Цитаты:
(Сергей забыл на работе документы на машину) "Бегать за документами ногами - это по си-плюс-плюсному. Позвони гардам".
(по поводу каких-то рецептов того, как писать хороший код) "Чтобы попки были сухими и чистыми, их надо чисить и сушить".
no subject
1. Компиляция и запуск J2MEUnit-тестов в специфической JRE. Построение списка failures со стеками вызовов.
2. Автоматический деплоймент исходников (Java) на Tomcat+Axis.
3. Рефакторинги C++, начиная от порога "Extract method". Rename member тоже потянет, и тут не всё просто.
EMACS на это способен? Это ЛЕГКО кастомизируется? :))) (это вообще не суть лёгкие задачи)
no subject
На третье способен. Кстати, в Eclipse CDT неюзабелен.
no subject
Из пакетов, выполняющих рефакторинг, под Emacs знаю только XRefactory. Оно что-то может, но стоит изрядненько денег и не факт, что поставляется для всех платформ (мы работали на AIX). Боюсь, что он помрёт.
CDT юзабелен - лично я его использовал. Последний, правда. 2.1 действительно был корявым до немогу.
no subject
А сколько, говоришь, в CDT просасывается в память большой проект, мег этак на дцать?
no subject
Если правильно помню, построение индексов на не самой плохой тачке шло минут пятнадцать.
Да, для серьёзных приложений он не годится. Пока.
Но почему я смотрю на CDT - он идёт, а XRefactory стоит.
no subject
no subject
no subject
no subject
Круто воистину %))
no subject
no subject
Я-то этого не знал.
Другой вывод - их пользователей можно перечситать по пальцам одной руки?
В любом случае, идея была не в этом. А в том, что Ecilpse развивается на порядки быстрее, чем Emacs. Даже если по закону Старджона только 5% его развития идут в нужном направлении - он всё равно возьмёт кооличеством. Да, Emacs хороший редактор - для тех, кто смог выучить его интерфейс. Да, поддержка КОБОЛа или, может быть, даже С++ в Emacs всегда будет лучше.
Но будем смотреть фактам в лицо: большая часть индустрии, мейнстрим уже не на этих языках.
Re: Reply to your comment...
ужасное сделал на шаблонах, чуть ли не ML-вывод типов =)
А можно поподробнее про индустрию? Какую конкретно индустрию?
Индустрии - они разные бывают. Где-то Java много, где-то - C++, где-то
C, где-то PHP, где-то Perl (да, есть и такие), где-то Fortran вне
конкуренции, и никто его заменять не собирается.
no subject
Индустрии - они разные бывают.
Интегральную. Она на ближайшем рекрутинговом сайте, в статистике.
На С++ пока ещё набирают много, но 90% - это саппорт. Это, как ни печально, уже не модно.
Re: Reply to your comment...
непрограммерские должности типа "оператор ПК", "менеджер по продажам"
или сисадминские должности (нашёл, кстати, требование на кисководов =):
архитектор - 1
архитектор Java - 1
аналитик - 2
программист поддержки - 2
программист C - 1
программист C++ - 2
программист C# - 2
программист абстрактный - 2
программист 1C - 3
программист PHP - 2
программист Java - 3
программист Lotus Notes - 1
спец. по информационной безопасности - 1
SAP-программист - 1
программист Unix - 1 (хе, там, где я работаю =)
(инженер QA - наверное не надо сюда включать)
Так что "индустрия" - это понятие весьма расплывчатое.
ps: А с чего ты взял, что я считаю, что C++ не нужно похоронить? :)
Вообще он в топике только из-за вопроса "а <это> emacs умеет?" Вообще
мне больше языки того же ML-семейства нравятся.