Снобол

Поделись знанием:
Перейти к: навигация, поиск

Снобо́л — язык программирования высокого уровня, разработанный в 1962—1967 гг. и предназначенный преимущественно для обработки текстовых данных.

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

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

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





История

Разработка началась в 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, SNOBOL2, SNOBOL3 и SNOBOL4. Последний пользовался успехом в 70-е гг.

Пример

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

START GRAMMAR = 0 | 1| 0 *GRAMMAR 0 | 1 *GRAMMAR 1
* Устанавливает в качестве образца НФБ-грамматику
LOOP NEWLINE - TRIMCINPUT) : F(END)
* Получает следующую строку без завершающих пробелов.
* В случае ошибки переход на END.
NEWLINE (POS(0) SPAN('0l") PROS(0)) : F(BAD)
* Проверяет строку на наличие только нулей и единиц.
* SPAN - строка из нулей и единиц.
* POS(0) - первая позиция.
* PROS(0) - последняя.
SN = SIZE(NEWLINE)
NEXT NEWLINE POS(0) 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

См. также

Напишите отзыв о статье "Снобол"

Ссылки

  • [www.snobol4.org/ SNOBOL4.ORG: SNOBOL4 Resources]. www.snobol4.org. Проверено 5 января 2016.
  • [www.snobol4.com/ SNOBOL4 and SPITBOL Information]. www.snobol4.com. Проверено 5 января 2016.
  • [uni-content.ru/dictionary-matenc/Снобол СНОБОЛ] — статья из Математической энциклопедии

Литература

Обзоры языка в книгах по языкам программирования вообще

  • Роберт В Себеста. 2.9. Два ранних динамических языка: APL и SNOBOL // Основные концепции языков программирования = Concepts of Programming Languages. — 5-е изд. — М.: «Вильямс», 2001. — С. 672. — ISBN 5-8459-0192-8.
  • Теренс Пратт. Снобол 4 // Языки программирования: Разработка и реализация = Programming Language Design and Implementation (PLDI). — 1-st ed.. — М.: Мир, 1979. — С. 483-516. — 573 с.
  • Ralph E. Griswold. XIII. SNOBOL Session // History of Programming Languages / Richard L. Wexelblat. — Academic Press, 1981. — С. 601-660. — 820 с. — (ACM monograph series). — ISBN 9780127450407.

Руководства по языку

  • Ralph E. Griswold, etc. [www.math.bas.bg/bantchev/place/snobol/gpp-2ed.pdf Snobol 4 Programming Language]. — 2-nd ed.. — Prentice Hall, 1971. — (Automatic Computation). — ISBN 9780138153731. (перевод Грисуолд Р., Поудж Дж., Полонски И. Язык программирования Снобол-4. — Мир, 1980. — (Математическое обеспечение ЭВМ).)
  • Ralph E. Griswold. Macroimplementation of Snobol 4. — W.H.Freeman & Co Ltd, 1972. — ISBN 9780716704478.
  • Ralph E. Griswold. String and list processing in SNOBOL4; techniques and applications. — Prentice-Hall, 1975. — (Prentice-Hall series in automatic computation). — ISBN 9780138530105.
  • James F. Gimpel. Algorithms in SNOBOL4. — Wiley, 1976. — ISBN 9780471302131.
  • Susan Hockey. Snobol programming for the humanities. — Clarendon Press; Oxford University Press, 1985. — ISBN 9780198246763.

Отрывок, характеризующий Снобол

На площади куда поехал государь, стояли лицом к лицу справа батальон преображенцев, слева батальон французской гвардии в медвежьих шапках.
В то время как государь подъезжал к одному флангу баталионов, сделавших на караул, к противоположному флангу подскакивала другая толпа всадников и впереди их Ростов узнал Наполеона. Это не мог быть никто другой. Он ехал галопом в маленькой шляпе, с Андреевской лентой через плечо, в раскрытом над белым камзолом синем мундире, на необыкновенно породистой арабской серой лошади, на малиновом, золотом шитом, чепраке. Подъехав к Александру, он приподнял шляпу и при этом движении кавалерийский глаз Ростова не мог не заметить, что Наполеон дурно и не твердо сидел на лошади. Батальоны закричали: Ура и Vive l'Empereur! [Да здравствует Император!] Наполеон что то сказал Александру. Оба императора слезли с лошадей и взяли друг друга за руки. На лице Наполеона была неприятно притворная улыбка. Александр с ласковым выражением что то говорил ему.
Ростов не спуская глаз, несмотря на топтание лошадьми французских жандармов, осаживавших толпу, следил за каждым движением императора Александра и Бонапарте. Его, как неожиданность, поразило то, что Александр держал себя как равный с Бонапарте, и что Бонапарте совершенно свободно, как будто эта близость с государем естественна и привычна ему, как равный, обращался с русским царем.
Александр и Наполеон с длинным хвостом свиты подошли к правому флангу Преображенского батальона, прямо на толпу, которая стояла тут. Толпа очутилась неожиданно так близко к императорам, что Ростову, стоявшему в передних рядах ее, стало страшно, как бы его не узнали.
– Sire, je vous demande la permission de donner la legion d'honneur au plus brave de vos soldats, [Государь, я прошу у вас позволенья дать орден Почетного легиона храбрейшему из ваших солдат,] – сказал резкий, точный голос, договаривающий каждую букву. Это говорил малый ростом Бонапарте, снизу прямо глядя в глаза Александру. Александр внимательно слушал то, что ему говорили, и наклонив голову, приятно улыбнулся.
– A celui qui s'est le plus vaillament conduit dans cette derieniere guerre, [Тому, кто храбрее всех показал себя во время войны,] – прибавил Наполеон, отчеканивая каждый слог, с возмутительным для Ростова спокойствием и уверенностью оглядывая ряды русских, вытянувшихся перед ним солдат, всё держащих на караул и неподвижно глядящих в лицо своего императора.
– Votre majeste me permettra t elle de demander l'avis du colonel? [Ваше Величество позволит ли мне спросить мнение полковника?] – сказал Александр и сделал несколько поспешных шагов к князю Козловскому, командиру батальона. Бонапарте стал между тем снимать перчатку с белой, маленькой руки и разорвав ее, бросил. Адъютант, сзади торопливо бросившись вперед, поднял ее.
– Кому дать? – не громко, по русски спросил император Александр у Козловского.
– Кому прикажете, ваше величество? – Государь недовольно поморщился и, оглянувшись, сказал:
– Да ведь надобно же отвечать ему.
Козловский с решительным видом оглянулся на ряды и в этом взгляде захватил и Ростова.
«Уж не меня ли?» подумал Ростов.
– Лазарев! – нахмурившись прокомандовал полковник; и первый по ранжиру солдат, Лазарев, бойко вышел вперед.
– Куда же ты? Тут стой! – зашептали голоса на Лазарева, не знавшего куда ему итти. Лазарев остановился, испуганно покосившись на полковника, и лицо его дрогнуло, как это бывает с солдатами, вызываемыми перед фронт.
Наполеон чуть поворотил голову назад и отвел назад свою маленькую пухлую ручку, как будто желая взять что то. Лица его свиты, догадавшись в ту же секунду в чем дело, засуетились, зашептались, передавая что то один другому, и паж, тот самый, которого вчера видел Ростов у Бориса, выбежал вперед и почтительно наклонившись над протянутой рукой и не заставив ее дожидаться ни одной секунды, вложил в нее орден на красной ленте. Наполеон, не глядя, сжал два пальца. Орден очутился между ними. Наполеон подошел к Лазареву, который, выкатывая глаза, упорно продолжал смотреть только на своего государя, и оглянулся на императора Александра, показывая этим, что то, что он делал теперь, он делал для своего союзника. Маленькая белая рука с орденом дотронулась до пуговицы солдата Лазарева. Как будто Наполеон знал, что для того, чтобы навсегда этот солдат был счастлив, награжден и отличен от всех в мире, нужно было только, чтобы его, Наполеонова рука, удостоила дотронуться до груди солдата. Наполеон только прило жил крест к груди Лазарева и, пустив руку, обратился к Александру, как будто он знал, что крест должен прилипнуть к груди Лазарева. Крест действительно прилип.