Remove ads
język programowania Z Wikipedii, wolnej encyklopedii
Snobol (String Oriented Symbolic Language) – język programowania zaprojektowany specjalnie do przetwarzania napisów. Obecnie pojęcie Snobol obejmuje rodzinę języków programowania, wśród których wyróżnia się język Snobol4 (number 4).
Snobol wywodzi się częściowo z
Snobol powstał w Bell Telephone Laboratories w 1962 r. Pierwsza jego realizacja została stworzona na maszynie IBM 7090. Około 1965 roku powstał Snobol3. Dalsze prace nad rozwojem Snobola doprowadziły do powstania w 1968 r. języka Snobol4.
Rozwój idei zawartych w języku Snobol oraz ukierunkowanie prac na większą uniwersalność doprowadziły do powstania nowych języków takich jak Icon.
Język Snobol4 doczekał się kilku implementacji różniących się między sobą w szczegółach realizacji. Warto tu wymienić następujące wersje:
Program komputerowy w języku Snobol4 składa się z ciągu instrukcji zakończonego instrukcją end, która równocześnie pełni funkcję etykiety dla skoku. Instrukcje rozdzielone są separatorem (średnik lub znak końca wiersza). Kontynuacja instrukcji w kolejnym wierszu wymaga aby pierwszy znak linii kontynuacyjnej był znakiem „+” lub „.”. Komentarzem jest linia rozpoczynająca się od znaku „*”.
Instrukcja w języku Snobol4 ma postać:
etykieta reguła skok
Instrukcja przypisania ma postać znaną z ogólnych języków programowania:
WCZYTAJ WIERSZ=INPUT :F(WCZYTAJ)
Instrukcja uzgadniania z wzorcem ma postać:
PRZEDMIOT WZORZEC: S(etykieta1) F(etykieta2)
Jej działanie polega na przeglądaniu łańcucha PRZEDMIOT w poszukiwaniu wystąpienia WZORCA i wykonaniu skoku do etykiety1, gdy WZORZEC zostanie znaleziony (instrukcja kończy się sukcesem) lub etykiety2, gdy WZORZEC nie zostanie znaleziony (uzgodnienie zawodzi).
Instrukcja zamiany łączy w sobie działanie dwu powyższych i na postać:
PRZEDMIOT WZORZEC=PODMIOT: S(etykieta1) F(etykieta2)
w której znalezienie wzorca spowoduje w łańcuchu PRZEDMIOT jego zastąpienie łańcuchem PODMIOT.
Wyrażenie to dowolne poprawne w Snobolu wyrażenie.
We wczesnych wersjach Snobola jedynym typem danych był napis (łańcuch) i nawet operacje arytmetyczne były wykonywane na liczbach pamiętanych w postaci napisów.
W Snobol4 dostępne są typy danych:
Programista może wyprowadzać własne typy danych.
Składnia języka Snobol znacząco odbiega od składni „typowych” języków programowania wysokiego poziomu i ma wiele „udziwnień” powodujących często błędy wśród programistów przyzwyczajonych do tradycyjnego zapisu programu, np.
W Snobolu można definiować podprogramy w postaci funkcji.
Procesor Snobola to aparat uzgadniania. Aby skutecznie pisać programy w tym języku należy zrozumieć działanie aparatu przeszukiwania wzorca i sposoby jego sterowania. Aparat ten jest analogiczną procedurą do działania aparatu wnioskowania w języku Prolog.
Tak więc podobnie jak w Prologu program jest tłumaczony na kod wewnętrzny procesora Snobola, a nie na kod wewnętrzny maszyny. W implementacjach kompilatorów procesor jest włączany do kodu wynikowego i interpretuje swój język wewnętrzny będący wynikiem translacji kodu źródłowego w Snobolu na kod wewnętrzny procesora Snobola. Działanie procesora Snobola opiera się na predykatach, tzn. funkcjach, które mogą bądź generować sukces (powodzenie), bądź mogą zawodzić. Dostępne są również predykaty standardowe, którymi można wpływać na przebieg procesu uzgadniania. Istnieje tu więc pewna analogia do aparatu wnioskowania Prologu.
Snobol zawiera mechanizm automatycznej regeneracji pamięci dynamicznej.
W Snobolu słowa kluczowe zapewniają dostęp do informacji procesora Snobola, przy czym program może je jedynie odczytywać, nie można przypisywać im nowych wartości z wyjątkiem kilku zmiennych systemowych.
W Polsce zrealizowano dystrybucję Spitbola dla komputerów Odra 1305 w Instytucie Fizyki Uniwersytetu Jagiellońskiego pracującą pod systemem GEORGE 3 w oparciu o pierwszą, autorską wersję Macro-Spitbol dla maszyn serii ICL 1900. Wersja 4.1 uruchomiona została 1983 r.
DEFINE('COPYL(L)X,Y')
COPYL COPYL = COPY(L); X = COPYL :(K.COPYL)
LOOP Y = DIFFER(NEXT(X)) COPY(NEXT(X)) :F(RETURN)
PREV(Y) = X; NEXT(X) = Y; X = Y :(LOOP)
K.COPYL
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.