Очень зря, имхо, воспитывать на императивных моделях. С точки зрения логики x=x+2 полный бред. А в императивных яп это вполне стандартная конструкция. Немутабельность в функциональном подходе обеспечивает надежность и логичность. Рекомендую также статью «Why OO sucks» — весьма помогает достичь просветления.
Так-то оно так, но императивная модель — очень даже правильно с точки зрения дискретного исполнителя, чем на низком уровне является компьютер. Я не защищаю императивы, просто говорю, что исторически развитие шло от более низкоуровневого — выше; соответственно, низкоуровневую модель Тюринг-машины тащили снизу вверх, от ассемблера — к ЯВУ.
Здесь приятным исключением выступает LISP; правда, не в плане синтаксиса. Сейчас можно достичь того же и не пользуясь «универсальным синтаксисом», но время утеряно, и императивы прут вперед :)
Я в свою очередь рекомендую SICP (pdf) — творит чудеса с мировосприятием.
Спасибо за интересное чтиво :) А чем вам синтаксис LISP не нравится? По мне так отлично продуманный синтаксис. Лучше только в Python. И вообще сам LISP близок к идеальному языку программирования :) Даром что один из самых старых. А из живых ныне так и вообще самый-самый. Что касается машины Тьюринга, то это абсолютно теоретическая вещь и с машиной фон-Неймановского типа (а как известно, современные компьютеры основаны на фон-Неймановской архитектуре, основной принцип которой — хранимая в памяти программа) у неё никакой связи нет. Да и ассемблер не самый низкий уровень, это мнемоническое представление двоичного кода. Вообще сейчас есть очень мощная штука — LLVM, рекомендую поглядеть. Недавно был топик про то, как Google собирается CPython на неё перевести. Было бы неплохо, коммунити наверняка одобрит. Лишь бы Гвидо не подкачал :)
Блин, скока информации и вопросов в одном комменте :) Да простит меня хозяин блога :)
Я и не говорил про субъективное отношение к LISPу. Он продуман в том направлении, что в основном благодаря ему обеспечивается поддержка метапрограммирования, замыканий, bind и прочих штук, на которых построен LISP. И сказал так же, что нынешние среды реализуют эти возможности не за счет синтаксиса, а за счет более «умной» системы поддержки компиляции и выполнения.
Насчет Фон-Неймановской — таки не согласен. Связана с Тюринговской, и очень даже сильно.
Также доводило писать под гарвардскую и супергарвардскую архитектуру, на основе которой построено подавляющее большинство архитектур встраиваемых устройств. Да и самих встраиваемых вычислителей в мире по статистике на порядки больше, чем компьютеров общего назначения. Так что в целом Фон-Неймановская вряд ли рулит. Сам считаю, что идеологически гарвардская вернее :)
С LLVM знаком, Adobe и Mac ее с 2005 года раскручивают. Adobe на основе нее даже Alchemy сделал, по трансляции c++ -> avm (Adobe Virtual Machine). Вот и Google подтянулся.
Если вам интересно, есть подобная разработка под названием С-- :) Правда, там опять-таки, за счес соглашений языка обеспечивается портируемость. Ну и она не получила достаточного распространения. Кроме того, если посмотреть глубже во фронтенд GCC, можно увидеть, что тот опять-таки с давнего времени компилировал в p-code, который процессился бэкэндом, заточенным под конкретную архитектуру. Вот только под формальный стандарт это не было подведено.
Сорри за длинный пост — каков вопрос, таков ответ =)
Карму не стоит. Стоит только ей угрожающе подняться выше 2х, как тут же набИгают какие-то засЛанцы и в 1-2 дня сбивают. Причем я в это время обычно не пишу и не комментирую. Так что ваши труды пропадут зря — можете проверить сами как-нибудь :)
В ближайшее время будет серия постов (счас в черновиках частями лежит) про low-level в персональном блоге. Там и ссылки будут — упорядоченные и взаимосвязанные :)
Интересная статья, однако я все же ожидал увидеть продолжения в сравнении с альтернативами. Сравнить преимущества/недостатки; указать где они предпочтительнее, а где от них следует отказаться. Тогда было бы совсем хорошо :) Ну или еще парочку примеров привести, которые обычно приводят :)
Seaside 2.9: Частичные продолжения