СНОБОЛ

редактировать
Текстовый строковый язык программирования
СНОБОЛ
Парадигма Императив, неструктурированный
Разработано Дэвидом Дж. Фарбером, Ральфом Э. Грисволдом и
Девелопером Дэвидом Дж. Фарбером, Ральфом Э. Гризуолдом, Иваном П. Полонским и Bell Labs
Впервые появилось1962; 58 лет назад (1962 г.)
Стабильный выпуск СНОБОЛ4 / 1967; 53 года назад (1967 г.)
Веб-сайтwww.snobol4.org
Основные реализации
SNOBOL, SPITBOL
Под влиянием
COMIT
Influenced
AWK, SL5, Icon, bs, Lua

SNOBOL («StriNg Oriented and SymBOlic Language») - это серия языков программирования разработан в период с 1962 по 1967 год в ATT Bell Laboratories Дэвидом Дж. Фарбером, Ральфом Э. Грисволдом и Иваном П. Полонским, достигнув высшей точки в СНОБОЛ4. Это был один из ряда языков, ориентированных на текстовую строку, которые были разработаны в 1950-х и 1960-х годах; другие включали COMIT и TRAC.

SNOBOL4 отличается от большинства языков программирования своей эпохи тем, что имеет шаблоны как первоклассный тип данных (т. е. тип данных, значения которого можно манипулировать всеми способами, разрешенными для любого другого типа данных в языке программирования), а также путем предоставления операторов для конкатенации шаблона и чередования. Шаблоны SNOBOL4 являются типом объектов и допускают различные манипуляции, как и более поздние объектно-ориентированные языки, такие как JavaScript, шаблоны которых известны как регулярные выражения. Кроме того, строки SNOBOL4, сгенерированные во время выполнения, можно рассматривать как программы и либо интерпретировать, либо компилировать и выполнять (как в функции eval в других языках).

SNOBOL4 довольно широко преподавался в крупных университетах США в конце 1960-х - начале 1970-х годов и широко использовался в 1970-х и 1980-х годах в качестве языка манипулирования текстом в гуманитарных науках.

В 1980-х и 1990-х годах его использование исчезло по мере того, как новые языки, такие как AWK и Perl, сделали модными манипуляции со строками с помощью регулярных выражений. Шаблоны SNOBOL4 включают грамматики BNF, которые эквивалентны контекстно-свободным грамматикам и более эффективны, чем регулярные выражения. «Регулярные выражения» в текущих версиях AWK и Perl на самом деле являются расширениями регулярных выражений в традиционном смысле, но регулярные выражения, в отличие от шаблонов SNOBOL4, не рекурсивны, что дает явное вычислительное преимущество SNOBOL4 узоры. (Рекурсивные выражения действительно появились в Perl 5.10, выпущенном в декабре 2007 года.)

Более поздние языки SL5 (1977) и Icon (1978) были разработаны Гризвольдом для объединения обратного отслеживания Сопоставление с образцом SNOBOL4 с более стандартной структурой, подобной АЛГОЛу.

.

Содержание
  • 1 Разработка
    • 1.1 SNOBOL1
    • 1.2 SNOBOL2
    • 1.3 SNOBOL3
    • 1.4 SNOBOL4
  • 2 Возможности SNOBOL4
  • 3 Примеры программ
  • 4 Реализации
  • 5 Именование
  • 6 См. Также
  • 7 Ссылки
  • 8 Дополнительная литература
  • 9 Внешние ссылки
Разработка

SNOBOL1

Исходный язык SNOBOL был создан как инструмент будет использоваться его авторами для работы с символической обработкой многочленов. Он был написан на ассемблере для IBM 7090. У него был простой синтаксис, только один тип данных, строка, никаких функций и объявлений, и очень мало контроля ошибок. Однако, несмотря на его простоту и «личный» характер, его использование начало распространяться на другие группы. В результате авторы решили его расширить и привести в порядок.

SNOBOL2

SNOBOL2 действительно существовал, но это была недолговечная промежуточная версия разработки без определяемых пользователем функций и никогда не выпускалась.

SNOBOL3

Они переписали SNOBOL1 и добавили функции, как стандартные, так и определяемые пользователем, и представили результат как SNOBOL3. SNOBOL3 стал довольно популярным и был переписан другими программистами для других компьютеров, кроме IBM 7090. В результате возникло несколько несовместимых диалектов.

SNOBOL4

По мере того, как SNOBOL3 становился все более популярным, авторы получали все больше и больше запросов на расширение языка. Они также начали получать жалобы на несовместимость и ошибки в версиях, которые они не писали. Чтобы решить эту проблему и воспользоваться преимуществами новых компьютеров, представленных в конце 1960-х, было принято решение разработать SNOBOL4 с множеством дополнительных типов данных и функций, но на основе виртуальной машины, чтобы обеспечить улучшенную переносимость между компьютерами. Переводчик языка SNOBOL4 по-прежнему был написан на ассемблере. Однако макро-функции ассемблера использовались для определения инструкций виртуальной машины языка S NOBOL I реализации L, SIL. Это значительно улучшило переносимость языка, сделав относительно простым перенос виртуальной машины, на которой размещался переводчик, путем воссоздания ее виртуальных инструкций на любой машине, которая включала макроассемблер или даже язык высокого уровня.

Машинно-независимый язык SIL возник как обобщение макросов обработки строк, разработанных Дугласом Макилроем, которые широко использовались в начальной реализации SNOBOL. В 1969 году Макилрой снова повлиял на язык, настаивая на добавлении типа таблицы в SNOBOL4.

.

Характеристики SNOBOL4

SNOBOL отличается форматом и стилем программирования, которые радикально отличаются от современных процедурных языков, таких как Fortran и Algol.

SNOBOL4 поддерживает ряд встроенных типов данных , таких как целые числа и действительные числа ограниченной точности , строки, шаблоны, массивы и таблицы (ассоциативные массивы), а также позволяет программисту определять дополнительные типы данных и новые функции. В то время в SNOBOL4 был развит тип данных, определяемый программистом - он похож на записи более ранних языков программирования COBOL и более поздних Pascal.

Все командные строки SNOBOL имеют форму

шаблон субъекта метки = объект : передача

Каждый из пяти элементов является необязательным. Как правило, объект сопоставляется с шаблоном. Если объект присутствует, любая согласованная часть заменяется объектом с помощью правил замены. Передача может быть абсолютной или условной ветвью, зависящей от успеха или неудачи оценки субъекта, оценки шаблона, совпадения шаблона, оценки объекта или окончательного назначения. Это также может быть перенос в код, созданный и скомпилированный самой программой во время выполнения.

Шаблон СНОБОЛ может быть очень простым или чрезвычайно сложным. Простой шаблон - это просто текстовая строка (например, «ABCD»), но сложный шаблон может быть большой структурой, описывающей, например, полную грамматику компьютерного языка. В СНОБОЛ можно реализовать языковой интерпретатор почти непосредственно из его выражения Бэкуса – Наура с небольшими изменениями. Создание макроассемблера и интерпретатора для полностью теоретической части аппаратного обеспечения может занять всего несколько сотен строк, а новая инструкция добавляется одной строкой.

Сложные шаблоны SNOBOL могут делать вещи, которые были бы непрактичными или невозможными при использовании более примитивных регулярных выражений, используемых в большинстве других языков сопоставления шаблонов. Некоторые из этих возможностей проистекают из так называемых «расширений SPITBOL» (которые с тех пор были включены практически во все современные реализации исходного языка SNOBOL 4), хотя можно достичь такой же мощности и без них. Частично эта мощь исходит из побочных эффектов, которые можно создать во время операции сопоставления с образцом, включая сохранение многочисленных промежуточных / предварительных результатов сопоставления и возможность вызывать написанные пользователем функции во время сопоставления с образцом, которые могут выполнять практически любую желаемую обработку, а затем влиять на текущее направление, в котором принимает прерванное сопоставление с образцом, или даже на изменение самого образца во время операции сопоставления. Шаблоны могут быть сохранены, как и любой другой первоклассный элемент данных, и могут быть объединены, использованы в других шаблонах и использованы для создания очень сложных и сложных выражений шаблонов. Можно написать, например, шаблон SNOBOL4, который соответствует «полному имени и международному почтовому почтовому адресу», что значительно превосходит все, что практически возможно даже попытаться использовать регулярные выражения.

При сопоставлении с образцом SNOBOL4 используется алгоритм поиска с возвратом, аналогичный тому, который используется в языке логического программирования язык Prolog, который предоставляет подобные шаблону конструкции через DCG. Этот алгоритм упрощает использование SNOBOL в качестве языка логического программирования, чем это имеет место для большинства языков.

SNOBOL хранит переменные, строки и структуры данных в единой куче со сборкой мусора.

Примеры программ

«Hello, World!» программа может выглядеть следующим образом...

OUTPUT = "Hello, World!" END

Простая программа, которая запрашивает имя пользователя и затем использует его в выходном предложении...

OUTPUT = "Как вас зовут?" Имя пользователя = INPUT OUTPUT = "Спасибо," Имя пользователя END

Чтобы выбрать один из трех возможных выходов...

OUTPUT = "Как вас зовут?" Имя пользователя = INPUT Имя пользователя «J»: S (LOVE) Имя пользователя «K»: S (HATE) MEH OUTPUT = «Привет,» Имя пользователя: (END) LOVE OUTPUT = «Как приятно познакомиться», Имя пользователя: (END) HATE OUTPUT = "О. Это вы" Имя пользователя END

Чтобы продолжать запрашивать ввод до тех пор, пока больше не поступит...

OUTPUT = "Эта программа будет запрашивать у вас личные имена" OUTPUT = ", пока вы не нажмете клавишу возврата, не давая it one "NameCount = 0: (GETINPUT) AGAIN NameCount = NameCount + 1 OUTPUT =" Name "NameCount": "PersonalName GETINPUT OUTPUT =" Пожалуйста, дайте мне имя "NameCount + 1 PersonalName = INPUT PersonalName LEN (1): S (AGAIN) OUTPUT = "Завершено." NameCount "запрошены имена." END
Реализации

Классическая реализация была на PDP-10 ; он использовался для изучения компиляторов, формальных грамматик и искусственного интеллекта, особенно машинного перевода и машинного понимания естественного языки. Первоначальная реализация была на IBM 7090 в Bell Labs, Холмдел, Нью-Джерси. SNOBOL4 был специально разработан для переносимости; первая реализация была начата на IBM 7094 в 1966 году, но завершена на IBM 360 в 1967 году. Она была быстро перенесена на многие другие платформы.

Обычно он реализуется как интерпретатор из-за сложности реализации некоторых из его высокоуровневых функций, но есть компилятор , Компилятор SPITBOL, который предоставляет почти все возможности, предоставляемые интерпретатором.

Компилятор Gnat Ada поставляется с пакетом (GNAT.Spitbol), который реализует всю семантику манипуляции строками Spitbol. Это можно вызвать из программы на языке Ada.

Редактор файлов для Michigan Terminal System (MTS) обеспечил сопоставление с образцом на основе шаблонов SNOBOL4.

В настоящее время доступно несколько реализаций. Макрос SNOBOL4 на языке C, написанный Филом Бадном, - это бесплатная реализация с открытым исходным кодом, которая может работать практически на любой платформе. Catspaw, Inc предоставила коммерческую реализацию языка SNOBOL4 для многих различных компьютерных платформ, включая DOS, Macintosh, Sun, RS / 6000 и другие, и эти реализации теперь доступны бесплатно от Catspaw. Minnesota SNOBOL4, Викторс Берстис, ближайшая реализация ПК к исходной версии мэйнфрейма IBM (даже включая поддержку операторов FORMAT в стиле Фортран) также бесплатна.

Хотя в самом SNOBOL нет структурированного программирования препроцессор SNOBOL под названием Snostorm был разработан и реализован в 1970-х годах Фредом Шварцем для использования в рамках Michigan Terminal System (MTS) в Университете Мичигана. Snostorm использовался на восьми-пятнадцати сайтах МТС. Он также был доступен в Университетском колледже Лондона (UCL) с 1982 по 1984 год.

Snocone от Эндрю Кениг добавляет блочно-структурированные конструкции в язык SNOBOL4. Snocone - это автономный язык программирования, а не надмножество SNOBOL4.

Реализация SPITBOL также представила ряд функций, которые, хотя и не используют традиционные ключевые слова структурного программирования, тем не менее могут использоваться для обеспечения многих из эквивалентные возможности, обычно рассматриваемые как «структурированное программирование», в первую очередь вложенные конструкции типа if / then / else. С тех пор эти функции были добавлены в самые последние реализации SNOBOL4. После многих лет работы в качестве коммерческого продукта в апреле 2009 года SPITBOL был выпущен как бесплатное программное обеспечение под Стандартной общественной лицензией GNU.

Именование

По словам Дэйва Фарбера, он, Гризволд и Полонски «наконец-то пришли к имя Symbolic EXpression Interpreter SEXI. "

Все шло хорошо, пока однажды я не отправил пакетное задание на сборку системы и, как обычно, на моей карте JOB - первой карте в колоде, я, по стандартам BTL, выполнил свою работу и меня зовут - СЕКСИ Фарбер.

Одна из девушек из Comp Center посмотрела на это и сказала с юмором: «Это то, что вы думаете».

Это дало понять, что нам нужно другое имя !! Мы сидели, разговаривали, пили кофе и снимали резиновые ленты, и спустя слишком много времени кто-то сказал - скорее всего, Ральф - «У нас нет шанса Снежка в аду найти имя». Все мы сразу закричали: «МЫ ПОЛУЧИЛИ - СНОБОЛ» в духе всех языков BOL. Затем мы напрягли свой разум, чтобы найти то, что он обозначает.

Обычными бэкронимами «SNOBOL» являются «Строковый символический язык» или (как квазиинициализм ) «Строковый» Ориентированный символический язык '.

См. Также
Ссылки
Дополнительная литература
  • Эммер, Марк Б. SNOBOL4 +: язык SNOBOL4 для пользователя персонального компьютера. Энглвуд Клиффс, Нью-Джерси: Прентис Холл, 1985 (ISBN 0-13-815119-9 ).
  • Гимпел, Джеймс Ф. Алгоритмы в SNOBOL4. Нью-Йорк: Wiley, 1976 (ISBN 0-471-30213-9 ); переиздано Salida, CO: Catspaw, 1986 (ISBN 0-939793- 00-8 ).
  • Грисволд, Ральф Э. Макро-реализация SNOBOL4. Сан-Франциско, Калифорния: WH Freeman and Company, 1972 (ISBN 0-7167-0447-1 ).
  • Гризвольд, Ральф Э., Дж. Ф. Пойдж и И. П. Полонски. Язык программирования SNOBOL4. Энглвуд Клиффс, Нью-Джерси: Прентис Холл, 1968 (ISBN 0-13-815373-6 ).
  • Griswold, Ralph E. String and List Processing в SNOBOL4: Techniques and Applications. Englewood Cliffs, NJ: Prentice Hall, 1975 (ISBN 0-13-853010-6 ).
  • Хоккей, Сьюзан М. Программирование снобола для гуманитарных наук. Нью-Йорк: Clarendon Press; Oxford: Oxford University Press, 1985 (ISBN 0-19-824676-5 ).
Внешние ссылки
Последняя правка сделана 2021-06-06 03:58:39
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте