Pipedija - tautosaka, gandai, kliedesiai ir jokios tiesos! Durniausia wiki enciklopedija durnapedija!


Snobol

Iš Pipedijos - durniausios enciklopedijos.
Jump to navigation Jump to search

Snobol - tokia programavimo kalba, kuri šiuo metu beveik pamiršta (nors vis dar yra kažkiek ja programuojančių), tačiau kadaise buvusi viena iš maždaug dešimtuko populiariausių ir daugiausiai įtakos padariusių programavimo kalbų. Snobol smarkiai skyrėsi nuo kitų savo pačiais esminiais principais - visas duomenų srautas buvo laikomas tiesiog eilučių masyvu, kuris yra įvedamas, o tose eilutėse tiesiog būdavo ieškoma kažkokių komandų, kurios gali ką nors reikšti ir turėti tam tikrą sintaksę. Jei komanda nerandama - tai reiškia, kad tai šiaip sau tekstas.

Dėl savo esminių principų Snobol gavosi atspari techninėms (sintaksinėms) klaidoms, tad visos Snobol parašytos programos tiesiog veikdavo. Tiesiog tas veikimas galėdavo būti ne tokį rezultatą duodantis, kaip kad tikimasi, o tuo tarpu Snobol interpretatorius apie jokias klaidas net neužsimindavo, nes jam viskas būdavo tvarkoje.

Iš esmės, ir šiais laikais toksai Snobol priėjimas gali būti pagrindu bet kokiam paprastam interpretatoriui: tiesiog nuosekliai skaitomos teksto eilutės, tikrinama ar jose surasta kokia nors komanda, ir jei taip - tai vykdoma, o jei ne - tai einama prie kitos eilutės. Visas duomenų išvedimas ir įvedimas vykdomas, tiesiog priskiriant duomenų eilutes išvedimui ar įvedimo duomenis priskiriant eilutėms - t.y., naudojant sisteminius kintamuosius INPUT ir OUTPUT.

Kad vykdymas turėtų savo geresnę logiką, tai kiekvienos eilutės gale Snobol leidžia nurodyti dar ir sąlyginį ar nesąlyginį perėjimą į kitą eilutę. Taigi, šitaip galima turėti duomenis pramaišiui su vykdomomis komandomis, išmaišytus bet kaip, kaip tik nori.

Kaip sako viena istorija, kadaise apie 196x metus, pirmieji Snobol interpretatoriai būdavo paremti perfokortomis, kur viena perfokorta reiškė vieną Snobol teksto eilutę. Perfokortose surašytos komandos būdavo nuosekliai suvedamos, tvarkingas perfokortų kalades sudėjus į perfokortų skaitytuvą. Taigi, padarę gerą Snobol interpretatorių, programuotojai nutarė pabandyti bandymą - pasiėmę kažkurią Snobol programą, tyčia išmaišė visą perfokortų kaladę, o tada sukišo ją į skaitytuvą ir paleido vykdyti. Kaip bebūtų nuostabu, programa suveikė be jokių problemų. Su bet kokia kita programavimo kalba šitai būtų iš principo neįmanoma.

Kai kurie Snobol kalbos principai labai paprasti, pvz. jei kažkoks žodis atrandamas eilutės pradžioje - tai jis yra žyma, pagal kurią galima daryti perėjimą (pagal pirmą tokio žodžio radimo vietą). Eilutės gale gali būti nurodomas perėjimas į kitą eilutę, kuris gali būti ir sąlyginis, ir nesąlyginis.

Tiems, kas labiau patyrę programavime, Snobol kažkiek primena Fortran pačia geriausia prasme, tačiau su kardinaliai kito lygio teksto apdirbimo priemonėmis.

Turim pasakyti, kad ta Snobol tai atrodo visai gera kalba, ir visai gaila, kad pasidarė užmiršta.


Hello World programa parašyta Snobol kalba

Kaip matome, duomenys tiesiog priskiriami sisteminiam kintamąjam OUTPUT ir to pakanka, kad jie būtų išvesti.


    OUTPUT = "Hello, World!"
END

Kiek sudėtingesnė Snobol programa

Čia matomos kai kurios inlaininės teksto palyginimo galimybės:

          OUTPUT = "What is your name?"
          Username = INPUT
          Username "J"                                             :S(LOVE)
          Username "K"                                             :S(HATE)
MEH       OUTPUT = "Hi, " Username                                 :(END)
LOVE      OUTPUT = "How nice to meet you, " Username               :(END)
HATE      OUTPUT = "Oh. It's you, " Username
END