LINUX.ORG.RU

Есть ли альтернатива SICP?

 ,


8

5

Некоторое время назад взялся за сабж. Я выбрал его именно потому, что слышал очень много отзывов о том, что это «только о программировании» и «ничего лишнего». Я несколько разочарован.

Первое, не самое важное, но тем не менее. Авторы взяли в качестве ЯП scheme, мотивируя это тем, что синтаксис очень прост для освоения новичком. Синтаксис то да, прост, но семантика не так уж и проста, и совершенно непонятно, почему было не взять любое другое подмножество лиспа, или даже бейсика, ведь для демонстрации принципов о которых там рассказывается вовсе не требуется сомнительное «волшебство» замыканий и продолжений. На одном синтаксисе далеко не уедешь, а семантику scheme (до глав о метаяз. абстракции) там не рассматривают вообще, и при этом заявляется, что низкий порог вхождения гарантирован. Это, мягко говоря, неправда.

Но самое главное — там слишком много воды. Для рассмотрения достаточно простых вещей, там берутся сложные, избыточные примеры. Например, главы о банковских счетах. Ведь основная мысль там — проблема разделения ресурса. Нахрена спрашивается было городить левые процедуры, вроде withdraw, get-money, put-money и проч. (названия там другие, но не суть), если для демонстрации идеи достаточно было change-balance и check-balance. Ведь основная проблема - в том чтобы посмотреть, а потом снять, чтобы другой объект не изменил в промежутке между двумя операциями. Вместо того, чтобы концентрироваться на основной вычислительной проблеме, на нас выливают тонны воды, в которой расмотреть основную мысль не очень то и просто.

Баланс только для примера. Вообще, вся книга написана тяжелым избыточным языком. Примеры нарочито переусложнены и перегружены ненужными (для прояснения текущей идеи) свистоперделками.

В связи с этим, хочу спросить, существует ли другая, возможно, более старая даже, книжка о программировании (и только о нем — не о типах, не об особенностях той или иной парадигмы и пр.), но только без демагогии?

UPD Забыл сказать, что я в корне не принимаю такие подходы, как «Структурное программирование», что-то в стиле «Something considered harmful» «не отстрели себе яйца», и языки заточенные под компиляцию. Поэтому подобные вещи не предлагать:)



Последнее исправление: phill (всего исправлений: 3)
Ответ на: комментарий от ilammy

Вот это поворот. Всё, я слился, больше сюда не пишу.

unlog1c ★★★
()
Ответ на: комментарий от unlog1c

man gcc

When you invoke GCC, it normally does preprocessing, compilation, assembly and linking.

...

-save-temps

man cpp, man as, man ld.

Так что все языки из GCC.

man clang

clang is a C, C++, and Objective-C compiler which encompasses preprocessing, parsing, optimization, code generation, assembly, and linking. Depending on which high-level mode setting is passed, Clang will stop before doing a full link. While Clang is highly integrated, it is important to understand the stages of compilation, to understand how to invoke it. These stages are:

...

-save-temps

аналогично.

man ghc

Нет информации, но так же.

-keep-tmp-files

Ну и вообще — чтобы было не так это же нужно аналог binutils/<whatever> написать, чем мало кто будет заниматься (SBCL занимался, но там тоже своя стадия assembly -> [01]*, ещё go — там свой ассемблер от Plan 9).

quasimoto ★★★★
()
Последнее исправление: quasimoto (всего исправлений: 2)
Ответ на: комментарий от anonymous

Ты не пендос, случаем? Может, пендосы в роду были? Иначе не ясно, с какого ляда ты тупой такой, славяне тупыми не бывают.

anonymous
()
Ответ на: комментарий от quasimoto

В llvm для некоторых платформ есть экспериментальная возможность вывода сразу в elf без текстового ассемблера - правда, там все равно внутри этап компиляции ассемблера из DAG.

anonymous
()
Ответ на: комментарий от unlog1c

ты в курсе про относительную и абсолютную адрессацию?

qulinxao ★★☆
()
Ответ на: комментарий от unlog1c

ну и да линковка .

твоя машкодопрограмма врядли нуждается в линковке для исполнения , в отличии от обьектников от асма который обычно делает полуфабрикаты переместимых бинарей с таблицами связей.

qulinxao ★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.