Как стать автором
Обновить

Комментарии 19

I've just received word that the Emperor has dissolved the MIT computer science program permamently.
в следствии своей сложности (в изучении, воспроизведении) и отсутствия задач соответствующего масштаба

Не соответствует действительности. Lisp — самый простой из языков программирования. И в изучении, и в воспроизведении. Проблема Lisp в том, что людям захотелось в какой-то момент времени заниматься математическим моделированием, для чего потребовалось писать сложные формулы. А сложная формула на Lisp — это адский ад из скобочек. Физики и математики к такой записи совсем не приспособлены. А сам LISP не был приспособлен к эффективным операциям с массивами данных. Поэтому, в своё время, Fortran победил Lisp.

Ну и Lisp достаточно активно используется и сейчас. Scheme, например, в куче систем используется в качестве скриптового языка. Именно по той причине, что он очень простой в реализации.
Вы оппонируете контексту статьи, а не сути высказывания. Определение сложности языка (в контексте статьи, да и в принципе) является следствием задач, которые он может решать, а не простотой изучение его базовых конструктов и синтаксиса. Просто или сложно изучить язык Х, к примеру? Это зависит от вашей задачи. Если вы пишете базу данных MP3 композиций в 50 строк, то, наверное, просто. Если же вы создаете экспертную систему в области геодезии, то, наверное, сложно.
Насчет скобочек я не согласен. Кода на Лиспе читается (и пишется) отступами, а не скобочками. Все скобочки (создающие синтаксические конструкции) за вас поставит редактор. Все скобочки, задействованные в написании самой формулы, будут присутствовать (очевидно) хоть в Си, хоть в Лиспе, хоть в Джаве.
Насчет Фортрана и Лиспа я дискутировать не готов, но их соперничество, насколько я понимаю, касалось лишь высокопроизводительных вычислений (наука, инженерия), а в какой именно момент Фортран «победил» и что этому поспособствовало я надеюсь узнать от вас.
Про Столлмана — желтизна какая-то.

> Столмэн по идейным соображениям ненавидел идею коммерческого ПО

Это неверно. Столлман против проприетарного ПО, а коммерциализацию свободного ПО он, наоборот, поддерживает. На gnu.org это уже разжёвывалось неоднократно, например здесь:
www.gnu.org/philosophy/selling.html

> и воровал код из Symbolics, копируя его в бесплатный продукт

Первый раз слышу о том, что он у кого-то в Symbolics что-то воровал и кому-то угрожал. Пытался в одиночку разработать аналог ПО, производимого Symbolics, — это да. Перманентно ругался с Symbolics — тоже да, но на этом всё.

> статья… о Лиспе (точнее о современном диалекте этого языка — Common Lisp)

Статья может создать у начинающего ложное впечатление, что Emacs использует Common Lisp и тесно с ним связан. Это неверно: основной диалект лиспа, используемый в Emacs, — это Emacs Lisp, и он является довольно ограниченной реализацией лиспа. Есть пакет cl, но это фактически слой совместимости c Common Lisp, а не реализация.
Первый раз слышу о том, что он у кого-то в Symbolics что-то воровал и кому-то угрожал. Пытался в одиночку разработать аналог ПО, производимого Symbolics, — это да. Перманентно ругался с Symbolics — тоже да, но на этом всё.
Касательно Столлмана — информация, действительно, спорная. Первоисточник находится здесь — The Brain Makers. Обсуждение сути вопроса и некоторые интересные детали здесь (так же по этой ссылке в комментариях легкой найти цитату из книги «Хакеры: Герои компьютерной революции» Стивена Леви, в которой приводятся слова самого Столлмана, касательно «копирования» кода). Но если рассуждать здраво (с точки зрения рыночных отношений, корпоративной культуры, этики), то на мой взгляд, Столмман поступал, как минимум, некорректно, по отношению к компании, в которой работал ведущим инженером.

Статья может создать у начинающего ложное впечатление, что Emacs использует Common Lisp и тесно с ним связан. Это неверно: основной диалект лиспа, используемый в Emacs, — это Emacs Lisp, и он является довольно ограниченной реализацией лиспа. Есть пакет cl, но это фактически слой совместимости c Common Lisp, а не реализация.
Касательно Common Lispa, вы, пожалуй, правы. Я не акцентировал на этом внимание и впечатление такое действительно может сложится. Другой вопрос, что я не вижу других предпосылок для изучения емакса (что собственно и отражено в названии статьи), кроме как изучения Лиспа (естественно, имеется ввиду Common Lisp) как такового, с последующим использованием оных в работе.
Не знаю, но меня устраивает ТОЛЬКО консольный Emacs.
А ключевым в его изучении стала фраза «Чтобы полюбить Emacs его надо возненавидеть»
> Когда человечеству надоело заниматься развитием, а захотелось получать наслаждение (продавая и покупая), то и Лисп ушел со сцены.

И, конечно, именно прекращение развития вызвало к жизни такие вещи как система типов Хиндли-Милнера, реализованная в ML-языках и в Хаскелле, или зависимые типы, реализованные в Coq, Agda и десятке других систем.

На самом деле, всё гораздо проще. Лисп банально не оправдал ожиданий. Он обещал многое, но дать сумел гораздо меньше.
До некоторой степени, вы правы.
Статья получилась пессимистичная какая-то.

Лисп практически во всех своих инкарнациях — очень гибкий язык, и в этом его сложность. Лисп может быть такой, какой нужен программисту. В нем (особенно это верно для Common Lisp) можно работать в любой программной парадигме: процедурное программирование, ООП, функциональное программирование, аспектно-ориентированное программирование, декларативное программирование и т.д. Систему макросов так вообще еще никто не догнал и вряд ли догонит.

Многие программные продукты появляются сначала на Лиспе в качестве proof of concept, а затем уже переписываются на чем-то другом (см., например, Montezuma). Его рыночная ниша действительно небольшая. Но это и не нужно, т.к. далеко не всегда нужна подобная гибкость. Зачастую лучше взять инструмент попроще.

Что касается собственно ErgoEmacs, то это скорее вредный продукт. Я им пользовался продолжительное время (что-то около полугода), но потом вернулся на классическую раскладку и ничуть не жалею.
Во-первых, Emacs, как правило, везде настроен одинаково в смысле клавиатурных сокращений и не всегда есть возможность использовать свой конфиг.
Во-вторых, и это более значительный факт, большинство пакетов, которые ставятся в Emacs неявно предполагают наличие классической раскладки, т.е. несколько раз у меня было, что в ErgoEmacs пакеты просто отказывались работать из-за клавиш.
Ну и последнее, раз уж автор упомянул работу с эргономичной клавиатурой. Я достаточно долго уже использую раскладку Dvorak в паре с эргономичной клавиатурой (TypeMatrix). Если при этом еще использовать ErgoEmacs, то клавиши приходится в уме переводить дважды, сначала с Dvorak, затем с ErgoEmacs. Получилось слишком уж мудрено.

В итоге я вернулся на классический Emacs, постепенно выстраиваю его под себя, а разрекламированный ErgoEmacs снес и больше не вспоминаю.
Что касается собственно ErgoEmacs, то это скорее вредный продукт.
Категорически не согласен

Во-первых, Emacs, как правило, везде настроен одинаково в смысле клавиатурных сокращений и не всегда есть возможность использовать свой конфиг.
Ну как сказать… Конфиг всегда можно выполнять напрямую в емаксе, без использования инициализирующего файла .emacs. Плюсом всегда есть пакет ergoemacs-mode, который меняет биндинг клавиш стандратного емакса (я могу представить ситуацию, когда на рабочем нет возможности поставить свою программу (ErgoEmacs) условно говоря, но мне тяжело представить ситуацию, когда на работе пресекается установка пакетов для дефолтного емакса). Плюсом весь биндинг клавишь ErgoEmacs можно сбросить до дефолтного через меню (есть несколько вариантов настройки).

Во-вторых, и это более значительный факт, большинство пакетов, которые ставятся в Emacs неявно предполагают наличие классической раскладки, т.е. несколько раз у меня было, что в ErgoEmacs пакеты просто отказывались работать из-за клавиш.
Если честно, я плохо представляю себе пакеты «предполагающие» наличие классической раскладки. Более того, я не понимаю сути претензии. Ну перебиндена системная комбинация клавиш запуска команд по имени с классического M-x, на эргономичный M-a (и, естественно, вы в курсе этого). Каким образом это влияет на использование пакетов? И каким образом пакеты, касаются системных комбинаций клавиш (кроме как опосредованно)? Ну в крайней случае можно перебиндить стандартные сочетания клавиш пакета в .emacs. Вообще, честно говоря, желательно привести конкретный пример не работающего пакет, потому как я с таким не сталкивался и в теории не могу себе представить такой ситуации.

Ну и последнее, раз уж автор упомянул работу с эргономичной клавиатурой. Я достаточно долго уже использую раскладку Dvorak в паре с эргономичной клавиатурой (TypeMatrix). Если при этом еще использовать ErgoEmacs, то клавиши приходится в уме переводить дважды, сначала с Dvorak, затем с ErgoEmacs. Получилось слишком уж мудрено
Я в некотором замешательстве. Раскладка Dvorak (и клавиатурные сочетания под нее) присутствует в ErgoEmacs (наряду с некоторыми другими), но не используется по умолчанию. Переключение на нее осуществляется через меню за пару кликов.
Не буду оспаривать ваши замечания — я пользовался ErgoEmacs продолжительное время.
Есть вещи, которые кажутся удобными, а есть удобные. Вот ErgoEmacs претендует на удобство, но, по сути, не предоставляет его.

В ситуации, когда есть необходимость мигрировать между большим количеством компьютеров, ОС, сред и т.д., не все из которых ты можешь настраивать, проще держать минимальную конфигурацию (разных) Emacs и пользоваться ей.
> Она о Лиспе (точнее о современном диалекте этого языка — Common Lisp)

Вы что там курите?
А что вас не устраивает?
Поддерживаю
я почему-то всегда думал что только 1 язык имеет право называть современный диалектом чего — либо, но википедия говорит что и clojure и common-lisp — оба современные диалекты. Вообщем был не прав, признаю
Еще есть Scheme. А у Паскаля есть и Object Pascal и Oxygene, хотя пользуются ли им сейчас — не знаю.
Что-то вы батенька в третьем пункте ад какой-то творите. Не проще ли открыть Emacs и (setenv «Home» (getenv «UserProfile»)) M-x eval-last-sexp?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации