Snobol: Różnice pomiędzy wersjami

[wersja nieprzejrzana][wersja przejrzana]
Usunięta treść Dodana treść
SieBot (dyskusja | edycje)
WP:SK, drobne techniczne
Linia 2:
 
== Źródła i rozwinięcie Snobola ==
'''Snobol''' wywodzi się częściowo z
* COMIT-a, a częsciowo
* z idei zawartych w algorytmie Markowa.
Linia 11:
 
== Dialekty języka Snobol ==
Język ''Snobol4'' doczekał się kilku [[implementacja | implementacji]] różniących się między sobą w szczegółach realizacji. Warto tu wymienić następujące wersje:
 
Język ''Snobol4'' doczekał się kilku [[implementacja | implementacji]] różniących się między sobą w szczegółach realizacji. Warto tu wymienić następujące wersje:
* SIL (Snobol Implementation Language),
* Mainbol (Macro Implementation of Snobol),
Linia 20 ⟶ 19:
 
== Program w języku Snobol ==
[[Program komputerowy]] 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 "*".
 
[[Program komputerowy]] 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ć:
etykieta reguła skok
* '' [[Etykieta (informatyka) | Etykieta]]'' instrukcji ma takie samo znaczenie jak w większości języków programowania – identyfikuje ona miejsce w programie, do którego może nastąpić skok.
* ''Reguła'' określa konkretną akcję do wykonania przez '''Snobol'''
** przypisanie
Linia 33 ⟶ 31:
* ''Skok'' może być
** bezwzględny – :(etykieta)
** skok w przypadku sukcesu - :S(etykieta)
** skok w przypadku niepowodzenia - :F(etykieta)
** skoki warunkowe (kolejność S i F dowolna) - :S(etykieta1) F(etykieta2)
 
''Instrukcja przypisania'' ma postać znaną z ogólnych języków programowania:
Linia 51 ⟶ 49:
 
== Typy danych ==
 
We wczesnych wersjach '''Snobol'''a jedynym typem danych był napis (łańcuch) i nawet operacje arytmetyczne były wykonywane na liczbach pamiętanych w postaci napisów.
 
Linia 67 ⟶ 64:
 
== 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 (informatyka) | 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 '''Snobol'''u można definiować [[podprogram|podprogramy]]y w postaci funkcji.
 
== Procesor Snobola ==
 
Procesor '''Snobol'''a 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]]u program jest tłumaczony na [[Kod bajtowy | kod wewnętrzny]] ''procesora Snobola'' a nie na [[kod maszynowy | 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'''a''. Działanie procesora '''Snobol'''a 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]]u.
 
'''Snobol''' zawiera mechanizm automatycznej regeneracji pamięci dynamicznej.
 
== Słowa kluczowe ==
 
W '''Snobol'''u ''słowa kluczowe'' zapewniają dostęp do informacji ''procesora '''Snobol'''a'', 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 [[Polska | Polsce]] zrealizowano dystrybucję ''Spitbol''a dla komputerów [[Odra 1305]] w ''Instytucie Fizyki [[Uniwersytet Jagielloński | 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.
 
W [[Polska | Polsce]] zrealizowano dystrybucję ''Spitbol''a dla komputerów [[Odra 1305]] w ''Instytucie Fizyki [[Uniwersytet Jagielloński | 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 ==
 
* Przykład
DEFINE('COPYL(L)X,Y')
Linia 103 ⟶ 95:
 
== Bibliografia ==
{{Bibliografia start}}
<div style="font-size:85%">
# Paweł Gizbert-Studnicki, Jerzy Kaczmarczuk, '''''Snobol4''''', [[Wydawnictwa Naukowo-Techniczne]], [[Warszawa]] [[1984]], Seria: [[Biblioteka Inżynierii Oprogramowania]], ISBN 83-204-0546-7
{{Bibliografia stop}}
</div>
 
== Zobacz też ==
* [[Podprogram#Podprogram w języku Snobol |Podprogram w Snobolu]]
* [[Icon]]
 
[[Kategoria:Języki programowania]]
 
{{Języki programowania}}
 
[[Kategoria:Języki programowania]]
 
[[bg:SNOBOL]]