SNOBOL: Жолға бағытталған тілдің тарихы мен ерекшеліктері
SNOBOL
SNOBOL4: 1962-67 ж. AT&T Bell Labs-та жасалған мәтіндік жолға бағытталған тіл. Паттерндерді қолдану, кодты өңдеу мүмкіндігі бар ерекше бағдарламалау тілі.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Мәтіндік жолға бағдарланған бағдарламалау тілі – бағдарламалау тілі.
Text string oriented programming language
the programming language
SNOBOL («StriNg Oriented and symBOlic Language») – 1962 және 1967 жылдар аралығында AT&T Bell Laboratories-те Дэвид Дж. Фарбер, Ральф Э. Гризуолд және Иван П. Полонский әзірлеген бағдарламалау тілдерінің сериясы, оның ең жетілгені SNOBOL4. Бұл 1950-1960 жылдары дамыған мәтіндік тізбекке бағдарланған тілдердің бірі болды; басқаларына COMIT және TRAC кірді. SNOBOL4 өз заманының көптеген бағдарламалау тілдерінен ерекшеленеді, өйткені оның үлгілері – бірінші сыныпты деректер түрі (яғни, олардың мәндері бағдарламалау тіліндегі кез келген басқа деректер түріне рұқсат етілген барлық амалдармен өңделе алады) және үлгілерді тізбектеу мен алмастыру операторларын ұсынады. SNOBOL4 үлгілері нысанның бір түрі болып табылады және кейінірек нысанға бағдарланған JavaScript сияқты түрлі манипуляцияларды қабылдайды, оның үлгілері реттегіш өрнектер (regular expressions) ретінде белгілі. Сонымен қатар, SNOBOL4 орындалу кезінде жасалған тізбектерді бағдарлама ретінде қарастыруға болады және оларды интерпретациялауға немесе құрастырып орындауға болады (басқа тілдердегі eval функциясы сияқты). SNOBOL4 1960-шы жылдардың соңы мен 1970-ші жылдардың басында АҚШ-тың ірі университеттерінде кеңінен оқытылды және 1970-ші және 1980-шы жылдары гуманитарлық ғылымдарда мәтінді өңдеу тілі ретінде кеңінен қолданылды. 1980-ші және 1990-шы жылдары AWK және Perl сияқты жаңа тілдер реттегіш өрнектер арқылы тізбектерді өңдеуді танымал етуімен оның қолданылуы азайды. SNOBOL4 үлгілері BNF грамматикасын қамтиды, олар контекстсіз грамматикаға тең және реттегіш өрнектерге қарағанда күштірек. AWK және Perl-дің қазіргі нұсқаларындағы «реттегіш өрнектер» шын мәнінде дәстүрлі мағынадағы реттегіш өрнектердің кеңейтілген нұсқалары болып табылады, бірақ реттегіш өрнектер, SNOBOL4 үлгілерінен айырмашылығы, рекурсивті емес, бұл SNOBOL4 үлгілеріне ерекше есептеулік артықшылық береді. (Дегенмен, рекурсивті өрнектер 2007 жылдың желтоқсан айында шыққан Perl 5.10 нұсқасында пайда болды.) Кейінірек SL5 (1977) және Icon (1978) тілдерін Гризуолд SNOBOL4 үлгілерінің кері іздеуін стандартты ALGOL сияқты құрылыммен біріктіру үшін жобалады.
SNOBOL ("StriNg Oriented and symBOlic Language") is a series of programming languages developed between 1962 and 1967 at AT&T Bell Laboratories by David J. Farber, Ralph E. Griswold and Ivan P. Polonsky, culminating in SNOBOL4. It was one of a number of text string oriented languages developed during the 1950s and 1960s; others included COMIT and TRAC. SNOBOL4 stands apart from most programming languages of its era by having patterns as a first class data type (i. e. a data type whose values can be manipulated in all ways permitted to any other data type in the programming language) and by providing operators for pattern concatenation and alternation. SNOBOL4 patterns are a type of object and admit various manipulations, much like later object oriented languages such as JavaScript whose patterns are known as regular expressions. In addition SNOBOL4 strings generated during execution can be treated as programs and either interpreted or compiled and executed (as in the eval function of other languages). SNOBOL4 was quite widely taught in larger U. S. universities in the late 1960s and early 1970s and was widely used in the 1970s and 1980s as a text manipulation language in the humanities. In the 1980s and 1990s, its use faded as newer languages such as AWK and Perl made string manipulation by means of regular expressions fashionable. SNOBOL4 patterns subsume BNF grammars, which are equivalent to context free grammars and more powerful than regular expressions. The "regular expressions" in current versions of AWK and Perl are in fact extensions of regular expressions in the traditional sense, but regular expressions, unlike SNOBOL4 patterns, are not recursive, which gives a distinct computational advantage to SNOBOL4 patterns. (Recursive expressions did appear in Perl 5.10, though, released in December 2007.) The later SL5 (1977) and Icon (1978) languages were designed by Griswold to combine the backtracking of SNOBOL4 pattern matching with more standard ALGOL like structuring.
SNOBOL1
Бастапқы SNOBOL тілі авторларының көпмүшелердің символдық өңдеуімен жұмыс істеуге арналған құрал ретінде жасалған. Ол IBM 7090 үшін тікелей машиналық кодта жазылған. Оның қарапайым синтаксисі, жалғыз дерек типі – жол (string), функциялары мен жарияланымдары жоқ, сондай-ақ қателерді тексеру деңгейі төмен болған. Дегенмен, қарапайымдылығына және "жеке" сипатына қарамастан, оның қолданысы басқа топтарға тарала бастады. Осының нәтижесінде авторлар оны дамытып, жетілдіруге бекінді.
The initial SNOBOL language was created as a tool to be used by its authors to work with the symbolic manipulation of polynomials. It was written in assembly language for the IBM 7090. It had a simple syntax, only one datatype, the string, no functions, and no declarations and very little error control. However, despite its simplicity and its "personal" nature its use began to spread to other groups. As a result, the authors decided to extend it and tidy it up.
SNOBOL2
SNOBOL2 болды, бірақ ол пайдаланушы анықтаған функциялары жоқ, қысқа ғұмырлы даму нұсқасы болды және ешқашан жарияланбады.
SNOBOL2 did exist but it was a short lived intermediate development version without user defined functions and was never released.
СНОБОЛ3
SNOBOL стандартты және пайдаланушы анықтаған функцияларды қосу мақсатымен қайта жазылды, ал нәтижесі SNOBOL3 ретінде жарияланды. SNOBOL3 кеңінен танымал болды және басқа бағдарламашылар оны IBM 7090 емес, басқа компьютерлер үшін қайта жазды. Осының салдарынан, бір-бірімен үйлеспейтін бірнеше түйіртек пайда болды.
SNOBOL was rewritten to add functions, both standard and user defined, and the result was released as SNOBOL3. SNOBOL3 became quite popular and was rewritten for other computers than the IBM 7090 by other programmers. As a result, several incompatible dialects arose.
СНОБОЛ4
SNOBOL3 танымал бола бастаған сайын, авторлар тілге қосымша мүмкіндіктер енгізу туралы көптеген сұраныстар алды. Сонымен қатар, олар өзі жасамаған нұсқалардағы үйлесімсіздіктер мен қателер туралы шағымдарды да ала бастады. Бұл мәселені шешу және 1960 жылдардың соңында пайда болған жаңа компьютерлердің артықшылықтарын пайдалану үшін SNOBOL4-ті көптеген қосымша дерек түрлерімен және мүмкіндіктермен, бірақ компьютерлер арасында оңай тасымалдауға мүмкіндік беретін виртуалды машина негізінде жасау туралы шешім қабылданды. SNOBOL4 тілінің аудармасы әлі де ассемблер тілінде жазылған. Дегенмен, ассемблердің макро мүмкіндіктері SNOBOL орындалу тілінің (SIL) виртуалды машина нұсқауларын анықтау үшін қолданылды. Бұл тілдің тасымалдануын жақсартты, себебі аударманы іске қосатын виртуалды машинаны макроассемблер немесе жоғары деңгейдегі тіл бар кез келген машинада оның виртуалды нұсқауларын қайта құру арқылы оңай тасымалдауға болады. Машинаға тәуелсіз SIL тілі Дуглас Макилройдың жол тізбектерін өңдеуге арналған макросының жалпылауы ретінде пайда болды, ол бастапқы SNOBOL іске асырылымында кеңінен қолданылды. 1969 жылы Макилрой SNOBOL4-ке кесте түрін қосуды талап ету арқылы тілге қайтадан әсер етті.
As SNOBOL3 became more popular, the authors received more and more requests for extensions to the language. They also began to receive complaints about incompatibility and bugs in versions that they hadn't written. To address this and to take advantage of the new computers being introduced in the late 1960s, the decision was taken to develop SNOBOL4 with many extra datatypes and features but based on a virtual machine to allow improved portability across computers. The SNOBOL4 language translator was still written in assembly language. However the macro features of the assembler were used to define the virtual machine instructions of the SNOBOL Implementation Language, the SIL. This very much improved the portability of the language by making it relatively easy to port the virtual machine which hosted the translator by recreating its virtual instructions on any machine which included a macro assembler or indeed a high level language. The machine independent language SIL arose as a generalization of string manipulation macros by Douglas McIlroy, which were used extensively in the initial SNOBOL implementation. In 1969, McIlroy influenced the language again by insisting on addition of the table type to SNOBOL4.
Қолданылу
Классикалық іске асыру PDP 10-да болды; ол компиляторларды, формалды грамматиканы және жасанды интеллектті, әсіресе машиналық аударма мен табиғи тілдерді машиналық түсінуді зерттеу үшін қолданылды. Бастапқы іске асыру IBM 7090-да Bell Labs, Holmdel, N. J. SNOBOL4 арнайы портативтілік үшін жасалған; алғашқы іске асыру IBM 7094-де 1966 жылы басталды, бірақ IBM 360-де 1967 жылы аяқталды. Ол тез арада көптеген басқа платформаларға көшірілді. Ол әдетте интерпретатор ретінде іске асырылады, өйткені оның кейбір жоғары деңгейдегі мүмкіндіктерін іске асыру қиын, бірақ компилятор бар, SPITBOL компиляторы, ол интерпретатор ұсынатын барлық мүмкіндіктерді ұсынады. PDP 10-дағы классикалық іске асыру өте баяу болды, ал 1972 жылы Холмдел, Нью-Джерсидегі Bell Labs-тің Джеймс Гимпел SNOBOL4-тің PDP 10-ға арналған SITBOL деп аталатын жергілікті іске асырылуын жасады. Ол бұл дизайнды сол жылы Стивенс технология институтында (осы себепті ол SITBOL деп аталды) оқытқан жіп өңдеу бойынша аспирантураның негізі ретінде қолданды. Студенттерге орындауға арналған бөлімдер (PDP 10 құрастырушы) берілді және бүкіл семестр SITBOL-ті іске асыруға бағытталған. Семестрдің соңына дейін 80%-дан астам аяқталды, кейіннен оны профессор Гимпель және бірнеше студенттер жаз бойы аяқтады. SITBOL - бұл толыққанды, жоғары өнімділіктегі SNOBOL4 аудармашысы. Gnat Ada компиляторымен бірге (GNAT. Spitbol) барлық Spitbol тізбекті манипуляциялау семантикасын іске асырады. Бұл Ада бағдарламасының ішінен шақырылуы мүмкін. Мичиган терминалды жүйесінің (MTS) файл редакторы SNOBOL4 үлгілеріне негізделген үлгілерді сәйкестендірді. Қазіргі уақытта бірнеше іске асырулар бар. Phil Budne жазған C тіліндегі Macro SNOBOL4 - бұл еркін, ашық бастапқы кодты, кез-келген платформада жұмыс істей алатын бағдарлама. Catspaw, Inc көптеген түрлі компьютерлік платформалар үшін SNOBOL4 тілінің коммерциялық іске асырылуын қамтамасыз етті, соның ішінде DOS, Macintosh, Sun, RS/6000 және басқалары, және бұл іске асырылулар қазір Catspaw-дан тегін қол жетімді. Viktors Berstis-тің Minnesota SNOBOL4, бастапқы IBM мейнфрейм нұсқасына ең жақын ПК-ны іске асыру (оның ішінде FORTRAN сияқты FORMAT мәлімдемесі де бар) тегін. SNOBOL-дың өзі құрылымды бағдарламалау мүмкіндіктеріне ие болмаса да, Snostorm деп аталатын SNOBOL препроцессоры 1970-ші жылдары Мичиган университетінің Мичиган терминалды жүйесінде (MTS) пайдалану үшін Фред Г. Шварцпен жобаланған және іске асырылған. Snostorm MTS-ті басқаратын сегіз-он бес сайтта қолданылды. Ол 1982-1984 жылдар аралығында Лондон университетінің колледжінде (UCL) де болды. Эндрю Кенигтің Snocone блокты құрылымды конструкцияларды SNOBOL4 тіліне қосады. Snocone - SNOBOL4-тің тиісті суперсеті емес, өзіндік бағдарламалау тілі. SPITBOL-ді іске асыру сонымен қатар бірқатар мүмкіндіктерді енгізді, олар дәстүрлі құрылымды бағдарламалаудың негізгі сөздерін қолданбағанмен, әдетте "құрылымдық бағдарламалау" деп саналатын көптеген баламалы мүмкіндіктерді, әсіресе егер / кейін / басқа түрдегі құрылымдарды ұсыну үшін пайдаланылуы мүмкін. Бұл мүмкіндіктер SNOBOL4 соңғы іске асырылуына қосылды. Көп жылдар коммерциялық өнім ретінде болғаннан кейін, 2009 жылдың сәуірінде SPITBOL GNU General Public License лицензиясы бойынша еркін бағдарламалық жасақтама ретінде шығарылды.
The classic implementation was on the PDP 10; it has been used to study compilers, formal grammars, and artificial intelligence, especially machine translation and machine comprehension of natural languages. The original implementation was on an IBM 7090 at Bell Labs, Holmdel, N. J. SNOBOL4 was specifically designed for portability; the first implementation was started on an IBM 7094 in 1966 but completed on an IBM 360 in 1967. It was rapidly ported to many other platforms. It is normally implemented as an interpreter because of the difficulty in implementing some of its very high level features, but there is a compiler, the SPITBOL compiler, which provides nearly all the facilities that the interpreter provides. The classic implementation on the PDP 10 was quite slow, and in 1972 James Gimpel of Bell Labs, Holmdel, N. J. designed a native implementation of SNOBOL4 for the PDP 10 that he named SITBOL. He used the design as the basis of a graduate class in string processing that he taught that year at Stevens Institute of Technology (which is why it was named SITBOL). Students were given sections to implement (in PDP 10 assembler) and the entire semester was focused on implementing SITBOL. It was over 80% complete by the end of the semester and was subsequently completed by Professor Gimpel and several students over the summer. SITBOL was a full featured, high performance SNOBOL4 interpreter. The Gnat Ada Compiler comes with a package (GNAT. Spitbol) that implements all of the Spitbol string manipulation semantics. This can be called from within an Ada program. The file editor for the Michigan Terminal System (MTS) provided pattern matching based on SNOBOL4 patterns. Several implementations are currently available. Macro SNOBOL4 in C written by Phil Budne is a free, open source implementation, capable of running on almost any platform. Catspaw, Inc provided a commercial implementation of the SNOBOL4 language for many different computer platforms, including DOS, Macintosh, Sun, RS/6000, and others, and these implementations are now available free from Catspaw. Minnesota SNOBOL4, by Viktors Berstis, the closest PC implementation to the original IBM mainframe version (even including Fortran like FORMAT statement support) is also free. Although SNOBOL itself has no structured programming features, a SNOBOL preprocessor called Snostorm was designed and implemented during the 1970s by Fred G. Swartz for use under the Michigan Terminal System (MTS) at the University of Michigan. Snostorm was used at the eight to fifteen sites that ran MTS. It was also available at University College London (UCL) between 1982 and 1984. Snocone by Andrew Koenig adds block structured constructs to the SNOBOL4 language. Snocone is a self contained programming language, rather than a proper superset of SNOBOL4. The SPITBOL implementation also introduced a number of features which, while not using traditional structured programming keywords, nevertheless can be used to provide many of the equivalent capabilities normally thought of as "structured programming", most notably nested if/then/else type constructs. These features have since been added to most recent SNOBOL4 implementations. After many years as a commercial product, in April 2009 SPITBOL was released as free software under the GNU General Public License.
Атау беру
Дейв Фарбердің айтуынша, ол, Грисуолд және Полонский "символдық өрнектерді түсіндіруші SEXI" деген атқа тоқтады. "SNOBOL" сөзінің кең таралған кері акронимдері – "Жезбен жұмыс істейтін символдық тіл" немесе (жартылай акроним ретінде) "Жезбен жұмыс істейтін символдық тіл".
According to Dave Farber, he, Griswold and Polonsky "finally arrived at the name Symbolic EXpression Interpreter SEXI." Common backronyms of "SNOBOL" are 'String Oriented Symbolic Language' or (as a quasi initialism) 'StriNg Oriented symBOlic Language'.