Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Windows 8
  • Sistemi i programski jezici. Lista programskih jezika

Sistemi i programski jezici. Lista programskih jezika

^

Jezici i sistemi programiranja

  1. Razvoj programskih jezika

Generacije programskih jezika

Uobičajeno je da se programski jezici dijele na pet generacija.

^ U prvoj generaciji uključuje jezike nastale ranih 50-ih, kada su se pojavili prvi računari. Bio je to prvi asemblerski jezik izgrađen na principu jedne instrukcije, jednog reda.

Procvat druga generacija programski jezici su došli u kasnim 50-im - ranim 60-im. Zatim je razvijen simbolički asembler u kojem se pojavio koncept varijable. Postao je prvi punopravni programski jezik. Zahvaljujući njegovom izgledu, brzina razvoja i pouzdanost programa značajno su porasli.

Pojava treća generacija programski jezici se obično pripisuju 60-im godinama. U ovom trenutku nastali su univerzalni jezici visoke razine, uz njihovu pomoć moguće je riješiti probleme iz bilo kojeg područja. Kvalitete novih jezika, kao što su relativna jednostavnost, nezavisnost od određenog računara i sposobnost korišćenja moćnih sintaksičkih konstrukcija, dramatično su povećale produktivnost programera. Struktura ovih jezika, razumljiva većini korisnika, privukla ih je za pisanje malih programa (obično inženjerske ili ekonomske prirode). Ogromna većina jezika ove generacije danas se uspješno koristi.

Od početka 70-ih godina do danas traje period jezika četvrta generacija... Ovi jezici su namijenjeni za implementaciju velikih projekata, povećavajući njihovu pouzdanost i brzinu stvaranja. Fokusirani su na specijalizirana područja primjene, gdje se dobri rezultati mogu postići korištenjem ne univerzalnih, već problemski orijentiranih jezika koji operišu sa specifičnim konceptima uskog predmetnog područja.

Tipično, ovi jezici imaju ugrađene moćne operatore za opisivanje funkcionalnosti u jednoj liniji koja bi zahtijevala hiljade linija izvornog koda za implementaciju u jezicima niže generacije.

Rođenje jezika peta generacija dogodilo sredinom 90-ih. Tu spadaju i sistemi za automatsko kreiranje aplikativnih programa pomoću alata za vizuelni razvoj, bez znanja programiranja.

Glavna ideja koja stoji iza ovih jezika je mogućnost automatskog generiranja rezultirajućeg teksta u univerzalnim programskim jezicima (koji zatim treba kompajlirati). Instrukcije se unose u računar u najvizuelnijem obliku koristeći metode koje su najpogodnije za osobu koja nije upoznata sa programiranjem.

^ Pregled programskih jezika visokog nivoa

Fortran

To je prvi kompajlirani jezik 1950-ih.

Programeri koji su razvijali programe isključivo na asemblerskom jeziku izrazili su ozbiljne sumnje u mogućnost jezika visokog nivoa visokih performansi, pa je glavni kriterijum za razvoj kompajlera Fortrana bila efikasnost izvršnog koda. Iako je Fortran bio pionir brojnih kritičnih programskih koncepata, lakoća pisanja programa žrtvovana je zbog mogućnosti generiranja efikasnog mašinskog koda. Međutim, stvoren je ogroman broj biblioteka za ovaj jezik, u rasponu od statističkih kompleksa do paketa satelitske kontrole. Fortran se i dalje aktivno koristi u mnogim organizacijama. Postoji standardna verzija Fortrana HPF (Fortran visokih performansi) za paralelne superračunare sa više procesora.

Cobol (Cobol).

To je kompajlirani jezik za upotrebu u ekonomiji i za rješavanje poslovnih problema, razvijen početkom 60-ih. Veoma je "opširno" - njegovi operatori ponekad izgledaju kao obične engleske fraze. U Cobolu su implementirani vrlo moćni alati za rad s velikim količinama podataka pohranjenih na raznim vanjskim medijima. Na ovom jeziku je kreirano mnogo aplikacija koje se i danas koriste.

Algol Sastavljeni jezik kreiran 1960. Bio je namijenjen da zamijeni Fortran, ali zbog svoje složenije strukture nije bio široko prihvaćen. Godine 1968. Stvorena je verzija Algola 68, koja je još uvijek ispred mnogih programskih jezika po svojim mogućnostima, ali zbog nedostatka dovoljno efikasnih računara za nju nije bilo moguće pravovremeno kreirati dobre kompajlere.

Pascal

Pascal jezik, nastao kasnih 70-ih, po mnogo čemu liči na Algol, ali pooštrava niz zahtjeva za strukturu programa i postoje mogućnosti koje mu omogućavaju da se uspješno koristi pri kreiranju velikih projekata.

Basic

Za ovaj jezik postoje i prevodioci i prevodioci, a on je na prvom mestu u svetu po popularnosti. Nastao je 60-ih godina kao nastavni jezik i vrlo je lak za učenje.

C (C)

Ovaj jezik je stvoren u Bell laboratoriji i u početku se nije smatrao mainstreamom. Bio je namijenjen da zamijeni asembler kako bi mogao kreirati programe koji su jednako efikasni i kompaktni, a da pritom ne zavise od određenog tipa procesora. C je na mnogo načina sličan Pascalu i ima dodatne mogućnosti za direktnu manipulaciju memorijom (pokazivače). Mnogi aplikativni i sistemski programi i brojni dobro poznati operativni sistemi (Unix) napisani su na ovom jeziku 70-ih godina.

C ++ (C ++)

C ++ je objektno orijentisana ekstenzija C jezika, razvijena 1980. godine. Implementira mnoge moćne nove karakteristike koje su dramatično povećale produktivnost programera, ali stvaranje složenih i pouzdanih programa zahtijeva visok nivo profesionalne obuke od programera.

Java (Java)

Ovaj jezik je stvorio Sun ranih 90-ih na bazi C++. Dizajniran je da pojednostavi razvoj aplikacija zasnovanih na C ++ isključujući sve funkcije niskog nivoa iz njega. Ali glavna karakteristika ovog jezika je kompilacija ne u mašinski kod, već u bajt kod nezavisan od platforme (svaka komanda zauzima jedan bajt). Ovaj bajt kod se može izvršiti pomoću interpretatora, čija je verzija JVM (Java Virtual Machine) danas kreirana za sve platforme.

Posebna pažnja posvećena je razvoju ovog jezika u dva pravca:


  • podrška za sve vrste mobilnih uređaja i mikroračunara ugrađenih u kućne aparate (Jini tehnologija);

  • kreiranje platformski nezavisnih softverskih modula sposobnih za rad na serverima u globalnim i lokalnim mrežama sa različitim operativnim sistemima (Java Beans tehnologija).
Do sada je nedostatak ovog jezika slabe performanse.

^ Programski jezici baza podataka

Ova grupa jezika razlikuje se od algoritamskih jezika, prije svega, po zadacima koji se rješavaju. Baza podataka je datoteka (ili grupa datoteka) koja je uređeni skup zapisa koji imaju uniformnu strukturu i organizirani su prema jednom šablonu (obično u obliku tabele). Baza podataka se može sastojati od više tabela. Pogodno je pohranjivati ​​u baze podataka razne informacije iz priručnika, kartoteka, računovodstvenih časopisa itd. Prilikom rada s bazama podataka najčešće je potrebno izvršiti sljedeće operacije:

Prve baze podataka pojavile su se veoma davno, čim se ukazala potreba za obradom velikih količina informacija i odabirom grupa zapisa po određenim kriterijumima. Za to je kreiran Structured Query Language (SQL). Zasnovan je na moćnoj matematičkoj teoriji i omogućava efikasnu obradu baze podataka manipulisanjem grupama zapisa, a ne pojedinačnim zapisima.

Za upravljanje velikim bazama podataka i njihovu efikasnu obradu razvijeni su DBMS (Database Management Systems).

Zapravo, svaki DBMS, osim što podržava SQL jezik, ima svoj jedinstveni jezik koji je fokusiran na karakteristike ovog DBMS-a i nije prenosiv na druge sisteme.

Danas postoji pet vodećih proizvođača DBMS-a u svijetu:

Microsoft (SQL Server), IBM (DB2), Oracle, Software AG (Adabas), Informix i Sybase. Njihovi proizvodi imaju za cilj da podrže istovremeni rad hiljada korisnika na mreži, a baze podataka mogu biti pohranjene u distribuiranom obliku na nekoliko servera.

Pojavom personalnih računara stvoreni su takozvani desktop DBMS. DBMS dBase II, čiji je jezik interpretiran, smatra se prednikom modernih programskih jezika baza podataka za PC. Zatim su za njega kreirani kompajleri, pojavili su se DBMS FoxPro i Clipper koji podržavaju dijalekte ovog jezika. Danas su slične, ali nekompatibilne verzije dBase porodice jezika implementirane u Microsoft Visual FoxPro i Inprise Visual dBase.

^ Programski jezici za internet

Aktivnim razvojem globalne mreže stvoreni su mnogi popularni programski jezici, prilagođeni posebno za Internet.

Svi se razlikuju po karakterističnim karakteristikama: jezici se tumače, prevodioci za njih se distribuiraju besplatno, a sami programi su u izvornom kodu. Takvi jezici se nazivaju jezici skripti.

HTML. Dobro poznati jezik za papirologiju. Vrlo je jednostavan i sadrži osnovne komande za formatiranje teksta, dodavanje slika, postavljanje fontova i boja, organiziranje veza i tabela. Sve web stranice su napisane u HTML-u ili koriste HTML ekstenzije.

Perl. 1980-ih, Larry Wall je razvio Perl jezik. Zamišljen je kao alat za efikasnu obradu velikih tekstualnih fajlova, generisanje tekstualnih izveštaja i upravljanje zadacima. Perl je mnogo moćniji od jezika poput C. Uvodi mnoge uobičajene funkcije za rad sa stringovima, nizovima, svim vrstama alata za konverziju podataka, kontrolu procesa, rad sa sistemskim informacijama itd.

VRML. Godine 1994. jezik VRML kreiran je za organizovanje virtuelnih trodimenzionalnih interfejsa na Internetu. Omogućava vam da u tekstualnom obliku opišete različite trodimenzionalne scene, osvjetljenje i sjene, teksture (premaze objekata), rotiranje u bilo kojem smjeru, skaliranje, podešavanje osvjetljenja itd.

^ Jezici za modeliranje

Prilikom kreiranja programa i formiranja struktura baza podataka često se koriste formalne metode njihovog predstavljanja - formalne notacije, uz pomoć kojih možete vizuelno predstaviti tabele baze podataka, polja, programske objekte i odnose između njih u sistemu koji ima specijalizovani urednik i generator izvornih kodova programa na osnovu kreiranih modela. Takvi sistemi se nazivaju CASE sistemi. Aktivno koriste IDEF notacije, a u posljednje vrijeme UML postaje sve rašireniji.

      1. ^

        Savremeni sistemi programiranja

Osnove programiranja vizuelnog interfejsa

Jedan od ćorsokaka, ili kriza programiranja, nedavno je povezan sa razvojem grafičkog korisničkog interfejsa. Ručno programiranje bilo kojih prozora, dugmadi, menija poznatih korisniku, rukovanje događajima miša i tastature, uključujući slike i zvuk u programima, zahtevalo je sve više vremena programera. U nekim slučajevima, cijela ova usluga počela je zauzimati i do 80-90% volumena programskih kodova. Štaviše, sav ovaj rad je često bio protraćen gotovo uzalud, jer se godinu dana kasnije generalno prihvaćen stil grafičkog interfejsa promenio i sve je trebalo početi iznova.

Izlaz iz ove situacije ukazivala su dva pristupa.

Prvi je standardizacija mnogih funkcija interfejsa, što je omogućilo korišćenje biblioteka dostupnih, na primer, u Windows-u. Kao rezultat toga, prilikom promjene stila grafičkog interfejsa (na primjer, prilikom prelaska sa Windows 3.x na Windows 95), aplikacije su se mogle automatski prilagoditi novom sistemu bez ikakvog reprogramiranja.

Drugi revolucionarni korak bio je pojavljivanje vizuelnog programiranja, koje je nastalo u Visual Basic-u i briljantno je otelotvoreno u Delphi i Borlandovom C++ Builder-u.

Vizuelno programiranje je omogućilo da se dizajn korisničkog interfejsa svede na jednostavne i intuitivne procedure koje omogućavaju da se u minutima ili satima uradi ono što je ranije zahtevalo meseci rada.

Primjer. U Delphiju to izgleda ovako. Radite u Delphi integrisanom razvojnom okruženju, koje vam pruža obrasce (možda ih ima nekoliko u aplikaciji) na koje se komponente uklapaju. Ovo je obično prozorski oblik, iako mogu postojati nevidljivi oblici. Koristeći miš, ikone komponenti dostupnih u Delphi bibliotekama se prenose na obrazac i postavljaju. Jednostavnim manipulacijama možete promijeniti veličinu lokacije ovih komponenti. Istovremeno, sve vreme tokom procesa dizajna, rezultat je vidljiv - slika forme i komponenti koje se nalaze na njoj. Rezultati dizajna su vidljivi čak i bez kompajliranja programa.

Glavna prednost je što tokom dizajna forme i postavljanja komponenti na njega, Delphi automatski generiše programske kodove, uključujući odgovarajuće fragmente koji opisuju ovu komponentu. A zatim, u odgovarajućim dijaloškim okvirima, korisnik može promijeniti zadane vrijednosti komponenti i, ako je potrebno, napisati rukovaoce za neke događaje. U stvari, projektovanje se svodi na postavljanje komponenti na obrazac, postavljanje nekih njihovih svojstava i pisanje rukovalaca događajima, ako je potrebno.

Komponente mogu biti vizualne, vidljive kada je aplikacija pokrenuta i nevizualne, koje obavljaju određene uslužne funkcije. Vizuelne komponente su odmah vidljive na ekranu tokom procesa dizajna u istom obliku u kojem će ih korisnik videti tokom rada.

Delphijeve biblioteke vizuelnih komponenti uključuju mnoge tipove komponenti i njihova nomenklatura se vrlo brzo širi od verzije do verzije. Ono što je već dostupno dovoljno je za izradu gotovo bilo koje od najsloženijih aplikacija bez pribjegavanja kreiranju novih komponenti. Istovremeno, čak i neiskusni programer može kreirati aplikacije koje izgledaju profesionalno.

^ Osnovni sistemi programiranja

Najpopularniji univerzalni programski jezici danas su: Basic, Pascal, C ++ (C ++), Java.

Za svaki od ovih programskih jezika danas postoji mnogo programskih sistema koje proizvode različite kompanije i orijentisani su na različite modele računara i operativne sisteme.

Sljedeća vizualna okruženja za brzo dizajniranje programa za Windows su najpopularnija:


  • Basic: Microsoft Visual Basic;

  • Pascal: Borland Delphi;

  • C++: Borland C++ Bulider;

  • Java: Symantec Cafe.
Za razvoj serverskih i distribuiranih aplikacija možete koristiti Microsoft Visual C++ programski sistem, Borland proizvode, gotovo svaki Java programski alat.
    1. ^

      Arhitektura softverskih sistema

Dok većina samostalnih aplikacija - kancelarijski programi, razvojna okruženja, sistemi za pripremu teksta i slika - rade na jednom računaru, veliki informacioni sistemi (na primer, sistem automatizacije preduzeća) se sastoje od desetina i stotina pojedinačnih programa koji međusobno komuniciraju preko mreže. radi na različitim računarima. U takvim slučajevima se kaže da rade na drugoj softverskoj arhitekturi.


  1. Samostalne aplikacije. Rade na jednom kompjuteru.

  2. Aplikacije u arhitekturi servera datoteka. Računari korisnika sistema su ujedinjeni u mrežu, pri čemu se na svakom od njih (kod klijenta) pokreću kopije istog programa koji pristupaju serveru za podatke koji čuva fajlove koji su istovremeno dostupni svim korisnicima (po pravilu su to baze podataka). Server ima povećanu pouzdanost, visoke performanse, veliki kapacitet memorije, na njemu je instalirana posebna serverska verzija operativnog sistema. Kada nekoliko programa pristupa istoj datoteci u isto vrijeme, na primjer, da bi je ažurirali, mogu nastati problemi zbog nejasnoće definicije njenog sadržaja. Stoga se svaka promjena u javnoj datoteci dodjeljuje transakciji (osnovna operacija obrade podataka sa fiksnim početkom, krajem (uspješan ili neuspješan završetak) i nizom drugih karakteristika). Posebnost ove arhitekture je da se svi proračuni izvode na klijentskim lokacijama, što zahtijeva dovoljno produktivne računare na njima (to su tzv. sistemi sa debelim klijentom - program koji obavlja svu obradu informacija primljenih sa servera).

  3. Klijent-server aplikacije . Ova arhitektura je slična prethodnoj, samo što je server, osim što jednostavno pruža simultani pristup podacima, sposoban i za izvršavanje programa koji preuzimaju određenu količinu računanja (u fajl serveru arhitekture, implementiran je u potpunosti na klijentskim instalacijama). Zahvaljujući tome, moguće je povećati ukupnu pouzdanost sistema, jer je server mnogo stabilniji od računara, i ukloniti nepotrebno opterećenje sa klijentskih mesta na kojima se može koristiti. Aplikacije pokrenute na njima obavljaju male količine računanja, a ponekad se bave samo prikazom informacija primljenih od servera, zbog čega se nazivaju tankim klijentima.

  4. Aplikacije u višeslojnoj arhitekturi. Nedostatak prethodne arhitekture je to što se opterećenje na serveru dramatično povećava, a ako on zakaže, cijeli sistem prestaje da radi. Zbog toga se sistemu dodaje takozvani server aplikacija na kojem se obavljaju svi računski radovi. Drugi server baze podataka obrađuje zahtjeve korisnika, a treći može biti opremljen posebnim programom - TP monitorom, koji optimizira obradu transakcija i balansira opterećenje na serverima. U većini praktičnih slučajeva, svi serveri su povezani u seriju, a kvar jedne veze, ako ne zaustavlja sav rad, onda barem smanjuje performanse sistema.

  5. Aplikacije u distribuiranoj arhitekturi. Kako bi se izbjegli nedostaci razmatranih arhitektura, izmišljene su posebne tehnologije koje vam omogućavaju da kreirate program u obliku skupa komponenti koje se mogu pokrenuti na bilo kojem serveru spojenom na mrežu (komponente su, takoreći, distribuirane preko mreža). Glavna prednost ovog pristupa je da ako bilo koji računar otkaže, specijalni programi za praćenje koji prate ispravan rad odmah ponovo pokreću privremeno nedostajuću komponentu na drugom računaru. U ovom slučaju, ukupna pouzdanost čitavog sistema postaje veoma visoka, a računarsko opterećenje se raspoređuje između servera na optimalan način. Pristup mogućnostima bilo koje komponente dizajnirane za komunikaciju s korisnikom vrši se sa proizvoljne klijentske stranice. Budući da se svi proračuni odvijaju na serverima, postaje moguće kreirati ultra-tanke klijente - programe koji prikazuju samo informacije primljene iz mreže i zahtijevaju minimalne računarske resurse. Zahvaljujući tome, pristup komponentnom sistemu je moguć ne samo sa računara, već i sa malih mobilnih uređaja. Poseban slučaj komponentnog pristupa je pristup serverskim aplikacijama iz pretraživača preko Interneta.
Trokomponentne tehnologije su danas najpopularnije: CORBA iz konzorcijuma OMG, Java Beans iz Suna, COM+ iz Microsofta.

Ove tehnologije će oblikovati razvoj informatičke industrije u narednim decenijama.

Jezici i sistemi programiranja

Koncept mašinskog jezika

Mašinski jezik je sistem naredbi koje direktno razumije hardver datog elektronskog računarskog sistema. Kao posledica toga, mašinski jezik je jedinstveno određen skupom instrukcija procesora i arhitekturom računara.

Set instrukcija procesora sadrži:

· Aritmetičko-logičke naredbe - naredbe za aritmetičke operacije nad binarnim brojevima i logičke operacije nad binarnim vektorima;

· Kontrolne komande - komande prelaza, grananja, ponavljanja i neke druge komande;

· Komande za prenos podataka - komande uz pomoć kojih se razmenjuju RAM i CPU;

· Komande za unos-izlaz podataka - komande uz pomoć kojih CPU i eksterni uređaji razmjenjuju podatke.

Svaka naredba sadrži šifru operacije koju izvodi i informacije o adresama podataka na kojima se ova operacija izvodi. Osim toga, komanda (direktno - kontrolne komande i indirektno - ostale komande) sadrži informacije o adresi komande koja će se sljedeće izvršiti. Dakle, bilo koja sekvenca instrukcija koja se nalazi u RAM-u je zapravo algoritam snimljen u procesorskom sistemu instrukcija – mašinski program.

Najčešća sada je arhitektura računara sa zajedničkom magistralom. Zajednička magistrala je centralni informacioni autoput koji povezuje vanjske uređaje sa centralnim procesorom. Sastoji se od sabirnice podataka, adresne sabirnice i kontrolne magistrale. Sabirnica podataka je namijenjena za razmjenu podataka između RAM-a i eksternih uređaja. Adresna magistrala nosi adrese podataka. Ovaj autobus je jednosmjeran. Upravljačka magistrala služi kao kanal za razmjenu upravljačkih signala između vanjskih uređaja i centralnog procesora.

Dakle, mašinski jezik (jezik procesora) je skup instrukcija, od kojih svaka opisuje neku elementarnu akciju za transformaciju informacija predstavljenih u binarnom kodu. Univerzalna upotreba binarnog koda za predstavljanje informacija najrazličitijih oblika dovodi do činjenice da program za rješavanje čak i prilično jednostavnog problema sadrži stotine strojnih instrukcija. Pisanje takvog programa pomoću mašinskih instrukcija nije lako čak ni za veštog programera. Pravi programi se sastoje od desetina i stotina hiljada mašinskih instrukcija. Dakle, svaka tehnologija za kreiranje programa treba da se zasniva na tehnikama karakterističnim za ljudsko razmišljanje, operiše konceptima poznatim osobi iz predmetne oblasti kojoj zadatak pripada.

Drugim rečima, programer (dizajner algoritama) mora biti u stanju da formuliše svoj algoritam na jeziku poznatih koncepata; tada poseban program mora izraziti ove koncepte pomoću alatnih mašina, prevodeći (prevodeći) tekst algoritma na jezik mašine.

Ova potreba dovela je do pojave programskih jezika visokog nivoa kao jezika za snimanje algoritama namenjenih za izvršavanje na računaru.

Machine Oriented Languages

Prethodnici jezika visokog nivoa su takozvani mašinski orijentisani jezici ili jezici autokodiranja. Jedan od najistaknutijih predstavnika mašinski orijentisanih jezika je Assembler. Asembler je veoma blizak mašinskom jeziku, većina njegovih instrukcija su tačni simbolički prikazi mašinskih instrukcija. Prednost je što više nije potrebno pamtiti numeričke kodove instrukcija procesora, dovoljno je znati njihov simbolički prikaz. Pored toga, po prvi put u mašinski orijentisanim jezicima, koncept varijable se pojavljuje kao imenovano memorijsko područje za skladištenje podataka, a sa njim i koncept tipa podataka. U programima na mašinskom orijentisanom jeziku, postaje moguće koristiti i numeričke i tekstualne informacije u formi poznatom ljudima.

Unatoč jasnim prednostima strojno orijentiranih jezika u odnosu na čisto strojni jezik, pisanje programa na ovim jezicima je još uvijek ispunjeno značajnim poteškoćama. Programi su veoma glomazni i teški za čitanje.

Programski jezici visokog nivoa

Programski jezici visokog nivoa igraju ulogu sredstva komunikacije između programera i mašine, kao i između programera. Ova okolnost nameće mnoge obaveze jeziku:

Jezik bi trebao biti blizak onim fragmentima prirodnih jezika koji pružaju specifično predmetno područje ljudske aktivnosti; (Jezik fokusiran na poslovne aplikacije treba da sadrži koncepte koji se koriste u ovoj vrsti aktivnosti: dokument, faktura, baza podataka, itd.).

Sva jezička sredstva moraju biti formalizirana do te mjere da se mogu implementirati kao strojni programi.

Programski jezik je više od sredstva za opisivanje algoritama: sadrži sistem koncepata na osnovu kojih osoba može razmišljati o svojim problemima i notaciju pomoću koje može izraziti svoje misli o rješavanju problema.

Modeli emitovanja programa. Prevodioci

Općenito, računari nisu dizajnirani da razumiju programske jezike visokog nivoa. Hardver prepoznaje i izvršava samo mašinski jezik, program u kojem nije ništa drugo do niz binarnih brojeva.

Pojava programskih jezika bila je povezana sa spoznajom da se prevođenje algoritma napisanog na „skoro“ prirodnom (algoritamskom) jeziku u strojni jezik može automatizirati i stoga povjeriti ramenima mašine. Ovdje je važno napraviti razliku između jezika i njegove implementacije. Sam jezik je sistem notacije kojim se upravlja skupom pravila koja definišu njegov vokabular i sintaksu. Jezička implementacija je program koji ovu notaciju pretvara u niz mašinskih instrukcija prema semantičkim pravilima definiranim u jeziku.

Postoje dva glavna načina implementacije jezika: kompajleri i interpretatori. Kompajleri prevode ceo tekst programa napisanog u programskom jeziku u mašinski kod u jednom kontinuiranom procesu. Ovo stvara kompletan program mašinskog koda koji se onda može izvršiti bez potrebe za kompajlerom.

Interpretator u svakom trenutku prepoznaje i izvršava jednu rečenicu (operator) programa, pretvarajući rečenicu koja se obrađuje u mašinski program usput. Razlika između prevodioca i prevodioca slična je razlici između simultanog prevođenja usmenog govora i prevođenja teksta.

U principu, svaki jezik se može i kompajlirati i interpretirati, ali u većini slučajeva svaki jezik ima svoj preferirani način implementacije. Očigledno, ova sklonost je više od poklona tradiciji. Izbor je određen samim jezikom. Fortran, Pascal, Modula-2 su uglavnom kompajlirani. Jezici kao što su Logo, Fort se gotovo uvijek tumače. BASIC i Lisp se široko koriste u oba oblika.

Postoje dva glavna tipa kompajlera na osnovu tipa izlaznih podataka:

· Sastavljanje konačnog izvršnog koda;

· Prevođenje interpretiranog koda, za čije izvršavanje je potreban dodatni softver.

Konačni izvršni kod su aplikacije implementirane kao EXE datoteke, DLL biblioteke, COM komponente. Interpretirani kod uključuje bajt kod JAVA programa koje izvršava JVM virtuelna mašina.

Objektni kod generiran od strane kompajlera je područje podataka i područje strojnih instrukcija s adresama koje naknadno "pregovara" uređivač linkova (ponekad se naziva loader). Uređivač veza postavlja sve odvojeno kompajlirane objektne module i statički povezane biblioteke u jedan adresni prostor.

U nastavku ćemo izvršnu formu programa zvati kod dobijen kao rezultat kompajliranja izvornog programa.

Proces prevođenja (kompilacije).

Program napisan u programskom jeziku visokog nivoa naziva se izvorni program, a svaka nezavisna programska jedinica koja formira dati program naziva se programski modul. Za transformaciju izvornog programa u njegov izvršni oblik (izvršni fajl), prevodilac izvodi određeni niz radnji. Ova sekvenca zavisi i od programskog jezika i od specifične implementacije samog prevodioca. U toku prevođenja važno je ne samo kompajlirati program, već i dobiti dovoljno efikasan kod.

U procesu prevođenja vrši se analiza originalnog programa, a zatim se vrši sinteza izvršnog oblika ovog programa. U zavisnosti od broja pregleda izvornog programa koji izvodi kompajler, prevodioci se dele na jednoprolazne, dvoprolazne i prevodioce koji koriste više od dva prolaza.

Prednosti kompajlera sa jednim prolazom uključuju veliku brzinu kompilacije, a nedostaci su, po pravilu, dobijanje ne najefikasnijeg koda.

Dvoprolazni kompajleri se široko koriste. Oni omogućavaju prvi prolaz za analizu programa i pravljenje informacijskih tablica koje se koriste u drugom prolazu za generiranje objektnog koda.

Slika prikazuje glavne faze koje se izvode u procesu prevođenja izvornog programa.

Faza analize programa sastoji se od:

· Leksička analiza;

· Sintaktička analiza;

· Semantička analiza.

Prilikom analize izvornog programa, prevodilac sekvencijalno skenira tekst programa predstavljen kao skup znakova, analizirajući strukturu programa.

U fazi leksičke analize izdvajaju se glavne komponente programa - lekseme. Tokeni su ključne riječi, identifikatori, simboli operacija, komentari, razmaci i separatori. Leksički analizator ne samo da izdvaja tokene, već i određuje tip svakog tokena. Istovremeno, u fazi leksičke analize, sastavlja se tablica simbola, u kojoj je svaki identifikator povezan sa svojom adresom. Ovo omogućava dalju analizu da koristi njegovu adresu u tabeli simbola umesto određene vrednosti (niz znakova).

Proces isticanja tokena je prilično naporan i zahtijeva korištenje složenih kontekstualno osjetljivih algoritama.

U fazi raščlanjivanja primljeni tokeni se raščlanjuju kako bi se dobile semantički razumljive sintaksičke jedinice, koje potom obrađuje semantički analizator. Dakle, sintaktičke jedinice su izrazi, deklaracija, operator programskog jezika, poziv funkcije.

U fazi semantičke analize obrađuju se sintaksičke jedinice i generira se međukod. Ovisno o prisutnosti ili odsustvu faze optimizacije, rezultat semantičke analize može biti daljnji optimizirani međukod ili gotov objektni modul.

Najčešći zadaci koje rješava semantički analizator uključuju:

· Detekcija grešaka u vremenu prevođenja;

· Popunjavanje tabele simbola, kreirane u fazi leksičke analize, specifičnim vrednostima koje određuju dodatne informacije o svakom elementu tabele;

· Zamjena makroa sa njihovim definicijama;

· Izvršavanje direktiva vremena kompajliranja.

Makro je neki unaprijed definirani kod koji se ubacuje u program u fazi kompilacije na svim mjestima gdje je indiciran poziv ovog makroa.

U fazi sinteze programa izvodi se sljedeće:

· Generisanje koda;

· Uređivanje linkova.

Proces generiranja koda sastoji se od pretvaranja međukoda (ili optimiziranog koda) u objektni kod. U ovom slučaju, u zavisnosti od programskog jezika, rezultujući objektni kod može biti predstavljen u izvršnom obliku ili kao objektni modul koji će dalje obraditi povezivač.

Dakle, proces generisanja koda je sastavni deo faze sinteze programa, a potreba za izvršavanjem linkera zavisi od specifičnog programskog jezika. Treba napomenuti da se u praksi termin "generacija koda" često primjenjuje na sve radnje faze sinteze programa koje vode do izvršnog programskog oblika.

Linker odgovara adresama fragmenata koda koji se nalaze u odvojenim objektnim modulima: određuju se adrese pozvanih eksternih funkcija, adrese eksternih varijabli, adrese funkcija i metode svakog modula. Za uređivanje adresa, uređivač linkova koristi posebne tabele za učitavanje kreirane u fazi prijevoda. Nakon što su objektni moduli obrađeni od strane povezivača, generira se izvršni programski obrazac.

Programski jezik je formalni jezik dizajniran da poveže osobu sa računarom. Algoritam za obradu informacija i podataka postavljen je u programskom jeziku. Elektronski računar (ECM) direktno percipira program predstavljen u mašinskom jeziku, programiranje u kojem je veoma nezgodno za ljude.

Razvoj kompjuterske tehnologije doveo je do pojave programskih jezika. Svrha takvog jezika je opremiti skup računskih formula dodatnim informacijama koje ovaj skup pretvaraju u algoritam. U nastavku se programski jezik podrazumijeva kao jezik za kompajliranje programa, tj. jezik na kome je napisan algoritam za rešavanje problema na računaru.

Računarsko programiranje prve generacije odvijalo se isključivo na mašinskom jeziku. Mašinski jezik je skup pravila za kodiranje određenih radnji (u većini aritmetike) u numeričkom obliku. Za sve mašine je razumljiv samo binarni sistem brojeva, koji je, međutim, da bi programeri skratili zapis, zamenjen oktalnim.

Brojni sistem se obično shvata kao skup tehnika za imenovanje i označavanje brojeva. Uobičajeni sistem označavanja brojeva je pozicioni decimalni brojevni sistem u skladu sa činjenicom da njegova numerička vrijednost zavisi od pozicije koju zauzima bilo koja od cifara korištenih u ovom sistemu. Binarni brojevni sistem je najjednostavniji, jer koristi samo dvije cifre: 0 i 1, a oktalni brojevni sistem je pogodan jer je njegova osnova, odnosno brojčana vrijednost 8, potencija baze binarnog brojevnog sistema 2. Za Na primjer, decimalni broj 65 može se zamisliti

U decimalnom zapisu:

6 x 101 + 5 x 100 = 65;

U oktalnom sistemu kao

1 × 82 + 0 × 81 + 1 × 80 = 101;

I u binarnom brojevnom sistemu u obliku

1 × 26 + 0 × 25 + 0 × 24 + 0 × 23 + 0 × 22 + 0 × 2l + 1 × 20 = 100 001.

Svaka radnja koju mora izvršiti kompjuter je specificirana na strojnom jeziku kao naredba. Komanda je informacija predstavljena u obliku koji vam omogućava da je unesete u mašinu i određuje radnje računara za određeni vremenski period. Dakle, svaka naredba definira, općenito govoreći, neki elementarni dio procesa obrade informacija, koji se naziva strojna operacija. Početne informacije za obradu daju se, po pravilu, kao skup specifičnih vrednosti, koji se obično nazivaju podacima. Početni podaci za izvođenje bilo koje radnje, uključujući operaciju stroja, zvat će se operandi.

U naredbi, u opštem slučaju, mora biti naveden tip akcije, mesto skladištenja u mašini (adresa) početne informacije na kojoj se operacija mašine izvodi, adresa rezultata, kao i sledeća naredba da se izvrši nakon ovog. Za aritmetičke operacije (ili operacije), početne informacije se u pravilu postavljaju u obliku dva broja, stoga u naredbi za njih moraju biti navedene dvije adrese. Prema tome, instrukcija mora sadržavati operacijski kod koji specificira tip strojne operacije koja se izvodi, i četiri adrese: dvije adrese operanda, adresu rezultata i adresu sljedeće instrukcije. Obično je potreban broj adresa u komandi manji od četiri.

U računaru sa troadresnim komandama adresa sledeće komande nije naznačena, ali se automatski izvršava komanda iz sledeće memorijske ćelije (sa brojem većim za jedan, što je adresa sledeće komande). Na primjer, ako prihvatimo kod 01 za operaciju sabiranja, tada će za sabiranje dva broja iz ćelija pod brojevima 2051 i 2052 s rezultatom smještenim u ćeliju pod brojem 2345, u stroju s tri adrese komanda će izgledati ovako:

01 2051 2052 2345 26

Prvo poboljšanje u procesu programiranja bilo je uvođenje simboličkih adresa, koje su omogućile sastavljanje naredbi i odvojeno dodjeljivanje memorije. Suština ove tehnike sastoji se u podjeli RAM-a mašine u nizove, broj ćelija u kojima nije poznat unaprijed, a brojevi ćelija niza dati su alfanumeričkim oznakama kao što su ai + 1, ai + 2,. ... ., nazvane simboličke adrese. Alokacija memorije se vrši dodjeljivanjem numeričkih vrijednosti svim ai nakon što je program preveden. Potonji proces je čisto mehanički i može se automatizirati, tj. dodeljivanje pravih adresa može se poveriti samom računaru.

Ovo poboljšanje u procesu programiranja ubrzo je dovelo do stvaranja simboličkih programskih jezika ili autokodova. Takav jezik se razlikuje od strojnog jezika samo po tome što se umjesto numeričkih vrijednosti koriste simboličke (abecedne) oznake koje izražavaju kod operacije naredbe i njegovu adresu. Stoga je u prvim autokodovima postojala korespondencija jedan-na-jedan između operacija napisanih u simboličkom programskom jeziku (ili kodiranju) i instrukcija u mašinskom jeziku, što je bilo označeno simbolom 1:1, koji je napisan nakon naziva jezika. Na primjer, AUTOCODE 1: 1 - AUTO Kodiranje jedan prema jedan.

Dalje usavršavanje autokodova izraženo je u pojavi dodatnih alata koji uspostavljaju, prema uobičajenim pravilima, redosled radnji u aritmetičkim formulama ili omogućavaju, pod potrebnim uslovima, grananje računskog procesa, ciklično ponavljanje sekcija programa i dr. operacije koje proizlaze iz stanja problema. Dakle, postupno su autokodovi izgubili prefiks 1:1, a njihovi jezici unosa nisu postali čisto strojni, već strojno orijentirani. Orijentacija mašine značila je da su ovi jezici nastavili da se zasnivaju na skupu instrukcija određenog računara. Prvi mašinski orijentisani jezici uglavnom su bili nesavršeni. U nekim je jezicima opis redoslijeda proračuna otrgnut od samih formula, drugi su imali složene simbole, malo vizualne ili previše specijalizirane, treći su prilagođeni samo za rješavanje ograničenog spektra problema. Glavni nedostatak je bio vezanost jezika za ovu mašinu.

Pojavom mašina druge generacije pojavila se potreba za stvaranjem jezika koji su u potpunosti fokusirani na karakteristike zadataka i ne ovise o određenoj mašini. Ovaj zahtjev je bio otežan činjenicom da su se računari različitih marki brzo mijenjali ili su se koristili zajedno. Problemski orijentisani programski jezici postali su simbol druge generacije računara. Njihov razvoj je sve više bio određen specifičnostima zadataka, a ne karakteristikama mašina. U prvi plan je došlo ono što je bilo zajedničko u različitim problemima, a to je spojilo različite jezike nastale u eri dominacije računarskih problema. Ovi jezici se obično nazivaju formalnim algoritamskim ili jednostavno algoritamskim jezicima.

Mnogo se traži od formalnog algoritamskog jezika. Prvo, mora biti vizualan, što se može postići korištenjem postojećih matematičkih simbola i drugih lako razumljivih slikovnih sredstava. Drugo, fleksibilan, tako da se bilo koji algoritam može opisati bez nepotrebnih komplikacija povezanih s nedostatkom vizualnih sredstava. Treće, jezik mora biti nedvosmislen - zapis bilo kojeg algoritma, napravljen u skladu sa svim pravilima jezika, ne bi trebao dopustiti različita tumačenja. Četvrto, višestepeni – složeni algoritam se može opisati kao kombinacija jednostavnijih algoritama. I, konačno, jezik treba da bude ujednačen – s jedne strane, broj slikovnih sredstava ne bi trebao biti prevelik, as druge strane, neophodno je da se ista sredstva mogu koristiti za izražavanje istih ili srodnih pojmova. u različitim (prema njihovoj namjeni) dijelovima algoritma. Takav jezik služi:

Sredstvo mišljenja - logička nesavršenost predložene metode za rješavanje problema često se otkriva u procesu pisanja ove metode pomoću algoritamskog jezika;

· Sredstvo komunikacije među ljudima – opis procesa koji obavlja jedna osoba treba biti dostupan drugoj;

· Posrednik između čoveka i mašine – u ovom slučaju prevod sa algoritamskog jezika na jezik mašine vrši sama mašina pomoću posebnog programa – prevodioca.

Jedan od prvih i najuspješnijih jezika ove vrste bio je Fortran, koji je razvio IBM. Godine 1954. grupa američkih stručnjaka za programiranje objavila je prvi izvještaj o jeziku Fortran. Naziv jezika dolazi od fraze formula TRANslation - transformacija formula. Fortran jezik ne samo da postoji do danas, već i pouzdano drži prvo mjesto u svijetu po rasprostranjenosti. Među razlozima ove dugovečnosti može se istaći jednostavna struktura kako samog Fortrana, tako i prevodilaca koji su mu namenjeni. Fortran program je napisan u obliku niza rečenica, ili operatora (operator znači opis određene transformacije informacija), i sastavljen je prema određenim pravilima. Ova pravila nameću ograničenja, posebno u pogledu oblika snimanja i rasporeda delova operatera u liniji obrasca za operatere snimanja. Fortran program je jedan ili više segmenata (potprograma) iskaza. Segment koji kontrolira rad cijelog programa u cjelini naziva se glavni program.

Fortran je zamišljen za upotrebu u naučnom i inženjerskom računarstvu. Međutim, ovaj jezik može lako opisati zadatke sa razgranatom logikom (modeliranje proizvodnih procesa, rješavanje situacija u igri, itd.), neke ekonomske probleme, a posebno zadatke uređivanja (sastavljanje tabela, sažetaka, iskaza itd.).

Modifikacija Fortran jezika, koja se pojavila 1958. godine, nazvana je Fortran II i sadržavala je koncepte potprograma i zajedničkih varijabli za obezbjeđivanje komunikacije između segmenata.

Do 1962. godine pripada i pojava jezika poznatog kao Fortran IV i koji je postao najčešći u današnje vrijeme. Istovremeno je započeo rad komisije pri Američkoj asocijaciji za standarde (ASA), koja je razvila (do 1966. godine) dva standarda - Fortran jezike i osnovni (glavni) FORTRAN (Basic FORTRAN). Ovi jezici otprilike odgovaraju modifikacijama IV i II, ali osnovni Fortran je podskup Fortrana, dok Fortran II nije takav za Fortran IV.

Fortran jezik i dalje nastavlja da se razvija i poboljšava, utičući na stvaranje i razvoj drugih jezika. Na primjer, Fortran je osnova za BASIC jezik dijaloga i njegovo BASIC-plus proširenje, široko korišteni jezici u svim sistemima za podjelu vremena, jezici za podučavanje vještina korištenja algoritamskih jezika u praksi programiranja. Ovi jezici su implementirani posebno na personalnim računarima. Trenutno je kreiran novi standard - Fortran 77.

Ubrzo nakon nastanka Fortrana (1957) pojavio se ALGOritmički jezik (ALGOritmički jezik) nastao na osnovu široke međunarodne saradnje. Godine 1960. objavljena je zvanična poruka o algoritamskom jeziku pod nazivom Algol-60, gdje broj 60 označava godinu odobrenja jezika.

Algol-60 je nastao nakon razvoja i praktične primjene Fortrana, stoga ga karakterizira i uvođenje novih dizajna i generalizacija koncepata dostupnih u Fortranu. Na primjer, ako su u Fortranu operatori podijeljeni sa funkcionalne tačke gledišta na izvršne i neizvršne, onda u Algolu nema takve podjele, a konstrukcije koje se nazivaju opisi igraju ulogu neizvršnih Fortran operatora.

Postoje i druge razlike. Međutim, ono što je zajedničko Fortranu i Algolu je činjenica da su oba jezika zasnovana na konceptu izraza, koji se praktično poklapa sa konceptom matematičkog izraza koji koristi samo algebarske operacije i elementarne funkcije. Najjednostavniji objekti od kojih se sastavljaju izrazi su cijeli brojevi i približni realni brojevi i logičke vrijednosti.

Algol je široko prepoznat kao vrlo koristan alat za objavljivanje algoritama i za podučavanje osnova programiranja.

Donedavno su i Fortran i Algol-60 s pravom zaslužili naziv univerzalnih jezika, jer su omogućavali programiranje najvećeg dijela naučnih i tehničkih problema (uglavnom računskih). Ali nijedan od ovih jezika, naravno, nije omogućio da se bez izuzetka opisuju svi nastali problemi. Stoga su se otprilike u isto vrijeme pojavili algoritamski jezici drugačije orijentacije, zadovoljavajući potrebe onih novih područja nauke i tehnologije, koja su se počela intenzivno razvijati u narednim godinama.

Primjer su ekonomski zadaci - zadatak računovodstva materijalnih sredstava, proizvedenih proizvoda, osoblja, finansija itd. preduzeća ili industrije. Za takve zadatke glavne radnje su ulazne i izlazne operacije sa relativno malom količinom jednostavnih proračuna, kao i sekvencijalna obrada nizova podataka. Opis akcija ove vrste može se izvesti na zajedničkom poslovnom jeziku, koji je predložio IBM 1959. godine.

Zadaci obrade simboličkih informacija javljaju se uglavnom u oblasti naučnog istraživanja. To su, na primjer, transformacija formula, rješavanje jednačina (ne brojčanih, već u analitičkom obliku), analiza i sinteza tekstova na vještačkom ili prirodnom jeziku (posebno automatsko programiranje i mašinsko prevođenje) itd.

Od jezika za obradu simboličkih informacija, jezik Lisp, koji je stvorila grupa istraživača 1960. godine na Massachusetts Institute of Technology, vrlo je popularan, uglavnom među predstavnicima fizičkih i matematičkih nauka. U ovom jeziku, sve informacije koje se obrađuju, uključujući i sam program, organizovane su u takozvane liste - nizove elemenata. Element može biti primarni (slovo ili broj) ili, pak, lista. Na taj način mogu nastati proizvoljno složene strukture.

Drugi jezik - Snobol - se uglavnom koristi za mašinsku analizu tekstova napisanih na prirodnim jezicima. U njemu je osnovni koncept string - proizvoljan niz slova, brojeva i drugih znakova. Glavna operacija je traženje u nizu dijela niza ugrađenog u datu sliku i zamjena ovog dijela drugim nizom. I slika i linije koje je zamjenjuju sastavljene su od zasebnih elemenata jednostavnog tipa. Ishod pretrage određuje redoslijed daljnjih radnji. Jezik Snobola je veoma lak za učenje.

Glavna prednost problemski orijentisanih, mašinski nezavisnih algoritamskih jezika je ta što su izgrađeni uz maksimalno razmatranje ljudskih ideja, ako ne o stvorenju, onda o obliku problema koji se rešava, uz maksimalnu aproksimaciju forme u kojima je osoba navikla opisivati ​​ove zadatke i uzimati u obzir logičke veze koje je naučila da istakne u fenomenima koji se proučavaju.

Algol, na primjer, karakterizira aproksimacija uobičajenom matematičkom simbolizmu. Fortran je, za razliku od Algola, bliži mašinskom nego ljudskom jeziku. Lisp karakteriše upotreba aparata takozvanih rekurzivnih opisa, koji se široko koristi u matematičkoj logici, u istraživanju osnova matematike itd.

Obilje algoritamskih jezika koji su se pojavili u periodu druge generacije računara, s jedne strane, uvelike se objašnjava modom, s druge strane, nemogućnošću bilo kojeg od predloženih jezika da prikladno opiše sve probleme koji su se pojavili. Treća generacija računara stavila je na dnevni red razvoj novog pristupa stvaranju zaista univerzalnog algoritamskog jezika.

Jedan od pokušaja ove vrste je kreiranje od strane IBM-a algoritamskog jezika PL/1 (Programming Language/1 - jedan programski jezik). Zasnovan je na jezicima Fortran i Cobol, brojna slikovna sredstva i koncepti preuzeti su iz Algola i drugih jezika, posebno jezika za obradu simboličkih informacija. Zatim je naknadno objavljeno nekoliko verzija jezika, koje su se međusobno veoma razlikovale, ali se postepeno jezik stabilizovao, a sada se nove publikacije razlikuju od prethodnih samo po uredničkim izmenama, otklanjanju netačnosti ili poboljšanju pojedinih elemenata.

Glavni elementi programa napisanog na jeziku PL/1 su operatori, uz pomoć kojih se opisuju i podaci i operacije njihove obrade. Po analogiji sa Fortranom, originalni program je skup glavnog programa i potprograma u obliku bloka. Koncept bloka u PL/l baziran je na konceptima bloka u jeziku Algol-60. Dakle, ovaj jezik je u cjelini izgrađen na osnovu koncepata postojećih algoritamskih jezika i njihovih tradicija.

Drugi pokušaj vezan je za dalji razvoj Algola. Godine 1968. objavljen je dokument u kojem su navedeni temelji novog univerzalnog algoritamskog jezika pod nazivom Algol-68. U ovom jeziku broj osnovnih pojmova je sveden na razuman minimum kako bi se postigla visoka vizuelna snaga jezika, osiguravajući slobodu kombinacije i interakcije ovih pojmova međusobno.

Jezik Algol-68 je tradicionalan, jer postoji želja da se svim korisnicima pruže gotova sredstva za opisivanje njihovih algoritama. Do sada ovaj pristup nije mogao spriječiti pojavu novih specijalizovanih jezika. Tako je 1971. godine objavljen algoritamski jezik Pascal, nazvan po velikom francuskom naučniku iz 17. vijeka, koji je prvi u svijetu izumio automatski uređaj koji omogućava sabiranje brojeva. Pascal jezik je nasljednik Algol-60, ima konstrukcije slične onima u PL/l i Algol-68, ali Pascal je lakonskiji. Pascal je gotovo jednako jednostavan kao BASIC, ali Pascal promoviše uvođenje moderne tehnologije programiranja zasnovane na postepenoj izgradnji programa koji se sastoji od malih dobro definiranih procedura, tj. ideje strukturiranog programiranja se dosljedno implementiraju. Još jedna značajna karakteristika Pascala je koncept strukture podataka kao jednog od fundamentalnih koncepata koji, zajedno sa konceptom algoritma, leži u srcu programiranja.

Na osnovu Pascal jezika kasnih 70-ih nastao je jezik Ada, koji ima veoma širok opseg primene. Jezik je dobio ime po prvoj ženi programerki, Adi Lovelays. Algoritamski jezik Ada pretrpeo je određene promene u procesu evolucije i sada ima sva obeležja standardnog jezika. To je visoko strukturiran jezik, posebno pogodan za razvoj sistema u realnom vremenu. Međutim, Ada jezik je previše glomazan, opsežan i ne pruža programeru dovoljno slobode.

Za razliku od navedenih jezika visokog nivoa koji su se pojavili početkom 80-ih, programski jezik C je jezik relativno niskog nivoa. Ali to ne znači da ovaj jezik nije dovoljno moćan. C jezik je univerzalni jezik blisko povezan sa popularnim UNIX operativnim sistemom (i UNIX sistem i njegov softver su napisani u C jeziku). Algoritamski jezik C sasvim u potpunosti odražava mogućnosti modernih računara, omogućavajući vam da pišete vrlo efikasne programe bez pribjegavanja asemblerskim jezicima, uglavnom zbog jednostavnih, sekvencijalnih konstrukcija kontrolnih tokova. Nude se provjere, petlje, grupisanje i potprogrami, ali ne i multiprogramiranje, paralelne operacije, sinhronizacija i korutine - neizostavni atributi moćnih jezika (Ada, PL/1, Algol-68).

U posljednje vrijeme postoji tendencija ka stvaranju takozvanih proširivih univerzalnih jezika. Glavna ideja ovog trenda nije izbjegavanje specijaliziranih dijalekatskih jezika, već stvaranje zajedničke osnove za "programiranje dijalekata".

Proširivi jezik mora imati mogućnosti za gramatičko raščlanjivanje tekstova bilo kojeg od proširenja kako bi se otkrilo koji su tekstovi gramatički ispravni za dati dijalekt i kakvu strukturu imaju. Takav jezik bi svojim budućim potrošačima trebao pružiti niz važnih mogućnosti: na primjer, da izgrade semantičke modele (tj. da uvedu nove termine za opisivanje pojmova koje oni izražavaju, njihov odnos s nekim osnovnim, početnim konceptima i sa pojmovima koji su ranije uvedeni ), opisuju implementaciju ekstenzija - načine njihovog najcelishodnijeg predstavljanja korištenjem sredstava dostupnih savremenim računarima. Postoje i druge karakteristike proširivih jezika koje se mogu primijetiti.

4.1. Sistemi za programiranje.

Glavni cilj svakog programa - opis redoslijeda naredbi za centralni procesor koji ga mora izvršiti. Ove komande moraju biti izražene u mašinskom kodu, tj. na jeziku razumljivom centralnom procesoru. Stoga je čovjeku vrlo teško pisati programe na takvom jeziku Za kreiranje programa koristi se sljedeći pristup:

Programer piše tekst na jeziku koji razumije i koji mu odgovara. Zatim ga prevodi na mašinski jezik i pretvara u oblik koji je pogodan za CPU i operativni sistem.

U tu svrhu razvijaju se posebni jezici za opisivanje algoritama, koji se nazivaju algoritamski jezici ili programski jezici .

(05.12.2012.)

Oni (algoritamski jezik) imaju niz svojstava:

1. Specijalizacija - alat koji pruža jezik fokusiran na opis zadataka predmetnih oblasti određenog tipa. Na primjer: neki jezici su namijenjeni uglavnom za numerička izračunavanja (Pascal), drugi za rad s tekstualnim informacijama (LISP), a treći za pisanje sistemskih programa (C). U osnovi, najčešći jezici omogućuju vam da opišete rješenje različitih problema (zato se nazivaju univerzalnim), ali su najpogodniji za rješavanje problema za koje su dizajnirani.

2. Sposobnost pisanja lako čitljivog teksta sa jasnom strukturom. Ovaj pristup u programiranju se zove modularni (strukturalni) ... On pretpostavlja pisanje odvojenih softverskih modula sa njihovim kasnijim automatizovanim sklapanjem u jedan program. U ovom slučaju, programer piše programski modul pod nazivom glavni (glavni) program ... U njemu on opisuje redoslijed izvršavanja preostalih modula koji se pozivaju programa ili funkcija .

Zbog specifičnosti programskih jezika postoje četiri važne faze pokretanja programa za izvršenje :

1. Broadcast - prevod teksta programskih modula sa algoritamskog jezika u mašinski jezik.

2. Sastavljanje programskih modula dobijenih nakon prevođenja u jedan program.

3. Otklanjanje grešaka u programu - proces pronalaženja i otklanjanja grešaka u tekstu programa.

4. Izvršenje programa.

Da obezbede ove faze, namenjeni su sistemi programiranja.

Oni uključuju sljedeće komponente:

1. Specijalizovani uređivač teksta. Pruža pomoć osobi u procesu pisanja teksta programskih modula.

2. Prevodioci. Prevodilac Prevodilac je sa jezika na kojem su napisani tekstovi programskih modula na interni jezik mašine. Dvije vrste prevodilaca:

  • Tumači. Tumač obezbeđuje prevod teksta programa red po red na mašinski jezik i istovremeno izvršavanje svake komande ovog programa. Tumač automatizuje sve faze pokretanja programa za izvršenje.
  • Kompajleri. Kompajler prevodi tekst programskog modula u mašinski jezik bez njegovog izvršavanja. Istovremeno se otkrivaju sintaksičke greške koje je programer napravio u tekstu. Kao rezultat rada kompajlera, kreira se objektni modul koji još nije spreman za izvršenje.

3. Uređivač linkova. Uređivač linkova se automatizuje proces sklapanja povezanih, ali odvojeno napisanih i prevedenih softverskih modula. U toku svog rada otkriva on greške pogrešno specificiranih veza između modula ( na primjer, prisustvo u tekstu veze do nepostojećeg modula) ili njihovo odsustvo. osim toga, dodaje on servisne informacije koje operativni sistem zahtijeva za naknadnu kontrolu izvršavanja ovog programa. Datoteka koju dobije program može se izvršiti pod kontrolom operativnog sistema bez programskog sistema, stoga se naziva izvršna (bootable) datoteka .


4. Debugger. Debugger renders pomoć u pronalaženju raznih grešaka u programu tokom njegovog izvršavanja. To uključuje, na primjer: logičke greške (pokušaj dijeljenja sa nulom), kao i greške povezane s netačnim ulaznim podacima.

Uvod …………………………………………………………………… .... 2

1 Programski jezik i sistem - koncept, suština ……………… .4

2 Klasifikacija programskih jezika………………………………………… .6

2.1 Mašinski orijentirani jezici ………………………………… 6

2.1.1 Strojni jezici ……………………………………………… 6

2.1.2 Simbolični jezici kodiranja ………………………… ... 7

2.1.3 Autokodovi ……………………………………………………… 8

2.1.4 Makro …………………………………………………………… .9

2.2 Mašinski nezavisni jezici ……………………………………… ..9

2.2.1 Mašinski nezavisni jezici…………………………………………… 10

2.2.2 Univerzalni jezici …………………………………………………… 10

2.2.3 Konverzacijski jezici ……………………………………………… 11

2.2.4 Neproceduralni jezici …………………………………………… 12

3 Savremeni jezici i sistemi programiranja ……………………………… 13

3.1 Osnovno …………………………………………………………………………………… 13

3.2 Pascal ……………………………………………………………………… 14

3.3 Delphi …………………………………………………………………… ..15

3.4 Fortran …………………………………………………………………… .17

3.5 SS ++ …………………………………………………………………………… ... 18

3.6 Java ………………………………………………………………………………… ..20

Zaključak ………………………………………………………………… ..22

Spisak korištenih izvora .............................................................. ................ 23

Uvod

Napredak kompjuterske tehnologije odredio je proces nastanka raznih novih znakovnih sistema za pisanje algoritama – programskih jezika. Smisao pojave takvog jezika je da opremljen skup računskih formula za dodatne informacije pretvara ovaj skup u algoritam. Programski jezik ima dvije povezane svrhe: obezbjeđuje programeru aparat za specificiranje radnji koje treba izvršiti i oblikuje koncepte koje programer koristi kada razmišlja o tome šta da radi. Na prvi cilj idealno odgovara jezik koji je toliko "blizak mašini" da se svim osnovnim mašinskim aspektima može lako i jednostavno upravljati na način koji je programeru sasvim očigledan. Drugi cilj idealno odgovara jeziku, koji je toliko "blizak problemu koji se rješava" da se koncepti njegovog rješenja mogu izraziti direktno i kratko. Veza između jezika na kojem mislimo/programiramo i problema i rješenja koje možemo zamisliti u svojoj mašti je vrlo bliska. Iz tog razloga, ograničavanje svojstava jezika samo na cilj eliminacije programskih grešaka je u najboljem slučaju opasno. Kao i kod prirodnih jezika, ogromna je prednost biti barem dvojezičan. Jezik pruža programeru skup konceptualnih alata, ako ne ispunjavaju zadatak, onda se jednostavno ignorišu. Na primjer, ozbiljna ograničenja koncepta pokazivača prisiljavaju programera da koristi vektore i cjelobrojnu aritmetiku za implementaciju struktura, pokazivača i slično. Dobar dizajn i dizajn bez grešaka ne mogu se garantovati isključivo jezičkim sredstvima.Može izgledati iznenađujuće, ali određeni računar je sposoban da pokreće programe napisane na sopstvenom mašinskom jeziku. Postoji skoro isto toliko različitih mašinskih jezika koliko i računara, ali svi su varijante iste ideje; jednostavne operacije se izvode brzinom munje nad binarnim brojevima. IBM personalni računari koriste mašinski jezik iz porodice mikroprocesora 8086. njihov hardver je baziran upravo na ovim mikroprocesorima. Moguće je pisati programe direktno na mašinskom jeziku, iako je to teško. U zoru kompjuterizacije (početkom 1950-ih), mašinski jezik je bio jedini jezik, koji veći čovek nije mogao da izmisli do tog vremena. Da bi se programeri spasili od grubog mašinskog programskog jezika, stvoreni su jezici visokog nivoa (tj. ne-mašinski jezici), koji su postali svojevrsni povezujući most između čovjeka i kompjuterskog strojnog jezika. Jezici visokog nivoa funkcionišu kroz prevodilačke programe koji ubacuju "izvorni kod" (hibrid engleskih reči i matematičkih izraza koje mašina čita) i na kraju primorava računar da izvrši odgovarajuće instrukcije, koje su date u mašinskom jeziku. Postoje dvije glavne vrste prevoditelja: interpretatori, koji skeniraju i provjeravaju izvorni kod u jednom koraku, i kompajleri, koji skeniraju izvorni kod kako bi proizveli tekst programa na mašinskom jeziku, koji se zatim izvršava zasebno.

1 Programski jezik i sistem - koncept, suština

Trenutno postoji brzi razvoj naučne discipline koja se zove programiranje. Istovremeno, ne pojavljuju se samo novi jezici, već se pojavljuju i nove ideje koje povećavaju snagu i efikasnost jezika. Moguće je, ne ulazeći u detalje bilo kojeg od postojećih ili tek razvijanih jezika, uočiti sljedeću tendenciju: razvoj jezika ide ka povećanju izražajnosti izvornog teksta programa. Ovo pomaže da se smanji veličina programa i poveća njegova pouzdanost.

Da bi se povećala ekspresivnost jezika, neophodno je da jezik sadrži sredstva za izražavanje apstraktnih pojmova. Ovo pomaže da se veliki programi lakše razumiju. Stoga je podrška za apstrakcije neophodna za svaki savremeni programski jezik. Istovremeno, osnova jezika (skup mogućnosti koje pruža jezik, semantičke konstrukcije) mora imati minimalnu kardinalnost.

Najopštiji koncepti koje programer koristi kada koristi određeni programski jezik su koncepti programa i virtuelne mašine. Program mora zadovoljiti zahtjeve (specifikacije) određenog programskog jezika i služi kao kontejner za pohranjivanje niza radnji i skupa podataka. Virtuelna mašina deluje kao tumač osnovnih koncepata koji se koriste u programskom jeziku i predstavlja okruženje za postojanje programa. Sve ostale apstrakcije o kojima se govori u ovom članku grupisane su oko ovih osnovnih apstrakcija.

U nekim slučajevima, proces programiranja možete smatrati procesom modeliranja. Ovo stvara model programa koji je sposoban da realizuje ponašanje originala opisanog u iskazu problema. Stoga će u budućnosti koncept modela biti zamjena za koncept programa, a koncept okruženja za modeliranje koncepta virtuelne mašine.

2 Klasifikacija programskih jezika

2.1 Mašinski orijentisani jezici

Mašinski orijentisani jezici su jezici čiji skupovi operatora i grafička sredstva u suštini zavise od karakteristika računara (interni jezik, memorijska struktura itd.). Mašinski orijentisani jezici vam omogućavaju da koristite sve mogućnosti i karakteristike mašinski zavisnih jezika:

Visok kvalitet kreiranih programa (kompaktnost i brzina

izvršenje);

Sposobnost korištenja specifičnih hardverskih resursa;

Predvidljivost objektnog koda i memorijskih naloga;

Da biste pisali efikasne programe, morate poznavati sistem

komande i karakteristike funkcionisanja ovog računara;

Složenost procesa izrade programa (posebno za

mašinski jezici i YASK), slabo zaštićeni od izgleda

Mala brzina programiranja;

nemogućnost direktnog korišćenja programa,

kompajlirano na ovim jezicima, na računarima drugih tipova.

Mašinski orijentisani jezici su podeljeni na klase prema stepenu automatskog programiranja.

2.1.1 Mašinski jezik

Kao što sam već pomenuo, u uvodu, poseban računar ima svoj specifični mašinski jezik (u daljem tekstu ML), propisano je da izvršava navedene operacije nad operandima koje oni definišu, tako da je ML komandni jezik. Međutim, neke porodice računara (na primjer, ES EVM, IBM /370/ i drugi) imaju jedan LM za računare različite snage. Komanda bilo koje od njih daje informacije o lokaciji operanada i vrsti operacije koja se izvodi.

U novim računarskim modelima postoji tendencija povećanja internih jezika mašinsko-hardverskim sredstvima za implementaciju složenijih naredbi, približavajući se u svojim funkcionalnim radnjama operatorima algoritamskih programskih jezika.

2.1.2 Simbolički jezici kodiranja

Nastavimo priču o komandnim jezicima, Symbolic Coding Languages ​​(u daljem tekstu YSC), kao i ML, su komandni jezici. Međutim, kodovi operacija i adrese u mašinskim uputstvima, koji su niz binarnih (u internom kodu) ili oktalnih (često se koriste prilikom pisanja programa) cifara, u YASK su zamenjeni simbolima (identifikatorima), čiji oblik pisanja pomaže u programer za lakše pamćenje semantičkog sadržaja operacije. Ovo omogućava značajno smanjenje broja grešaka u programiranju.

Upotreba simboličkih adresa je prvi korak ka stvaranju YSC. Komande računara sadrže simboličke adrese umjesto pravih (fizičkih) adresa. Na osnovu rezultata sastavljenog programa određuje se potreban broj ćelija za pohranjivanje početnih međuproizvoda i rezultirajućih vrijednosti. Dodjeljivanje adresa, koje se vrši odvojeno od kompilacije programa u simboličkim adresama, može izvršiti manje vješt programer ili poseban program, što umnogome olakšava rad programera.

2.1.3 Autokodovi

Postoje i jezici koji uključuju sve mogućnosti YSK-a, kroz prošireno uvođenje makroa - oni se zovu Autokodovi.

U raznim programima postoje neke prilično često korištene sekvence komandi koje odgovaraju određenim procedurama za pretvaranje informacija. Efikasna implementacija ovakvih procedura je osigurana njihovim dizajnom u obliku posebnih makroa i uključivanjem ovih u programski jezik koji je dostupan programeru. Makroi se prevode u mašinske instrukcije na dva načina - raspored i generisanje. Staging sistem sadrži "skelete" - niz naredbi koje implementiraju traženu funkciju, označenu makroom. Makroi obezbeđuju prenos stvarnih parametara, koji se ubacuju u "jezgro" programa tokom prevođenja, pretvarajući ga u pravi mašinski program.

U sistemu sa generisanjem postoje posebni programi koji analiziraju makro, koji određuju koju funkciju treba izvršiti i formiraju neophodan niz naredbi koje implementiraju ovu funkciju.

Oba ova sistema koriste YSC translatore i skup makroa, koji su takođe operatori autokodiranja.

Razvijeni autokodovi se nazivaju asembleri. Servisni programi itd. po pravilu su napisani na jezicima kao što je Assembler. Pogledajte ispod za više informacija o jeziku asemblera.

2.1.4 Makro

Jezik koji predstavlja sredstvo za zamjenu niza znakova koji opisuju izvođenje potrebnih radnji na računaru sažetijim oblikom naziva se makro (sredstvo zamjene).

U osnovi, Makro je namijenjen da skrati snimanje originalnog programa. Softverska komponenta koja omogućava funkcionisanje makroa naziva se makro procesor. Makrodefiniranje i izvorni tekst se šalju makroprocesoru. Reakcija makro procesora na poziv-izdavanje izlaznog teksta.

Makro može raditi na isti način, i sa programima i sa podacima.

2.2 Mašina - nezavisni jezici

Mašinski nezavisni jezici su sredstvo za opisivanje algoritama za rješavanje problema i informacija koje treba obraditi. Pogodni su za upotrebu za širok krug korisnika i ne zahtijevaju od njih poznavanje specifičnosti organizacije funkcionisanja računara i aviona.

Takvi jezici se nazivaju programski jezici visokog nivoa. Programi napisani na takvim jezicima su nizovi iskaza strukturirani prema pravilima jezika (zadaci, segmenti, blokovi, itd.). Operatori jezika opisuju radnje koje sistem treba da izvrši nakon što je program preveden u LM.

Dakle, sekvence komandi (procedure, potprogrami), koje se često koriste u mašinskim programima, predstavljene su u jezicima visokog nivoa zasebnim izjavama. Programer je dobio priliku da ne opisuje detaljno računski proces na nivou mašinskih instrukcija, već da se fokusira na glavne karakteristike algoritma.

2.2.1 Problemski orijentisani jezici

Širenjem područja primjene računarske tehnologije postalo je potrebno formalizirati prezentaciju formulacije i rješenja novih klasa problema. Bilo je potrebno stvoriti takve programske jezike koji bi, koristeći notaciju i terminologiju u ovoj oblasti, omogućili opisivanje potrebnih algoritama rješenja za postavljene zadatke, postali su problemski orijentirani jezici. Ovi jezici, jezici usmjereni na rješavanje određenih problema, trebali bi programeru pružiti sredstva da na kratak i jasan način formuliše problem i dobije rezultate u traženom obliku.

Postoji mnogo problematičnih jezika, na primjer:

Fortran, Algol - jezici stvoreni za rješavanje matematičkih problema;

Simula, Sleng - za modeliranje;

Lisp, Snobol - za rad sa strukturama lista.

2.2.2 Univerzalni jezici

Univerzalni jezici su stvoreni za širok spektar zadataka: komercijalne, naučne, modeliranje itd. Prvi univerzalni jezik razvio je IBM, koji je postao u nizu jezika Pl/1. Drugi najmoćniji univerzalni jezik zove se Algol-68. Omogućava vam rad sa znakovima, ciframa, brojevima s fiksnim i pokretnim zarezom. Pl/1 ima razvijen sistem operatera za upravljanje formatima, za rad sa poljima varijabilne dužine, sa podacima organizovanim u složene strukture, te za efikasno korištenje komunikacijskih kanala. Jezik uzima u obzir mogućnosti prekidanja uključene u mnoge mašine i ima odgovarajuće operatore. Omogućena je mogućnost paralelnog izvršavanja programskih sekcija.

Programi u PL/1 se kompajliraju pomoću automatskih rutina. Jezik koristi mnoga svojstva Fortrana, Algola, Kobola. Međutim, omogućava ne samo dinamičku, već i upravljanu i statističku dodjelu memorije.

2.2.3 Konverzacijski jezici

Pojava novih tehničkih mogućnosti postavila je zadatak sistemskim programerima - kreiranje softverskih alata koji osiguravaju operativnu interakciju osobe s računarom, nazvani su jezici dijaloga.

Ovi radovi su se odvijali u dva pravca. Stvoreni su posebni kontrolni jezici kako bi se omogućio operativni utjecaj na prolazak zadataka, koji su sastavljeni na bilo kojem prethodno nerazvijenom (neinteraktivnom) jeziku. Razvijeni su i jezici koji bi, pored kontrolnih ciljeva, davali opis algoritama za rješavanje problema.

Potreba da se obezbedi brza interakcija sa korisnikom zahtevala je da se kopija originalnog programa sačuva u memoriji računara čak i nakon što je objektni program primio u mašinskim kodovima. Prilikom izmjena programa koristeći jezik dijaloga, programski sistem pomoću posebnih tabela uspostavlja odnos između struktura izvornog i objektnog programa. Ovo omogućava da se u objektnom programu izvrše potrebne uredničke promjene.

Jedan primjer konverzacijskih jezika je BASIC.

BASIC koristi notaciju sličnu uobičajenim matematičkim izrazima. Mnogi operatori su pojednostavljene verzije Fortran operatora. Stoga vam ovaj jezik omogućava rješavanje prilično širokog spektra problema.

2.2.4 Neproceduralni jezici

Neproceduralni jezici čine grupu jezika koji opisuju organizaciju podataka obrađenih fiksnim algoritmima (tabelarni jezici i generatori izveštaja) i jezicima za komunikaciju sa operativnim sistemima.

Omogućujući da se jasno opiše i zadatak i radnje koje su potrebne za njegovo rješavanje, tabele odluka omogućavaju da se jasno odredi koji uvjeti moraju biti ispunjeni prije nego što se pređe na bilo koju radnju. Jedna tabela odlučivanja koja opisuje određenu situaciju sadrži sve moguće blok dijagrame implementacije algoritama odlučivanja.

Tabelarne metode lako savladavaju stručnjaci bilo koje struke.

Programi napisani tabelarnim jezikom prikladno opisuju složene situacije koje se javljaju u analizi sistema.

3 Savremeni jezici i sistemi programiranja

3.1 Basic

Poput poznatih hamburgera, bejzbola i košarke, BASIC je proizvod Nove Engleske. Kao što sam rekao, nastao je 1964. godine kao jezik za podučavanje programiranja. BASIC je uobičajena skraćenica za Beginner's All-purpose Symbolic Insruction Code (BASIC).

Ubrzo su i polaznici i autori programa otkrili da BASIC može skoro sve što radi dosadni nespretni Fortran. A pošto je BASIC bio lak za učenje i lak za rad, programi u njemu su obično pisani brže nego u Fortranu. BASIC je takođe bio dostupan na personalnim računarima, obično ugrađenim u ROM. Tako je BASIC stekao popularnost. Zanimljivo, 20 godina nakon pronalaska BASIC-a, još uvijek je najlakše učiti iz desetina programskih jezika opšte namjene koji su dostupni entuzijastima programiranja. Štaviše, on radi odličan posao.

Uprkos izjavama snobova - pristalica jezika C i Pascal, BASIC se smatra poslovnim jezikom opremljen moćnim alatima za rješavanje specifičnih problema koje većina korisnika obično rješava pomoću malih računara, a to su: rad sa datotekama i prikazivanje teksta i grafičkih slika na ekran.

Uprkos nekim Basićevim nedostacima, niko neće poreći da su Kemeny i Kurtz postigli svoj glavni cilj: da programiranje učine dostupnijim većem broju ljudi.

Istorijski gledano, BASIC se obično implementirao kao tumač (poznati izomer je sam interpretativni BASIC). Razlozi za prelazak sa amaterskog na profesionalni nivo su brojna proširenja klasične verzije jezika: mogućnost onemogućavanja numerisanja redova, višelinijske strukturirane programske konstrukcije, strukture tipa "record", imenovane potprograme sa parametrima i lokalne varijable.

Štaviše, sa pojavom Microsoftovog QuickBasic prevodioca, programeri su bili u mogućnosti da prave aplikacije na BASIC-u od zasebno kompajliranih modula, od kojih neki mogu biti napisani na drugim jezicima. Sada, kao i kod drugih vodećih programskih jezika, programer ima izbor između nekoliko industrijskih biblioteka potprograma koje pružaju gotova rješenja za uobičajene probleme programiranja.

3.2 Pascal

Jezik Pascal nastao je kao obrazovni programski jezik 1968-1971. Niklaus Wirth. Trenutno, ovaj jezik ima širi opseg nego što je bilo predviđeno kada je nastao. Cilj Wirthovog rada bio je stvoriti jezik koji:

Biće izgrađen na malom broju osnovnih koncepata;

Imao bi jednostavnu sintaksu;

Omogućio bi prevođenje programa u mašinski kod pomoću jednostavnog kompajlera;

Svi ovi kvaliteti učinili su jezik veoma popularnim i pogodnim za upotrebu u školi.

Pascal je profesionalni programski jezik nazvan po francuskom matematičaru i filozofu Blaiseu Pascalu (1623-1662) i razvijen 1968-1971. Nikolausa Wirtha, da podučava studente metodama razvoja softvera kao što su top-down programiranje, strukturirano programiranje itd. Virtu nije volio nijedan od jezika koji su postojali u to vrijeme, te je 1968. godine počeo razvijati vlastiti. Prva verzija jezika kreirana je za računar CDC 6000. Zbog svoje jasnoće, konzistentnosti i drugih karakteristika Pascal je dugo zauzeo svoju nišu, kao odličan jezik za podučavanje programiranja. Pascal je također korišten za razvoj ozbiljnih softverskih aplikacija. Šalili su se da je Wirth razvio igračku, ali mnogi su to shvatili preozbiljno

Nakon toga su se pojavile različite verzije jezika i njegovih ekstenzija. Najpoznatija ekspanzija bio je paket Turbo Pascal iz Borlanda, koji se pojavio 1983. godine i odmah postao događaj u svijetu kompjuterske tehnologije.

Turbo Pascal je programski sistem dizajniran da poboljša kvalitet i brzinu razvoja softvera (80-e). Riječ Turbo u nazivu programskog sistema je odraz zaštitnog znaka razvojne kompanije Borland International (SAD).

Programski sistem Turbo Pascal naziva se integrisanim (integracija – objedinjavanje pojedinačnih elemenata u jedinstvenu celinu) programskim okruženjem, jer uključuje uređivač, kompajler, program za otklanjanje grešaka i ima servisne mogućnosti.

Prvo spominjanje nalazi se u oglasu objavljenom u časopisu Byte, a sam paket je namijenjen CP/M operativnom sistemu. Početkom 1984. portovan je u MS-DOS okruženje i stekao je ogromnu popularnost. Od tada se pojavilo nekoliko verzija Turbo Pascala, a posljednja je bila sedma.

3.3 Delphi

Pojava Delphija nije mogla proći nezapaženo među brojnim korisnicima računara. Procjene stručnjaka koji istražuju mogućnosti ovog novog Borland proizvoda obično su obojene entuzijazmom. Glavna prednost Delphi-ja je što se ovde implementiraju ideje vizuelnog programiranja. Vizuelno programsko okruženje pretvara proces kreiranja programa u ugodnu i lako razumljivu konstrukciju aplikacije od velikog skupa grafičkih i strukturnih primitiva.

Delphi sistem vam omogućava da rešite mnoge probleme, a posebno:

Kreirajte kompletne Windows aplikacije širokog spektra namena: od čisto računarskih i logičkih, do grafičkih i multimedijalnih.

Brzo kreirajte (čak i za programere početnike) prozorsko sučelje profesionalnog izgleda za bilo koju aplikaciju.

Kreirajte moćne sisteme za rad sa lokalnim i udaljenim bazama podataka.

Kreirajte sisteme pomoći (.hlp datoteke) za svoje aplikacije i još mnogo toga. dr.

Delphi je sistem koji se izuzetno brzo razvija. Prva verzija, Delphi 1.0, objavljena je u februaru 1995. godine, a zatim su svake godine izlazile nove verzije.

Većina verzija Delphija dostupna je u nekoliko verzija: Standardna - standardna, Profesionalna - profesionalna, Klijent / Server - klijent / server, Enterprise - razvoj baza podataka predmetnih oblasti. Varijante se uglavnom razlikuju po različitim nivoima pristupa sistemima za upravljanje bazama podataka. Potonje opcije su Client / Server i Enterprise, koje su najmoćnije u tom pogledu.

Delphi je kombinacija nekoliko kritičnih tehnologija:

Kompajler za mašinski kod visokih performansi.

Objektno orijentirani model komponenti.

Vizuelna (a samim tim i brza) izgradnja aplikacija iz softverskih prototipova.

Skalabilni alati za izgradnju baza podataka.

3.4 Fortran

Jedan od prvih i najuspješnijih kompajlera bio je jezik Fortran, koji je razvio IBM. Profesor J. Books i grupa američkih stručnjaka iz oblasti programiranja 1954. objavili su prvu poruku o jeziku. Doslovno, naziv jezika FORmulaeTRANSslation je transformacija formula.

Među razlozima za dugovječnost Fortrana (a to je jedan od najrasprostranjenijih jezika na svijetu) može se istaknuti jednostavna struktura kako samog Fortrana, tako i prevoditelja namijenjenih za njega. Fortran program je napisan u nizu rečenica ili operatora (opis određene transformacije informacija) i sastavljen je prema određenim standardima. Ovi standardi nameću ograničenja, posebno u pogledu oblika snimanja i rasporeda delova operatera u liniji obrasca za operatere snimanja. Fortran program je jedan ili više segmenata (potprograma) iskaza. Segment koji kontrolira rad cijelog programa u cjelini naziva se glavni program.

Fortran je zamišljen za upotrebu u naučnom i inženjerskom računarstvu. Međutim, ovaj jezik može lako opisati zadatke sa razgranatom logikom (modeliranje proizvodnih procesa, rješavanje situacija u igri, itd.), neke ekonomske zadatke, a posebno zadatke uređivanja (sastavljanje tabela, sažetaka, iskaza itd.).

Modifikacija jezika Fortran, koja se pojavila 1958. godine, nazvana je Fortran II i sadržavala je koncept potprograma i zajedničkih varijabli za pružanje komunikacije između segmenata.

Do 1962. godine pripada i pojava jezika poznatog kao Fortran IV i koji je postao najčešći u današnje vrijeme. Istovremeno je započeo rad komisije pri Američkoj asocijaciji za standarde (ASA), koja je do 1966. razvila dva standarda - Fortran jezike i osnovni (glavni) FORTRAN (BasicFORTRAN). Ovi jezici otprilike odgovaraju modifikacijama IV i II, ali osnovni Fortran je podskup Fortrana, dok Fortran II nije takav za Fortran IV. Fortran jezik i dalje nastavlja da se razvija i poboljšava, utičući na stvaranje i razvoj drugih jezika. Na primjer, Fortran je osnova za Basic, konverzacijski jezik vrlo popularan za rješavanje malih problema, odličan jezik za podučavanje vještina korištenja algoritamskih jezika u praksi programiranja. Ovaj jezik – Beginner’sAll –purposeSymbolicInstructionCode – razvila je grupa zaposlenika Računskog centra Durmouth Collegea, New Hampshire, stvorenog 19. ... Ali ovo je već sljedeći jezik.

3.5 C i C ++

Jezik "C" je univerzalni programski jezik. Usko je povezan sa operativnim sistemom "UNIX", budući da je razvijen na tom sistemu i pošto su "UNIX" i njegov softver napisani u "C". Sam jezik, međutim, nije povezan ni sa jednim operativnim sistemom ili mašinom; i iako se naziva sistemskim programskim jezikom jer je zgodan za pisanje operativnih sistema, sa jednakim uspehom se koristi u pisanju velikih računarskih programa, programa za obradu teksta i baza podataka.

Jezik "C" je jezik relativno "niskog nivoa". Nema ničeg uvredljivog u takvom opisu; to jednostavno znači da se "C" bavi objektima iste vrste kao i većina računara, naime simbolima, brojevima i adresama. Mogu se kombinovati i slati putem uobičajenih aritmetičkih i logičkih operacija koje izvode pravi računari.

Ne postoje operacije u C-u koje se direktno bave složenim objektima, kao što su nizovi znakova, skupovi, liste ili nizovi kao cijeli broj. Ovdje, na primjer, ne postoji analog PL / 1 operacija koje rade na nizovima cijelih brojeva i nizovima. Jezik ne pruža nikakve druge mogućnosti za dodjelu memorije osim statičke definicije i mehanizma stekova koje obezbjeđuju lokalne varijable funkcija; ne postoji "gomila" (HEAP) ili "prikupljanje smeća", kako je to predviđeno u ALGOL-68. Konačno, "C" sam po sebi ne pruža nikakvu I/O mogućnost: nema naredbi READ ili WRITE, niti ugrađenih metoda pristupa datoteci. Svi ovi mehanizmi visoke razine moraju biti podržani eksplicitno pozvanim funkcijama.

Isto tako, C nudi samo jednostavne, sekvencijalne konstrukcije toka: provjere, petlje, grupisanje i potprograme, ne multiprogramiranje, paralelne operacije, sinhronizaciju ili korutine. Iako nedostatak nekih od ovih karakteristika može izgledati kao frustrirajuća inferiornost ("pa moram pozvati funkciju da uporedim dva niza znakova?!"), skromno održavanje jezika ima stvarne prednosti. Budući da je "C" relativno mali, ne zauzima puno prostora za njegovo opisivanje i može se brzo naučiti. "C" kompajler može biti jednostavan i kompaktan. Osim toga, kompajlere je lako pisati; korišćenjem savremene tehnologije može se očekivati ​​da se kompajler za novi računar napiše za par meseci, a istovremeno se ispostavi da će 80 odsto programa novog kompajlera biti zajedničko sa programom za postojeće kompajlere. Ovo obezbeđuje visok stepen prenosivosti jezika. Budući da su tipovi podataka i kontrolne strukture koje se nalaze u "C" direktno podržane od strane većine postojećih računara, biblioteka potrebna za pokretanje sandbox programa je vrlo mala. Na PDP-11, na primjer, sadrži samo programe za 32-bitno množenje i dijeljenje i za izvršavanje niza ulaznih i izlaznih programa. Naravno, svaka implementacija

Pruža sveobuhvatnu, dosljednu biblioteku funkcija za izvođenje I/O, manipulaciju stringovima i dodjelu memorije, ali pošto im se pristupa samo eksplicitno, mogu se izbjeći ako je potrebno; ove funkcije mogu biti kompaktno zapisane u samom "C".

3.6 Java

Danas je World Wide Web medij za razmjenu informacija za milione ljudi. Oni hostuju tekst, video, zvuk i informacije i sve više i više komplikuju svoje stranice čineći ih interaktivnim na webu. JavaScript je novi programski jezik koji se koristi kao dio HTML stranica za povećanje funkcionalnosti i korisničkog iskustva. Razvio ga je Netscape u saradnji sa Sun Microsystems i baziran je na Sunovom Java jeziku. JavaScript vam omogućava da radite stvari na web stranici koje se ne mogu uraditi sa standardnim HTML oznakama. Skripte se izvršavaju kao rezultat događaja koje pokreće korisnik. Kreiranje Veb dokumenti koji uključuju JavaScript programe zahtevaju uređivač teksta i odgovarajući pretraživač. Neki pregledači uključuju ugrađene uređivače, tako da nema potrebe za eksternim uređivačem.

Iako nije direktno povezan sa jezikom Java, JavaScript može pristupiti vanjskim svojstvima i metodama Java apleta ugrađenih u HTML stranicu. Razlika se svodi na činjenicu da apleti postoje izvan pretraživača, dok se JavaScript programi mogu pokrenuti samo unutar pretraživača. Na prvi pogled se čini da je informacije o JavaScriptu lako pronaći. U početku se stekne utisak da ga možete vidjeti svuda: na Natscape serveru, u obliku elektronskih vodiča i primjera, na mnogim drugim mjestima. Ipak, teško je pronaći informacije o objektima, operatorima, bojama i svemu ostalom u jednom izvoru, tako da je uvijek pri ruci, teško je.

Zaključak

Pronalazak programskog jezika visokog nivoa omogućio nam je da komuniciramo sa mašinom, da je razumemo. Nauka o programiranju razvila se od vremena kada su se pojavili programski jezici, a na kraju krajeva, programski jezik najvišeg nivoa, po svemu sudeći, još uvijek je dojenčad. Ali ako obratimo pažnju na stope rasta i razvoj najnovijih tehnologija u oblasti programiranja, onda možemo pretpostaviti da će u bliskoj budućnosti ljudsko znanje u ovoj oblasti pomoći u proizvodnji jezika koji mogu primati, obraditi i prenositi informacije u obliku misli, riječi, zvuka ili geste. Želio bih nazvati ovo dijete kompjuterizirane budućnosti: "programski jezici" najvišeg "nivoa". Možda je koncept rješavanja ovog problema jednostavan, a bliska budućnost ovog projekta nije daleko.

Razmišljajući o ovome, želim vjerovati u napredak nauke i tehnologije, u visoko kompjuteriziranu budućnost čovječanstva, kao jedinog stvorenja na planeti, čak i ako ne koristi jedan konkretan govorni jezik, ali može tako brzo napredovati i razviju svoj intelekt da prelazak sa višejezičnog sistema za opšte razumevanje neće morati dugo da čeka.

Spisak korištenih izvora

1) Rodley John Kreiranje Java-apleta - The Coriolis Group, Inc., 1996, Izdavačka kuća NIPF "DiaSoft Ltd.", 1996

2) Efergan Michael Java: Priručnik - QUE Corporation, 1997., Peter Com Publishing, 1998.

3) Davidov Mihail Izgiyaevich; Antonov Vadim Gennadievich “LEX - generator programa za leksičku analizu” MOSKVA - 1985;

4) "BASIC Face-off", Justin J. Crom, PC Tech Journal, septembar 1987, 136 Prevod: V.N. Lopukhov. (Integrator Promt98);

5) Kernighan B.V., Ritchie D., Manje A. "Programski jezik C." Ruski prevod: Moskva: Finansije i statistika. 1985;

6) Zolotarev V.V., „Osnove automatizacije”, deo 1, 1978;

7) Vaulin A.S., “Programski jezici” knjiga 5, 1993;

8) Terrence P. “Programski jezici: dizajn i implementacija”, 1979;

9) Kasvands E.G "Uvod u programiranje u asembler jeziku" deo 1;

10) Khrotko G., “Programski jezici visokog nivoa”, 1982;

11) Malyutin E.A., Malyutina L.V., „Programski jezici“, 1982;

12) Uškova V. „Novi programski jezici i tendencije njihovog razvoja“, 1982;

13) Huvenen E., Seppenen J., "The World of Lisp" v.1, 1990;

14) Young S., “Algoritamski jezici realnog vremena”, 1985.

Top srodni članci