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 > >>> >
o taip pat apie įvairias programavimo kalbas...
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 (JAV 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 E. Dijkstra.
Wirth kelias - paprastumas ir elegancija
Taip pat skaitykite >>>>
Iš pradžių Niklaus Wirth'as ir Hoare realizavo supaprastintą Algol-W versiją.
1971-ais N. Wirth'as 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 >>>> bei O tada atėjo C!
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
(o saugaus atminties valdymo nebuvimas arvedė prie Rust kalbos sukūrimo). Su C++ ji įtraukė objektinio programavimo principus.
Ada - didžiausias ir brangiausias projektas
DoD (JAV Gynybos departamento) 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.
Taip pat skaitykite Tiesiog - Java
Rust
Iškilus susirūpinimui apie saugią atmintį (saugų atminties valdymą, išvengiant atminties valdymo klaidų), ypač operacinių sistemų branduoliams, pradėta kurti naujos priemonės
ir viena jų tapo Rust kalba. Tai universali bendros paskirties kalba, leidžianti didelę spartą, patikimesnį saugumą, lygiagretų vykdymą. Atminties saugumas užtikrinamas
kalbos priemonėmis taip, kad visos nuorodos į atmintį būtų tikros ir tai atliekama be šiukšlių surinkėjų. Tam panaudojamas nuosavybės mechanizmas ir
statinis nuorodų tikrintuvas (borrow checker), sekantis objekto gyvavimo ciklą kompiliavimo metu. Papildomai Rust palaiko ir makrokomandas, labiau išvystytas nei
C kalboje. Objektiškumas realizuojamas per tipažus (traits ir struktūras.
Rust skirta sisteminiam programavimui ir greičiu prilygsta C++ bei C, į kurias yra panaši.
Jos kūrimą asmenine iniciatyva 2006 m. pradėjo Graydon Hoare. 2009 m. finansuoti ėmėsi Mozilla Research ir jos bendruomenė ją toliau vysto.
Pirmoji versija pasirodė 2015 m. gegužės 15 d. ir naujos versijos pasirodo kas 6 savaitės.
Taip pat skaitykite:
Kompiuterių ištakos
Kobolo motina
.Net palydėtuvės
Revoliucija su BASIC
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
|