1. Smalltalk
Первоначально разработан, по крайней мере частично, как способ использования компьютеров для обучения детей. Синтаксис достаточно прост для описания в абзаце. Как и LOGO, он иллюстрирует принцип «низкий барьер для входа, высокий потолок».
Smalltalk - это чистый ОО-язык в том смысле, что «все является объектом».
Он также учит многим функциональным методам, в частности, в своем API-интерфейсе Collection: связывание сообщений, функции более высокого порядка, отображение, уменьшение и т. Д.
Писк сообщество живое и приветливо. Вы также увидите множество обсуждений передовых методов: так же, как и сообщества lisp, в списке рассылки есть много очень опытных пользователей Smalltalker, желающих поделиться своими знаниями. (Не повредит, что в сообществе Squeak есть большое количество профессиональных педагогов.) Есть также другой список для начинающих.
2. ПРОЛОГ
Логическое программирование язык , который даст вам совершенно другой вид вычисления только о любом другом языке. Пролог также очень декларативен (но не совсем так: !
оператор or cut может оказать существенное семантическое влияние на предикат).
3. Общий Лисп
Замените Схему здесь, если хотите. Common Lisp поддерживает несколько парадигм, особенно ОО и функциональных. Он также имеет долгую историю (Лисп - второй самый старый, все еще широко используемый язык: только более старый Фортран).
4. Хаскель
(Предостережение: я только начал изучать это.) Вероятно, самый чистый функциональный язык на планете. У этого есть очень продвинутая система статического типа. Существуют удобные вступительные книги .
5. С или Delphi
Вам нужно знать, как работают компьютеры. Вы должны знать, как на самом деле работают память и процессор. Оба они традиционно "близки к металлу" и имеют сообщества, которые поощряют думать о том, как их язык компилируется в ассемблер.
Почему этот заказ?
Smalltalk очень прост в освоении, поэтому вы можете быстро начать концентрироваться на решении проблем, а не бороться с компилятором («низкий барьер для входа»). Как только вы начинаете программировать, нет никаких искусственных ограничений на то, что вы можете сделать - «высокий потолок».
Если у вас есть четкое представление о том, как работает ОО (и - при условии, что существует ОЧЕНЬ разное понимание того, что означает «ОО», - будет справедливо сказать, что ОО доминирует на рынке), переход на Пролог гарантирует, что вы не начнете думая, что ОО единственный путь. Пролог сильно отличается от большинства языков и растягивает ваши умственные мышцы, поэтому вы не начинаете думать, что знаете все.
Common Lisp, в свою очередь, является языком взрослого. У него зрелый стандарт, он десятилетиями был ведущим языковым дизайнером (вместе с Smalltalk) - все эти модные новые функции, которые только что приобрел ваш любимый язык? Скорее всего, это идеи, воплощенные в Lisp или Smalltalk. Обычный Лисп также немного бородавчат, и везде вы найдете его.
Haskell четвертый в списке, потому что (как мне сказали: я только начал изучать его) его чистота означает, что некоторые очень распространенные вещи (например, ввод / вывод) сделать труднее, чем в менее чисто функциональных языках. Ребята из Haskell также используют некоторые довольно экзотические термины (скажем, такие слова, как «катаморфизм»), и вам, вероятно, будет лучше иметь некоторый опыт программирования за поясом, прежде чем заняться этим. (Но я должен повторить, я только начал изучать это! Примите это мнение с щепоткой соли!)
И почему C / Delphi последний? Потому что если вы не работаете во встроенных системах, вам действительно не нужно учиться программированию, думая, что ручное управление памятью - это все, что есть. Сборка мусора работала достаточно хорошо для машины уровня 1980-х годов. Ваш телефон такой мощный!
Наконец, я не поместил Эрланга в приведенный выше список, хотя я действительно должен.