~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 734D0608E11A221D1AF178FDC36AC963__1717719360 ✰
Заголовок документа оригинал.:
✰ SNOBOL - Wikipedia ✰
Заголовок документа перевод.:
✰ СНОБОЛ — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/SNOBOL4 ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/73/63/734d0608e11a221d1af178fdc36ac963.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/73/63/734d0608e11a221d1af178fdc36ac963__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 07:17:42 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 7 June 2024, at 03:16 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

СНОБОЛ — Википедия Jump to content

СНОБОЛ

Из Википедии, бесплатной энциклопедии
(Перенаправлено с СНОБОЛ4 )
СНОБОЛ
Парадигма Императивный , процедурный , неструктурированный
Разработано Дэвид Дж. Фарбер , Ральф Грисволд и Иван П. Полонски
Разработчик Дэвид Дж. Фарбер, Ральф Э. Грисволд, Иван П. Полонски и Bell Labs
Впервые появился 1962 год ; 62 года назад ( 1962 )
Стабильная версия
СНОБОЛ4 / 1967 ; 57 лет назад ( 1967 )
Веб-сайт https://www.regressive.org/snobol4/
Основные реализации
СНОБОЛ, СПИТБОЛ
Под влиянием
совершить
Под влиянием
AWK , SL5, значок , bs , Lua [1]

SNOBOL («Строко-ориентированный и символический язык») — серия языков программирования , разработанная в период с 1962 по 1967 год в лабораториях AT&T Bell Laboratories Дэвидом Дж. Фарбером , Ральфом Грисволдом и Иваном П. Полонски, кульминацией которой стал SNOBOL4. Это был один из многих языков, ориентированных на текстовые строки , разработанных в 1950-х и 1960-х годах; другие включали КОМИТ и ПРОФ .

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

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

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

Более поздний SL5 (1977) [6] и Icon (1978) были разработаны Грисволдом для объединения обратного поиска сопоставления с образцом SNOBOL4 с более стандартным ALGOL структурированием, подобным .

Развитие [ править ]

СНОБОЛ1 [ править ]

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

СНОБОЛ2 [ править ]

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

СНОБОЛ3 [ править ]

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

СНОБОЛ4 [ править ]

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

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

Возможности SNOBOL4 [ править ]

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

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

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

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

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

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

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

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

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

Примеры программ [ править ]

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

          ВЫХОД   =   "Привет, мир!" 
  КОНЕЦ 

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

          OUTPUT   =   «Как вас зовут?» 
            Имя пользователя   =   INPUT 
           OUTPUT   =   «Спасибо»,   Имя пользователя 
 КОНЕЦ 

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

          OUTPUT   =   «Как вас зовут?» 
            Имя пользователя   =   ВХОД 
           Имя пользователя   «J»                                               :  S  (  ЛЮБОВЬ  ) 
           Имя пользователя   «K»                                               :  S  (  НЕНАВИСТЬ  ) 
 MEH         ВЫХОД   =   «Привет!»   Имя пользователя                                   : (  КОНЕЦ  ) 
 ЛЮБОВЬ        ВЫХОД   =   «Как приятно познакомиться»   Имя пользователя                 :(  КОНЕЦ  ) 
 НЕНАВИСТЬ        OUTPUT   =   «О. Это ты»,   Имя пользователя 
 END 

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

          OUTPUT   =   "Эта программа запросит у вас личные имена" 
           OUTPUT   =   "пока вы не нажмете Enter, не указав его" 
           NameCount   =   0                                              :(  GETINPUT  ) 
 AGAIN       NameCount   =   NameCount   +   1 
           OUTPUT   =   "Имя "   NameCount   ": "   PersonalName 
 GETINPUT    OUTPUT   =   "Пожалуйста, дайте мне имя"   NameCount   +   1  
           PersonalName   =   INPUT 
           PersonalName   LEN  (  1  )                                        :  S  (  ОПЯТЬ  ) 
           OUTPUT   =   "Завершено. "   NameCount   " имена запрошены." 
  КОНЕЦ 

Реализации [ править ]

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

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

Классическая реализация PDP -10 была довольно медленной, и в 1972 году Джеймс Гимпел из Bell Labs, Холмдел, штат Нью-Джерси, разработал собственную реализацию SNOBOL4 для PDP-10 , которую он назвал SITBOL. Он использовал этот дизайн в качестве основы для выпускного курса по обработке струн, который он преподавал в том году в Технологическом институте Стивенса (именно поэтому он был назван СИТБОЛ). Студентам были даны разделы для реализации (на ассемблере PDP-10), и весь семестр был посвящен реализации SITBOL. К концу семестра он был завершен более чем на 80% и впоследствии был завершен профессором Гимпелем и несколькими студентами летом. SITBOL представлял собой полнофункциональный высокопроизводительный интерпретатор SNOBOL4.

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

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

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

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

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

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

Именование [ править ]

По словам Дэйва Фарбера, [16] он, Грисволд и Полонский «наконец-то пришли к названию «Интерпретатор символических выражений SEXI».

Все шло хорошо, пока однажды я не подал пакетное задание на сборку системы и как обычно на своей карточке РАБОТА — первой карте в колоде, я по стандартам BTL пробил свое задание и свое имя — SEXI Farber.

Одна из девушек из вычислительного центра посмотрела на это и с юмором сказала: «Вы так думаете».

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

Распространенные обратные названия «SNOBOL»: «Строкоориентированный символический язык». [17] или (как квазиинициализм ) «Строко-ориентированный символический язык». [18]

См. также [ править ]

Ссылки [ править ]

  1. ^ Иерусалимский, Роберто; де Фигейредо, Луис Энрике; Селес, Вальдемар (2007), «Эволюция Lua», Материалы третьей конференции ACM SIGPLAN по истории языков программирования (PDF) , стр. 26, номер домена : 10.1145/1238844.1238846 , ISBN  9781595937667 , S2CID   475143
  2. ^ Гимпель, Дж. Ф. (февраль 1973 г.). «Теория дискретных паттернов и их реализация в СНОБОЛ4» . Коммуникации АКМ . 16 (2): 91-100. дои : 10.1145/361952.361960 . S2CID   17059429 .
  3. ^ «Доктор Добб: Программы, преобразующие собственный исходный код; или: Шутка о сноболе» . Dobbscodetalk.com . Проверено 4 декабря 2011 г.
  4. ^ Контактная информация. "перлр" . perldoc.perl.org . Проверено 4 декабря 2011 г.
  5. ^ «Учебное пособие по рекурсивным регулярным выражениям» . Проверено 19 марта 2017 г.
  6. ^ Грисволд, Ральф Э.; Хэнсон, Дэвид Р. (апрель 1977 г.). «Обзор SL5» . Уведомления ACM SIGPLAN . 12 (4): 40–50. дои : 10.1145/954654.954658 . S2CID   38692673 .
  7. ^ См. главу 1 макрореализации SNOBOL4.
  8. ^ SNOBOL4 был реализован с использованием C для воссоздания инструкций виртуальной машины.
  9. ^ Грисволд, Ральф (1978). «История языков программирования СНОБОЛ» (PDF) . Уведомления ACM SIGPLAN . 13 (8): 275–308. дои : 10.1145/960118.808393 . S2CID   5413577 . Архивировано из оригинала (PDF) 02 марта 2019 г.
  10. ^ Вексельблат, Ричард Л. , изд. (2014) [1981]. История языков программирования . Академическая пресса. п. 784. ИСБН  9781483266169 .
  11. ^ Знакомство с редактором файлов MTS , Вычислительный центр Мичиганского университета, 1986.
  12. ^ «SNOBOL4.ORG — Ресурсы SNOBOL4» .
  13. ^ «Язык программирования MINNESOTA SNOBOL4» .
  14. ^ "SNOSTORM" , MTS Volume 9: SNOBOL4 в MTS , Вычислительный центр Мичиганского университета, июнь 1979 г., страницы 99-120. Проверено 1 сентября 2014 г.
  15. ^ «Язык программирования Snocone» , Эндрю Кениг, USENIX (Портленд, Орегон), июнь 1985 г. Проверено 2 сентября 2014 г.
  16. СТОИТ ПРОЧИТАТЬ Статья в Википедии о SNOBOL — НАСТОЯЩАЯ история, НЕ Википедия (Дэйв Фарбер, список рассылки «Интересные люди», 26 декабря 2008 г.)
  17. ^ Компьютеры и гуманитарные науки 1 :158, 1967.
  18. ^ Белзер, Джек; Хольцман, Альберт Г.; Кент, Аллен, ред. (1979). «СНОБОЛ» . Энциклопедия компьютерных наук и технологий . Том. 13. ЦРК Пресс. п. 173. ИСБН  0-8247-2263-9 .

Дальнейшее чтение [ править ]

  • Эммер, Марк Б. (1985). SNOBOL4+: язык SNOBOL4 для пользователей персональных компьютеров . Прентис Холл. ISBN  0-13-815119-9 .
  • Гимпель, Джеймс Ф. (1976). Алгоритмы в СНОБОЛ4 . Уайли. ISBN  0-471-30213-9 . переиздано Салида, Колорадо: Catspaw, 1986 ( ISBN   0-939793-00-8 ).
  • Грисволд, Ральф Э. (1972). Макрореализация SNOBOL4 . У. Х. Фриман. ISBN  0-7167-0447-1 .
  • Грисволд, Ральф Э.; Поаге, Дж. Ф.; Полонский, ИП (1968). Язык программирования SNOBOL4 . Прентис Холл. ISBN  0-13-815373-6 .
  • Грисволд, Ральф Э. (1975). Обработка строк и списков в SNOBOL4: методы и приложения . Прентис Холл. ISBN  0-13-853010-6 .
  • Хоккей, Сьюзен М. (1985). Снобольское программирование для гуманитарных наук . Кларендон Пресс. ISBN  0-19-824676-5 .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 734D0608E11A221D1AF178FDC36AC963__1717719360
URL1:https://en.wikipedia.org/wiki/SNOBOL4
Заголовок, (Title) документа по адресу, URL1:
SNOBOL - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)