Selles blogipostituses selgitame lihtsal viisil, kuidas arvutid meie käskudest aru saavad ja kuidas programmeerimiskeeled on arenenud.
Mees koputab kiiresti klaviatuuri, monitori ekraan täitub arusaamatute tähemärkidega ja arvuti teeb midagi. Just sellist arvutiprogrammeerijat näeme sageli filmides ja muus meedias. Kaasaegses maailmas on arvutitest saanud tööriist, mida igaüks saab hõlpsasti kasutada, kuid programmeerimine – oskus anda arvutitele põhilisi käske – on tavainimese jaoks endiselt raske ja keeruline maailm.
Arvutite ja programmeerimise vaheliste suhete mõistmine on nagu uue keele õppimine. Keel ei ole ainult suhtlusvahend; see peegeldab seda kõnelevate inimeste mõtteviisi ja kultuuri. Samamoodi on programmeerimiskeeled olulised tööriistad, mis määravad, kuidas arvutid ja inimesed suhtlevad. Sellest vaatenurgast on programmeerimine midagi enamat kui lihtsalt tehniline oskus; see on viis probleemide lahendamiseks ja maailma vaatamiseks.
Programmeerimiskeeled arenevad iga päevaga ja uusimad arendused sarnanevad rohkem igapäevakeelega, muutes programmeerimise aja jooksul sisenemisel vähem takistuseks. Kuidas saab aga arvuti, mis pole midagi muud kui mehaaniline seade, aru saada käskudest, mida me igapäevakeeles anname?
Et mõista, kuidas arvutid meie käske mõistavad, peame kõigepealt mõistma arvutite põhialuseid. Arvuti on oma olemuselt elektrooniline seade ja kõige äärmuslikumal juhul saate sellele anda ainult kahte signaali. Kas vooluahelat läbib või mitte. See on väga lihtne teave, kuid kui kombineerite seda mitmel juhul, saate luua erinevaid sisendeid ja arvuti CPU-l (keskprotsessoril) on elemente, mis võimaldavad rakendada lihtsat loogikat, nagu AND, VÕI ja NOT, mis hästi kombineerituna võib luua "funktsiooni", mis annab mis tahes sisendi jaoks konkreetse väljundi. Kaasaegsetes arvutites on neid seadmeid kümneid miljoneid, mis võimaldavad neil täita keerulisi ülesandeid.
Arvutite tööpõhimõtete mõistmise hõlbustamiseks määrasid esimesed arendajad "1", mis näitab, et vool voolab, ja "0", mis näitab, et see ei voola. Seda tähendab väljend "arvutid koosnevad 0-dest ja 1-dest", mida olete ilmselt vähemalt korra kuulnud, isegi kui te arvutitest palju ei tea. Varased arvutid tuli erinevate sisendite saamiseks ümber ühendada. Selle parandamiseks arenesid arvutid nii, et saate sisendseadme kaudu sisestada nullide ja ühtede jada ning arvuti tuvastab paigutuse ja saadab soovitud toimingu tegemiseks automaatselt vastava voolu. Seda nullidest ja ühtedest koosnevat programmeerimiskeelt nimetatakse masinakeeleks.
Aga masinkeel oli liiga pikk ja mitte eriti loetav. Isegi kõige lihtsamad toimingud nõudsid programmeerimist mitmele paberilehele, mis olid täis nulle ja ühtesid, ja loomulikult oli sellele vaadates väga raske aru saada, mida programmeerite. Nii tekkis uus programmeerimiskeel, mida nimetatakse assemblerkeeleks. Koostekeel on keel, mis koosneb üks-ühele vastavusest masinkeele vahel, mis koosneb nullidest ja ühtedest, ja kui sisestate koostekeele, käivitab arvuti vastava masinkeele vastavalt sellele vastavusele. Assembleri eristab masinakeelest see, et vastavad fraasid koosnevad nende funktsioone esindavatest tähestiku tähtedest. Teisisõnu, koodi on palju lihtsam mõista kui masinkeelt, kuna see koosneb sõnadest, mida me igapäevaelus kasutame.
Assemblerite tulek on muutnud programmeerimise lihtsamaks. Kuid komplekteerijad olid endiselt pikad ja raskesti kasutatavad, kuna need olid üks-ühele vastavus masinakeelele. Lisaks olid monteerijad väga tihedalt seotud arvuti riistvara struktuuriga, mis nõudis programmeerijatelt sügavat arusaamist arvuti sisemisest tööst. Seetõttu sõltusid monteerijad sageli konkreetsest riistvarast ja nõudsid keele muutmist iga kord, kui uut riistvara võeti kasutusele. Nende probleemide lahendamiseks töötati välja kõrgema taseme programmeerimiskeeled.
Assemblerist inspireerituna hakkasid inimesed välja töötama viise, kuidas programmeerimine inimestele lihtsamaks teha. Protsessi käigus tekkis mitu programmeerimiskeelt, mis lihtsuse saavutamiseks põhimõtteliselt eemalduvad assemblerist. Kui monteerijatel on üks-ühele vastavus masina tegelikule vooluhulgale, nii et peate teadma riistvara tööpõhimõtteid iga pisiasja kohta, siis uuemad programmeerimiskeeled saavad oma funktsiooni täitmiseks intuitiivselt vajalike protsessidega hakkama ühe käsuga, mis tähendab, et neil on mitu ühele vastavust assembleri koodile. Need keeled vähendasid programmeerimise raskust, muutes programmeerimise intuitiivseks ilma arvuti riistvarastruktuurist aru saamata ja muutes koodi lühemaks. Sel viisil arendatud programmeerimiskeelte hulka kuuluvad C, C++, FORTRAN ja JAVA ning nende arenemine on jätkunud sarnaselt, et neid oleks lihtsam kasutada ning tänapäeval on ilmunud igapäevasemad keeled nagu JAVA Script, PHP ja PYTHON.
Programmeerimiskeelte areng on olnud paralleelne riistvara arenguga. Mida võimsamad arvutid on muutunud kättesaadavaks, on suurenenud vajadus kirjutada keerukamaid programme ja programmeerimiskeeled on vastavalt arenenud. Kaasaegsetel programmeerijatel on juurdepääs varasemast palju võimsamatele tööriistadele, mis teeb keerulisemate ja keerukamate programmide arendamise suhteliselt lihtsaks.
Kuigi programmeerimiskeeled on muutunud igapäevasele keelele palju lähedasemaks kui varem, pole see endiselt kergesti ligipääsetav valdkond. Programmeerimiskeeli mõjutavad aga arvutite edusammud ja need arenevad koos. Alates tohutu uurimistöö ja ettevõtete arvutite algusaegadest kuni personaalarvutite (PC-de) ajastuni oleme nüüd nutitelefonide ajastus. Kuna arvutid arenevad edasi, et muuta need kasutajasõbralikumaks, arenevad ka programmeerimiskeeled, et meil oleks lihtsam panna nad meid mõistma.
Programmeerimine on ju vestlus arvutiga. Ja see on midagi enamat kui lihtsalt käskude andmine ja tulemuste saamine; selle eesmärk on määratleda, kuidas arvuti maailmast aru saab ja kuidas ta selle arusaama alusel toimib. Programmeerimiskeelte edusammud muudavad pidevalt seda, kuidas me arvutitega suhtleme, mis omakorda muudab seda, kuidas me maailmaga suhtleme. Tulevikus võivad need muutused meie igapäevaellu niivõrd juurduda, et arvutiga suhtlemine muutub sama loomulikuks kui igapäevakeel.