Введение
Язык программирования очень высокого уровня. Icon – это язык программирования очень высокого уровня, основанный на концепции "целеустремленного выполнения", в котором код возвращает "успех" вместе с допустимыми значениями или "неудачу", указывая на отсутствие допустимых данных для возврата. Успех или неудача данного блока кода используется для управления дальнейшей обработкой, в то время как в традиционных языках для достижения тех же целей обычно используется булева логика, написанная программистом. Поскольку логика основных управляющих структур во многих случаях подразумевается в Icon, общие задачи можно выполнить с меньшим объемом явного кода. Icon был разработан Ральфом Грисуолдом после ухода из Bell Labs, где он был ключевым разработчиком языка SNOBOL. SNOBOL был языком обработки строк с синтаксисом, который к началу 1970-х годов считался устаревшим. После перехода в Университет Аризоны он продолжил развивать базовые концепции SNOBOL в SL5, но посчитал результат неудовлетворительным. Это привело к созданию значительно обновленного Icon, который сочетает в себе лаконичный, но концептуально насыщенный код языков, подобных SNOBOL, с более привычным синтаксисом языков, вдохновленных ALGOL, таких как C или Pascal. Как и языки, которые послужили источником вдохновения, основная область применения Icon – управление строками и текстовыми шаблонами. Операции со строками часто завершаются неудачей, например, при поиске "the" в строке "world". В большинстве языков для этого требуется тестирование и ветвление, чтобы избежать использования недопустимого результата. В Icon большинство подобных проверок просто не нужны, что сокращает объем необходимого кода. Сложная обработка шаблонов может быть выполнена в несколько строк краткого кода, подобно специализированным языкам, таким как Perl, но с сохранением более функционального синтаксиса, знакомого пользователям других языков ALGOL. Icon не является объектно-ориентированным, но в 1996 году было разработано объектно-ориентированное расширение под названием Idol, которое впоследствии превратилось в Unicon. Он также оказал влияние на другие языки, особенно его простые генераторы; генераторы Icon послужили основным источником вдохновения для языка Python.
Icon is a very high level programming language based on the concept of "goal directed execution" in which code returns a "success" along with valid values, or a "failure", indicating that there is no valid data to return. The success and failure of a given block of code is used to direct further processing, whereas conventional languages would typically use boolean logic written by the programmer to achieve the same ends. Because the logic for basic control structures is often implicit in Icon, common tasks can be completed with less explicit code. Icon was designed by Ralph Griswold after leaving Bell Labs where he was a major contributor to the SNOBOL language. SNOBOL was a string processing language with what would be considered dated syntax by the standards of the early 1970s. After moving to the University of Arizona, he further developed the underlying SNOBOL concepts in SL5, but considered the result to be a failure. This led to the significantly updated Icon, which blends the short but conceptually dense code of SNOBOL like languages with the more familiar syntax of ALGOL inspired languages like C or Pascal. Like the languages that inspired it, the primary area of use of Icon is managing strings and textual patterns. String operations often fail, for instance, finding "the" in "world". In most languages, this requires testing and branching to avoid using a non valid result. In Icon most of these sorts of tests are simply unneeded, reducing the amount of code that must be written. Complex pattern handling can be done in a few lines of terse code, similar to more dedicated languages like Perl but retaining a more function oriented syntax familiar to users of other ALGOL like languages. Icon is not object oriented, but an object oriented extension named Idol was developed in 1996 which eventually became Unicon. It also inspired other languages, with its simple generators being especially influential; Icon's generators were a major inspiration for the Python language.
СНОБОЛ
Первоначальная разработка SNOBOL, ретроспективно известная как SNOBOL1, началась осенью 1962 года в отделе исследований программирования лабораторий Bell Labs. Это было вызвано разочарованием от попыток использовать язык SCL для манипулирования полиномиальными формулами, символьной интеграции и изучения цепей Маркова. SCL, разработанный руководителем отдела Честером Ли, был медленным и обладал низкоуровневым синтаксисом, что приводило к огромному объему кода даже для простых проектов. После недолгого рассмотрения языка COMIT, Иван Полонский, Ральф Гризуольд и Дэвид Фарбер, все члены шестилетнего отдела, решили создать собственный язык для решения этих проблем. Первые версии работали на IBM 7090 в начале 1963 года, а к лету были доработаны и использовались по всей Bell Labs. Это почти сразу привело к созданию SNOBOL2, который добавил ряд встроенных функций и возможность подключения к внешнему коду на языке ассемблера. Он был выпущен в апреле 1964 года и в основном использовался в Bell Labs, но также применялся в Project MAC. Введение системных функций в основном подчеркнуло необходимость в пользовательских функциях, которые стали ключевой особенностью SNOBOL3, выпущенного в июле 1964 года. Выпуск SNOBOL3 совпал с существенными изменениями в вычислительном отделе Bell Labs, включая добавление нового мэйнфрейма GE 645, что потребовало бы переписывания SNOBOL. Вместо этого команда предложила разработать новую версию, которая будет работать на виртуальной машине под названием SIL (SNOBOL Intermediate Language), что позволит легко переносить ее на любую достаточно мощную платформу. Это предложение было принято в качестве SNOBOL4 в сентябре 1965 года. К этому времени, в августе 1966 года, появились планы по значительно улучшенной версии языка. Дальнейшая работа над языком продолжалась на протяжении всего 1960-х годов, особенно заметно было добавление ассоциативного типа массива в более поздних версиях, который они называли таблицей.