Snobol: Różnice pomiędzy wersjami

[wersja nieprzejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
Joee (dyskusja | edycje)
m literówka
odmiana, język
Linia 1:
'''Snobol''' ('''S'''tri'''n'''g '''O'''riented Sym'''bo'''lic '''L'''anguage) to [[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).
 
== Źródła i rozwinięcie Snobol-uSnobola ==
'''Snobol''' wywodzi się częściowo z
* COMIT-ua, a częsciowo
* z idei zawartych w algorytmie Markowa.
'''Snobol''' powstał w ''Bell Telephone Laboratories'' w 1962 r.. Pierwsza jego realizacja została stworzona na maszynie IBM 7090. Około roku 1965 r. powstał ''Snobol3''. Dalsze prace nad rozwojem '''Snolol'''-u doprowadziły do powstania w 1968 r. języka ''Snobol4''.
 
'''Snobol''' powstał w ''Bell Telephone Laboratories'' w 1962 r.. Pierwsza jego realizacja została stworzona na maszynie IBM 7090. Około roku 1965 r. powstał ''Snobol3''. Dalsze prace nad rozwojem '''Snolol'''-ua 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]].
 
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]].
 
== Dialekty języka Snobol ==
 
Język ''Snobo4Snobol4'' doczekał się kilku [[implementacja | implementacji]] różniących się między sobą w szczegółach realizacji. Warto tu wymienić następujące realizacjewersje:
* SIL (Snobol Implementation Language),
* Mainbol (Macro Implementation of Snobol),
Linia 20 ⟶ 21:
== Program w języku Snobol ==
 
[[Program]] w języku ''Snobol4'' składa się z ciągu [[Instrukcja (informatyka) | instrukcji]] zakończonego instrukcją '''end''', która równocześnie pełni funkcję [[etykieta (informatyka) | etykiety]] dla skoku. [[Instrukcja (informatyka) | Instrukcje]] rozdzielone są separatorem (średnik lub znak końca wiersza). Kontynuacja instrukcji w kolejnym wierszu wymaga, aby pierwszy znak linii kontynuacyjnej był znakiem "+" lub ".". [[Komentarz (informatyka) | Komentarzem]] jest linia rozpoczynająca się od znaku "*".
 
[[Instrukcja]] w języku ''Snobol4'' ma postać:
Linia 43 ⟶ 44:
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 '''Snobol'''-u wyrażenie.
 
== Typy danych ==
 
We wczesnych wersjach '''Snobol'''-ua jedynym typem danych był napis (łańcuch) i nawet operacje arytmetyczne były wykonywane na liczbach pamiętanych w postaci napisów.
 
W ''Snobo4Snobol4'' dostępne są [[Typ (informatyka) | typy danych]]:
* łańcuch (napis) : string
* liczba całkowita : integer
Linia 63 ⟶ 64:
* wyrażenie : expresion
* lista : list
Programista może wyprowadzać własne [[Typ (informatyka) | typy danych]].
 
== Składnia ==
 
[[Składnia]] języka '''Snobol''' znacząco odbiega od składni "typowych" [[język programowania | 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.
* kontynuacja instrukcji wymaga w kolejnym wierszu umieszczenia znaku + lub .,
* zapis wyrażenia wymaga oddzielenia spacjami operatorów i argumentów, np. 'A+B' jest błędne i należy pisać 'A + B',
* instrukcja bez [[Etykieta (informatyka) | etykiety]] musi się rozpoczynać spacją (pierwszy znak wiersza), gdyż w przeciwnym przypadku pierwszy wyraz instrukcji będzie zinterpretowany jako [[Etykieta (informatyka) | etykieta]],
* brak struktur sterujących: [[pętla (programowanie) | pętle]] realizuje się za pomocą skoków do [[Etykieta (informatyka) | etykiety]], instrukcję warunkową poprzez odpowiednie frazy F i S pola skoku,
* i wiele innych.
W '''Sonbol'''-u można definiować [[podprogram | podprogramy]] w postaci funkcji.
 
W '''SonbolSnobol'''-u można definiować [[podprogram | podprogramy]] w postaci funkcji.
== Procesor Snobolu ==
 
== Procesor SnoboluSnobola ==
Procesor '''Snobol'''-u 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]].
 
Procesor '''Snobol'''-ua 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 [[Prolog | Prologu]] program jest tłumaczony na kod wewnętrzny ''procesora Snobol-u'', 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 '''Snobol'''-u'' na ''kod wewnętrzny procesora '''Snobol'''-u''. Działanie procesora '''Snobol'''-u opiera się o predykaty, tzn. funkcje 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 [[Prolog | Prologu]].
 
Tak więc podobnie jak w [[Prolog | Prologu]] program jest tłumaczony na kod wewnętrzny ''procesora Snobol-uSnobola'', 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 '''Snobol'''-u'' na ''kod wewnętrzny procesora '''Snobol'''-ua''. Działanie procesora '''Snobol'''-ua opiera się o predykaty, tzn. funkcje, 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 [[Prolog | Prologu]].
 
'''Snobol''' zawiera mechanizm automatycznej regeneracji pamięci dynamicznej.
Linia 85 ⟶ 87:
== Słowa kluczowe ==
 
W '''Snobol'''-u ''słowa kluczowe'' zapewniają dostęp do informacji ''procesora '''Snobol'''-ua'', przy czym program może je jedynie odczytywać, nie można przypisywać im nowych wartości z wyjątkiem kilku zmiennych systemowych.
 
== Implementacja dla komputera Odra 1305 ==
 
W Polsce zrealizowano dystrybucję ''Spitbol''-ua 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.
 
== Przykład ==
Linia 101 ⟶ 103:
 
== Zobacz też ==
* [[Podprogram | Podprogram w Snobol-uSnobolu]]
 
* [[Podprogram | Podprogram w Snobol-u]]
* [[Icon]]