Я считаю, что когда языки считаются такими же, как коммерческое программное обеспечение, всегда существует постоянная необходимость добавлять новые функции для оправдания новых выпусков.
Могут ли быть или есть языки, где версия 1.0 является окончательной версией? Конечно, исправления ошибок исключены, но набор функций всегда остается прежним?
Таким образом, все функции в языке хорошо сочетаются друг с другом, и не похоже, что они связаны с устаревшими функциями из-за обратной совместимости.
Я предполагаю, что некоторые академические языки такие? Но существуют ли коммерчески успешные языки, которые следуют этой идее? Сопровождающая библиотека также может бесплатно получать новые функции, но язык всегда остается постоянным.
Один из примеров, который я могу привести, это один из моих любимых языков C #, который я использую довольно часто, с каждым выпуском добавляется все больше и больше функций. Чтобы воспользоваться их преимуществами, я должен отказаться от актуальных задач и потратить значительное время на их изучение, вместо того, чтобы уметь подбирать тривиальные концепции и сам комбинировать их для легкого решения более сложных задач.
Поэтому я думаю, что я ищу минималистский подход, в котором все согласовано, имеет смысл и максимально ортогонально.
Ответы:
Лисп, Smalltalk. По совпадению, это также лучшие языки во всей группе.
И Lisp, и Smalltalk - это языки, построенные вокруг сильной объединяющей метафоры. Метафора Лиспа - «все есть список; этот список представляет и данные, и код (как функции)». Метафора Smalltalk - «все является объектом; единственный способ вызвать поведение - это передать сообщение объекту». Эти метафоры позволяют языкам быть стабильными, минимальными и мощными. Остальное в библиотеке.
Вещи, которые называются «структурами управления» на всех неминимальных (я хотел написать «раздутых») языках, являются здесь частью библиотеки (например:
cond
функция в lisp;ifTrue:
/ifFalse:
семейство сообщений в Smalltalk, оба реализуют условное выражение , где другие языки имеютif
ключевое слово).Можно видеть, что Lisp / Smalltalk являются почти минимальными воплощениями их парадигмы и не более того (Lisp: функциональное программирование; Smalltalk: объектно-ориентированное программирование).
источник
TeX , система набора текста, была очень стабильной с версии 3.
Я не буду утверждать, что это соответствует вашему «Итак, я думаю, я ищу минималистский подход, в котором все последовательно, имеет смысл и максимально ортогонально». заявление, но оно соответствует большинству других ваших критериев.
источник
C и Fortran - это языки, которые приходят на ум. Они очень стабильны, и их синтаксис легко запоминается. Кроме написания плохого кода самостоятельно, при использовании этих языков очень мало сюрпризов. Но я бы не назвал их отличными языками для быстрой разработки приложений.
Я предпочитаю быстрое продвижение языков с функциями, которые, потратив на них немного времени, значительно облегчают мою работу и делают код менее сложным, сохраняя при этом выразительность.
источник
Behavior
иCollection
иерархии). Мне кажется, что C намного менее стабилен со всеми этими C89, C99 и еще много чего.Другие уже сказали Лисп, так что я должен поднять Форт . Это очень легко реализовать, и правила языка просты для подражания.
Это основанный на стеке язык со словарем слов. Вы можете легко расширить язык, используя некоторые наследуемые функции.
ОЧЕНЬ краткий пример графики черепахи:
Затем, запустив его,
: squiral -50 50 g 20 0 do 100 f 21 t loop ;
вы получите:Кредит на блог этого сотрудника Microsoft .
источник
Хотя Лисп упоминался, самый минималистичный язык, который я знаю, это схема . Мне было трудно понять это на университетских курсах, где я должен был. Но это изменило мой взгляд на программирование, и оно очень минимально. Минимальным синтаксисом являются круглые скобки
()
и пробелы.Единственное изменение в языке было принято решение преобразовать примитивы , такие как
+
,define
(и некоторые другие) для встроенных модулей. Это означает, что они доступны при запуске, но могут быть переопределены во время выполнения.источник
Tcl, дизайн которого был в первую очередь минималистичным
Оттуда о странице http://www.tcl.tk/about/features.html , одна из особенностей заключается в том, что ее очень легко изучить и где ее могут использовать обычные программисты или даже не программисты.
источник
Есть несколько языков, которые остались относительно неизменными с момента их появления за пределами эзотерических одноязычных языков, которые вряд ли будут желаемыми (я бы не хотел пытаться написать что-то значимое в Befunge (хотя это также было изменено с момента его оригинальной версии 1.0). выпуск)).
Языки, которые, скорее всего, удовлетворят желание не изучать ничего нового, являются языками, которые специализируются на «склеивании» между другими программами. Такие языки как jcl , bash и тому подобное. Простые скриптовые языки также могут попасть в это число - awk является одним из лидеров.
Как только человек покидает это царство, происходит развитие. Либо язык, либо рамки. В некоторых ситуациях «сложно» кодировать язык без получения какой-то структуры, которая быстро восстанавливается.
Многие языки имеют некоторую степень обратной совместимости. Сегодня все еще можно писать Java 1.4, хотя, вероятно, это и не рекомендуется - фреймворки, которые люди пишут для него, меняются быстрее, чем язык. Можно найти компиляторы f77 и f90 для языковой спецификации, которая не изменилась за 20 или 40 лет. C, Objective C, C ++ все еще могут быть закодированы для более старых спецификаций языка - не нужно постоянно обновлять свой код, потому что была выпущена новая спецификация или появилась новая инфраструктура.
Некоторые языки имеют довольно длинную неизменную историю, потому что сам язык достаточно силен, чтобы делать то, что он хочет. Лисп является главным кандидатом в этой области. Форт также попадает в сферу "он не сильно изменился".
Переходя к более традиционным языкам сценариев посмотрите на TCL, Perl и Python. Избегайте вещей, которые в настоящее время находятся в царстве «причуд», которые по той или иной причине испытывают всплеск популярности (ruby и javascript, я смотрю на вас). TCL изменился за эти годы , хотя одна из его целей состоит в том, чтобы попытаться поддержать последовательность дизайна. Современный Perl и Python имеют некоторую согласованность дизайна, хотя по общему признанию новые функции могут ощущаться как сбитые с толку (хотя их не нужно использовать).
источник
Я думаю, что Python - разумный кандидат на язык с минимализмом в качестве одной из целей его разработки. Он основан на относительно небольшом количестве основных концепций, и в версии 3, среди прочего, была предпринята попытка немного упростить язык , удалив некоторые функции.
(Конечно, это не то же самое, что набор функций, который не изменился по сравнению с версией 1, но я думаю, что это довольно произвольный способ оценки языков, учитывая, что авторы языков могут называть его версией 1 в любое время.)
источник
Я думаю, что «минималистский» подход к дизайну был бы примером Tcl. Например, вы можете использовать команду {catch} со значениями {return -code n} для реализации любой структуры управления, которую может представить ваше воображение. Perl пришлось ждать десятилетие, чтобы (официально) получить {switch} - (не то, что Perl когда-либо нуждался в этом). Также вы увидите, что Dodekalogue http://wiki.tcl.tk/10259 полностью охватывает грамматику Tcl - остальное, с какой бы парадигмой программирования вы не хотели работать, можно выразить в этой грамматике.
источник