Intercall

09:58, 22 gruodžio 2013 versija, sukurta Fandorina (Aptarimas | indėlis) (Naujas puslapis: '''Intercal''' - matyt pirmoji programavimo kalba, kurią ne iš durnumo, o jau visai sąmoningai kokie tai du programeriai (Don Woods ir James Lyon) sukūrė taip, kad bet kas,...)
(skirt) ← Ankstesnė versija | Dabartinė versija (skirt) | Vėlesnė versija → (skirt)

Intercal - matyt pirmoji programavimo kalba, kurią ne iš durnumo, o jau visai sąmoningai kokie tai du programeriai (Don Woods ir James Lyon) sukūrė taip, kad bet kas, kas tik pabandys šita kalba programuoti, užsipistų ir prasikeiktų. Ir paskui šitie programeriai dar rimtais veidais šitą kalbą visiems stūmė ir aiškino, kad ji labai gera, universali ir efektyvi, nes turi žodinę sąsają su vartotoju.

Išties gi Intercall buvo sukurta 1972 metais, kaip absoliutinis to meto baisiausių programuotojiškų košmarų įgyvendinimas - padaryta taip, kad atrodytų panašiai, kaip asemblerio transliacijos išklotinės, kuriose rodomi visokie adresų registrų pokyčiai ir panašūs niekam neįdomus briedai, tik vat šituos briedus patiems programuotojams reikia rašyt.

Kalboje duomenų tipai naudojami, žymimi "." (16 bitų integer), ":" (32 bitų integer), "," (16 bitų integer masyvas) ir ";" (32 bitų integer masyvas). Naudojant kintamuosius, pavadinimai nenaudojami, o naudojami kintamųjų numeriai, pvz., ".14523". Kiekvienas kintamasis pagal nutylėjimą operacijoms gauna nuosavą steką, kas suteikia kai kurias įdomias programavimo galimybes, pvz., galimybę saugoti ištisas kintamųjų ir veiksmų sekas.

Komandų yra nedaug, jos atrodo ganėtinai briedovos, tačiau ganėtinai logiškos ir netgi visai patogios, kai pažiūri į Intercall kaip į tipišką RISC architektūrą, kurioje reiktų išties rūpintis ne programuotojo, o kompiliatoriaus efektyvumu.

Kiek labiau trikdo gal tiktai kai kurie nesąmoningai sukaišioti nedokumentuoti privalumai, kaip kad reikalavimas nei per dažnai nei per retai vartoti operatorių PLESASE, kurio prasmė tėra nedokumentuotai užlaužti kompiliavimą, jeigu jis bus vartojamas per retai arba per dažnai. SSRS naudotame Intercall kompiliatoriuje šio operatoriaus nebuvo.

Įdomu tas, kad nesusigaudydami Intercall šposuose, SSRS inžinieriai atrado, jog kai kuriomis komandomis, o ir kalbos realizuojama architektūra Intercall gerokai primena sovietinę BESM mašiną, tad paskui bandė rimtai implementuoti ir kiek modifikavę, naudoti šią programavimo kalbą kaip pagerintą BESM asemblerį. Sako, kai kuriuos amerikonus ištikdavo priepolis, kai jie sužinodavo, kad Intercall išties (realiai, o ne juokais) palengvindavo BESM mašinų programavimą.

Dar vienas įdomumas, kad originalioje amerikoniškoje versijoje Intercall skaičius reikalaudavo įvesti žodžiais (kaip pvz., 123 būtų "ONE TWO THREE"), o išvesdavo romėniškai (pvz., "MCXXVIII"). SSRS tai buvo laikoma neapgalvotu, iki galo neatidirbtu, tačiau perspektyviu sprendimu, nes tai esą artimiau žmogiškam bendravimui, todėl kalba buvo laikoma pritaikyta interaktyvioms dialoginėms programavimo sistemoms.


Hello World su Intercall

DO ,1 <- #13
PLEASE DO ,1 SUB #1 <- #238
DO ,1 SUB #2 <- #108
DO ,1 SUB #3 <- #112
DO ,1 SUB #4 <- #0
DO ,1 SUB #5 <- #64
DO ,1 SUB #6 <- #194
DO ,1 SUB #7 <- #48
PLEASE DO ,1 SUB #8 <- #22
DO ,1 SUB #9 <- #248
DO ,1 SUB #10 <- #168
DO ,1 SUB #11 <- #24
DO ,1 SUB #12 <- #16
DO ,1 SUB #13 <- #162
PLEASE READ OUT ,1
PLEASE GIVE UP