Niklaus Wirth ir programavimo kalbų evoliucija: nuo Pascal iki šiandienos

Pasaulyje šiuo metu priskaičiuojama daugiau kaip 1000 kompiuterių programavimo kalbų, todėl norintiems išmokti programuoti pasirinkimas - daugiau negu platus. Prognozuojama, kad globalus programuotojų skaičius pasieks arti 28 mln. Kiek geras programuotojas turi mokėti kalbų? Kurias iš jų mokytis labiausiai verta? Ir ar sparčiai keičiantis technologijoms nenutiks taip, kad šiandien išmokta programavimo kalba jau rytoj bus niekur nebepritaikoma? Pasak kalbintų KTU programavimo specialistų, didesnė dalis šio įspūdingo skaičiaus tėra eksperimentinės, vos po keletą metų gyvuojančios kalbos, kurias naudoja siauras vartotojų ratas. Tuo tarpu pagrindinės programavimo kalbos naudojamos dešimtmečiais.

Ne vieną Lietuvos programuotojų kartą išugdžiusių dėstytojų teigimu, programavimo kalbos, panašiai kaip ir įprastos, turi savą gyvavimo ciklą, todėl „išgyvena“ ir pakilimo, ir nuosmukio etapus.

Niklaus Wirth ir Pascal kalbos kūrimas

Periodas nuo 1960-tųjų antrosios pusės iki 1970-tųjų antrosios pusės atnešė pagrindinį programavimo kalbų žydėjimą. Konkrečiai Pascal kalbą 1970 m. sukūrė Šveicarijos mokslininkas Niklaus Wirth. Štai kažkada buvusi revoliucinga Pascal kalba plačiai naudota ir komerciniams projektams, ir mokyklose apmokant mokinius. Atėjo momentas, kai ji evoliucionavo į objektinį Pascal, tada tapo Delphi kalba, o pastaroji sėkmingai gyvuoja iki šios dienos.

„Apple“ taip pat dirbo su objektinio programavimo kalba „Smalltalk“, atsiradusia „Xerox PARC“ 1969 m., bet jos sintaksė buvo neįprasta, o našumas prastas. 1984-1985 m. „Apple“ inžinieriai Larry Tesler, Barry Haynes, Ken Doyle ir Larry Rosenstein bendradarbiavo su „Pascal“ kūrėju Niklaus Wirth ir išplėtė „Clascal“ į „Object Pascal“ - pagrindinę programavimo kalbą „Mac“. Šie įrankiai buvo išleisti kartu 1986 m. rugsėjį kaip „Macintosh Programmer’s Workshop“ (MPW), kuris tapo standartine kūrimo aplinka „Mac“ kompiuteriams. Tuo metu vienintelė MPW palaikoma kompiliuojama kalba buvo „Object Pascal“. Tik kitą vasarą pasirodė beta C/C++ kompiliatorius. Nepaisant to, „Object Pascal“ kartu su „MacApp“ buvo plačiai naudojamas.

Su „System 7“ išleidimu 1991 m. „Apple“ staiga perėjo nuo „Object Pascal“ prie C++, taip pat ir „MacApp 3.0“. Mažesni kūrėjai, turėję didelius „Object Pascal“ projektus, liko nusivylę - kai kurie produktai dingo, kiti išsigelbėjo 1993 m.

Niklaus Wirth, Pascal programavimo kalbos kūrėjas

Programavimo kalbų atsiradimas ir autoriai

Kaip atsiranda programavimo kalbos? Programavimo kalbos atsiranda labai įvairiai. Kartais programavimo kalbos sukuriamos siekiant išspręsti tam tikras problemas - tarkime, našumo, patikimumo, naujos ar specifinės įrangos panaudojimo. Kai kurios jų skiriamos tam tikrai specializuotai sričiai: mokymuisi, žaidimų kūrimui, matematinių sprendimų ar verslo sistemų programavimui. Yra atvejų, kai suprogramuoti naują kalbą žmogų paskatino hobis. Programavimo kalbos yra skirtos palengvinti programuotojų darbą, sprendžiant duomenų apdorojimo uždavinius. Atsiradus naujiems uždaviniams, prireikia ir naujų, efektyvesnių būdų tų uždavinių sprendimui.

Individualūs autoriai ir komandinis darbas

Ar programavimo kalbų autoriai yra tik pavieniai išradėjai? Ar tai labiau komandinis darbas? Kieno iniciatyva šios kalbos gimsta? Kalbą tikrai gali sukurti ir vienas žmogus, studijų metu patys tai išbandėme, tačiau sukurti tokią kalbą, kuri būtų plačiai naudojama, yra esminis pasiekimas. Juk nepakanka sukurti vien tik kalbos sintaksę, reikia ir daugybės bibliotekų, karkasų, kad programuojant ta kalba būtų galima išnaudoti modernias technologijas. Todėl dažniau tai daugelio žmonių darbas. Pirmąsias programavimo kalbas kūrė patys kompiuterių gamintojai. Vėliau susi­formavo savarankiška programuotojų profesija ir atsirado lyderiai, kurie kūrė kitų programuotojų darbui reikalingas priemones. Dažniausiai kalbas kuria kolektyvai, tačiau yra ir individualių autorių kūrinių.

Kaip įdomesnį pavyzdį galima prisiminti JavaScript kalbos sukūrimą, kuri yra naršyklėms skirta programavimo kalba. Jos prototipą vienas žmogus Brendan Eich sukūrė vos per 10 dienų, o kalba lig šiol yra viena labiausiai paplitusių pasaulyje.

Verslo ir valdžios įtaka

Kiek kalbų kūrimu suinteresuotas verslas arba valdžia? Neretai populiarias kalbas kuria ir įveda į rinką stiprios įmonės. Kartais kalbai tobulinti ir palaikyti sukuriamos atskiros organizacijos. Taip atsitiko su populiaria Node.js kalba. Žinomiausias vyriausybės iniciatyva atsiradusios kalbos pavyzdys - ADA programavimo kalba, sukurta 1980 m. JAV gynybos ministerijos užsakymu. Deja, ji buvo labai griozdiška ir savo populiarumu už JAV ribų nepasižymėjo. O štai Java kalbos kūrimą inicijavo „Sun“ kompanija, planavusi ją panaudoti mikroįrenginių valdymui.

Kodėl vienos kalbos prigyja, o kitos ne?

Kodėl vienas programavimo kalbas moka milijonai programuotojų, o kitos taip ir neprigyja? Turbūt pagrindinė priežastis yra rinka. Didžioji programuotojų dalis nori nuolatinio ir stabilaus darbo, o tai užtikrina populiariausių kalbų mokėjimas. Tik nedidelis programuotojų skaičius yra motyvuotas ieškoti naujoviškų sprendimų, susijusių su eksperimentinėmis kalbomis. Rinkai reikia naudoti patikimas, aukšto produktyvumo programavimo kalbas, todėl tokios kalbos prigyja lengviausiai. Bet tai nereiškia, kad nereikalingos kitos, mažesnio populiarumo ar specializuotos programavimo kalbos. Dažnai tokių kalbų žinovai uždirba daugiau nei populiarių kalbų žinovai, nes nėra plataus tokių specialistų pasirinkimo, taigi tenka jiems reikia mokėti daugiau.

Tarkime, jau nebegyvybingos ir mirusios kalbos etiketę drąsiai galima priklijuoti PL1 programavimo kalbai. Ši IBM360 kompiuterių serijai ir jos klonams naudota kalba nebeteko prasmės, kai atsirado mikrokompiuteriai. „Paradoksas, bet kai kurias senas kalbas labai sunku numarinti“, - pastebi T. Blažauskas, kaip pavyzdžius įvardindamas Fortran ar Cobol programavimo kalbas. Anot jo, tokių programavimo kalbų masiškai nesimokoma bene 3 dešimtmečius, bet yra daugybė didelių, tebeveikiančių ir šiomis kalbomis parašytų sistemų. Pavyzdžiui, kai kurias jų naudoja bankai. „Sistemos perrašymas kainuotų tiek, kad to daryti neapsimoka - tokiems sprendimams palaikyti ieškomi arba apmokomi specialistai. Tuo tarpu naujas, lanksčias, suderinamas kalbas daug lengviau ir pakeisti, ir numarinti“, - juokauja jis.

C++. Ciklo sakinys for: veikimo principas, atvaizdavimo būdai

Kiek kalbų turi mokėti programuotojas?

Kauno technologijos universiteto Informatikos fakulteto (KTU IF) docentai Tomas Blažauskas ir Eimutis Karčiauskas įsitikinę - geri programuotojai neprivalo būti poliglotais. Vis dėlto, gebantys daugiau turi šansą tapti komandų vedliais. Kiek vienas programuotojas paprastai moka kalbų? Ar dažnai tarp jų būna poliglotų, t. y., mokančių įspūdingą skaičių? Mūsų absolventai tikrai moka bent 4 programavimo kalbas: Java, C#, Matlab, JavaScript. Nemaža dalis turi įvairių eksperimentų patirtį dar su 3-5 kalbomis. Didžioji dalis programuotojų, išmanančių daugiau kalbų, tampa komandų lyderiais. Per savo karjerą man duoną teko užsidirbti naudojant 10-12 programavimo kalbų, dalis jų - šiandien jau praktiškai nebetaikomos. Studijuojantys Programų sistemas per 4 metus išmoksta nuo 5 iki 10 programavimo kalbų. Nemanau, kad apskritai privaloma būti poliglotais ir puikiai žinoti daugiau nei keletą kalbų. Tačiau labai svarbu turėti supratimą apie įvairias programavimo kalbų paradigmas, taikymo sritis, privalumus ir trūkumus. Programavimo kalba tėra įrankis ir programuotojui svarbu gebėti darbui pasirinkti tą įrankį, kuris tinkamiausias duotai problemai spręsti.

Rekomenduojamos programavimo kalbos ir mokymosi pradžia

Kurią iš programavimo kalbų asmeniškai Jūs rekomenduotumėte mokytis? Kodėl? Ir nuo ko tai reikėtų pradėti? Šiais laikais mokytis programavimo siūlyčiau pradėti nuo Java kalbos, kadangi tai yra labiausiai išbaigtas ir pakankamai paprastas C kalbos šeimos atstovas, kas užtikrina komfortą darbo rinkoje. Tuo tarpu C# yra komplikuotesnė kalba, todėl norint jos mokytis, geriau turėti daugiau patyrimo. Python rekomenduočiau pradėti, kai labiau pribręs poreikis dirbtinio intelekto uždaviniams. Gaila, bet mūsų mokyklose yra dar vis užsilikusi C++ kalba, kuri Europoje jau seniai pripažinta netinkama dėl savo griozdiškumo ir dviprasmybių.

Rekomenduoti konkrečią kalbą sunku, nes tai labai individualu. Ir iš tiesų niekas nežino, nuo ko pradėti, kuri kalba tinkamiausia pradėti mokytis programuoti. Kartais atrodo, jog sėkmė labiau priklauso nuo mokytojo patirties ir pastangų negu nuo konkrečios kalbos ar priemonės pasirinkimo. Manau, kad labai priklauso nuo besimokančiojo amžiaus. Mokant programavimo vaikus, labai svarbu neišgąsdinti sudėtingumu ir jų nenuvilti. Mokymuisi galima pasirinkti žaidimus, kurie moko programuoti. Pavyzdžiui, codecombat.com, codingame.com. Šiuose žaidimuose galima pasirinkti, kuria kalba spręsti uždavinius, valdyti sudėtingumą. Vėliau pereiti prie supaprastintų programavimo aplinkų, tarkime, scratch, greenfoot. Na, o tuomet naudoti pilnavertes programavimo aplinkas, kurios skatina kūrybiškumą. Beje, suaugę žmonės dažnai nori išmokti ne kiek konkrečią programavimo kalbą, kiek tam tikras technologijas ar tam tikros srities programų kūrimą, pavyzdžiui, tinklalapių kūrimą. Čia vėlgi svarbu pasirinkti tinkamas priemones, kursus, kurie leidžia metodiškai perprasti principus.

Programavimo kalbų pasirinkimo kriterijai

Programavimo kalbų istorija ir evoliucija

Kaip daugelį pirmųjų kalbų istorijoje, pirmąją šiuolaikinę programavimo kalbą yra sunku identifikuoti. Nuo pradžios, kompiuterinės įrangos apribojimai apibrėžė kalbą ir jos galimybes. Iki 1940 metų buvo naudojama Perfokortos, kuriose išmuštos instrukcijos buvo skaitomos pirmųjų mašinų, kad atliktų paprastus veiksmus. Per devynių mėnesių periodą 1842-1843 metais, Ada Lovelace išvertė Italijos matematiko Luigi Menabrea memuarus apie Charles Babbage naujausią išrastą mašiną - Analitinį variklį. Su šiuo straipsniu apie variklį ji pridėjo ir keletą pastabų, kurios konkrečiai nurodė metodą apskaičiuoti Bernoulli skaičiams su šiuo varikliu. Per pirmus 20-tojo šimtmečio dešimtmečius, skaitmeniniai skaičiavimai buvo pagrįsti dešimtainiais skaičiais. Galiausiai buvo suprasta, kad logikai galėjo būti naudojami skaičiai, ne tiktai žodžiai. Pavyzdžiui, Alonzo Church sugebėjo išreikšti Lambdos skaičiavimą formulėmis. Tiuringo mašinos nustatė pagrindą programų išsaugojimui kaip duomenis „von Neumann“ kompiuterio architektūroje. Kiek vėliau, 1940-taisiais metais, buvo sukurtas pirmas elektrinis kompiuteris. Itin ribotas greitis ir atminties trūkumas privertė programuotojus asembleriu rašyti programas.

FORTRAN programavimo kalba naudojo kai kuriuos reikšminius žodžius, kurie buvo tokie pat kaip anglų kalbos žodžiai, tokie kaip, „IF“, „GOTO“ (go to) ir „CONTINUE“. Magnetinio būgno naudojimas atminčiai reiškė, kad kompiuterio programos turėjo būti rašomos būgnui besisukant. Kitas įvykis 1950-tųjų pabaigoje buvo Amerikos ir Europos programuotojų komiteto publikacija - „naujos kalbos algoritmams“. Įdėta blokų struktūra: kodų sekos ir kintamieji galėjo būti sugrupuoti į blokus, todėl procedūros nebuvo būtinybė. Programavimo kalba „ALGOL 60“ ypač buvo įtakinga vėlesnėms kalboms, iš kurių kai kurios netrukus tapo populiaresnės. „ALGOL 68“ daug mažai panaudotų kalbos ypatybių ir jos sudėtinga sintaksė padarė ją nemėgstamą ir įgijo nemažai neigiamos reputacijos, kadangi buvo sudėtinga. 1960-taisiais ir 1970-taisiais buvo kilę dideli debatai dėl struktūrinio programavimo, kur iš esmės buvo programuojama be GOTO komandos naudojimo. Šie debatai buvo artimai susieti su kalbos projektu: kai kurios kalbos neapėmė GOTO, kuris vertė struktūrinį programavimą ant programuotojo.

Žemiau pateikiama kai kurių žinomų programavimo kalbų kūrimo metų ir autorių apžvalga:

Kalba Kūrimo metai Autorius(-iai)
FORTRAN 1957 John Backus (IBM)
ALGOL 60 1950-ųjų pabaiga Amerikos ir Europos programuotojų komitetas
LISP 1962 Tim Hart ir Mike Levin (MIT)
APL 1962
Pascal 1970 Niklaus Wirth
INTERCAL 1972 Don Woods ir James M. Lyon
C 1972-1973 Dennis M. Ritchie
C++ 1979 Bjarne Stroustrup
Objective-C 1980-tieji Brad Cox ir Tom Love
ADA 1980 JAV gynybos ministerija
Modula, Ada, ML 1980-tieji
FALSE 1992 Wouter van Oortmerssen
JavaScript 1995 Brendan Eich
Swift 2010-tieji pradžia Chris Lattner, Doug Gregor, John McCall, Ted Kremenek ir Joe Groff

1980-tieji metai buvo reliatyvios konsolidacijos būtinomis kalbomis metai. Užuot išradę naujas atšakas, visi šitie judėjimai detaliau susitelkė ant jau esamų kalbų, išrastų per praėjusį dešimtmetį. C++ programavimo kalba susijungė į OOP ir sistemų programavimą. Jungtinių Valstijų vyriausybė standartizavo „ADA“ sistemų programavimo kalbą, numatytą gynybos rangovų naudojimui. Japonijoje didelės sumos buvo išleistos tyrimams vadinamosioms penktos kartos programavimo kalgoms, kurios įtraukė programines logikos konstrukcijas. Funkcinė kalbų bendruomenė pajudėjo, kad standartizuotų ML ir LISP kalbas. Viena svarbi nauja tendencija programavimo kalbų kūrime buvo padidėjęs dėmesys didelio-mąsto sistemoms. „Modula“, „Ada“, ir „ML“ - visos išvystytos žinomos modulio sistemos 1980-taisiais. Nors pagrindinės naujos paradigmos būtinoms programavimo kalboms nepasirodė, daug tyrėjų išplėtė mintis apie ankstesnes kalbas ir pritaikė jas prie naujų kontekstų. „RISC“ judėjimas kompiuterių architektūroje teigė, kad aparatinė įranga turi būti suprojektuota kompiliatoriams, o ne asemblerio programuotojams.

1990-taisiais nebuvo jokios naujovės būtinomis kalbomis, bet buvo daug kombinacijų iš naujų ir senų kalbų bendrinimo. Ši era pradėjo funkcinių kalbų paplitimą. Didelis dėmesys buvo skiriamas programuotojo produktyvumui. Pasirodė daug RAD kalbų, kurios paprastai būdavo kartu su IDE ir buvo vyresnių kalbų palikuonis. Visos tokios kalbos buvo OOP tipo. Java gavo ypač daug dėmesio dėl to, kad buvo radikalesnė ir novatoriškesnė negu kitos RAD kalbos. Ji tiesiogiai nesileido žemyn nuo kitų kalbų ir rodė naują sintaksę ir liberalesnę ypatybių inkorporaciją. Daugelis mano, kad šitos skriptinimo kalbos yra labiau produktyvios negu kad RAD kalbos, bet dažnai tai būna dėl pasirinkimo galimybės, kurios daro mažas programas paprastesnėmis, bet dideles programas - sudėtingesnėmis parašyti ir palaikyti.

„Netikros“ programavimo kalbos

Šiais laikais yra išrasta tiek programavimo kalbų, jog atrodo kad sukurta yra kiekvienam technikos gabaliukui užprogramuoti. Tačiau kaip bebūtų, egzistuoja ir tokios kalbos, sukurtos šiaip sau. Jos neturi nei savo IDE, nei kompiliatoriaus ar interpretatoriaus ir jos nėra užskaitomos kaip tikros programavimo kalbos, na galbūt bent jau tarp rimtų programuotojų, kurie nesupranta juokų. Tokios „netikros“ kalbos dažniausiai naudojamos norint pasijuokti ar šiaip pasukioti galvą, kaip butų galima parašyti. Įdomiausia tai kad jų yra ne viena ir ne dvi, o visa krūva ir kiekviena savaip ypatinga.

Ankstyviausias, ir pirmasis istorijoje netikros kalbos pavyzdys buvo INTERCAL, suprojektuotas Don Woods ir James M. Lyon, 1972 metais, su mintimi kad ji bus nepanaši į bet kokia kita programavimo kalbą, kuri egzistavo tuo metu, su kuria autoriai nebuvo pažįstami. Ankstyvas INTERCAL naudojimas buvo surištas su IBM System/360 ir neatpažintu Atari kompiuteriu (turbūt vienu iš pirmųjų Atari 2600), tačiau neprigijo. Daugelį metų INTERCAL buvo tiktai popierinėje INTERCAL vadovo kopijoje. 1992 metais, Wouter van Oortmerssen sukūrė „FALSE“ - maža programavimo kalba, kuri iš prigimties ketino padaryti kodą supainiotą, painų, ir paprastai neįskaitomą. Taip pat verta pažymėti, kad ji turėjo tiktai 1024 baitų kompiliatorių. Tai įkvėpė Urban Müller sukurti net mažesnę kalbą, dabar garsią ir itin plėtojamą „BrainFuck“, kurios sintaksė susideda tiktai iš aštuonių simbolių. Kartu su Chris Pressey „Befunge“ kalba (panašiai kaip FALSE), BrainFuck yra dabar viena iš labiausiai paplitusių netikrų programavimo kalbų. Dabar egzistuoja virš 650 netikrų kalbų ir jų atšakų. Vienos labiau paplitusios, kitos jau seniai užkastos interneto kapinyne.

Esoterinių programavimo kalbų pavyzdys (pvz., Brainfuck kodas)

Šiuolaikinio programavimo standartai ir principai

Šiuolaikinis programavimas yra daug sudėtingesnė procedūra negu kad buvo anksčiau. Rašant kokybiškas programas, būtina atsižvelgti į daugybę faktorių - ar kodas tvarkingas, ar „nenuteka“ kur nors atmintis, ar aprašytas komentarais tinkamai ir panašiai. Kad ir kaip programuotum, galutinis variantas turi atitikti ir tenkinti tam tikrus standartus ir poreikius.

Efektyvumas, patikimumas ir skaitomumas

  • Efektyvumas/greitis: apibrėžia, kiek programa „valgys“ kompiuterio resursų - procesoriaus greitis/laikas, laikinosios atminties dydis/apdorojimo greitis, lėti įrenginiai, kaip kad kietieji diskai, interneto greitis ir t.t.
  • Patikimumas: nustato, kaip dažnai programa lūžinės, striginės.

Programavime skaitomumas reiškia pirminio kodo tvarkingumą, komentavimą, suprantamumą. Įskaitomumas yra ypač svarbus programuotojams, dėl to, kad jie daug laiko praleidžia žiūrėdami ir tvarkydami kodą, savo ir kitų.

Kaip minėta anksčiau, programavimo kalbų yra virš tūkstančio ir kiekviena skirta kažkam arba ji turi savo savybes, kurios tinka vienur ir netinka kitur, taigi norint išsirinkti kalbą, kuri yra perspektyvi, neretai tenka pasukti galvą. Renkantis kalbą, neretai kyla klausimas, kuri kalba yra populiariausia. Į ši klausimą yra sunku atsakyti, kadangi nėra patikimo metodo tai išmatuoti. Kol kas populiariausias metodas tai išmatuoti yra sekant darbo pasiūlymus, skaičiuojant parduotas programavimo knygas, skaičiuojant išleistus programavimo projektus.

Programavimo paradigmos

Programavimo paradigmos apibrėžia bendrus principus ir stilistiką, kuria rašomos programos:

  • Imperatyvusis programavimas: Pagrindinis principas: programa - tai komandų, kurias reikia vykdyti, rinkinys. Komandos keičia programos būseną. Kadangi beveik visa aparatinė įranga dirba šiuo principu, tai didžioji dalis programų yra parašyta būtent šiuo stiliumi.
    • Nuoseklusis programavimas: Tai programavimas be jokių arba keliomis taisyklėmis.
    • Struktūrinis (procedūrinis) programavimas: Toks programavimo stilius uždeda apribojimus, kad visa programa turi būti suskaidyta į kaip įmanoma mažiau viena nuo kitos priklausomus modulius (gali būti kelių lygių: procedūros/funkcijos, modulio, bibliotekos).
  • Deklaratyvusis programavimas: Pagrindinis principas: programa aprašo kokias sąlygas sprendinys turi tenkinti, tačiau neapibrėžia sprendinio ieškojimo algoritmo. Šį algoritmą kiekviena realizacija gali turėti savo.
    • Funkcinis programavimas: Funkciniame programavime sprendinio sąlygoms aprašyti naudojamos funkcijos, neturinčios vidinių būsenų.

Klaidų šalinimas (Debugging)

Kodo taisymas, dar žinomas kaip „Debugging“, yra labai svarbi užduotis programinės įrangos kūrimo procese, todėl kad klaidinga programa gali turėti reikšmingas pasekmes jos vartotojams. Kai kurios kalbos yra labiau linkusios į kai kurias klaidų rūšis, todėl kad jos kompiliatoriai ar interpretatoriai neturi tokių funkcijų, kurios įvykdytų tokius didelius tikrinimus kaip kitų kalbų. Statiškos analizės įrankio (debugger) naudojimas gali padėti aptikti tam tikras galimas problemas. Dažniausiai visas klaidų šalinimas būna atliekamas per tam skirtą IDE, kur galima matyti visą kodo veikimą paleidus programą ir taip galima sekti jos vykdymą žingsnis po žingsnio stebint kintamųjų reikšmes, procedūrų veikimą ir panašiai. Programos klaidų šalinimą galima atlikti ir neturint kodo programose, kaip „OllyDbg“. Dažniausiai toks metodas pritaikomas programų „nulaužinėjimuose“, kur būna apeinama arba kitaip pašalinama programos veikimo dalis.

Programavimo aplinkos ir įrankiai

Programavimo aplinka dabar su programavimu eina išvien. Buvo laikai, kai rašyti algoritmus buvo išrastos ir sukurtos tam specialios klaviatūros, kur vietoje raidžių, ant mygtukų buvo surašyta specialūs žodžiai ir taip buvo programuojama norint paspartinti darbą. Dabar tas būtų nei teoriškai, nei praktiškai neįmanoma, vien dėl to, kad kalbų yra tūkstančiais ir tos kalbos turi tiek galimybių bei funkcijų, kad viską sutalpinti yra stačiai neįmanoma. Tam šiais laikais yra kuriamos IDE, kai kurios yra ir RAD.

Integruotos kūrimo aplinkos (IDE)

RAD tipo IDE dar turi ir automatizuotą kodo rašymą, kur kodas yra nuspėjamas ir pasiūloma kiti variantai. IDE poreikis atsirado, kai atsirado galimybė rašyti programas konsolėje arba terminale. Ankstesni kompiuteriai tokios prabangos neturėjo ir programos buvo rašomos ant popieriaus arba išmušamos ant Perfokortų prieš suvedant į kompiliatorių. „Dartmouth BASIC“ kalba buvo pirmoji istorijoje, kuri leido kurti programas terminale arba konsolėje. Tokia IDE buvo per komandinę eilutę ir visiškai nebuvo panaši į dabartines, tačiau kaip bebūtų, ji turėjo integruotą kodo redagavimą, failų tvarkyklę, kompiliatorių ir statinį analizės įrankį. 1975 metais kompanija „Softlab Munich“ sukūrė „Maestro I“ IDE ir specialią klaviatūrą jai, su kuria buvo greitesnis programų kūrimas. „Maestro I“ buvo naudojama apie 22 tūkst. programuotojų per visą pasaulį tuo metu. Iki 1989 vien Vokietijoje buvo suskaičiuota apie 6 tūkst.

Kompiliatoriai ir interpretatoriai

Kompiliatorius - tai speciali programa, arba rinkinys programų, kurios paverčia parašytą programą tekstiniu formatu į binarinį formatą - exe, dll, com ir kitokį, kurį supranta kompiuteris. Vardas „kompiliatorius“ yra dažniausiai naudojamas programoms, kurios verčia programos tekstą iš aukšto lygio programavimo kalbos į žemesnę lygmens kalbą (pavyzdžiui asemblerį). Jei sukompiliuota programa veikia ant kompiuterio, kurio procesorius ar operacinė sistema yra kitokie negu toks, ant kurio kompiliatorius veikia, tai kompiliatorius yra žinomas kaip multiplatforminis. Programa, kuri verčia iš žemo lygio kalbos į aukštesnį lygmenį, vadinama dekompiliatoriumi.

Programinė įranga ankstyviems kompiuteriams buvo rašoma asembleriu daugelį metų. Aukštesnio lygmens programavimo kalbos nebuvo išrastos, kol atsirado galimybė parašytas programas naudoti ant skirtingų procesorių, nerašant kiekvienam procesoriui atskirai kompiliatoriaus. 1950-tųjų antroje pusėje, buvo sukurtos programavimo kalbos, kurios buvo skirtos rašyti programas nepriklausomai nuo procesoriaus, tai reiškė, kad programa, rašyta ant vieno kompiuterio, galėjo veikti ir ant kitų. Paskui, keli bandomieji kompiliatoriai buvo sukurti. Pirmąjį tokį kompiliatorių sukūrė Grace Hopper, 1952-taisiais „A-0“ programavimo kalbai. FORTRAN programavimo kalbos komanda, vadovaujama John Backus, IBM kompanijoje pristatė pirmąjį pilnai užbaigtą kompiliatorių šiai kalbai, 1957-taisiais metais. Daugelyje taikomųjų sričių, mintis pavartoti aukštesnio lygmens kalbą greitai išpopuliarėjo. Ankstyvi kompiliatoriai buvo parašyti asembleriu. Pirmas kompiliatorius, gebantis sukompiliuoti savą programos kodą aukšto lygio programavimo kalboje, buvo sukurtas Tim Hart ir Mike Levin iš MIT, 1962-taisiais metais „LISP“ kalbai. Nuo 1970-tųjų tai tapo įprasta praktika, kad kalba būtų kartu su savo kompiliatoriumi.

Kai interpretavimas ir kompiliavimas yra dvi svarbiausios priemonės, prie kurių programavimo kalbos yra sukurtos, jie nėra visiškai skirtingos kategorijos, viena iš priežasčių yra tai, kad daugumos interpretavimo sistemų taip pat įvykdo kažkokį vertimo darbą, taip pat kaip kompiliatoriai. Didžiausias interpretatorių minusas yra tas, kad kai programa yra interpretuojama, ji tipiškai veikia lėčiau, negu ji būtų sukompiliuota. Greičių skirtumas iš esmės gali būti mažytis arba didelis. Apskritai užima daugiau laiko valdyti programą su interpretatoriumi negu valdyti kompiliuotą kodą, bet gali užimti mažiau laiko, kad interp...

Programavimo kalbos Apple ekosistemoje

Einant metams buvo naudojamos įvairios programavimo kalbos: Object Pascal, C/C++, Objective-C ir naujausia - Swift. Po to, kai „Apple“ naudojo UCSD Pascal „Apple II“ kompiuteriuose, vystant „Lisa“, pagrindinė programavimo kalba tapo „Lisa Pascal“. Tuo pat metu „Think Technologies“ pristatė pirmą populiarią trečiosios šalies kompiliatorių sistemą - „LightSpeed C“, kuris vėliau tapo THINK C, įgavo C++ palaikymą, buvo papildytas „THINK Pascal“ ir galiausiai nupirktas „Symantec“ kompanijos. Su „Mac OS X“ atsirado pagrindinė programavimo kalba - „Objective-C“, o kartu ir nauja kūrimo aplinka „Project Builder“ (paremta „NeXTSTEP“, bet pritaikyta „Mac“). Ji 2003 m. „Objective-C“ buvo viena iš dviejų pagrindinių objektinio programavimo kalbų, kilusių iš C. Kita buvo C++, kuri buvo populiaresnė 90-aisiais. Kalbą sukūrė Brad Cox ir Tom Love 1980-aisiais, o jos sėkmė atėjo su „NeXTSTEP“ pasirinkimu. 2010-aisiais „Apple“ pradėjo kurti „Objective-C“ įpėdinę - „Swift“. Ją sukūrė Chris Lattner, padedamas Doug Gregor, John McCall, Ted Kremenek ir Joe Groff. „Swift“ pristatoma, kaip daugiaparadigminė kalba, palaikanti beveik visas programavimo paradigmas: objektinę, protokolų pagrįstą, deklaratyvią ir kt. 2019 m., su „Swift“ 5.0, buvo pasiekta ABI stabilumo riba - nebereikėjo prie kiekvienos programos pridėti „Swift“ bibliotekų. 1984 m. pradėta kurti vėliau tapusi „Macintosh Common Lisp“ (MCL). Ji buvo išleista 1987 m., iš pradžių kaip „Coral Common Lisp“ (CCL), vėliau kaip „Macintosh Allegro Common Lisp“ ir MCL. 1994 m. ji buvo perkelta į „Digitool“, kad būtų palaikomi „PowerPC“ kompiuteriai, o 2007 m. tapo atvirojo kodo kalba. Nepaprastai glausta ir galinga kalba, APL taip pat yra viena seniausių, apibrėžta dar 1962 m. ir pirmą kartą įdiegta po poros metų. Ji naudoja graikiškus ir specialius simbolius savo pasirinktame šrifte, sujungdama juos į paslaptingas eilutes, dėl kurių „Perl“ atrodo išplėtotas. Paskutinė jos versija „Mac“ kompiuteriams, „MicroAPL“ APLX 5.1, vis dar galėjo veikti „El Capitan“, bet jos buvo atsisakyta. Tačiau „Dyalog APL“ ir toliau aktyviai kuriama ir netgi palaiko „Apple Silicon Mac“ kompiuterius.

tags: #1969 #m #niklausas #virtas #sukure #nauja

© 2013 BFO. Visos teisės saugomos.