Taip pat skaitykite:
Kompiuterių istorija
Interneto istorija (svarbiausi atskaitos taškai)
Kompiuterių įsilaužimų istoriją
Pravartu paskaityti apie programavimo kompiuteriams palyginimą su kitais realaus gyvenimo aprašais
> >>> >
Programavimo kalbos yra priemonės algoritmų užrašymui jų vykdymui
kompiuteriuose. Jų yra sukurta daug ir įvairių. Čia pabandyta išskirti pagrindinius
jų vystymosi taškus. Detalesnį istorinį programavimo kalbų vystymąsi rasite:
1. J.E. Sammet. Programming Languages: History and Fundamentals, 1969
2. R.L. Wexelblat. A History of Programming Languages, 1981
3. D.E. Knuth, L.T.Pardo. Early Development of Program.Languages, Encycl.Comp.Sci.&Tech., 1977
Plankalkul - užmiršta kalba
Plankalkul 1945-ais sukūrė vokietis
K. Cūzė, bet aprašyta ji buvo tik 1972. Cūzė
ja užrašė daug gana sudėtingų sprendimų - grafo vientisumo nustatymo, loginių formulių sintaksinė analizės, šachmatų žaidimo.
Plankalkul buvo gana pilna kalba, turinti kelias duomenų struktūras. Iš bito, kaip
paprasčiausio duomenų tipo, buvo sukuriama sveiki ir slankaus kablelio skaičiai.
Specialūs žymenys naudoti begalybei, labai mažam ir neapibrėžtam dydžiams
nusakyti. Numatyti masyvai ir kelių lygių struktūros. Kalboje nebuvo go to
sakinio, bet buvo ciklas, panašus į PascalKiekvieną programos sakinį sudarė 2 ar 3 eilutės - pirmojoje veiksmas, antrojoje -
pirmos eilutės masyvų rėžių aprašai, trečiojoje - kintamųjų tipai [masyvų rėžius panašiai dar prieš šimtmetį naudojo Charles Babbage].
Įdomu, kaip būtų vystęsi programavimo kalbos, jei apie Cūzė darbus būtų sužinota iki 1960-ųjų?
Pradžioje viešpatavo asembleriai
5-6 dešimtmečio kompiuteriai buvo lėti, nepatikimi ir brangūs, - ir turėjo labai
maža operatyviąją atmintį. Tai buvo veiksnys, skatinęs asemblerių naudojimą.
Kita vertus, daugelis to meto uždavinių buvo skaičiavimų matematikos ir reikalavo darbo su slankaus kablelio skaičiais bei dirbti su lentelėmis
(matricomis). Tačiau būtent tokių galimybių dar neturėjo to meto kompiuteriai. Ir tai skatino aukštesnio lygio kalbų kūrimą.
1949-ais John Mauchly sukūrė Short Code skirtą BINAC kompiuteriui, o vėliau
pritaikytą UNIVAC I - ir kelis metus tai buvo viena iš pagrindinių programavimo
priemonių. "Short Code" kodas nebuvo transliuojamas. Jis buvo
interpretuojamas, kas tuo metu vadinta automatiniu programavimu. Bet tai buvo50 kartų lėčiau už mašininio kodo vykdymą.
Maždaug tuo pat metu IBM darbuotojas John Backus sukūrė "Speedcoding",
skirtą IBM 701 kompiuteriui. Ji leido 4 aritmetinius veiksmus su slankaus kablelio
reikšmėmis bei pagrindines funkcijas (kvadratinė šaknis, sin, cos, arctan, exp ir
log). Buvo numatyti sąlyginiai ir besąlyginiai perėjimai bei įvedimo-išvedimo
duomenų konvertavimas. Tačiau įkėlus šį interpretatorių likdavo tik 700 žodžių laisvos atminties.
FORTRAN - formulių transliatorius
Taip pat skaitykite >>>>>
1954-ais IBM 704 kompiuteris pradėjo aparatūriškai palaikyti indeksavimą ir slankaus kablelio operacijas. Lapkričio mėn.
Buvo aprašyta pirmoji "Fortran" versija (Dž. Bakas). Tačiau jo realizacija truko 2 m.
Pagrindinis reikalavimas buvo sugeneruoto kodo greitis.
Pirmojoje versijoje buvo 6 ženklų ilgio kintamieji, įvedimo-išvedimo formatavimas,
aritmetinis IF (nebuvo loginio), DO ciklas ir paprogramės. Jame nebuvo sveikų skaičių apibrėžimo
ir buvo taikoma garsioji I-N taisyklė. 1958-ais numatyta galimybė atskirai kompiliuoti paprogrames. "Fortran 4" 1962-ais pasipildė
duomenų tipais ir loginiu IF - ir šis standartas išsilaikė 15 m (iki pat "Fortran 77").
Svarbiausia yra tai, kad "Fortran" pakeitė kompiuterių naudojimo būdą. Ir ji buvo viena iš plačiausiai naudotų programavimo kalbų.
Skaitykite Džonas Bakas FORTRAN tėvas
COBOL - kryptis į verslą
Taip pat skaitykite >>>>
Keista, kad ši plačiausiai pasaulyje naudota kalba turėjo mažai įtakos programavimo kalbų evoliucijai (nebent tik PL/I).
Iki COBOL 1959-ais buvo sukurta FLOWMATIC kalba (UNIVAC kompiuteriams),
o IBM sukūrė, bet nerealizavo COMTRAN. Bet 1959-ais DoD 9JAV Gynybos departamentas) iniciavo programavimo kalbos, skirtos verslui, sukūrimą.
Jos specifikacija buvo paskelbta 1960-ais. 1968-ais priimtas standartas, kuris buvo
atnaujintas 1979-ais. Kalba tobulinama iki šiol ir yra labai plačiai naudojama.
COBOL įtraukė nemažai naujų savybių, tokių, kaip DEFINE skirtą makrokomandų apibrėžimui. Hierarchinė įrašų struktūra vėliau buvo įtraukta į
PL/I, "Algol", Pascal, C, "Ada" ir kitas kalbas. Stiprioji kalbos savybė buvo
atskiras duomenų (DATA) skyrius, ciklų įvairovė ir išvedimo formativo galimybės.
O didžiausias trūkumas - paprogramių su parametrais nebuvimas.
Kažin ar ši kalba būtų išgyvenusi be DoD paramos, nes to meto kompiuteriai buvoper lėti jai. Ber ji padėjo kompiuterizuoti finansinę apskaitą.
ALGOL - paprastumas perpintas sudėtingumu
"Algol 60" buvo kalba, turėjusi didžiausią įtaką programavimo kalbų evoliucijai - iš jos kilę beveik visos dabartinės kalbos. Ji sukurta kaip
bandymas sukurti universalią kalbą, kad būtų išvengta daugelio skirtingų kalbų (aišku, šis tikslas
nebuvo pasiektas). Vokiečių taikomosios matematikos ir mechanikos (GAMM) sąjunga ir ACM pateikė tokius reikalavimus:
* Kalba turi būti artima įprastiems matematiniams žymenims, kad ją lengva būtų skaityti;
* Ją galima būtų naudoti procesų aprašams straipsniuose;
* Ją būtų galima mechaniškai transliuoti į mašininę kalbą.
Sukurta IAL kalba vėliau buvo pervadinta "Algol 58" ir perėmė nemažai savybių
iš "Fortran". Buvo pabandyta ją padaryti nepriklausomą nuo aparatūros. Joje
buvo formalizuoti duomenų tipai, leisti masyvų porėžiai, kelių gylių IF sakiniai.
Paprogramių parametrai išskirti į dvi grupes - įėjimo ir išėjimo). Įdomu, kad priskyrimo sakinio forma pradžioje buvo "europietiška":
Išraiška => kintamasis,
Bet vėliau amerikonai jį "apvertė" į
Kintamasis := išraiška
Kalba sukėlė pagyvėjimą ir pradėtos jos realizacijos (tokios, kaip "Jovial", ketvirtį
amžiaus naudota JAV Oro pajėgose), bet jis greitai išblėso, o IBM ir jos sistemų
vartotojų grupė SHARE dėmesį sutelkė "Fontran" kalbai. Bet išliko jos įvesti principai:
1. Blokų struktūra,
2. Parametrų perdavimas "pagal reikšmę" ir "pagal vardą";
3. Rekursyvios procedūros ir pusiau dinaminiai masyvai.
"Algol 68" buvo pernelyg sudėtinga ir nepadėjo kalbai įsigalėti. "Algol" 20 metų
buvo naudojama algoritmų užrašymui straipsniuose ir buvo pirmoji kalba, kurios aprašymui panaudota BNF.
"Algol 60" tiesioginiai "palikuonys' buvo PL/I, "Simula 67", "Pascal", "Modula-2" ir
"Ada". "Simula 67" buvo sukurta Norvegijoje ir įtraukė dvi naujas savybes -
klases (duomenų struktūras kartu su veiksmais) ir bendraprogrames (coroutines),
kurios leido tęsti vykdymą nuo tos vietos, kurioje praeitą kartą buvo baigusios.
PL/I - kalba bet kokiems taikymams
1963-ais IBM išreiškė vieningo kompiuterio ir vieningos programavimo kalbos,
tinkančios tiek verslui, tiek mokslui, poreikį.. PL/I (iš pradžių pavadinta FORTRAN
VI) turėjo pakeisti FORTRAN, COBOL ir LISP.
Tai buvo pirmoji kalba turinti nuorodas, rekursiją, kreipinius į bendras masyvų sritis, išimčių valdymą ir
asinchroniškai vykdomas užduotis (be jų sinchronizavimo priemonių). Šia kalbą už jos sudėtingumą aštriai kritikavo Dijkstra.
Wirth kelias - paprastumas ir elegancija
Taip pat skaitykite >>>>
Iš pradžių Niklaus Wirth ir Hoare realizavo supaprastintą "Algol-W" versiją.
1971-ais N. Wirth pateikė "Pascal" aprašymą. Ji neįnešė jokių naujovių viską
perimdama iš savo pirmtakų. Ji skyrėsi tik aiškumu ir paskirtimi - mokymo
procesui. Tad pagrindinis tikslas buvo tvarkingo programavimo stiliaus
užtikrinimas. Mokymo tikslams tai buvo plačiausiai naudojama kalba (nepaisant jos nesaugumo).
C - ideali programa sistemų kūrimui
Taip pat skaitykite >>>>
Jos pirmtakais buvo CPL, BCPL (sukurta 1967-ais), B (pirmoji aukšto lygio kalba
"Unix" terpėje atsižvelgiant į griežtus PDP-7 atminties apribojimus - 4096-i 18 bitų žodžiai) ir "Algol 68".
Nei B, nei BCPL neturėjo tipų aprašų - laikyta, kad visi kintamieji yra mašininio žodžio apimties.
1972-ais Dennis Ritchie iš "Bell Labs" sukūrė NB, vėliau pavadintą C. Ji plačiai paplito, nes tapo "Unix" neatskiriama dalimi.
Didžiausią prisirišimą prie jos ir kartu C kritiką sukelia jos lankstumas bei
nebuvimas griežtos tipų kontrolės. Su C++ ji įtraukė objektinio programavimo principus.
Ada - didžiausias ir brangiausias projektas
DoD iniciuotas "Ada" kalbos kūrimas truko 7 metus. Pagrindinis tikslas buvo - sukurti paprastą kalbą mažoms ("embedded") sistemoms ir
atsikratyti per 400 DoD naudojamų skirtingų kalbų. Tam 1975-ųjų sausį įkurta HOLWG grupė,
kurios specifikacijas 4 m. nagrinėjo ir siūlė patobulinimus visame pasaulyje. Ji
pavadinta pirmosios programuotojos" ir garsaus poeto Bairono dukros,
Augusta Ada Byron (1815-1851) garbei.
Ada standartizuota 1983 m. Joje vertos dėmesio yra 4 savybės:
paketai, numatantys duomenų tipų, objektų ir procedūrų apgaubimą (abstrakčių duomenų tipų realizacija);
išimčių valdymo galimybių išvystymas; Generic programiniai moduliai ir paketai - bendros paskirties kodo rašymui;
Užduotys (tasks) - lygiagrečiai vykdomų programos dalių valdymui.
Tačiau Ada kompiliatorių sukurti yra labai sunku - ir todėl net DoD ją naudoja ribotai. Hoare apie ją išsireiškė:
Ada neturėtų būti naudojama jokioje programoje, kurioje darbo stabilumas yra kritinis, t.y. būtent tam tikslui, kuriam ji buvo skirta.
Objektinio programavimo era
OO išaugo iš dėmesio koncentravimo duomenų struktūroms. Paveldimumas ir polimorfizmas leidžia kurti sudėtingas hierarchines duomenų struktūras.
Iš Simula 67 idėjų Alan Kay Jutos un-te sukūrė Smalltalk. Alanas nuspėjo PK
paplitimą ir tikėjo, kad juos naudos ne profesionalai. Iš pradžių jis sukūrė Flex,
kurioje naudojo ekrano langų koncepciją. Jo idėjas panaudojo Xerox PARC.
Bet už šio tyrimo centro ribų kalba mažai paplito. Stantartizuota 1980-ais.
Smalltalk yra nedidelės apimties labai paprastos sintaksės kalba. Jos principas
visiškai skiriasi nuo įprastų "imperatyvinių kalbų. Tačiau jos grafinės vartotojo sąsajos samprata padėjo įsigalėti langų, pelės sąvokoms.
Populiariausia OO kalba tapo 1986-ais Borland įvesta C++, kurioje C kalba papildyta Simula 67" pavyzdžio klasėmis ir numatyta parametrų
tipų kontrolė. Kitos šiuo metu plačiau naudojamos OO kalbos yra Visual Basic, Delphi ir Java.
>
Rust sisteminiam programavimui
Rust - bendros paskirties programavimo kalba, derinanti funkcinio ir procedūrinio programavimo paradigmas
su tipais paremta objektine sistema. Atminties valdymas atliekamas per inicializaciją (RAII) nenaudojant šiukšlių
surinkimo, kas garantuoja saugų darbą su atmintimi dėl kompiliatoriuje įdiegtos statinės nuorodų validacijos (borrow
checker). Sintaksiškai Rust panaši į C/C++. Jos ypatybės: saugumas, greitis ir lygiagretumas. Kalba tinka
sisteminiam programavimui ir tikimasi ateityje ją būsiant naudojamą OS branduolių kūrimui.
Po kelių metų aktyvaus kūrimo v.1.0 pasirodė 2015 m. gegužės 15 d. Ją 2006 m. pradėjo G. Hoare ir nuo 2009 m.
buvo finansuojama ir kuriama Mozilla Research; 2021 m. vasario 8 d. 5 kompanijos (AWS, Huawei, Google, Microsoft,
Mozilla) paskelbė apie Rust Foundation įsteigimą; jam planuojama perduoti visas teises.
Čia yra Labas, pasauli! programos pavyzdys:
fn main() {
println!("Labas, pasauli!");
}
Rust ir C/C++ palyginimas
Visų pirma, Rust yra daug paprastesnė C++ neša didelę paveldo kuprą. Pvz., C++ turi per 10 kintamojo
inicializavimo būdų, priklausomai nuo jo tipo, apibrėžtų konstruktorių ir t.t. Joje yra archajiškų taisyklių, leidžiančių, vienais
atvejais, turėti laukams priskirtas reikšmes, o kitais atvejais palikti laukus be reikšmių. Net ne visi patyrę programuotojai
žino tas taisykles ir kartais susipainioja. Rust kalboje tiek struktūros kintamojo, tiek bet kurio kito visad veikia vienu būdu.
Generic Rust kalboje veikia geriau dėl puikios abstrakči tipų sistemos. C++ turi kai kurių jų naudų, bet nepilnai.
Netgi šablonai (template) nėra patikrinami dėl tipų aprašų metu ir jų tipai turi būti patikrinami atskirai kiekvienos
jų kopijos sukūrimo metu, kas gali iššaukti bjaurias kompiliavimo klaidas.
Rust kalboje geresnis ir moduliarumas, o taip pat atminties ir vykdymo gijų saugumo užtikrinimas.
Tačiau Rust turi vieną problemą, nes joje nėra formalios kalbos specifikacijos, o kalbos semantika nežymiai keitėsi
laikui bėgant, todėl ji nėra tokia stabili kaip C++, kartais tenka pasukti galvą dėl semantikos ir gali tekti dažnai keisti kodą naujose Rust versijose.
Taip pat skaitykite:
Kompiuterių ištakos
Kobolo motina
.Net palydėtuvės
Mažylis buvo pirmasis...
Programavimo paradigmos
ABC pirmasis kompiuteris?
Pirmasis interneto ryšys
Ką vadiname programuotoju?
Programavimo kalbų klegesys
Džonas Bakas FORTRAN tėvas
Lambda išraiškos Java į naują lygį
Unix ir C kalbos kiltis ir ... šachmatai
Pirmasis Java įskiepis Lietuvoje
Danas Briklinas: skaičiuoklės autorius
Pirmoji programuotoja: Ada Lovelace
Bilas Geitsas: kol dar nebuvo garsus
Kompiuterių įsilaužimų istoriją
Algebra akimirksniu
Interneto istorija
P-NP: Ant sveiko proto svarstyklių
O jei Napoleonas nebūtų panaikinęs dešimtainio laiko?
Programavimo kalbų istorija
Debesies architektūra
Papildoma literatūra:
- Remington-Rand. Univac Short Code, 1952
- J.W. Backus. The IBM 701 Speedcoding System, K.ACM, Vol.1, 1954
- J.H. Laning, Jr., N. Zierler. A Program for Translation of Math. Equations for Whirlwind I, M.I.T., E-364, 1954
- Preliminary report, Specification for the IBM mathematical FORmula TRANSlating System, IBM, 1954
- A. Perlis, K. Samelson. Preliminary Report - International Algebraic Language, CACM, 1, 12, 1960
- O. Naur. Report on the Algorithmic Language ALGOL 60, CACM, 3, 5, 1960
- COBOL, Initial Specification for a Common Business Oriented language, DoD, 1960
- J.W. Backus et al. Revised Report on the Algorithmic Language ALGOL 60, CACM, 6, 1, 1962
- The New Programming Language, IBM, 1964 (Apie PL/1)
- O,-J. Dahl, K. Nygaard. SIMULA 67 Common Base proposal, 1967
- A. Kay. The Reactive Engine, Utah un., 1969
- M. Richards, PCPL: A Tool for Compile Writing and System Programming, 1969
- N. Wirth. The Programming Language Pascal, Acta Informatica, 1, 1, 1971
- K. Zuse. Der Plankalkul, Bonn, 1972
- E.E. Dijkstra. The Humble Programmer, CACM, 15, 10, 1972
- C.A.R. Hoare. Proof of Correctness of Data Representations, Acta Informatica, 1, 4, 1972
- A.N. Habermann. Critical Comments on the Programming Language Pascal, Acta Informatica, Vol 3, 1973 ("Pascal" kritika)
- R. Conway, R. Constable. PL/CS_A Disciplined Set of PL/1, TR76-293,1976
- PL/C Users Guide, rel. 7.6, Cornell Un., 1977
- ANS Programming Language FORTRAN, ANSI X3.9-1978
- B.W. Kernighan, D.M. Ritchie. The C Programming Language, 1978
- C.A.R. Hoare. The Emperor's Old Clothes, CACM, 24, 2, 1981 (Ada kritika)
- G. Goos, J. Hartmanis. The Programming Language Ada Reference Manual, ANSI, 1983
- A. Fauer, N. Gehani. Comparing and Assessing Program. Languages Ada, C, Pascal, 1984
- A. Golberg, D. Robson. Smalltalk-80 - The language and its Implementation, 1984
- B. Stroustrup. The C++ Programming language, 1986
|