![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Кстати, вот 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 на предмет информации о чарсете?
Просьба остальным участникам трека, хоть они и далеко впереди, просмотреть первые главы и написать аналогичный документик.
Потом его можно распечатать и предложить остальным пройтись по нему.
Да, Саша Долгин так и не получил от нас вразумительного ответа, что же хорошо писать на Лиспе, кроме неизвестных почти никому задач ИИ. Будем искать :)
Цитаты:
(Сергей забыл на работе документы на машину) "Бегать за документами ногами - это по си-плюс-плюсному. Позвони гардам".
(по поводу каких-то рецептов того, как писать хороший код) "Чтобы попки были сухими и чистыми, их надо чисить и сушить".
Tags:
(no subject)
22/11/05 07:04 (UTC)(no subject)
22/11/05 07:13 (UTC)Я в свои две попытки его не взял 8\
(no subject)
22/11/05 07:35 (UTC)(no subject)
22/11/05 07:42 (UTC)(no subject)
22/11/05 07:43 (UTC)(no subject)
22/11/05 07:50 (UTC)Обычно хватает grep+ctags+whatever editor+whatever debugger.
Чем дальше в один проект, тем специализированнее должна становиться среда - но пока что хватало известных мне средств. 5 лет сидел на MSVC и vim + dbx, потом год на Eclipse под Java, и не жужжу.
Я потерял какие-либо возможности?
(no subject)
22/11/05 07:55 (UTC)(no subject)
22/11/05 08:04 (UTC)1. Компиляция и запуск J2MEUnit-тестов в специфической JRE. Построение списка failures со стеками вызовов.
2. Автоматический деплоймент исходников (Java) на Tomcat+Axis.
3. Рефакторинги C++, начиная от порога "Extract method". Rename member тоже потянет, и тут не всё просто.
EMACS на это способен? Это ЛЕГКО кастомизируется? :))) (это вообще не суть лёгкие задачи)
(no subject)
22/11/05 08:15 (UTC)На третье способен. Кстати, в Eclipse CDT неюзабелен.
(no subject)
22/11/05 19:39 (UTC)Из пакетов, выполняющих рефакторинг, под Emacs знаю только XRefactory. Оно что-то может, но стоит изрядненько денег и не факт, что поставляется для всех платформ (мы работали на AIX). Боюсь, что он помрёт.
CDT юзабелен - лично я его использовал. Последний, правда. 2.1 действительно был корявым до немогу.
(no subject)
22/11/05 20:39 (UTC)А сколько, говоришь, в CDT просасывается в память большой проект, мег этак на дцать?
(no subject)
22/11/05 21:07 (UTC)Если правильно помню, построение индексов на не самой плохой тачке шло минут пятнадцать.
Да, для серьёзных приложений он не годится. Пока.
Но почему я смотрю на CDT - он идёт, а XRefactory стоит.
(no subject)
22/11/05 23:24 (UTC)(no subject)
23/11/05 00:01 (UTC)(no subject)
7/12/05 01:18 (UTC)(no subject)
7/12/05 06:47 (UTC)Круто воистину %))
(no subject)
7/12/05 07:09 (UTC)(no subject)
8/12/05 06:42 (UTC)Я-то этого не знал.
Другой вывод - их пользователей можно перечситать по пальцам одной руки?
В любом случае, идея была не в этом. А в том, что Ecilpse развивается на порядки быстрее, чем Emacs. Даже если по закону Старджона только 5% его развития идут в нужном направлении - он всё равно возьмёт кооличеством. Да, Emacs хороший редактор - для тех, кто смог выучить его интерфейс. Да, поддержка КОБОЛа или, может быть, даже С++ в Emacs всегда будет лучше.
Но будем смотреть фактам в лицо: большая часть индустрии, мейнстрим уже не на этих языках.
Re: Reply to your comment...
8/12/05 06:47 (UTC)ужасное сделал на шаблонах, чуть ли не ML-вывод типов =)
А можно поподробнее про индустрию? Какую конкретно индустрию?
Индустрии - они разные бывают. Где-то Java много, где-то - C++, где-то
C, где-то PHP, где-то Perl (да, есть и такие), где-то Fortran вне
конкуренции, и никто его заменять не собирается.
(no subject)
8/12/05 07:08 (UTC)Индустрии - они разные бывают.
Интегральную. Она на ближайшем рекрутинговом сайте, в статистике.
На С++ пока ещё набирают много, но 90% - это саппорт. Это, как ни печально, уже не модно.
Re: Reply to your comment...
8/12/05 07:23 (UTC)непрограммерские должности типа "оператор ПК", "менеджер по продажам"
или сисадминские должности (нашёл, кстати, требование на кисководов =):
архитектор - 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-семейства нравятся.
(no subject)
22/11/05 07:44 (UTC)(no subject)
22/11/05 07:51 (UTC)(no subject)
22/11/05 07:31 (UTC)f. ex?
чего в нём не хватает и хочется поменять, а не можется?
(no subject)
22/11/05 07:34 (UTC)vim eclipse.java - это, конечно, круто, но слишком долго.
(no subject)
22/11/05 07:56 (UTC)В смысле, скин или расположение тулбаров?
Последнее вообще вроде автоматом в воркспейсе сохраняется.
Или что-то другое?
> новый плагин на ходу не добавишь
запуск второго Eclipse-приложения ни катит?
(мне эта фишка наоборот нравится: обкатал в отдельном, понравилось, добавил в воркспейс по умолчанию)
> vim eclipse.java
не всё так плохо :)
к этому самолёту плагины нормально прикладываются. и вроде, многое могут...
(no subject)
22/11/05 08:11 (UTC)(no subject)
22/11/05 08:26 (UTC)во-вторых, это лечится выбором нужной перспективы и убиранием ненужных view.
если нужной перспективы не находится, можно написать новую -- в синтаксисе нужного xml разобраться можно.
Варнинг: я говорю про еклипс 3.1.
(no subject)
22/11/05 09:09 (UTC)Далее - интерфейс так просто не меняется. Вот утомляет меня то, что в перспективе oxygen при сохранении файла он проверяется на синтаксис и если таковой невалиден - UI выходит из режима "распахнуть на весь экран" и показывает свой идиотский View 'problems', а хрен поменяешь: плагин компилировать, ставить, и нет прослойки между функциональностью, и интерфейсом, которую можно менять как хочешь.
Мы же не домохозяйки какие, которым M$Word хватает.
(no subject)
22/11/05 19:46 (UTC)Не поленись, перекомпилируй плагин несколько раз, раз тебе этот момент так мешает. Сама IDE предлагает средства для этого. Это не прямой интерпретатор, но тоже не самая сложная задача.
А лишний abstraction layer усложнит разработку плагинов в разы, это ты, уверен, понимаешь.
(no subject)
22/11/05 20:41 (UTC)Если вводить abstraction layer - да, но это путь недожабщиков. Нормальные люди лишь развязывают реалиацию функциональности и UI, не вводя особой сложности: тут не нужен никакой abstraction layer.
(no subject)
22/11/05 21:17 (UTC)Остальное в look и особенно feel - вопрос а) субъективный б) вкуса в) корпоративной полиси насчёт IDE, которая (полиси) может послать всех очень далеко.
Нормальные люди лишь развязывают реалиацию функциональности и UI, не вводя особой сложности: тут не нужен никакой abstraction layer.
Model и View - это уже abstraction layer. Назови его indirection level или горшком, толко в печку не ставь :)
Кстати, а структура каких классов плагина мешает заглушить вылезающий view "Problems"?
Да и это, в общем, вопрос шашечек, а не "ехать".