Снобол: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
SieBot (обсуждение | вклад)
м робот добавил: ca:Snobol
м удаление коммерческой ссылки из выходных данных литературы
Строка 48: Строка 48:
|оригинал = Concepts of Programming Languages
|оригинал = Concepts of Programming Languages
|автор = Роберт В Себеста
|автор = Роберт В Себеста
|ссылка = http://www.williamspublishing.com/Books/Concept_Of_PL.html
|ссылка =
|isbn = 5-8459-0192-8
|isbn = 5-8459-0192-8
|страницы = 672
|страницы = 672

Версия от 17:20, 24 января 2008

Существует целый набор классических языков программирования, которые должен знать каждый, не потому, что на них возможно писать современные программы, а потому, что они используют принцип "простоты": Язык LISP использует идею, что всё есть списки; язык Forth что всё есть стек; язык Prolog, что всё есть логическое выражение; язык Smalltalk, что всё есть объект и т. п.

Основной целью Snobol являлось показать принцип (возможность его полноценного существования), что всё есть строка. Внешне язык выглядит, в так называемом, старом стиле: современные идеи процедур в нём даже не узнать, однако мощь его ничуть не уступает LISP по работе в среде "искусственного интеллекта".

Сопоставление с образцом на основе НФБ-грамматик. Полностью динамический язык, включая объявления, типы, распределение памяти, даже точки входа и выхода из процедуры. Реализация использует виртуальные макрокоманды обработки строк - простой перезаписью макрокоманд для любого существующего компьютера.

Язык, который является языком написания компиляторов, в котором основной принцип, что всё есть строка и имеющий такой "некрасивый" синтаксис не мог естественным путём не "переродиться" в совершенно другой, внешне даже не похожий: Icon. Первоначально он был одной лишь надстройкой над Snobol4, но вскоре стал самостоятельным языком программирования.

История

Разработка началась в 1962г. Ральфом Грисвольдом, Иваном Полонским и Дэвидом Фарбером, сотрудниками лаборатории AT&T Bell Labs. Их целью было создание языка обработки строк для работы с формулами и анализа графиков.

В 1950 г. Ингве (Yngve) из MIT разработал язык COMIT для обработки естественных языков на основе правил НФБ, однако группа из Bell Labs сочла COMIT слишком ограниченным для своих целей.

Изначально язык назывался SCL7 (Symbolic Computation Language 7), затем его название сменилось на SEXI (String Expression Interpreter), которое по понятным причинам было осуждено в 60-е гг., и, наконец, он стал называться SNOBOL (StriNg Oriented symBOlic Language) - искусственно созданный акроним, лишенный интуитивно понятного смысла. Было разработано несколько версий языка SNOBOL- SNOBOL, SNOBOL2, SNOBOL3 и SNOBOL4. Последний пользовался успехом в 70-е гг.

Пример

Найти среди вводимых строк палиндром, составленный из 0 и 1, максимальной нечетной длины:

START GRAMMAR = 0 | 1| 0 *GRAMMAR 0 | 1 *GRAMMAR 1
* Устанавливает в качестве образца НФБ-грамматику
LOOP NEWLINE - TRIMCINPUT) : F(END)
* Получает следующую строку без завершающих пробелов.
* В случае ошибки переход на END.
NEWLINE (POS(O) SPANC'Ol") PROS(O)) : F(BAD)
* Проверяет строку на наличие только нулей и единиц.
* SPAN - строка из нулей и единиц.
* POS(O) - первая позиция.
* PROS(O) - последняя.
SN = SIZE(NEWLINE)
NEXT NEWLINE POS(O) GRAMMAR . PALINDROME POS(SN)
- :S(OK) F(NOTOK)
* Строка проверяется на соответствие грамматике через POS(SN)
* Если сравнение не прошло, переход в последнюю позицию.
* Если успешно, печатается ответ.
* Совпавшая часть присваивается PALINDROME
OK OUTPUT="MATCH: " PALINDROME :(LOOP)
NOTOK SN = SN - 1 :(NEXT)
BAD OUTPUT = "IMPROPER INPUT: " NEWLINE :(LOOP)
END

Ссылки

Литература

  • Роберт В Себеста. 2.9. Два ранних динамических языка: APL и SNOBOL // Основные концепции языков программирования = Concepts of Programming Languages. — 5-е изд. — М.: «Вильямс», 2001. — С. 672. — ISBN 5-8459-0192-8.