Histori e shkurtër e gjuhëve të programimit. Gjuhët e programimit: pse u shfaqën, përfaqësues të shquar, si të zgjidhni një gjuhë

Vërejtje 1

Që programet e para të funksiononin, ishte e nevojshme të vendosni çelësat në panelin e përparmë të pajisjes kompjuterike. Natyrisht, vetëm programe të vogla mund të shkruheshin duke përdorur këtë metodë. Një nga përpjekjet e para për të krijuar një gjuhë programimi të plotë u bë nga shkencëtari gjerman Konrad Zuse, i cili gjatë periudhës 1943-1945. zhvilloi gjuhën plankalkul. Plankalkul ishte një gjuhë shumë premtuese, e cila në fakt ishte një gjuhë e nivelit të lartë, por gjatë luftës nuk mori zbatimin e duhur praktik dhe përshkrimi i saj u botua vetëm në 1972.

kodi i makinës. montues

Historia e gjuhëve të programimit fillon me zhvillimin e gjuhës së makinës: gjuha logjike zero dhe një. Të shkruash me këtë gjuhë ishte shumë e vështirë dhe e lodhshme.

Për të lehtësuar punën e programuesve në fund të viteve 1940. u zhvillua gjuha e asamblesë. Në vend të numrave binarë që tregonin ndonjë urdhër, u shkruan fjalë të shkurtra ose shkurtesa. Gjuha Asamble konsiderohet nga programuesit si një gjuhë programimi e nivelit të ulët sepse është afër gjuhës së nivelit më të ulët, gjuhës së makinës. Programet e shkruara në asembler varen drejtpërdrejt nga karakteristikat e një procesori të caktuar, prandaj quhet gjuhë e orientuar nga makina.

Shkrimi i programeve në asembler është një detyrë mjaft e vështirë, dhe gjithashtu kërkohet njohja e pajisjeve kompjuterike. Sidoqoftë, programet në gjuhën e asamblesë janë më efikaset dhe më efikaset.

Gjuhët algoritmike

Gjatë zhvillimit të programimit, u bë i nevojshëm zhvillimi i gjuhëve të reja, më të avancuara programimi që do të ishin të ngjashme me gjuhët natyrore dhe do të lejonin të mos punoni drejtpërdrejt me udhëzimet e makinës. Ato u bënë të njohura si gjuhë të nivelit të lartë. Gjuhët e nivelit të lartë fokusohen në përshkrimin e algoritmeve, ndaj quhen gjuhë algoritmike. Avantazhi i gjuhëve të tilla është dukshmëria dhe pavarësia më e madhe nga një kompjuter i caktuar.

Meqenëse vetëm gjuha e makinës njihet nga një kompjuter, një program i shkruar në një gjuhë algoritmike duhet të përkthehet në këtë gjuhë nga një program i veçantë, një përkthyes, përpara ekzekutimit. Përkthyesi përmban të gjitha rregullat e gjuhës algoritmike dhe mënyrat e shndërrimit të konstruksioneve të saj të ndryshme në gjuhë makine. Ekzistojnë dy lloje të transmetimit:

  • Kompilimi është një metodë e ekzekutimit të programeve, në të cilën udhëzimet e programit ekzekutohen vetëm kur përkthimi i të gjithë tekstit të programit është montuar.
  • Interpretimi është një metodë e ekzekutimit të programeve në të cilën udhëzimet e programit përkthehen dhe ekzekutohen menjëherë.

Vërejtje 2

Avantazhi i programeve të shkruara në një gjuhë algoritmike është thjeshtimi i punës me programin për shkak të thjeshtësisë relative të shkrimit, lexueshmërisë së lehtë dhe mundësisë së korrigjimit të tij. Disavantazhet përfshijnë: kohë shtesë dhe memorie për transmetim.

Programim i strukturuar

Në vitin 1954, filloi zhvillimi i përpiluesit të parë të gjuhës së nivelit të lartë. Dy vjet më vonë, u shfaq gjuha Fortran (FORmula TRANSlator - "përkthyesi i formulave"). Gjuha përmbante veçori që thjeshtonin shumë zhvillimin, por programimi në Fortran nuk ishte një detyrë e lehtë: nëse në programe të shkurtra kuptohej lehtësisht, atëherë kur bëhej fjalë për programe të mëdha, gjuha bëhej e palexueshme. Përkundër kësaj, gjuha ishte mjaft e suksesshme dhe u lëshuan shumë versione.

Problemet u zgjidhën pas zhvillimit të gjuhëve të programimit strukturor: ato kanë aftësinë për të krijuar blloqe programi, nënprograme të pavarura, mbështetje për variablat e rekursionit dhe lokal, dhe mungesën e një operatori kërcimi të pakushtëzuar (GoTo). Kështu, gjuhë të tilla filluan të mbështesin mundësinë e ndarjes së programit në elementët e tij përbërës.

Një numër mjaft i madh i gjuhëve të reja janë krijuar gjatë dhjetë viteve:

  1. Algol (1958) kishte për qëllim të shkruante algoritme që përbëhen nga blloqe të dallueshme;
  2. Cobol (1959) është përdorur për përpunimin e të dhënave në masë në administratë dhe biznes;
  3. Basic (1965) ju lejoi të shkruani programe të thjeshta, u përdor për të mësuar bazat e programimit.

Shumë pak nga gjuhët e krijuara ishin të strukturuara. U krijuan gjithashtu gjuhë të specializuara: Lisp, Prolog, Forth, etj. Vëmendje e veçantë është Pascal (1970), i quajtur sipas shkencëtarit Blaise Pascal, i cili u përdor si për të mësuar ashtu edhe për zgjidhjen e problemeve me kompleksitet të ndryshëm. Programet Pascal janë të lehta për t'u lexuar, duke ju lejuar të gjeni dhe rregulloni shpejt gabimet, dhe ishte i strukturuar mirë. Të gjitha sa më sipër çuan në përdorimin e tij të gjerë, madje edhe sot përdoret në mënyrë aktive në institucionet arsimore.

Në vitin 1972 u shfaq gjuha C, e cila ishte një hap i suksesshëm në programim. Gjuha kombinoi avantazhet e shumë gjuhëve dhe kishte një numër të madh risive të ndryshme. Mundësitë e gjera, strukturimi dhe thjeshtësia relative e studimit të saj lejuan që gjuha të njihet shpejt dhe të fitojë vendin e një prej gjuhëve kryesore.

Ardhja e programimit të strukturuar dha rezultate të shkëlqyera, por ishte ende e vështirë të shkruash programe të gjata dhe serioze.

Programimi i orientuar nga objekti (OOP)

Që nga vitet 1970 u hodhën themelet e programimit të orientuar nga objekti (OOP), të cilat u ngritën si pasojë e zhvillimit të programimit procedural, në të cilin të dhënat dhe nënprogramet për përpunimin e tyre nuk ishin të lidhura zyrtarisht.

OOP përfshin konceptet themelore të mëposhtme:

  • Klasa- një model i një objekti që nuk ekziston ende. Në fakt, është një diagram i një objekti, që përshkruan strukturën e tij.
  • Nje objekt– një shembull i një klase, një entitet në hapësirën e adresave të një sistemi kompjuterik që shfaqet kur krijohet një shembull i një klase.
  • Abstraksioni- duke i caktuar një objekti karakteristika që përcaktojnë qartë kufijtë e tij, të cilat e dallojnë atë nga të gjitha objektet e tjera. Ideja bazë është të veçohet mënyra se si përdoren objektet e të dhënave të përbëra nga detajet e zbatimit të tyre si objekte më të thjeshta.
  • Kapsulimi- kombinimi i vetive (të dhënave) dhe metodave (nënrutinave) në një klasë për të fshehur të dhënat e një objekti nga pjesa tjetër e programit dhe për të siguruar integritetin dhe pavarësinë e objektit (ndryshimi i vetive të një objekti është i mundur vetëm përmes speciale metodat e klasës).
  • Trashëgimia- një mekanizëm gjuhësor që ju lejon të përshkruani një klasë të re bazuar në një klasë (ose klasa) ekzistuese me shtimin e vetive dhe metodave të reja.
  • Polimorfizmi– vetia e sistemit për të përdorur objekte me të njëjtën ndërfaqe pa marrë informacion për llojin dhe strukturën e tij të brendshme.

Vërejtje 3

Në vitin 1967, u shfaq gjuha Simula - gjuha e parë e programimit në të cilën u propozuan parimet e orientimit të objektit. Ai mbështeti punën me objekte, klasa, metoda virtuale etj., por të gjitha këto veçori nuk morën një vlerësim të denjë të bashkëkohësve. Megjithatë, shumica e këtyre koncepteve u përfshinë nga Alan Kay dhe Dan Ingalls në gjuhën Smalltalk, e cila u bë gjuha e parë e përhapur e programimit e orientuar drejt objektit.

Aktualisht, numri i gjuhëve të programimit të aplikuara që zbatojnë paradigmën e orientuar nga objekti është më i madhi në raport me paradigmat e tjera. Gjuhët kryesore që mbështesin konceptin OOP janë: C++, C#, Object Pascal (Delphi), Java, etj.

Zhvillimi i Internetit

Me zhvillimin e teknologjisë WWW (World Wide Web), interneti është bërë shumë i popullarizuar. Janë krijuar një numër i madh gjuhësh ndihmëse për të ofruar akses në internet, dizajn të faqes në internet, akses në burime, etj.

Perl, një gjuhë e interpretuar, po bëhet e përhapur dhe dallohet për thjeshtësinë dhe transportueshmërinë e saj të lehtë në platforma të tjera. Është krijuar për të shkruar aplikacione dhe skripta CGI me kompleksitet të ndryshëm. Gjuha Java përdoret gjithashtu gjerësisht dhe luan një rol të rëndësishëm në zhvillimin dhe funksionimin e internetit.

Në vitet 1970 U shfaq gjuha SQL - një gjuhë e strukturuar e pyetjeve që u krijua për të hyrë dhe punuar me bazat e të dhënave.

Për të shkruar kode për faqet e internetit, është zhvilluar gjuha e shënjimit të hipertekstit HTML, e cila përmban komanda për shënimin dhe dekorimin e tekstit dhe grafikëve. Për ta bërë faqen më tërheqëse dhe funksionale, ne përdorim:

  • Skriptet JavaScript që funksionojnë në shfletuesin e internetit të përdoruesit dhe përdoren kryesisht për të përmirësuar pamjen dhe ndjesinë e sajtit dhe për të kryer detyra të vogla.
  • Skriptet PHP që funksionojnë në anën e serverit dhe dërgojnë informacione të përpunuara tashmë në shfletuesin e përdoruesit. Ato përdoren për të krijuar faqe dinamike HTML, libra të ftuar, forume dhe sondazhe.
  • Skriptet CGI, të cilat janë shkruar kryesisht në Perl, C/C++, ekzekutohen në anën e serverit dhe varen nga veprimet specifike të përdoruesit. Ato përdoren, si skriptet PHP, për të krijuar faqe dinamike HTML, libra të ftuar, forume dhe sondazhe.

Në vitet pesëdhjetë të shekullit të njëzetë, me ardhjen e kompjuterëve në tuba vakum, filloi zhvillimi i shpejtë i gjuhëve të programimit. Kompjuterët, të cilët në atë kohë kushtonin dukshëm më shumë se zhvillimi i çdo programi, kërkonin kod shumë efikas. Një kod i tillë u zhvillua me dorë në gjuhë montues. Në mesin e viteve 1950, nën udhëheqjen e John Backus, gjuha algoritmike e programimit FORTRAN u zhvillua për IBM. Përkundër faktit se tashmë kishte zhvillime gjuhësore që konvertonin shprehjet aritmetike në kodin e makinës, krijimi i gjuhës FORTRAN (FORmula TRANSlator), i cili ofron mundësinë për të shkruar një algoritëm llogaritjeje duke përdorur operatorë të kushtëzuar dhe operatorë hyrës / dalës, u bë pika fillestare. të epokës së gjuhëve të programimit algoritmik.

Tek gjuha FORTRAN kishte kërkesa për krijimin e një kodi shumë efikas. Prandaj, fillimisht u zhvilluan shumë konstruksione gjuhësore duke marrë parasysh arkitekturën IBM 407. Suksesi i zhvillimit të kësaj gjuhe çoi në faktin që prodhuesit e sistemeve të tjera kompjuterike filluan të krijojnë versionet e tyre të përkthyesve. Me synimin e njëfarë unifikimi të mundshëm të gjuhës në atë kohë, gjuha FORTRAN IV, e zhvilluar në vitin 1966, u bë standardi i parë, i quajtur FORTRAN 66.

Si një alternativë ndaj gjuhës FORTRAN, e përqendruar fillimisht në arkitekturën e IBM, ALGOL (Gjuha ALGOrithmic) u zhvillua nën udhëheqjen e Peter Naur në fund të viteve 50. Qëllimi kryesor i ndjekur nga zhvilluesit e kësaj gjuhe ishte pavarësia nga arkitektura specifike e sistemit informatikë. Për më tepër, krijuesit e gjuhës ALGOL u përpoqën të zhvillonin një gjuhë që është e përshtatshme për përshkrimin e algoritmeve dhe përdor një shënim afër atij të miratuar në matematikë.

Gjuhët FORTRAN dhe ALGOL ishin gjuhët e para të orientuara nga programimi.

Gjuhe PL/I, versionet e para të së cilës u shfaqën në fillim të viteve '60, fillimisht u fokusuan në IBM 360 dhe zgjeruan aftësitë e gjuhës FORTRAN me disa nga veçoritë e gjuhës COBOL të zhvilluara në të njëjtat vite. Pavarësisht nga popullariteti i caktuar i gjuhës PL / I në mesin e programuesve që kanë punuar në kompjuterët IBM dhe makinat e serisë EC, aktualisht është me interes thjesht teorik.

Në fund të viteve '60, nën udhëheqjen e Nayard dhe Dahl, u zhvillua gjuha Simula-67, duke përdorur konceptin e llojeve të të dhënave të përcaktuara nga përdoruesi. Në fakt, është gjuha e parë që përdor konceptin e klasave.

Në mesin e viteve 70, Wirth propozoi gjuhën Paskalin të cilat menjëherë u përdorën gjerësisht. Në të njëjtën kohë, me iniciativën e Departamentit Amerikan të Mbrojtjes, filloi puna për krijimin e një gjuhe të nivelit të lartë, të quajtur Ada - për nder të Ada Lovelace, një programuese dhe vajza e Lord Bajronit. Krijimi i gjuhës filloi me përcaktimin e kërkesave dhe zhvillimin e specifikimeve. Katër grupe të pavarura punuan në projekt, por të gjithë përdorën gjuhën Pascal si bazë. Në fillim të viteve 1980, u zhvillua përpiluesi i parë komercial i gjuhës. Ada.

Gjuhë programimi universale ME u zhvillua në mesin e viteve 70 nga Denis Ritchie dhe Ken Thompson. Kjo gjuhë është bërë një gjuhë programimi popullore e sistemeve dhe dikur përdorej për të shkruar kernelin e sistemit operativ UNIX. Standardi i gjuhës C filloi të zhvillohet nga një grup pune i Institutit të Standardeve ANSI në 1982. Standardi ndërkombëtar për gjuhën C u miratua në vitin 1990. Gjuha C formoi bazën për zhvillimin e gjuhëve programuese C++ dhe Java.

Së bashku me gjuhët algoritmike, gjuhët e destinuara për përpunimin e informacionit të biznesit, si dhe gjuhët e inteligjencës artificiale, të zhvilluara paralelisht. E para është COBOL (Gjuha e Përbashkët e Orientuar në Biznes), dhe e dyta është gjuhët COBOL. LISP(Përpunimi i LISTËS) dhe Prolog. Gjuha LISP, e zhvilluar në vitet '60 nën udhëheqjen e J. McCarthy, ishte gjuha e parë funksionale e përpunimit të listave që gjeti aplikim të gjerë në teorinë e lojës.

Me ardhjen e kompjuterëve personalë, gjuhët janë bërë pjesë përbërëse e mjediseve të integruara të zhvillimit. Ka gjuhë të përdorura në programe të ndryshme të zyrës, të tilla si VBA (Visual Basic për Aplikim).

Në vitet '90, me përhapjen e internetit, po zgjerohet mundësia e përpunimit të të dhënave të shpërndara, gjë që reflektohet në zhvillimin e gjuhëve programuese. Ka gjuhë të fokusuara në ndërtimin e aplikacioneve të serverëve, si p.sh Java, Perl dhe PHP, gjuhët e përshkrimit të dokumentit - HTML dhe XML. Gjuhët tradicionale të programimit C++ dhe Pascal gjithashtu po pësojnë ndryshime: një gjuhë programimi ka filluar të nënkuptojë jo vetëm funksionalitetin e vetë gjuhës, por edhe bibliotekat e klasave të ofruara nga mjedisi i programimit. Theksi është zhvendosur nga specifikimi i vetë gjuhëve të programimit në standardizimin e mekanizmave për ndërveprimin e aplikacioneve të shpërndara. Shfaqen teknologji të reja - COM dhe CORBA, të cilat specifikojnë ndërveprimin e objekteve të shpërndara.

Kompjuterët kanë ende një kuptim të dobët të gjuhëve natyrore që përdoren për të komunikuar midis njerëzve, të paktën ata nuk kanë mësuar ende të kuptojnë.

Nga ana tjetër, njerëzit nuk i kuptojnë mirë gjuhët e makinerisë. Prandaj, u krijuan gjuhë programimi që mbulojnë këtë vrimë të të kuptuarit, në modelin e të menduarit midis një personi dhe një kompjuteri.

Gjuhët e programimit mund të jenë:

  • e thjeshtë,
  • komplekse dhe
  • e pakuptueshme (për shembull, grafik).

Historia e shfaqjes së gjuhëve të programimit

Disa qindra gjuhë programimi janë tani në përdorim, por shumë gjuhë të tjera të tilla nuk janë më në përdorim. Me kalimin e kohës, gjuhë të reja programimi u zhvilluan për detyra të reja.

Gjenerata zero

  • (elektro),
  • programuar nga struktura e pajisjes së tyre
  • shumë të specializuar
  • opsionet e programimit janë të kufizuara.

tezgjah jacquard

Një shembull i makinave të tilla është një vegjë jacquard me një pajisje të programuar. Është bërë në 1804 nga francezi Joseph Marie Jaccard. Nga rruga, për nder të tij, një pëlhurë e modeluar, dekorative quhet jacquard ose jacquard.

Me ndihmën e makinës, u bë e mundur që lehtësisht dhe masivisht të prodhohej qëndisje në pëlhurë duke përdorur karta të shpuara, të paraqitura më poshtë në figurë:

Oriz. 1. Letra me grushta për tezgjahun Jacquard

Në letrat me grushta, një sekuencë veprimesh u programua që makinat të riprodhonin çdo model në pëlhurë.

Makina e Babbage

Internet dhe Web

Janë shfaqur gjuhë të specializuara:

  • JavaScript.

Shumë faqe interneti janë shkruar me PHP dhe JavaScript.

Disa gjuhë para-ekzistuese me ardhjen e Internetit dhe Web-it kanë gjetur pika të reja dhe janë orientuar në ueb:

  • rubin,
  • Pynton,
  • Java.

Nga vitet 2000, gjuhët e vjetra të programimit po "vdesin" gradualisht, shfaqen të reja, por nuk ka një koncept të pranuar përgjithësisht se çfarë ndodh me këto gjëra.

Çdo gjuhë programimi është një gjuhë artificiale që ka ciklin e vet të jetës. Në mënyrë të ngjashme, sistemet operative të familjes Windows kanë gjithashtu ciklet e tyre të jetës: .

Cikli jetësor i gjuhës së programimit:

  • krijim,
  • adoptimi i hershëm (përdorimi fillestar i gjuhës),
  • sukses (industrial),
  • shuarje, ndryshim i gjuhëve të tjera.

Në botën moderne, pjesa kryesore e softuerit (softuerit) është shkruar në 10-15 gjuhë, megjithëse me kalimin e kohës që dimë, janë krijuar më shumë se qindra gjuhë programimi. Disi 300 ose 400 gjuhë janë të regjistruara zyrtarisht.

Çfarë është një gjuhë programimi

Gjuha është

  • sintaksë (rregullat për të shkruar programe),
  • semantika (sjellja e elementeve që përfshihen në rregullat e shkrimit dhe janë të integruara në gjuhë),
  • kohëzgjatje (runtime).

Sintaksa përcakton formën e paraqitjes së tekstit të programeve, domethënë si duhet të shkruhen, cilat fjalë përfshihen në gjuhë, si vendosen presjet, hapësirat, etj.

Sintaksa në shembullin e Lisp

Një nga gjuhët më të thjeshta të programimit që ka një gramatikë formale është gjuha e listës LISP.

Oriz. 10. Programi LISP

LISP është një gjuhë shumë e vjetër që gjeneron lista. Gramatika e një gjuhe të tillë është gramatika e listave, të lexuara nga lart poshtë.

  • Ka shprehje në Lisp: mund të ketë një atom, ose një listë;
  • atomi është një numër ose karakter,
  • numër - një numër, domethënë me një shifër plus ose minus, të paktën një,
  • simboli - këto janë shkronja, sa herë të doni, mundeni edhe shumë herë,
  • list - një listë, shprehje në kllapa më shumë se një herë.

Një program Lisp është një listë me lista. Nuk ka shenja pikësimi në Lisp, por ka kllapa. Mund të ketë programe kaq të gjata në Lisp, ku në fund ka 2-3 fletë, të përbëra vetëm nga kllapa mbyllëse.

Përkthyesi më i thjeshtë Lisp është i gjatë vetëm 19 rreshta! Asnjë gjuhë tjetër nuk mund ta përballojë një luks të tillë.

Semantika

Nëse gramatika përshkruan format e paraqitjes: shkronjat, numrat, kllapat, atëherë semantika përshkruan se si funksionon programi, çfarë nënkuptojnë këto shkronja, numra, kllapa, si funksionojnë, ndërveprojnë me njëri-tjetrin, etj.

Opsionet për përfaqësimin e semantikës janë mjaft të kufizuara.

Semantika mund të jetë:

  • përshkruar në gjuhën natyrore, njerëzore. Shumë gjuhë mund të përshkruhen vetëm në këtë mënyrë. Në fakt, ky është rasti kryesor kur ka thjesht një dokument ku përshkruhet në rusisht ose në anglisht se filani gjë funksionon në atë mënyrë, një komandë bën një gjë, një tjetër bën kështu e ashtu, etj.;
  • specifikuar zyrtarisht (në gjuhë të specializuara, për shembull, për disa llogaritje, sjellja e elementeve mund të përshkruhet zyrtarisht);
  • përcaktuar nga zbatimi origjinal (përdoret rrallë, por kjo është "zgjidhja e fundit" për një përshkrim kur semantika është shumë komplekse ose jo shumë e rëndësishme);
  • përshkruar nga një grup testesh (rastesh), domethënë, se duhet të funksionojë në këtë mënyrë, dhe kështu funksionon.

Semantika ndahet në dy pjesë:

  • statike,
  • dinamike.

Semantika statike

  • u jep kuptim ndërtimeve leksikore;
  • përcakton vlerat e lejuara të variablave dhe parametrave;
  • përshkruan kufizimet sintaksore, për shembull, duke përdorur sintaksën nuk do të jetë e mundur të përshkruhet se nuk mund të shtoni vargje me numra.

Semantika dinamike ose frontale e ekzekutimit

  • përcakton natyrën e përgjithshme të programit;
  • përshkruan se si funksionojnë operacionet e integruara dhe bibliotekat e integruara. Kjo është pjesa kryesore e semantikës që nevojitet për të kuptuar se si do të jetojë dhe funksionojë programi pasi të jetë shkruar;
  • specifikon kërkesat për përkthyesin.

Sistemi i tipit të të dhënave në gjuhët e programimit

Një pjesë e rëndësishme e semantikës është sistemi i tipit - ky është një grup rregullash dhe shprehjesh për metodat që shkruhen në ideologjinë e gjuhës dhe se si ato ndërveprojnë me njëra-tjetrën.

Zakonisht, një gjuhë programimi ka një sistem të llojeve të të dhënave - këto janë vargje, numra, lista, etj. Ekziston, për shembull, gjuha Force, ku të gjitha të dhënat janë thjesht , me fjalë të tjera, ka gjuhë ku llojet e të dhënave nuk janë të integruara fare.

Nëse ekziston një sistem tipi, atëherë gjuhët e programimit mund të ndahen në dy klasa të pavarura, të cilat janë dhënë më poshtë.

Sistemi i tipit të të dhënave:

  • gjuhë e shtypur ose e pashtypur
  • shtypje statike ose dinamike
  • shtypje e fortë ose e dobët

Nëse shtypja është statike, atëherë llojet e të gjithave dhe shprehjet që shkruhen në program njihen deri në momentin e ekzekutimit të tij, pra kur përshkruhen funksionet, klasat, variablat, atëherë kushtet vendosen menjëherë ose parashikohen në mënyrë eksplicite në mënyrë që lloji i një konstruksioni të tillë dihet që në fillim.fillimi.

Nëse shtypja është dinamike, atëherë, përkundrazi, lloji i objekteve të gjuhës së kontekstit është i panjohur deri në momentin e ekzekutimit, domethënë lloji i një funksioni ose ndonjë gjëje do të jetë i panjohur deri në fund.

Shtypja e fortë do të thotë që nëse një entitet ka një lloj dhe dihet, atëherë ky lloj mund të zëvendësohet, por vetë objekti ka një lloj fiks dhe ai nuk ndryshon.

Me shtypje të dobët, lloji i një objekti mund të jetë i ndryshëm në varësi të kontekstit dhe asaj që bëni me të.

Ju duhet të mbani një sy në sistemin e tipit të gjuhës. Për shkak të llojit të specifikuar gabimisht të vetëm një karakteri, jo shumë të dukshëm në fillim të programit, lloji i të gjithë shprehjes ndryshon dhe për këtë arsye mund të rezultojnë gabime shumë të çuditshme.

Karakteristika tjetër e rëndësishme e gjuhës është

Paradigma e gjuhës së programimit

  • nga greqishtja - shabllon, shembull, mostër;
  • është një sistem idesh dhe konceptesh që përcaktojnë stilin e të shkruarit të programeve në këtë gjuhë - mënyra se si gjuha përfshin shkrimin e programeve në të (wiki);
  • gjuha “favorizon” një ose më shumë paradigma (multi-paradigma).

Paradigmat kryesore

  • imperativ: një program është një grup udhëzimesh vijuese që ndryshojnë gjendjen e brendshme të një kompjuteri, të dhënat, etj. Domethënë, një program është një udhëzim;
  • funksionale: programi është një grup funksionesh matematikore. Puna e programit është llogaritja e vlerës së funksioneve;
  • i orientuar nga objekti: zona e subjektit përshkruhet duke përdorur objekte me veti dhe metoda. Programi - procesi i ndërveprimit të objekteve;
  • logjike: programi është një grup deklaratash rreth fushës lëndore. Puna e programit është të vërtetojë vërtetësinë e pohimeve për këtë fushë lëndore.

Shpesh i njëjti problem praktik mund të zbatohet duke përdorur ndonjë nga paradigmat e listuara më sipër.

Një pjesë tjetër e rëndësishme e gjuhës që duhet marrë parasysh gjatë përdorimit të gjuhës është Runtime - si ekzekutohet gjuha.

Runtime - ekzekutimi i programit

Programi mund të funksionojë në mënyra të ndryshme:

  1. mënyra më e thjeshtë dhe më naive e ekzekutimit të një programi është interpretimi - leximi i kodit burimor në momentin e nisjes. Kështu funksionojnë gjuhët e lehta, të shkrimit. Vetë programuesi punon gjithashtu: kur ai ka shkruar një program, ai shikon programin e tij me sytë e tij dhe kupton se si do të funksionojë programi i tij dhe çfarë të bëjë;
  2. një mënyrë e zakonshme për të ekzekutuar programet është përpilimi në kodin e makinës - një hap i veçantë para ekzekutimit. Ekziston një mjet i veçantë - një përpilues, ku lexohen kodet burimore të programit, bëhet diçka me to, duke i kthyer ato në kode makinerie që janë të kuptueshme për sistemin aktual. Pastaj ky kod ekzekutohet drejtpërdrejt nga hardueri;
  3. mënyra hibride është përpilimi dhe ekzekutimi i bajtit në një makinë virtuale. Përpiluesi lexon kodin burimor, pas së cilës prodhohet bytekodi, i cili funksionon në makinën virtuale.

Këto tre metoda janë të ndryshme dhe përdoren për qëllime të ndryshme. Këto teknika mund të kombinohen - përkthyesi mund të përpilojë disa pjesë të programit në fluturim për ta bërë atë të funksionojë më shpejt. Kodi i gjeneruar në mënyrë dinamike mund të interpretohet pa kompilim.

Përfaqësuesit e gjuhës

gjuha C

- një nga më të njohurit, një nga më të rëndësishmit për sa i përket kodit të shkruar fizikisht në të, praktikisht është "gjithçka jonë".

Ajo u krijua në 1972 nga Dennis Ritchie dhe kolegët. D. Ritchie gjithashtu krijoi sistemin Linux dhe shumë gjëra të tjera të dobishme.

  • imperativ,
  • përpiluar,
  • menaxhimi manual i kujtesës (me ndihmën e disa operacioneve të integruara në gjuhë, duhet të ndani elementë të memories për variablat dhe më pas t'i lironi ato kur nuk janë më të nevojshme).

Nga rruga, C është ende e rëndësishme, përdoret për:

  • programimi i sistemit (për shembull, kerneli Linux është shkruar në C),
  • shtypja e numrave (të ashtuquajturit numrat e thërrmuesit, domethënë për llogaritjet e mëdha ku shpejtësia është e rëndësishme),
  • programimi i mikrokontrolluesve dhe sistemeve të integruara.

C është një gjuhë e nivelit të ulët, mund të themi se është një Assembler me fytyrë njeriu, sepse një person mund të konvertojë manualisht pothuajse çdo ndërtim C në Assembler dhe do të merren operacione mjaft të kuptueshme.

Programet C janë shumë kompakte. Ato nuk janë shumë më të mëdha sesa nëse programe të ngjashme do të shkruheshin në asembler. Në të njëjtën kohë, zhvillimi në C është shumë më i shpejtë sesa në Asamble.

Prandaj, C tani përdoret për detyrat ku kërkohet shpejtësia, menaxhimi i kujtesës është shumë i rëndësishëm dhe madhësia kompakte e vetë programit ka një rëndësi të madhe. Nëse keni një mikrokontrollues të vogël që është i integruar në një lloj pajisjeje, atëherë programi për të ka shumë të ngjarë të shkruhet në Assembler ose C.

Oriz. 11. Një shembull i një programi të thjeshtë C.

Java

  • Krijuar në vitin 1995,
  • krijuesit - James Gosling (James Gosling) dhe Sun Microsystems (Gosling punonte në këtë kompani).
  • I orientuar nga objekti, imperativ (C është imperativ, por JO i orientuar nga objekti),
  • shtypur fort dhe statikisht,
  • byte-kompiluar me makinë virtuale,
  • pa akses në kujtesë, grumbullim automatik i plehrave (kjo e fundit funksionon mirë nëse ka një të tretën ose një të katërtën e memories së lirë).

Në vitet '90, JAVA fitoi popullaritet të madh si një gjuhë me shumë platforma. Pasi të keni shkruar një makinë virtuale për ndonjë platformë, le të themi për Windows, për Linux ose për Mac, mund të ekzekutoni çdo program JAVA në të pa rikompilim. Prandaj, gjuha ishte e njohur në epokën e internetit, kur kishte platforma të ndryshme (versione të ndryshme të Windows, Mac të ndryshëm). Programet JAVA funksionuan shpejt dhe mjaft mirë në të gjitha platformat.

Përdoret për:

  • programimi i aplikacioneve, duke përfshirë programimin në ueb,
  • sistemet e integruara (nëse C përdoret për mikrokontrolluesit, atëherë JAVA është për telefonat celularë, terminalet, etj.),
  • sisteme shumë të ngarkuara me një numër të madh përdoruesish (programe bankare, sisteme të kontrollit të trafikut ajror, etj.).

Duhet bërë një dallim midis specifikimeve të gjuhës Java dhe zbatimeve të ndryshme JVM:

  • Sun JDK (nga Sun, tani Oracle),
  • IBM JDK (shitet për para),
  • OpenJDK (plotësisht falas)
  • etj.

Oriz. 12. Një shembull i një programi të thjeshtë JAVA.

Siç shihet në fig. 12, ju duhet të shkruani shumë letra për të kryer veprime të thjeshta. Java shpesh përmendet si Cobol e re, pasi përmban të njëjtat veti negative që dikur e bënë Cobol një gjuhë të keqe.

Sidoqoftë, JAVA është shumë popullor, në veçanti, pjesa e klientit të sistemit operativ është shkruar në të.

Lisp

  • Ai vërtet e plotëson Lis t P rocessor (LisP);
  • krijuar në vitin 1958;
  • krijuesit - John McCarthy;
  • një gjuhë e pastër funksionale, pavarësisht sintaksës mjaft të çuditshme;
  • të shtypura fort dhe dinamike;
  • zakonisht interpretohet;
  • nuk ka akses në memorie, grumbullim automatik i plehrave, i cili bie mbi interpretuesin dhe jo në makinën virtuale.

Përdoret për:

  • programimi dhe kërkimi shkencor;
  • inteligjenca artificiale - Lisp u krijua në fillimin e kërkimit me inteligjencë. Në fund të viteve 1950 dhe në fillim të viteve 1960, ekzistonte një ndjenjë e fortë në qarqet shkencore se inteligjenca artificiale do të krijohej. Atëherë besohej se tiparet kryesore të inteligjencës artificiale do të ishin aftësia për të vepruar me gjuhë natyrale, tekst, lexuar, folur dhe bërë disa gjëra të arsyeshme. Lisp u krijua për të përpunuar të dhëna semantike nga teksti, ju lejon të bëni gjëra të tilla mirë;
  • çdo gjë, por, si rregull, nuk përdoret shumë në mënyrë efektive.

Gjuha Lisp, e zhvilluar në vitin 1958, ka pësuar shumë ndryshime.

Ka shumë zbatime dhe dialekte:

  • CommonLisp (i krijuar në vitet 1970) është zbatimi klasik, i cili konsiderohet kryesori;
  • Skema (skema) - një dialekt i thjeshtuar që hedh disa gjëra nga CommonLisp dhe e bën më të lehtë për t'u bërë;
  • Clojure është një dialekt i Lisp për sa i përket gjuhës, por funksionon në majë të një makinerie JAVA, domethënë përpilohet në bytecode dhe ekzekutohet sikur të ishte një program JAVA.

Oriz. 13. Programi LISP: Renditja me flluska

Python

  • Emërtuar sipas shfaqjes britanike të viteve 1970 Monty Pynton's Flying Circus (shaka të vjetra por qesharake)
  • krijuar në vitin 1991
  • krijuar nga holandezi Guido van Rossum
  • gjuhë shumëparadigme, e orientuar nga objekti, imperativ, funksional
  • shtypur fuqishëm dhe dinamikisht
  • interpretuar, përpiluar nga byte me makinë virtuale (në varësi të zbatimit)

Përdoret për:

  • programim skripti
  • programimi në ueb
  • programimi shkencor (paketa të mëdha dhe të fuqishme janë të disponueshme për modelim, probabilitet, statistika dhe fusha të tjera që kombinojnë përvojën e fituar në fusha të tjera)

Python është një specifikim i gjuhës. Ekzistojnë disa zbatime kryesore:

  • CPython - kryesore (referencë)
  • Jython - në krye të JVM
  • PyPy - Python në Python ("Python në Python" është më i shpejtë dhe më i mirë se CPython dhe Jython)

Oriz. 14. Programi Python: Renditja me flluska

Python ka një veçori të rëndësishme - në vend të kllapave (të rrumbullakëta, kaçurrela), dhëmbëzimi me hapësira përdoret për të theksuar blloqet e kodit dhe elementët strukturorë, gjë që është mjaft e pazakontë për të gjitha gjuhët. Përveç Python, pothuajse askush nuk e ka një veçori të tillë.

Zgjedhja e një gjuhe për një detyrë

Si të zgjidhni një gjuhë për një detyrë kur e dini se çfarë duhet të bëni, por nuk dini çfarë?

Këshillë e rëndësishme: përdorni atë që dini të programoni. Është shumë më mirë sesa të përdorni diçka që NUK dini të programoni.

Ekosistemi

Gjuha që dëshironi të mësoni nuk duhet të jetë një gjuhë e zhveshur, ajo duhet të ketë një ekosistem që përfshin:

  • mjete zhvillimi (IDE i dobishëm)
  • biblioteka dhe korniza të gatshme
  • mjetet e testimit për ekzekutimin e rasteve të testimit: kornizat dhe mjetet e testimit
  • sistemet e paketimit dhe vendosjes në mënyrë që kodi i shkruar të mund të paketohet, të vendoset diku, në mënyrë që të tjerët ta përdorin lehtësisht. C nuk e ka këtë aftësi, por Ruby dhe Python e kanë.
  • komunitetit. Mos përdorni gjuhë të vdekura, sado të lezetshme të jenë ato. Nëse nuk keni kë të pyesni, do të mbeteni në një rrugë pa krye. Besohet se disa komunitete janë më miqësore, të tjerët më pak. Për shembull, komuniteti Ruby është i mrekullueshëm, por komuniteti Java është i tmerrshëm - as nuk keni nevojë të pyesni asgjë atje.

Popullariteti

Është e vështirë të gjesh njerëz në ekip që shkruajnë kodin në një gjuhë që përdoret rrallë, për shembull, në Eiffel. Nga ana tjetër, një vend bosh në gjuhën mega-popullore JAVA, në të cilën pragu i hyrjes është i ulët, do të hasë shumë njerëz, por nuk do të jetë e lehtë të gjesh njerëz që shkruajnë vërtet mirë në të.

Sa më popullore të jetë gjuha, aq më shumë biblioteka, komunitete, korniza dhe gjëra të tjera rriten vetë nga lart.

Shkalla e të mësuarit

Pothuajse askush nuk e di gjuhën deri në fund. Ndërsa punoni, do t'ju duhet të mësoni gjuhën gjithnjë e më tej. Disa gjuhë janë të lehta për t'u mësuar, ndërsa të tjerat janë shumë të vështira.

JAVA është një gjuhë e lehtë për t'u mësuar dhe e thjeshtë për nga veçoritë, dhe më pas gjithçka ndërtohet jo në kurriz të gjuhës, por në kurriz të mjeteve.

Është e pamundur të mësosh plotësisht C++, sepse ka gjëra shumë komplekse me gjenerimin e kodit atje.

Gjuhët e veçanta

Gjuhët specifike janë më të përshtatshme për disa detyra të veçanta.

Shembulli 1: një aplikacion ueb që

  • ndërvepron me bazën e të dhënave
  • shërbimi i brendshëm në kompani
  • ne kemi nevojë për një zhvillim të shpejtë, sepse shefi me të vërtetë pyet.

Për një detyrë të tillë, ka shumë të ngjarë, Python ose Ruby do ta bëjnë. Mos e bëni atë në JAVA

Shembulli 2: sistemi i faturimit të një operatori celular

  • mijëra operacione në sekondë, shumë pagesa dhe transferta të ndryshme
  • besueshmëri e lartë dhe tolerancë ndaj gabimeve
  • fleksibilitet në konfigurim, diagnostikim i problemit

Në këtë rast, zgjedhja jonë është Java, C++, Erlang - gjuhë të pasura me mjete të pasura.

Shembulli 3: Kodi i kompjuterit në bord për një satelit

  • burime të kufizuara (vetëm një megabajt memorie dhe shpejtësi shumë e ulët e orës)
  • kohë reale e vështirë, në mënyrë që sateliti të mos humbasë orientimin, të mos prishet ose të shpërthejë
  • detyra rreptësisht të njohura, pa fleksibilitet dhe pa personalizim
  • shumë llogaritje

Zgjedhja jonë është gjuhët e ngjashme me C dhe C (dhe madje edhe asembler), sepse ka shumë pak burime dhe këto kërkesa duhet të plotësohen.

Artikull i bazuar në video:

Si të zgjidhni gjuhën e duhur të programimit - Ivan Kalinin

Videoja u filmua në dhjetor 2014, megjithatë, të gjitha informacionet janë relevante dhe nuk kanë statut kufizimesh. Shumë materiale nga pozicioni i realiteteve të sotme janë me interes të padyshimtë, për shembull, që shkencëtarët në fund të viteve 1950 dhe në fillim të viteve 1960 besonin se inteligjenca artificiale ishte tashmë në prag dhe me ndihmën e saj do të ishte e mundur të punonte në një kompjuter me natyrë natyrale. , gjuhë e zakonshme, njerëzore.

Më lejoni të nënvizoj disa prirje të përgjithshme në zhvillimin e gjuhëve të programimit. Lexuesi i zgjuar me siguri e ka marrë me mend prej kohësh atë që do të them. Gjuhët po evoluojnë drejt abstraksionit gjithnjë e më shumë. Dhe kjo shoqërohet me një rënie të efikasitetit. Pyetje: a ia vlen abstraksioni? Përgjigje: ia vlen. Ia vlen, sepse rritja e nivelit të abstraksionit sjell rritjen e nivelit të besueshmërisë së programimit. Efikasiteti i ulët mund të luftohet duke ndërtuar kompjuterë më të shpejtë. Nëse kërkesat për memorie janë shumë të larta, mund ta rrisni sasinë. Kjo, natyrisht, kërkon kohë dhe para, por mund të zgjidhet. Por ka vetëm një mënyrë për t'u marrë me gabimet në programe: ato duhet të korrigjohen. Më mirë akoma, mos e bëni. Më mirë akoma, bëjini ato sa më të vështira që të jetë e mundur. Dhe kjo është ajo që synojnë të gjitha kërkimet në fushën e gjuhëve të programimit. Dhe ju duhet të duroni humbjen e efikasitetit.

Qëllimi i këtij rishikimi ishte një përpjekje për t'i dhënë lexuesit një ide mbi diversitetin e gjuhëve ekzistuese të programimit. Midis programuesve, shpesh ekziston një mendim për "zbatueshmërinë universale" të një gjuhe të caktuar (C, C ++, Pascal, etj.). Ky mendim lind për disa arsye: mungesa e informacionit, zakoni, inercia e të menduarit. U përpoqa të kompensoja pak faktorin e parë. Sa për pjesën tjetër, mund të them vetëm se një profesionist i vërtetë duhet të përpiqet vazhdimisht të përmirësojë aftësitë e tij profesionale. Dhe për këtë nuk duhet të keni frikë të eksperimentoni. Po sikur të gjithë përreth të shkruajnë në C/C++/VB/Pascal/Perl/Java/… (nënvizoni sipas nevojës)? Pse të mos provoni diçka të re? A do të ishte kjo më efikase? Sigurisht, para se të filloni të përdorni një gjuhë të re, duhet të studioni me kujdes të gjitha tiparet e saj, duke përfshirë praninë e një zbatimi efektiv, aftësinë për të bashkëvepruar me modulet ekzistuese, etj., Dhe vetëm atëherë të merrni një vendim. Sigurisht, gjithmonë ekziston rreziku për të shkuar në rrugën e gabuar, por ... Vetëm ai që nuk bën asgjë nuk gabon.

Dhe më tej. Kam dëgjuar dhe ndonjëherë kam marrë pjesë në diskutime të formës “gjuha A është më e mirë se gjuha B”. Shpresoj që pas leximit të këtij rishikimi, shumë do të binden për kotësinë e mosmarrëveshjeve të tilla. Maksimumi që mund të diskutohet janë avantazhet e një gjuhe ndaj tjetrës në zgjidhjen e një problemi të caktuar në kushte të caktuara. Këtu, me të vërtetë, ndonjëherë ka diçka për të diskutuar. Dhe ndonjëherë zgjidhja nuk është aspak e qartë. Sidoqoftë, të argumentosh "në përgjithësi" është padyshim marrëzi.

Ky artikull kishte për qëllim të ishte një përgjigje për ata që bërtasin "Gjuha X DUHET TË VDESË". Shpresoj se përgjigja doli të jetë mjaft e përshtatshme dhe bindëse. Shpresoj gjithashtu që artikulli të ketë, përveç vlerave polemike, edhe edukative.

>> Artikuj

Si u shfaqën gjuhët e programimit?

Gjuhët e programimit janë krijuar për disa dekada, dhe kjo punë ka qenë e gjatë, komplekse dhe e lodhshme. Në fakt, gjuha e makinës është një zinxhir zero dhe njësh të renditura logjikisht, shkelja e sekuencës së të cilave do të bëjë që programi të ndalet dhe kompjuteri të mos funksionojë, dhe kërkesat për programuesit që krijuan mënyra të reja të shkrimit të komandave vareshin nga zhvillimi. të makinave.

Historia e gjuhëve të programimit: Fillimi

Fillimi i viteve 1940 u shënua nga shfaqja e gjuhës së parë për programe - gjuha e asamblesë, e cila përfshinte një grup fjalësh të shkurtra ose shkurtesat e tyre në komandë. Assembler konsiderohet një gjuhë programimi e nivelit të ulët, për këtë arsye quhet një gjuhë e orientuar nga makina. Megjithatë, programet e shkruara në këtë gjuhë dallohen për nga efikasiteti dhe performanca.

Gjuhët e nivelit të lartë: Gjuhët algoritmike

Zhvillimi i teknologjisë dhe futja e llojeve të reja të pajisjeve dixhitale i detyroi programuesit të shpiknin një gjuhë të nivelit më të lartë me fokus në algoritmet e shkrimit. Kështu u shfaqën programe-përkthyes shtesë, të cilët nisën veprimin e algoritmit. Ekzistojnë dy mënyra përkthimi:

- përpilimi ose kompilimi, kur udhëzimet hyjnë në veprim pas përkthimit të të gjithë paketës së programit;

- interpretimi ose interpretimi, në të cilin ekzekutimi dhe përkthimi i gjuhës së makinës kryhet në mënyrë sinkrone.

Veçoritë e programeve të tilla janë: lehtësia e krijimit (shkrimi i kodit), aftësia për të korrigjuar gjatë përdorimit, lehtësia e leximit.

Viti 1954: programim i strukturuar

Bota është bërë e vetëdijshme për përpiluesin e parë të një gjuhe programimi të një niveli shumë të lartë. E kemi fjalën për Fortran, nga shkurtesa angleze FORmula TRANSlator. Zhvillimi i gjuhës u thjeshtua, por kur shkruante programe të mëdha, gjuha u bë pothuajse e palexueshme, megjithëse u lëshuan shumë versione të Fortran.

Kulmi i zhvillimit të gjuhëve të programimit bie pikërisht në vitet 50-60, atëherë krijohen disa opsione:

- Algol(1958), krijuar në bazë të blloqeve të izoluara;

- Cobol(1959) - gjuha e biznesit dhe menaxhimit, baza e C +;

- bazë(1965), i njohur për programuesit deri më sot.

Në vitin 1970 u krijua një gjuhë programimi, me emrin e shkencëtarit B. Pascal - Pascal. Programet e krijuara në këtë gjuhë ishin të lehta për t'u lexuar dhe nuk kishte vështirësi në mësim. Një gjuhë e thjeshtë dhe e strukturuar mirë është ende e popullarizuar në mesin e programuesve fillestarë.

Disi më vonë, në 1972, u zhvillua një gjuhë e dytë programimi - C, e cila përfshinte arritjet e gjuhëve të krijuara më parë, risitë, ajo bëhet ndoshta më e popullarizuara në mesin e përdoruesve dhe krijuesve të programeve. E thjeshtë, e strukturuar mirë, e lehtë për t'u mësuar, C po bëhet e preferuara midis gjuhëve të tjera.

Programimi i orientuar nga objekti (OOP): 1970

Ideologjia e programimit procedural për funksionet që nuk janë të lidhura zyrtarisht në përpunim i detyroi zhvilluesit të ulen për të krijuar një koncept të ri për përpilimin e një gjuhe. Baza e koncepteve të OOP janë:

Modeli i një objekti që nuk ekziston ende;

Një shembull i një klase;

Abstraksion, duke i dhënë karakteristika një objekti;

Enkapsulimi, kur kombinohen vetitë dhe metodat, me qëllim fshehjen e të dhënave;

Trashëgimia;

Polimorfizmi.

Simula ishte gjuha e parë, dhe Smalltalk u shpik pak më vonë. Aktualisht, ky lloj gjuhe programimi mbështetet nga programet moderne: Object Pascal (Delphi), C++, C#, Java.

Sekuenca e zhvillimit të gjuhëve të programimit varet nga prezantimi i risive të reja, kështu që pas ardhjes së internetit, një gjuhë u bë e nevojshme për të hyrë në burime, faqe. Teknologjia World Wide Web (WWW) lindi gjuhë të reja që ende përdoren në mënyrë aktive sot: Java, Perl, SQL, HTML, PHP, JavaScript.



Artikuj të ngjashëm: