Navedite koje sve vrste programskih jezika postoje. Načini implementacije jezika. Daljnji razvoj programskih jezika

💖 Sviđa li vam se? Podijelite vezu sa svojim prijateljima

Materijal s Wikipedije

Programski jezik- formalni znakovni sustav dizajniran za snimanje računalnih programa. Programski jezik definira skup leksičkih, sintaktičkih i semantičkih pravila koja definiraju izgled programi i radnje koje će izvođač (najčešće računalo) izvoditi pod njegovom kontrolom.

Prvi veliki napredak bila je apstrakcija koju je omogućio asemblerski jezik, a s njime i rođenje prvih automatskih alata za generiranje strojnog koda. Time su smanjene trivijalne pogreške, poput broja koji odgovara operaciji, koje su iznimno glomazne i teško ih je otkriti, ali se lako popravljaju.

Treba napomenuti da postoje jezici koji kombiniraju karakteristike visoke i niske razine. Jezik je dizajniran imajući na umu sljedeće značajke. Filozofija objektno orijentiranog programiranja razlikuje se od konvencionalnog programiranja. Osiguranje. Postoje mnoga ograničenja, posebno za aplete, koja ograničavaju što možete, a što ne možete učiniti s kritičnim resursima vašeg računala. Prijenosni. Bez obzira na arhitekturu. Ovaj kod se tumači na isti način različita računala, trebate samo implementirati tumača za svaku platformu. Višenavojni. Višenitni jezik je jezik koji može izvesti različite linije kod u isto vrijeme. Protumačeno. Dinamičan. Napomena: Strojni kod je binarni kod, koje računalo razumije i može izvršiti.

U isto vrijeme, 1940-ih, pojavljuju se električna digitalna računala i razvija se jezik koji se može smatrati prvim računalnim programskim jezikom visoke razine - “Plankalkül”, koji je kreirao njemački inženjer K. Zuse između 1945. i 1945. godine.

Sljedeći primjer. Prve dvije vrste komentara su one koje svaki programer poznaje i koristi iste. Ovi komentari služe kao opis deklariranog elementa, omogućujući nam da generiramo dokumentaciju naših klasa, napisanu u isto vrijeme kada se generira kod. U ovoj vrsti komentara dokumentacije dopušteno vam je unijeti neke tokene ili ključne riječi, što će uzrokovati da sljedeće informacije izgledaju drugačije od ostatka dokumentacije.

Identifikatori za imena varijabli, funkcija, klasa i objekata; sve što programer mora definirati ili koristiti. Sljedeći znakovi mogu biti slova ili brojevi. Velika i mala slova razlikuju se i ne postoji najveća duljina. To će biti valjani identifikatori.

Od sredine 1950-ih počeli su se pojavljivati ​​jezici treće generacije kao što su Fortran, Lisp i Cobol. Programski jezici ove vrste su apstraktniji (također se nazivaju "jezici visoke razine") i univerzalni, te nemaju strogu ovisnost o određenoj hardverskoj platformi i strojnim uputama koje se na njoj koriste. Program na jeziku visoke razine može se izvršiti (barem u teoriji; u praksi obično postoji niz specifičnih verzija ili dijalekata implementacije jezika) na bilo kojem računalu koje ima prevoditelj za taj jezik (alat koji prevodi program u strojni jezik, nakon čega ga može izvršiti procesor).

Ne sastoji se cijelo stablo imenika od korisničkih imenika. Postoje mnogi koji se obično koriste ili imaju vlastiti sustav s kojim bi trebali biti upoznati. Korijen s kojeg svi "vise" Ovo je možda najvažniji direktorij. Sadrži podatkovne datoteke i konfiguraciju sustava, datoteku zaporke, konfiguraciju terminala, mrežu itd.

Katalog privremenih popravaka. Prvi odjeljak sadrži sve naslove. Kao drugi odjeljak imamo funkcije. Deklaracija funkcija koje se nalaze na početku programa, možda glavna funkcija prije ostalih funkcija. Kada se program izvrši, prva stvar koja se izvrši je ova funkcija, a ostatak programa slijedi odatle. Wirth je dizajnirao jezik da bude dobar prvi programski jezik za ljude koji počinju učiti programirati. Pascal ima relativno mali broj koncepata za učenje i učenje.

Ažurirane verzije navedenih jezika još uvijek se koriste u razvoju. softver, a svaki od njih imao je određeni utjecaj na kasniji razvoj programskih jezika. U isto vrijeme, krajem 1950-ih, pojavljuje se Algol, koji je također poslužio kao temelj za niz daljnjih razvoja na ovom području. Treba napomenuti da su na format i upotrebu ranih programskih jezika uvelike utjecala ograničenja sučelja.

Njegov dizajn olakšava pisanje programa koristeći stil koji se općenito smatra dobrom standardnom praksom programiranja. Još jedan Wirthov cilj dizajna je jednostavna implementacija. Razvio je jezik za koji bi bilo lako napisati kompilator za novu vrstu računala.

Program je niz instrukcija. Proces izvršavanja ovih instrukcija naziva se pokretanje programa. Programi sadrže funkcije unosa, obrade i izlaza. Osoba koja rješava probleme pisanjem programa na računalu poznata je kao programer. Nakon analize problema i izrade plana za njegovo rješavanje, napišite i testirajte program koji daje upute računalu da izvrši plan. Postupak koji provodi programer definiran je kao "rješavanje problema". Ali mora se istaknuti da programer i korisnik nisu isto.

Poboljšanje

Vizualni (grafički) programski jezici postaju važno područje rada, u kojima se proces "pisanja" programa kao teksta zamjenjuje procesom "crtanja" (konstruiranje programa u obliku dijagrama) na ekranu računala. Vizualni jezici pružaju jasnoću i bolju ljudsku percepciju programske logike.

Korisnik je onaj koji koristi program. Primjer za kalkulator. Tanenbaum. Poslužitelj je ovo isprobao prije nekoliko dana i bio je ugodno iznenađen. Budući da disketa pohranjuje samo 44 megabajta podataka, ne možete koristiti isti kernel kao disketa. Zatim pokrenite sljedeću naredbu iz imenika.

Postavite samo ono što stvarno trebate. Vaši izbori mogu varirati ovisno o tome što odaberete uključiti. Sada unesite sljedeću naredbu. Sažimanje posljednjeg kernela. Datotečni sustav: to nije samo skup datoteka. Sada moramo stvoriti datotečni sustav za disketu. Umjesto kopiranja datoteka budući da su izravno na disketi, komprimiramo ih prije kopiranja. Bit će malo teže promijeniti sve zauvijek. Prvo unesite sljedeće.

Standardizacija programskih jezika

Stvoreni su međunarodni standardi za mnoge široko korištene programske jezike. Posebne organizacije redovito ažuriraju i objavljuju specifikacije i formalne definicije odgovarajućeg jezika. U okviru takvih odbora nastavlja se razvoj i modernizacija programskih jezika i rješavaju pitanja proširenja ili podrške postojećim i novim jezičnim konstruktima.

Gdje je "mjesto" na tvrdom disku gdje ćete raspakirati datotečni sustav. Zatim moramo instalirati ovaj datotečni sustav koji smo stvorili. Da biste to učinili, trebate kompajlirati kernel vašeg stroja koristeći opciju. Bilo kao modul ili u jednoj jezgri. Ne zaboravite ponovno pokrenuti računalo ako trebate ponovno kompajlirati kernel! Sada biste trebali kopirati sve datoteke koje su vam potrebne u novi datotečni sustav.

Da bismo to učinili, moramo komprimirati datotečni sustav unosom sljedećih naredbi. Sada je važno provjeriti veličinu kernela. Zatim podijelite veličinu jezgre. Ubuduće zamijenite redoslijede koji se prikazuju za ukupan broj kilobajta koji ste izračunali. Sada kopirajte kernel na disketu pomoću sljedeće naredbe.

Vrste podataka

Moderna digitalna računala su binarna i pohranjuju podatke u binarnom kodu (iako su moguće i implementacije u drugim brojevnim sustavima). Ovi podaci obično odražavaju informacije iz stvarnog svijeta (imena, bankovni računi, mjere itd.) koji predstavljaju koncepte visoke razine.

Ova naredba će zapisati kernel na disketu. Zatim izdajte sljedeću naredbu kako bi kernel mogao pronaći korijen datotečnog sustava na disketi. Sada ćete morati napraviti mali heksadecimalni izračun. Na kraju, unesite sljedeću kopiju za kopiranje datotečnog sustava na disketu.

Korijen sustav datoteka kopirat će se na disketu odmah nakon kernela. Već ga imate! Za drugu disketu postupak je jednostavniji. Kopirajte datoteke koje želite na disketu. Međutim, da biste koristili datoteke na drugom pogonu, morat ćete unijeti sljedeće nakon dizanja s disketnog pogona.

Poseban sustav kojim se organiziraju podaci u programu je sustav tipa programski jezik; razvoj i proučavanje sustava tipova poznato je kao teorija tipova. Jezici se mogu podijeliti na one koji imaju statično tipkanje I dinamičko tipkanje, i jezici bez tipa(Na primjer, Dalje).

Kada apstrahiramo opcode i zamijenimo ih riječju koja je ključna za njegovo značenje, a koja se obično naziva mnemotehnika, imamo koncept asemblerskog jezika. Dakle, asemblerski jezik možemo jednostavno definirati na sljedeći način. Asemblerski jezik je prva apstrakcija strojnog jezika, koja se sastoji od pridruženih ključnih riječi koda koje programeru olakšavaju korištenje.

Kao što vidite, asemblerski jezik se izravno prevodi u strojni jezik, i obrnuto; to je samo apstrakcija koja ljudima olakšava korištenje. S druge strane, računalo ne razumije direktno asemblerski jezik; treba ga prevesti u strojni jezik. U početku se ovaj proces izvodio ručno pomoću radnih listova u kojima su programske tablice bile napisane slično primjeru kalkulatora koji smo vidjeli gore. Ali budući da je prijevod bio tako izravan, ubrzo su se pojavili asemblerski programi, koji su prevoditelji koji pretvaraju izvor u objektni kod.

Statički tipizirani jezici mogu se dalje podijeliti na jezike sa obvezna deklaracija, gdje svaka deklaracija varijable i funkcije ima obaveznu deklaraciju tipa, a jezici s zaključene vrste. Ponekad se nazivaju dinamički upisani jezici latentno upisano.

Strukture podataka

Sustavi tipova u jezicima visoke razine omogućuju definiranje složenih, složenih tipova, takozvanih struktura podataka. Obično se strukturni tipovi podataka formiraju kao kartezijanski umnožak osnovnih (atomskih) tipova i prethodno definiranih kompozitnih tipova.

Na primjer, možemo spomenuti tri potpuno različita jezika, koji ipak proizlaze iz primjene prethodnih koncepata. Imamo 3 različitih proizvođača, koji se međusobno natječu i svaki od njih koristi različite koncepte u proizvodnji svojih procesora, njihovoj arhitekturi i programiranju; Svi ovi aspekti doprinose činjenici da se strojni jezik i asemblerski jezik dosta mijenjaju.

Proces evolucije doveo je do nekih nedostataka koje ćemo sada vidjeti kao prednosti korištenja asemblerskog jezika u odnosu na jezik visoke razine.

  • Ubrzati.
  • Učinkovitost veličine.
  • Fleksibilnost.
S druge strane, budući da je primitivniji jezik, Assembly ima neke nedostatke u odnosu na jezike visoke razine.

Osnovne strukture podataka (popisi, redovi čekanja, hash tablice, binarna stabla i parovi) često se predstavljaju posebnim sintaktičkim konstruktima u jezicima visoke razine. Takvi se podaci automatski strukturiraju.

Semantika programskih jezika

Postoji nekoliko pristupa definiranju semantike programskih jezika.

  • Vrijeme programiranja.
  • Izvrsni izvorni programi.
  • Rizik od neočekivanih utjecaja na resurse.
  • Nedostatak prenosivosti.
Proces prevođenja koji izvode prevoditelji uključuje dodatni računski proces koji programer želi izvesti. Stoga ćemo otkriti da je tumač uvijek sporiji nego što radi istu stvar u asemblerskom jeziku, jednostavno zato što zahtijeva dodatne troškove prevođenja programa svaki put kada ga izvršimo.

Odatle su došli kompajleri, koji su puno brži od interpretera jer prevode jednom i ostavljaju objektni kod, koji je već strojni jezik i može se vrlo brzo izvršiti. Iako je proces prevođenja složeniji i skuplji od sastavljanja programa, možemo ga zanemariti, za razliku od prednosti bržeg kodiranja programa.

Najrasprostranjenije su tri varijante: operacionalna, derivacijska (aksiomatska) i denotacijska (matematička).

  • Kada se opisuje semantika unutar operativni pristupa, obično se izvođenje konstrukata programskog jezika tumači pomoću nekog zamišljenog (apstraktnog) računala.
  • Aksiomatska semantika opisuje posljedice izvršavanja jezičnih konstrukata korištenjem jezika logike i određivanjem pred- i postuvjeta.
  • Zubni Semantika operira pojmovima tipičnim za matematiku - skupovi, korespondencija, kao i sudovi, izjave itd.

Paradigma programiranja

Programski jezik izgrađen je u skladu s jednim ili drugim osnovnim računalnim modelom i programskom paradigmom.

Međutim, većinu vremena kod koji proizvodi prevodilac manje je učinkovit od ekvivalentnog koda koji bi programer napisao. Razlog je taj što prevodilac nema mnogo inteligencije i mora biti u stanju proizvesti generički kod koji služi i jednom i drugom programu; umjesto toga, ljudski programer može iskoristiti specifične karakteristike problema, smanjujući općenitost, ali u isto vrijeme ne uzalud trošiti instrukcije, ne radeći nijedan proces koji nije potreban.

Stoga, kada je brzina programa kritična, Assembly postaje logičan kandidat kao jezik. Stoga se preporučuje najprije optimizirati ove aspekte potreban jezik i koristite Assembler samo u slučajevima kada je potrebna veća optimizacija i ne može se postići ovim sredstvima. Iz istih razloga koje smo vidjeli u aspektu brzine, kompajleri i interpreteri generiraju više strojnog koda nego što je potrebno; Zato izvršni program rastući. Stoga, kada je važno smanjiti veličinu izvršne datoteke, poboljšati korištenje memorije, kao i dobiti prednosti u brzini, može biti zgodno koristiti asemblerski jezik.

Unatoč činjenici da je većina jezika usmjerena na imperativni model računalstva, definiran von Neumannovom arhitekturom računala, postoje i drugi pristupi. Možemo spomenuti jezike s modelom računanja stog (Forth, Factor, PostScript itd.), kao i funkcionalne (Lisp, Haskell, REFAL, temeljen na modelu računanja koji je uveo sovjetski matematičar A. A. Markov Jr. itd.). ) i logičko programiranje (Prolog).

Među programima koji zahtijevaju minimalnu upotrebu memorije imamo viruse i upravljačke programe uređaja. Mnogi od njih su, naravno, napisani na asemblerskom jeziku. Gore navedeni razlozi donekle: možemo raditi stvari na drugom jeziku, ali ih želimo raditi učinkovitije. Ali svi jezici visoke razine imaju ograničenja u kontroli; Praveći apstrakcije ograničavaju svoje sposobnosti. Odnosno, postoje zadaci koje stroj može obaviti, ali jezik visoke razine to ne dopušta. Međutim, vrlo je jednostavno u asembleru jer imamo izravan pristup hardveru monitora.

Trenutno se također aktivno razvijaju deklarativni i vizualni programski jezici, kao i metode i alati za razvoj jezika specifičnih za probleme (vidi Jezično orijentirano programiranje).

Načini implementacije jezika

Programski jezici mogu se implementirati kao kompilirani, interpretirani i ugrađeni.

Program u prevedenom jeziku pretvara se (kompilira) u strojni kod (skup uputa) pomoću prevoditelja (poseban program) za ove vrste procesor i zatim se sastavlja u izvršni modul, koji se može pokrenuti za izvođenje kao zaseban program. Drugim riječima, prevodilac prevodi izvorni kod programa iz programskog jezika visoke razine u binarne kodove procesorskih instrukcija.

Ako je program napisan na interpretiranom jeziku, tada interpreter izravno izvršava (interpretira) izvorni tekst bez preliminarni prijevod. U tom slučaju program ostaje na izvornom jeziku i ne može se pokrenuti bez tumača. Računalni procesor se, u tom pogledu, može nazvati tumačem strojnog koda.

Podjela na kompilirane i interpretirane jezike je uvjetna. Dakle, za bilo koji tradicionalno kompilirani jezik, kao što je Pascal, možete napisati tumač. Osim toga, većina suvremenih "čistih" interpretatora ne izvršava jezične konstrukcije izravno, već ih kompajlira u neku međureprezentaciju visoke razine (na primjer, s dereferenciranjem varijable i makro ekspanzijom).

Prevodilac se može stvoriti za bilo koji interpretirani jezik - na primjer, jezik Lisp, koji je izvorno interpretiran, može se kompilirati bez ikakvih ograničenja. Kod generiran tijekom izvođenja programa također se može dinamički prevesti tijekom izvođenja.

U pravilu se prevedeni programi izvršavaju brže i ne zahtijevaju dodatne programe za izvođenje jer su već prevedeni na strojni jezik. Istodobno, svaki put kada se programski tekst promijeni potrebno ga je ponovno prevesti, što usporava razvojni proces. Osim toga, prevedeni program može se izvršiti samo na istoj vrsti računala i obično pod istim operativnim sustavom za koji je prevoditelj dizajniran. Za izradu izvršne datoteke za drugu vrstu stroja potrebna je nova kompilacija.

Interpretirani jezici imaju neke specifičnosti dodatne mogućnosti(vidi gore), osim toga, programi na njima mogu se pokrenuti odmah nakon promjene, što olakšava razvoj. Često se može pokrenuti program na interpretiranom jeziku različiti tipovi strojeva i operativnih sustava bez dodatnog napora.

Međutim, interpretirani programi rade osjetno sporije od kompiliranih i ne mogu se izvršiti bez programa interpretera.

Ovaj vam pristup, u određenom smislu, omogućuje korištenje prednosti i tumača i prevoditelja. Treba spomenuti da postoje jezici koji imaju i interpreter i kompajler (Forth).

Programski jezici niske razine

Prva računala morala su se programirati pomoću binarnih strojnih kodova. Međutim, programiranje na ovaj način prilično je dugotrajan i težak zadatak. Kako bi se pojednostavio ovaj zadatak, počeli su se pojavljivati ​​programski jezici niske razine, što je omogućilo određivanje strojnih naredbi u obliku razumljivom ljudima. Kako bi ih pretvorili u binarni kod, stvoreni su posebni programi prevoditelja.

Primjer jezika niske razine je asemblerski jezik. Jezici niske razine usmjereni su na određenu vrstu procesora i uzimaju u obzir njegove značajke, tako da se program na asemblerskom jeziku može prenijeti na drugu hardversku platformu, mora se gotovo u potpunosti prepisati. Postoje određene razlike u sintaksi programa za različite prevoditelje. Istina, središnji procesori za računala iz AMD-a i Intela praktički su kompatibilni i razlikuju se samo u nekim specifičnim naredbama. Ali specijalizirani procesori za druge uređaje, na primjer, video kartice i telefone, sadrže značajne razlike.

Jezici niske razine obično se koriste za pisanje malih sistemski programi, upravljački programi uređaja, moduli sučelja s nestandardnom opremom, programiranje specijaliziranih mikroprocesora, pri čemu su najvažniji zahtjevi kompaktnost, brzina i mogućnost izravnog pristupa hardverskim resursima.

Programski jezici visoke razine

Specifične karakteristike računalne arhitekture ne uzimaju se u obzir pa se izrađene aplikacije lako prenose s računala na računalo. U većini slučajeva dovoljno je jednostavno rekompilirati program za određenu računalnu arhitekturu i operativni sustav. Razvijanje programa na takvim jezicima puno je lakše i čini se manje pogrešaka. Vrijeme razvoja programa značajno je smanjeno, što je posebno važno pri radu na velikim softverskim projektima.

Sada se među programerima vjeruje da se programski jezici koji imaju izravan pristup memoriji i registrima ili imaju umetke sklopa trebaju smatrati programskim jezicima s niskom razinom apstrakcije. Stoga se većina jezika koji su se smatrali jezicima visoke razine prije 2000. više ne smatraju takvima.

Nedostatak nekih jezika visoke razine je da su programi veliki u usporedbi s programima na jezicima niske razine. S druge strane, za algoritamski i strukturno složene programe, kada se koristi superkompilacija, prednost može biti na strani jezika visoke razine. Tekst programa na jeziku visoke razine manji je, međutim, ako se uzme u bajtovima, kod izvorno napisan u asemblerskom jeziku bit će kompaktniji. Stoga se uglavnom jezici visoke razine koriste za razvoj softvera za računala i uređaje koji imaju veliki volumen memorija. A različite podvrste asemblera koriste se za programiranje drugih uređaja gdje je veličina programa kritična.

Korišteni simboli

Moderni programski jezici dizajnirani su za korištenje ASCII-ja, odnosno dostupnosti svima grafički ASCII znakovi su nužan i dovoljan uvjet za pisanje bilo koje jezične konstrukcije. Menadžeri ASCII znakovi koriste se u ograničenoj mjeri: dopušteni su samo povratak na početak redaka CR, novi redak LF i vodoravni tabulator HT (ponekad i okomiti tabulator VT i pomak stranice FF).

Rani jezici, nastali u eri 6-bitnih znakova, koristili su ograničeniji skup. Na primjer, Fortran abeceda ima 49 znakova (uključujući razmak): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / () . , $ " :

Značajna iznimka je APL jezik, koji koristi mnogo posebnih znakova.

Upotreba znakova koji nisu ASCII (kao što su KOI8-R znakovi ili Unicode znakovi) ovisi o implementaciji: ponekad su dopušteni samo u komentarima i konstantama znakova/niza, a ponekad u identifikatorima. U SSSR-u su postojali jezici u kojima su sve ključne riječi bile napisane ruskim slovima, ali takvi jezici nisu stekli veliku popularnost (iznimka je ugrađeni programski jezik 1C:Enterprise).

Proširenje skupa korištenih simbola ograničeno je činjenicom da su mnogi projekti razvoja softvera međunarodni. Bilo bi vrlo teško raditi s kodom u kojem su imena nekih varijabli napisana ruskim slovima, drugih arapskim, a trećih kineskim znakovima. U isto vrijeme, za rad s tekstualnim podacima, programski jezici nove generacije (Delphi 2006, Java) podržavaju Unicode.

Kategorije programskih jezika

Matematički utemeljeni programski jezici

To su jezici čija je semantika direktno utjelovljenje određenog matematičkog modela, malo prilagođeno (bez narušavanja cjelovitosti) kako bi bio praktičniji jezik za razvoj stvarnih programa. Samo nekoliko jezika spada u ovu kategoriju, većina jezika dizajnirana je s prioritetom na mogućnosti učinkovitog prevođenja na Turingov stroj i imaju samo određene podskup u svom sastavu, utjelovljujući jedan ili drugi matematički model - od

Osobno računalo je sve do sredine šezdesetih godina bilo preskup stroj koji je služio isključivo za određene zadatke i koji je obavljao samo jedan zadatak odjednom.

Programski jezici u to vrijeme, kao i računalni uređaj na kojem su se koristili, razvijeni su samo za obavljanje specifičnih zadataka, na primjer, za znanstveno računalstvo, a ne. Budući da su strojevi, kao što smo gore rekli, bili vrlo skupo zadovoljstvo, a istovremeno se obavljao samo jedan zadatak, vrijeme se smatralo skupim - stoga je brzina izvršavanja programa bila u prvom planu.

Međutim, tijekom šezdesetih godina cijena je počela padati i došlo je vrijeme kada su si i male tvrtke mogle priuštiti ovo zadovoljstvo. Osim toga, brzina se povećala, a strojevi su dugo stajali u stanju mirovanja bez obavljanja ikakvih zadataka. A kako bi se to zaustavilo, uvedeni su sustavi dijeljenja vremena.

Procesorsko vrijeme u tim je sustavima bilo, kako bi se to reklo, "sječeno", a korisnici su mogli naizmjenično primati kratke dijelove tog istog vremena. Računalni uređaj počeo je raditi mnogo brže, što je omogućilo korisniku da se na terminalu osjeća kao da svoje aktivnosti obavlja sam sa sustavom. Uređaj je, zauzvrat, bio manje u stanju mirovanja, jer nije obavljao jedan, već nekoliko zadataka odjednom. Dijeljenje vremena značajno je smanjilo troškove hardverskog vremena, a sve zahvaljujući činjenici da jedan uređaj može dijeliti ne jedan korisnik, ili čak dva, već stotine.

Dakle, kada je energija postala jeftinija i dostupnija, oni koji su stvorili programske jezike počeli su sve više razmišljati o tome da softver učinimo praktičnijim za pisanje, a ne o brzini njihovog izvršavanja. „Male“ operacije, odnosno operacije atomskog tipa koje su izravno izvodili uređaji uređaja, kombinirane su u „volumnije“ operacije visoke razine i pojedinačne strukture s kojima je korisnicima bilo mnogo praktičnije i lakše obavljati svoje aktivnosti .

Što su programski jezici?

Sada ćemo dati jasan odgovor na ovo pitanje. Programski jezik je formalni znakovni sustav koji je namijenjen opisivanju algoritama u obliku koji je prikladniji za izvođača, na primjer, osobno računalo. Programski jezik uključuje paket semantičkih, sintaktičkih i leksičkih pravila koja se koriste za stvaranje računalnog programa. Koristeći takav jezik, programer će moći točno odrediti na koje će događaje računalo reagirati, kako će se informacije pohranjivati ​​i prenositi, kao i koje radnje treba izvršiti u tim različitim vrstama okolnosti.

Tijekom stvaranja prvih programabilnih uređaja izumljeno je gotovo tri tisuće programskih jezika. Svake godine njihov se broj povećava, a na popis se dodaju novi. Postoje jezici koje može koristiti samo mali broj kreatora koji su ih razvili, dok drugi postaju poznati velikom broju korisnika. Specijalizirani programeri koriste više od deset različitih programskih jezika u svom radu.

Zašto su potrebni programski jezici?

Proces rada računala je izvršavanje programa. Više rečeno jednostavnim jezikom, odnosno paket naredbi koje slijede određenim redoslijedom. Vrsta strojne instrukcije, koja se sastoji od nula i jedinica, označava koje radnje središnji procesor treba izvesti. Iz ovoga slijedi: kako bi se PC-u postavio redoslijed radnji koje treba izvršiti, specificiran je niz kodova binarnog tipa odgovarajućih naredbi. U strojnim kodovima softver se sastoji od mnogih naredbi. Pisanje takvog softvera je dugotrajno, teško i zamorno. Programer mora znati kombinaciju jedinica i nula koda binarnog tipa svakog programa, osim toga, mora zapamtiti kodove binarnog tipa adresa podataka koji se koriste tijekom njegovog izvođenja. Mnogo je lakše pisati softver na jeziku koji je bliži ljudskom prirodnom jeziku, a računalo prevesti taj program u strojne kodove. Upravo tako su se pojavili programski jezici, koji su namijenjeni posebno za pisanje softvera.

U današnje vrijeme postoji veliki broj različitih programskih jezika. Svaki od njih može se koristiti za rješavanje mnogih problema. Stručnjaci u svom području znaju točno koji programski jezik treba koristiti za rješavanje problema, budući da je svaki od jezika opremljen vlastitim mogućnostima, ciljajući na određene vrste zadataka, a također ima vlastiti način opisivanja objekata i koncepata koji koriste se za rješavanje velikog broja problema.

Programski jezici su podijeljeni u 2 grupe

Postoje jezici koji imaju niska razina i jezike koji su na visokoj razini.

U prvu skupinu spadaju asemblerski jezici, gdje se zapisi naredbi koriste u obliku simbola koji se brzo i jasno pamte. Umjesto niza naredbi binarnog tipa ispisuju se simboličke oznake, a umjesto adresa podataka binarnog tipa koji se koriste pri izvođenju naredbe, imena po izboru programera i imena tih podataka u obliku simbola su uzeti. Ovaj programski jezik ima još jedno ime - autocode ili mnemonički kod.

No, programske jezike visoke razine najčešće koriste za programe oni koji ih stvaraju. Takav jezik, u načelu, kao i ljudski jezik, ima svoje pismo, odnosno veliki broj simbola koji se koriste u jezicima. Ovi simboli su neophodni za sastavljanje ključnih riječi jezika. Svaka ključna riječ ima svoju funkciju, baš kao u jeziku na koji smo navikli, riječi koje se sastoje od slova abecede. Ključne riječi povezuju se međusobno u rečenice pomoću sintaktičkih pravila jezika. Svaka od svih rečenica odgovorna je za redoslijed radnji koje će PC izvesti.

Programski jezik, koji ima visoku razinu, je veza između računala i korisnika, pozivajući ga da komunicira s računalom koristeći metodu koja je najprikladnija za osobu. Vrlo često ovaj jezik pomaže odabrati pravu metodu za rješavanje problema.

Prije nego počne pisati softver u programskom jeziku koji ima visoku razinu, stručnjak izrađuje algoritam za rješavanje problema, naime izrađuje akcijski plan korak po korak koji se mora slijediti kako bi se riješio ovaj problem. Stoga se programski jezici koji zahtijevaju preliminarnu kompilaciju algoritma nazivaju jezicima algoritamskog tipa.

Pa, dolazimo, reklo bi se, do onog glavnog. Sada ćemo vam reći koji programski jezici postoje.

Koji su različiti programski jezici?

Fortran

Još sredinom pedesetih godina znanstvenici su počeli stvarati programske jezike. A prvi jezik ove vrste zvao se Fortran, a razvijen je 1957. godine. Koristi se za opisivanje algoritma za rješavanje znanstvenih i tehničkih problema pomoću digitalnog računala. Osim toga, poput prvih računalnih jedinica, jezik ove vrste korišten je za izvođenje prirodnih znanstvenih i matematičkih izračuna. Ovaj jezik, u poboljšanom obliku, preživio je do danas, a među suvremenim jezicima koji imaju visoku razinu najviše se koristi u provođenju znanstvenih istraživanja. Najčešće opcije danas: Fortran-I2, Fortran-I4, EASIC Fortran i njihove generalizacije.

ALGOL

Nastavljamo našu temu o programskim jezicima. Kao što već razumijete, sada ćemo govoriti o programskom jeziku kao što je Algol, koji se pojavio 1958-1960. U 1964.-1968. poboljšan je i pojavio se ALGOL 68. Jezik ove vrste razvio je odbor koji je uključivao znanstvenike iz Amerike i Europe i klasificiran je kao jezik visoke razine. Koristeći ovu vrstu jezika, algebarske formule mogu se lako prevesti u programske naredbe. Algol je bio popularan ne samo u europskim zemljama, već iu Rusiji. Ova vrsta jezika imala je primjetan utjecaj na sve programske jezike stvorene nakon nekog vremena, a posebno je to utjecalo na jezik Pascal. Ovaj tip jezici su, u načelu, kao i jezik Fortran, stvoreni za rješavanje znanstvenih i tehničkih problema. Osim toga, jezik je korišten kao sredstvo podučavanja osnova programiranja, odnosno umijeća sastavljanja softvera.

COBOL

Programski jezik Cobol nastao je 1959.-1960. godine i ovaj jezik pripada trećoj generaciji. Prije svega, namijenjen je za razvoj poslovnih aplikacija te za rješavanje gospodarskih problema, za obradu bankovnih podataka, za osiguravajuća društva i druge institucije. "Izumitelj" Kobola je Grace Hopper. COBOL se obično kritizira zbog njegove glomaznosti i opširnosti, budući da je jedan od ciljeva tvoraca ovog jezika bio približiti se što je više moguće Engleski jezik. Pritom je programski jezik imao za svoje vrijeme izvrsne alate za rad s podatkovnim strukturama i datotekama, što mu je, usput rečeno, osiguralo dug život u poslovnim aplikacijama. Barem u SAD-u - sigurno.

Lisp

Sljedeći na redu je programski jezik Lisp. Programski jezik Lisp razvijen je gotovo u isto vrijeme kada i programski jezik Cobol. Ovaj jezik se temelji na programskom predstavljanju linearnih lista simbola sustava, koji su glavna podatkovna struktura jezika. To je drugi najstariji programski jezik nakon Fortran-a. Opsežno se koristi za obradu informacija u obliku simbola i koristi se za izradu softvera koji simulira funkcioniranje ljudskog mozga.

Program kreiran u Lispu sastoji se od nizova izraza, odnosno formi. Rezultat programa je izračun tih izraza, napisanih u obliku popisa - jedne od glavnih struktura ove vrste jezika. Glavna točka Lisp programa je "život" u simboličkom prostoru.

OSNOVNI, TEMELJNI

Programski jezik BASIC razvili su programeri na Dartmouth Collegeu u SAD-u sredinom šezdesetih godina. Jezik se temeljio djelomično na Fortranu 2, a djelomično na ALGOL-60, napravljeni su i dodaci koji su ga učinili praktičnijim za rad u načinu dijeljenja vremena, a nakon nekoliko godina postao je prikladan za obradu teksta i matričnu aritmetiku. Ova vrsta programskog jezika je inicijalno implementirana na glavno računalo GE-265, koje podržava veliki broj terminala. U vrijeme kada se pojavio, suprotno uvriježenom mišljenju, to je bio kompilirani jezik.

Ova vrsta programskog jezika dizajnirana je tako da učenici mogu pisati programe koristeći terminale za dijeljenje vremena. Napravljen je ne samo da riješi problem koji se veže uz problematične, starije jezike, već je namijenjen i “običnim” korisnicima koje ne zanima brzina programa, već ih zanima mogućnost korištenja računalo za rješavanje svojih zadataka. Većina programera početnika, zbog jednostavnosti ove vrste jezika, počinje svoje programersko putovanje s njim.

utvrda

Programski jezik Forth pojavio se kasnih šezdesetih i ranih sedamdesetih. Ova vrsta jezika korištena je u kontrolnim zadacima raznih vrsta sustava nakon što je njen tvorac, Charles Moore, u njemu napisao softver koji je bio namijenjen upravljanju radioteleskopima na Zvjezdarnici u Arizoni.

Mnoga svojstva, poput fleksibilnosti, interaktivnosti i lakoće "izuma", učinila su Forth učinkovitim i atraktivnim jezikom u primijenjenom istraživanju i stvaranju alata. Očigledna područja primjene ove vrste programskog jezika su ugrađeni kontrolni sustavi. Uz sve navedeno, našao je primjenu iu programiranju osobnih računala s različitim operativnim sustavima.

Pascal

Nastavljajući temu, ne možemo ne primijetiti ovu vrstu programskog jezika kao Pascal. Pascal je nastao 1972. godine i dobio je ime po Blaiseu Pascalu, koji je nekoć bio veliki matematičar i izumitelj prve aritmetičke jedinice na svijetu. Tvorcem jezika s pravom se smatra švicarski znanstvenik i informatičar Nikolaus Wirth. Inovacija je korištena za podučavanje metoda programiranja. Pascal je programski jezik opće namjene.

Od svih njegovih značajki, glavne se mogu nazvati - ovo je najstrože tipkanje i prisutnost alata za programiranje strukturnog tipa. Pascal je postao jedan od prvih takvih jezika. Programski jezik Pascal uči vas kako ispravno napisati program i kako ispravno razviti metode za rješavanje problema, a također vam pomaže da naučite kako odabrati prave opcije za predstavljanje i organiziranje podataka koji se koriste u problemu. Jezik Pascal uveden je u srednjoškolske tečajeve informatike od 1983. godine. obrazovne škole SAD.

Nastavljajući temu programskih jezika, odlučili smo govoriti o drugoj vrsti jezika - jeziku Ada. Programski jezik Ada nastao je iz Pascala kasnih sedamdesetih i dobio je ime po Adi Lovelace, nadarenoj matematičarki. Upravo je ta talentirana žena 1843. godine cijelom svijetu objasnila mogućnosti analitičke jedinice Charlesa Babbagea. Ova vrsta jezika razvijena je po narudžbi Ministarstva obrane SAD-a, a isprva se koristila za rješavanje problema upravljanja svemirskim letom.

Programski jezik Ada je modularan, strukturiran i objektno orijentiran programski jezik koji sadrži mogućnosti programiranja paralelnih procesa visoke razine. Sintaksa ove vrste programskog jezika preuzeta je iz Pascala i Algola, proširena je i izvedena u logičkom i strogom stilu. Ada je programski jezik sa strogim tipovima koji potpuno eliminira rad s objektima koji nemaju tipove, a također smanjuje automatske pretvorbe na apsolutni minimum.

Programski jezik C daleko je najpopularniji i najkorišteniji među programerima. Ova vrsta programskog jezika potječe iz dva jezika, a to su BCPL i B. Martin Richards kreirao je BCPL 1967. godine kao jezik koji je bio namijenjen pisanju sistemskog softvera i kompilatora. U nastavku ćemo vam reći o čemu se radi. Ken Thompson 1970. da stvori više ranije verzije UNIX OS korišten na računalu DEC PDP-7. I u prvom i u drugom jeziku varijable nisu bile podijeljene na tipove - svaka vrijednost podataka imala je jednu riječ u memoriji.

Programski jezik SI prvi put je implementiran 1972. godine na računalu DEC PDP-11. Ali uspio je steći svoju popularnost i slavu kao operacijski sustav UNIX. Svi današnji glavni operativni sustavi napisani su u C ili C++. Programski jezik C dostupan je na velikom broju osobnih računala nakon nekoliko desetljeća. I usput, vrijedi napomenuti da je potpuno neovisan o hardveru.

Jezik C postao je tradicionalni programski jezik u kasnim sedamdesetima. Ova vrsta jezika opremljena je bogatim alatima koji pružaju mogućnost pisanja fleksibilnog softvera koji se koristi u svim vrstama modernih računala.

Prolog

Eto, došli smo do kraja. Našu temu o programskim jezicima završit ćemo pričom o najnovijem jeziku na ovim prostorima – a zove se Prolog. Ovaj tip jezika smatra se programskim jezikom budućnosti, a nastao je početkom sedamdesetih. U razvoju su sudjelovali stručnjaci sa Sveučilišta u Marseilleu. Nazvali su ga prema riječima “Programiranje u jeziku LOGIKE”. Programski jezik nastao je na temelju zakona matematičke logike. Ovaj tip jezika, za razliku od prethodno opisanih programskih jezika, nije algoritamski i spada u takozvane deskriptivne jezike, odnosno jezike deskriptivne vrste.

Sada razgovarajmo o tome što su kompilator i interpreter?

Prevodilac i tumač

Razvijanje jezika koji bi bio pogodan za pisanje programa nije dovoljno. Svaki jezik mora imati prevoditelja, koji je poseban program- prevoditelj.

Dakle, prevoditelj je program koji je dizajniran za prevođenje softvera koji je napisan na jednom programskom jeziku u softver na drugom programskom jeziku. Ovaj proces prevođenja naziva se prevođenje. Primjer prevoditelja je complitor, koji je također program. Namijenjen je prevođenju softvera koji je napisan na bilo kojem jeziku u softver u strojnom kodu. Taj se proces naziva kompilacija.

Postoji još jedna metoda koja može kombinirati procese prevođenja i izvršavanja programa, a zove se interpretacija. Bit procesa je sljedeća: prvo se prevodi u strojne kodove, a zatim se izvršava prva linija softvera. Kada je prvi red dovršen, počinje prijevod drugog reda, i tako dalje.

Dakle, iz ovoga možemo zaključiti da je usmeno prevođenje program koji je namijenjen prevođenju redak po redak i izvorni program.

Pa, čini se da je to sve za danas, sad znate što su programski jezici, i što su oni.



reci prijateljima