Kratak pregled poznatih programskih jezika. Vrste programskih jezika Tri stručnjaka i tri vrste programskih područja

04.03.2021 Programi

Ako uzmemo sintaksu tvorbe njegovih konstrukcija kao znak klasifikacije, možemo je uvjetno podijeliti na sljedeće vrste:

    proceduralni,

    funkcionalan,

    logično,

    objektno orijentirano.

3.1. Proceduralni (algoritamski) jezik

Proceduralni programski jezik omogućuje programeru da definira svaki korak u procesu rješavanja problema. Osobitost takvih programskih jezika je da su zadaci podijeljeni u korake i rješavani korak po korak. Koristeći proceduralni jezik, programer definira jezične konstrukcije za izvođenje niza algoritamskih koraka.

Proceduralne jezike karakteriziraju sljedeće značajke:

    potreba za eksplicitnim upravljanjem memorijom, posebno opisom varijabli;

    niska prikladnost za simboličke izračune;

    nedostatak stroge matematičke osnove;

    visoka učinkovitost implementacije na tradicionalnim računalima.

Jedna od najvažnijih klasifikacijskih značajki proceduralnog jezika je njegova razina. Razina programskog jezika određena je semantičkim kapacitetom njegovih konstrukcija i stupnjem njegove usmjerenosti prema programeru. Što je jezik više orijentiran na čovjeka, to je njegova razina viša.

Proceduralni jezici uključuju: asemblerski jezik, C, Basic, Pascal.

3.2 Funkcionalni (aplikativni) jezik

Prvi takav jezik bio je LISP.

Ulogu glavne konstrukcije u funkcionalnim (aplikativnim) jezicima igra izraz. Izrazi uključuju skalarne konstante, strukturirane objekte, funkcije, tijela funkcija i pozive funkcija.

Aplikativni programski jezik uključuje sljedeće elemente:

    klase konstanti kojima funkcije mogu manipulirati;

    skup osnovnih funkcija koje programer može koristiti bez prethodne deklaracije ili opisa;

    pravila za konstruiranje novih funkcija od osnovnih;

    pravila za formiranje izraza na temelju poziva funkcija.

Navedena svojstva karakteriziraju aplikativne jezike kao programske jezike koji su vrlo visoka razina.

3.3 Logički (relacijski) jezik

Jezik PROLOG kreirao je francuski znanstvenik A. Colmeroe 1973. godine. Trenutno su poznati i drugi jezici, ali najrazvijeniji i najrašireniji logički programski jezik je Prolog. Logički programski jezici naširoko se koriste u sustavima umjetne inteligencije.

Logičke programske jezike karakteriziraju:

    visoka razina;

    strogi fokus na simboličke izračune;

    mogućnost inverznih izračuna, odnosno da se varijable u postupcima ne dijele na ulazne i izlazne;

    moguću logičku nepotpunost, jer je često nemoguće izraziti određene logičke odnose u programu, a također je nemoguće dobiti sve točne zaključke iz programa.

Konstrukti jezika ne odgovaraju matematičkim formulama, već definiraju odnose između objekata i količina; navode kakav rezultat želi korisnik, bez naznake kako to učiniti.

Logički i funkcionalni jezici su deklarativni jezici. Ovi jezici nemaju koncept "operatora" ("naredbe").

3.4 Objektno orijentirani jezik

Objektno orijentirani jezik stvara okruženje u obliku mnogo neovisnih objekata. Svaki objekt ponaša se kao zasebno računalo, može se koristiti za rješavanje problema kao “crne kutije” bez ulaženja u unutarnje mehanizme njihova funkcioniranja.

Objektno orijentirani programski jezici nedavno su postali vrlo popularni među programerima, jer omogućuju korištenje prednosti objektno orijentiranog pristupa ne samo u fazama projektiranja i izgradnje softverskih sustava, već iu fazama njihovog implementacija, testiranje i održavanje.

Moderni objektno orijentirani (OO) jezici koriste sljedeće metode: nasljeđivanje, enkapsulacija, polimorfizam.

U nekim objektno orijentiranim jezicima sve metode klase su virtualne.

Mnogi moderni jezici posebno su dizajnirani da olakšaju objektno orijentirano programiranje. Međutim, treba imati na umu da OOP tehnike možete primijeniti na neobjektno orijentirani jezik i obrnuto; korištenje objektno orijentiranog jezika ne znači da kôd automatski postaje objektno orijentiran.

Neki jezici (ponekad se nazivaju "čisto objektni" - Java ili Ruby) u potpunosti su izgrađeni oko objektnih alata - u njima je svaki podatak objekt, svaki kod je metoda neke klase i nemoguće je napisati program koji radi ne koristiti predmete. Ostali jezici ("hibridni") uključuju OOP podsustav u inicijalno proceduralnom jeziku. Omogućuju vam programiranje bez pristupa objektnim objektima. Klasični primjeri su C++ i Delphi (Object Pascal).

Udžbenik se sastoji od dva dijela: teorijskog i praktičnog. U teoretskom dijelu udžbenika ocrtavaju se temelji suvremenog računarstva kao složene znanstvene i tehničke discipline, uključujući proučavanje strukture i općih svojstava informacija i informacijski procesi, generalni principi razmatraju se konstrukcija računalnih uređaja, pitanja organizacije i funkcioniranja informacijskih i računalnih mreža, računalna sigurnost, ključni pojmovi algoritmizacije i programiranja, baze podataka i DBMS. Za kontrolu usvojenog teorijskog znanja ponuđena su pitanja i testovi za samotestiranje. U praktičnom dijelu obrađuju se algoritmi osnovnih radnji pri radu s programom za obradu teksta Microsoft Word, urednik tablice Microsoft Excel, program za izradu Microsoft Power Point prezentacija, programe za arhiviranje i antivirusni programi. Za konsolidaciju odrađene praktične nastave, na kraju svakog dijela predlaže se samostalan rad.

Knjiga:

Odjeljci na ovoj stranici:

8.2. Programski jezici

Vrste programiranja

Napredak računalna tehnologija odredio proces nastanka novih raznolikih znakovnih sustava za snimanje algoritama – programskih jezika. Značenje pojave takvog jezika je opremljen skup računalnih formula dodatne informacije, koji ovaj skup pretvara u algoritam.

Programski jezici su umjetno stvoreni jezici. Od prirodnih se razlikuju po ograničenom broju “riječi” i vrlo strogim pravilima za pisanje naredbi (operatora). Cjelokupnost takvih zahtjeva tvori sintaksu programskog jezika, a značenje svake naredbe i drugih jezičnih konstrukcija tvori njegovu semantiku.

Programski jezici su formalni jezici za ljudsku komunikaciju s računalom, dizajnirani za opisivanje skupa instrukcija, čije izvršenje osigurava ispravno rješenje traženog zadatka. Njihova glavna uloga je planiranje aktivnosti obrade informacija. Svaki programski jezik temelji se na sustavu koncepata, a uz njegovu pomoć osoba može izraziti svoje misli.

Veza između jezika na kojem razmišljamo/programiramo i problema i rješenja koje možemo zamisliti u svojim mislima vrlo je bliska. Iz tog je razloga ograničavanje svojstava jezika isključivo u svrhu eliminiranja programerskih pogrešaka u najboljem slučaju opasno. Kao i kod prirodnih jezika, postoje goleme prednosti ako ste barem dvojezični. Jezik pruža programeru skup konceptualnih alata; ako ne ispunjavaju zadatak, jednostavno se ignoriraju. Na primjer, ozbiljna ograničenja koncepta pokazivača tjeraju programera da koristi vektore i cijelu aritmetiku za implementaciju struktura, pokazivača, itd. Dobar dizajn i sloboda od pogrešaka ne mogu se jamčiti samo pomoću jezičnih sredstava.

Možda se čini iznenađujućim, ali određeno računalo je sposobno pokretati programe napisane na izvornom strojnom jeziku. Postoji gotovo isto toliko različitih strojnih jezika koliko i računala, ali svi su varijacije iste ideje: jednostavne operacije proizvode se brzinom munje na binarnim brojevima.

Strojno ovisni programski jezici

Strojno ovisni jezici su jezici čiji skupovi operatora i vizualnih sredstava značajno ovise o karakteristikama računala (interni jezik, struktura memorije itd.). Ovi jezici se nazivaju programski jezici niske razine. Usredotočeni su na određenu vrstu procesora i uzimaju u obzir njegove značajke. Operatori takvog jezika bliski su strojnom kodu i usmjereni su na specifične naredbe procesora, odnosno ovaj jezik ovisi o stroju. Jezik niske razine je asemblerski jezik. Uz njegovu pomoć stvaraju se vrlo učinkoviti i kompaktni programi, budući da programer dobiva pristup svim mogućnostima procesora. Slični se jezici koriste za pisanje malih aplikacije sustava, upravljački programi uređaja, biblioteke. U slučajevima kada je količina RAM-a i ROM-a mala (u području od nekoliko kilobajta), nema alternative asembleru. Ovi programski jezici omogućuju vam da dobijete najkraći i najbrži programski kod.

Strojno neovisni programski jezici

Strojno neovisni jezici su sredstva za opisivanje algoritama za rješavanje problema i informacija koje treba obraditi. Jednostavni su za korištenje širokom krugu korisnika i ne zahtijevaju od njih poznavanje specifičnosti organizacije funkcioniranja računala i računalnog sustava.

Takvi se jezici nazivaju programski jezici visoke razine. Programi sastavljeni na takvim jezicima su nizovi izjava strukturiranih prema pravilima gledanja jezika (zadaci, segmenti, blokovi itd.). Jezične izjave opisuju radnje koje sustav mora izvesti nakon prevođenja programa na strojni jezik.

Nizovi naredbi (procedure, potprogrami), koji se često koriste u strojnim programima, predstavljeni su u jezicima visoke razine pojedinačnim izjavama. Programer nije mogao detaljno opisati proces izračunavanja na razini strojnih instrukcija, već se usredotočiti na glavne značajke algoritma.

Programski jezici visoke razine su puno bliži i razumljiviji ljudima. Oni ne uzimaju u obzir značajke specifičnih računalnih arhitektura, odnosno ti su jezici neovisni o stroju. To omogućuje da se program jednom napisan na takvom jeziku koristi na različitim računalima.

Moguće je pisati programe izravno u strojnom jeziku, iako je to teško. U osvit kompjuterizacije (ranih 1950-ih), strojni jezik bio je jedini jezik; čovjek do tog vremena nije izumio ništa drugo. Kako bi se programeri spasili od surovosti strojnog programskog jezika, stvoreni su jezici visoke razine (tj. nestrojni jezici), koji su postali svojevrsni povezujući most između ljudi i strojnog jezika računala. Jezici visoke razine rade preko programa za prevođenje koji unose "izvorni kod" (hibrid engleskih riječi i matematičkih izraza koje čita stroj) i na kraju uzrokuju da računalo izvrši odgovarajuće naredbe dane na strojnom jeziku.

Programski jezici visoke razine uključuju sljedeće: Fortran, Cobol, Algol, Pascal, Basic, C, C++, Java, HTML, Perl i drugi.

Pomoću programskog jezika ne stvara se gotov program, već samo njegov tekst koji opisuje prethodno razvijeni algoritam. Da biste dobili radni program, morate automatski prevesti ovaj tekst u strojni kod i zatim ga koristiti odvojeno od izvorni tekst, ili odmah izvršiti jezične naredbe navedene u tekstu programa. Za to se koriste prevoditeljski programi.

Postoje dvije glavne vrste prevoditelja (slika 8.4): tumači, koji skeniraju i provjeravaju izvorni kod u jednom koraku, i kompajleri, koji skeniraju izvorni kod kako bi proizveli tekst programa na strojnom jeziku koji se zatim zasebno izvršava.


Slika 8.4. Vrste prevoditelja

Pri korištenju prevoditelja cijeli se izvorni tekst programa pretvara u strojne kodove, a ti se kodovi upisuju u memoriju mikroprocesora. Pri korištenju tumača izvorni tekst programa upisuje se u memoriju mikroprocesora, a prijevod se izvodi kada se pročita sljedeća izjava. Naravno, izvedba tumača je puno niža u usporedbi s kompajlerima, budući da se pri korištenju operatora u petlji on prevodi mnogo puta. Međutim, kada programirate na jeziku visoke razine, količina koda koju treba pohraniti u Unutarnja memorija, može biti znatno manji u usporedbi s izvršnim kodom. Još jedna prednost korištenja tumača je laka prenosivost programa s jednog procesora na drugi.

Jedna od često citiranih prednosti interpretativne implementacije je da dopušta "neposredan način". Izravni način rada omogućuje vam da računalu postavite zadatak i vraća vam odgovor čim pritisnete ENTER. Osim toga, tumači imaju posebne atribute koji olakšavaju otklanjanje pogrešaka. Možete, primjerice, prekinuti obradu programa tumača, prikazati sadržaj određenih varijabli, preletjeti program i zatim nastaviti s izvođenjem. Međutim, jezici tumača imaju nedostatke. Potrebno je, na primjer, imati kopiju interpretera u memoriji u svakom trenutku, dok mnoge mogućnosti interpretera, a time i njegove mogućnosti, možda neće biti potrebne za izvođenje određenog programa. Prilikom izvršavanja programskih naredbi, tumač prvo mora skenirati svaku naredbu kako bi pročitao njen sadržaj (što ta osoba traži od mene da učinim?) i zatim izvršiti traženu operaciju. Operatori u petljama se pretjerano skeniraju.

Kompilator je prevoditelj teksta u strojni jezik koji čita izvorni tekst. Procjenjuje ga prema sintaktičkoj strukturi jezika i prevodi u strojni jezik. Drugim riječima, kompajler ne izvršava programe, on ih gradi. Interpretori se ne mogu odvojiti od programa koje pokreću; kompajleri rade svoj posao i odlaze sa scene. Kada radite s prevedenim jezikom kao što je Turbo BASIC, smatrat ćete da je potrebno razmišljati o svojim programima u smislu dvije glavne faze njihovog života: razdoblje prevođenja i razdoblje izvođenja. Većina programa radit će četiri do deset puta brže od svojih ekvivalenata tumača. Ako radite na njegovom poboljšanju, možete postići 100x poboljšanje performansi. Druga strana novčića je da programi koji provode većinu svog vremena petljajući s datotekama na disku ili čekajući unos neće moći pokazati nikakvo impresivno povećanje brzine.

Proces stvaranja programa naziva se programiranje.

Postoji nekoliko vrsta programiranja.

Algoritamski ili modularni

Osnovna ideja algoritamskog programiranja je podijeliti program u niz modula, od kojih svaki izvodi jednu ili više radnji. Jedini uvjet za modul je da njegovo izvršenje uvijek počinje s prvom naredbom i uvijek završava s posljednjom (to jest, tako da je nemoguće pristupiti naredbama modula izvana i prenijeti kontrolu s modula na druge naredbe, zaobilazeći završni).

Algoritam u odabranom programskom jeziku napisan je pomoću naredbi za opisivanje podataka, izračunavanje vrijednosti i kontrolu slijeda izvođenja programa.

Tekst programa je linearni niz dodjeljivanja, petlje i uvjetnih iskaza. Na taj način možete rješavati ne baš složene probleme i stvarati programe koji sadrže nekoliko stotina redaka koda. Nakon toga, razumljivost izvornog teksta naglo pada zbog činjenice da se opća struktura algoritma gubi iza specifičnih jezičnih operatora koji izvode previše detaljne, elementarne radnje. Pojavljuju se brojne ugniježđene uvjetne naredbe i operatori petlje, logika postaje potpuno zbunjujuća, a pri pokušaju ispravljanja jedne pogrešne naredbe uvodi se nekoliko novih pogrešaka povezanih s osobitostima rada ovog operatora, čiji se rezultati često uzimaju u obzir u raznim mjestima u programu.

Strukturirano programiranje

Prilikom izrade aplikacija srednje veličine (nekoliko tisuća redaka izvorni kod) koristi se strukturirano programiranje čija je ideja da struktura programa odražava strukturu problema koji se rješava tako da je algoritam rješenja jasno vidljiv iz izvornog teksta. Da biste to učinili, morate imati sredstva za stvaranje programa ne samo koristeći tri jednostavnih operatora, ali i korištenjem sredstava koja točnije odražavaju specifičnu strukturu algoritma. U tu svrhu u programiranje je uveden koncept potprograma - skupa operatora koji izvode željenu radnju i neovisni su o ostalim dijelovima izvornog koda. Program je podijeljen u mnogo malih potprograma (uzimajući do 50 naredbi - kritični prag za brzo razumijevanje svrhe potprograma), od kojih svaki izvodi jednu od radnji navedenih u izvornom zadatku. Kombiniranjem ovih potprograma moguće je oblikovati konačni algoritam ne od jednostavnih operatora, već od cjelovitih blokova koda koji imaju određeno semantičko značenje, a takvi se blokovi mogu nazivati ​​imenom. Ispada da su potprogrami novi operatori ili jezične operacije koje definira programer.

Mogućnost korištenja potprograma klasificira programski jezik kao proceduralni jezik.

Prisutnost rutina omogućuje vam da dizajnirate i razvijate aplikaciju od vrha prema dolje - ovaj pristup se naziva dizajn odozgo prema dolje. Prvo se odabire nekoliko potprograma koji rješavaju najglobalnije probleme (na primjer, inicijalizacija podataka, glavni dio i završetak), tada je svaki od ovih modula detaljan na nižoj razini, razlažući se, pak, na mali broj drugih potprograma, i tako dalje dok se cijeli zadatak ne završi.

Ovaj pristup je prikladan jer omogućuje osobi da stalno razmišlja na razini predmeta, bez spuštanja na određene operatore i varijable. Osim toga, nekima postaje moguće ne implementirati potprograme odmah, već ih privremeno odgoditi dok se drugi dijelovi ne završe. Na primjer, ako postoji potreba za izračunavanjem složene matematičke funkcije, tada se dodjeljuje zaseban potprogram za takav izračun, ali ga privremeno implementira jedan operator, koji jednostavno dodjeljuje unaprijed odabranu vrijednost. Nakon što je cijela aplikacija napisana i otklonjene pogreške, možete početi implementirati ovu funkciju.

Također je važno da se male potprograme puno lakše ispravljaju, što značajno povećava ukupnu pouzdanost cijelog programa.

Vrlo važna karakteristika potprogrami – to je njihova mogućnost ponovno koristiti. Integrirani programski sustavi dolaze s velikim bibliotekama standardnih rutina koje mogu značajno povećati produktivnost korištenjem tuđeg rada za stvaranje uobičajeno korištenih rutina.

Postoje dvije vrste potprograma - procedure i funkcije. Razlikuju se po tome što procedura jednostavno izvršava grupu operatora, a funkcija dodatno izračunava određenu vrijednost i prosljeđuje je natrag glavni program(vraća vrijednost). Ova vrijednost ima određeni tip (za funkciju se kaže da ima takav i takav tip).

Potprogrami obavljaju tri važna zadatka:

Uklanja potrebu ponavljanja sličnih fragmenata u tekstu programa;

Poboljšati strukturu programa, čineći ga lakšim za razumijevanje;

Povećava otpornost na pogreške u programiranju i nepredviđene posljedice tijekom izmjena programa.

Objektno orijentirano programiranje

Sredinom 80-ih javlja se novi smjer u programiranju koji se temelji na konceptu objekta. Do tada su glavna ograničenja mogućnosti stvaranja velikih sustava bila nametnuta nejedinstvom programa podataka i metoda za njihovu obradu.

Stvarni objekti okolnog svijeta imaju tri osnovne karakteristike: imaju skup svojstava, za koje su sposobni različite metode promijeniti ta svojstva i odgovoriti na događaje koji se javljaju u okolnom svijetu i unutar samog objekta. Upravo u tom obliku koncept objekta implementiran je u programskim jezicima kao skup svojstava (struktura podataka karakterističnih za ovaj objekt), metoda za njihovu obradu (rutine za promjenu svojstava) i događaja na koje ovaj objekt može reagirati a koji u pravilu dovode do promjene svojstava objekta.

Pojava mogućnosti stvaranja objekata u programima imala je kvalitativni utjecaj na produktivnost programera. Maksimalna količina aplikacija koje su postale dostupne za izradu grupi programera od 10 ljudi povećala se tijekom nekoliko godina na milijune linija koda, dok je u isto vrijeme bilo moguće postići visoka pouzdanost programe i, što je još važnije, ponovno koristiti prethodno stvorene objekte u drugim zadacima.

Objekti mogu imati identičnu strukturu i razlikovati se samo u vrijednostima svojstava. U takvim slučajevima program stvara novi tip na temelju strukture jednog objekta. Naziva se klasa, a svaki konkretan objekt koji ima strukturu te klase naziva se instancom klase.

Objektno orijentirani programski jezik karakteriziraju tri glavna svojstva:

1. Enkapsulacija - kombiniranje podataka s metodama u jednoj klasi;

Ne znam kako sada stoje stvari u obrazovanju, ali prije 10-15 godina, ni u školi ni na fakultetu, nitko nije ozbiljno objasnio da programiranje ima svoje vrste, od kojih svaka zahtijeva poseban način razmišljanja. Nije da će ovo osakatiti nečiju sudbinu, ali proučavanje softverskih disciplina moglo bi ići mnogo brže ako bismo u fazi postavljanja temelja predstavili različite jezike i pristupe, a ne zombijevski podučavali C++ u njegovim konzolnim manifestacijama .

Mnogi ljudi, suočeni s potrebom pisanja funkcionalnog koda, često žale što je proceduralni način razmišljanja toliko duboko ukorijenjen u mozgu da ga nije lako promijeniti. Stoga je bolje započeti svoj put da postanete programer ne odabirom jezika, već odabirom vrste programiranja.

Vrste programiranja

Složimo se odmah: bit će šest vrsta. Ovo je prilično detaljna podjela. Obično se dodjeljuju 3-4, ali budući da se suočavamo sa zadatkom odabira staze za početnike, to je potpuno opravdano.

Proceduralno programiranje također je imperativ.

Postavlja zadatak stvaranja koda na jeziku koji stroj koji se koristi može razumjeti. Najpoznatiji slučaj je Turingov stroj; među poznatim programskim jezicima - C/C++, Ada, Pascal, Go. Zadaci se ovdje rješavaju sustavno: prvo se objekt deklarira, zatim definira, a zatim se na njemu izvodi radnja:

var
S: niz;

S:= 'Zdravo!';

Deklarativno programiranje.

U proceduralnom slučaju, vektor optimizacije jezika usmjerava se od razine stroja prema korisničkom jeziku korištenjem osnovnih principa OOP-a, klasa, metoda itd. Ovdje je sam zadatak u prvom planu, a način njegovog izvršenja sekundarni. Upečatljiv primjer je HTML jezik za označavanje. Ako želite postaviti gumb, formalno ne morate stvoriti objekt i dodijeliti mu atribute:

Funkcionalno programiranje.

Kao što znate iz kolegija matematike, rezultat izvršavanja bilo koje funkcije može se prikazati u obliku tabličnih podataka, jedino pitanje je učestalost uzorkovanja i raspon vrijednosti. To jest, bez obzira koliko se puta funkcija izvrši, bez obzira na njeno mjesto u problemu, rezultat za iste vrijednosti ostat će isti. U imperativnom programiranju to se ne radi uvijek, jer se vrijednosti varijabli mogu mijenjati tijekom programa, što će rezultat učiniti ovisnim o određenim uvjetima.

Funkcionalno programiranje nema taj nedostatak: ovdje radite s funkcijama - početnim, inkrementalnim i rezultantnim - ali ne s određenim vrijednostima. Popularni predstavnici uključuju Lisp, Clojure, Haskell. Funkcionalno programiranje smatra se složenim i suvišnim za većinu aplikacija. Otuda niska potražnja za stručnjacima, ali to također rezultira visokim plaćama i stvarno zanimljivim radom.

Logičko programiranje.

Kao što naziv sugerira, radi na jednostavnoj matematičkoj logici. Istaknuti predstavnici su Planner i Prolog. Prilično ograničen skup radnji može biti stvarno koristan za stvaranje najjednostavnije umjetne inteligencije ili treninga mozga, ali u stvaran život Samo logičko programiranje se rijetko koristi.

Dinamičko programiranje.

To je slučaj kada je za rješavanje složenog kompleksnog problema potrebno rastaviti ga na nekoliko jednostavnijih, minimizirajući broj ciklusa izvršavanja. Idealno bi bilo da se svaki jednostavni zadatak izvede jednom, ali u praksi je to prilično rijetko. Dinamičko programiranje je više koncept primjenjiv na sve jezike, tako da nema predstavnika ovog pravca. Ali od vas će zahtijevati poseban način razmišljanja na isti način.

Grafičko programiranje također je vizualno.

Poziva programera na suradnju grafičke slike, ne tekst. To se može izraziti na različite načine - postoje posebni jezici, poput Scratch ili BluePrint, postoje jezici dijagrama ili dijagrama (LD ili FBD), postoje jednostavno dijelovi programiranja koji se odnose na interakciju s obrascima i grafikom. U potonjem slučaju to može biti bilo koji jezik; vizualizacija se provodi razvojnim alatima (Borland Delphi/C++, Vizualni studio, Adobe Dreamweaver itd.). Takvo grafičko programiranje u svom čistom obliku izuzetno je rijetko, bez razumijevanja jezika i strukture koda nemoguće je stvoriti nešto ozbiljno.

Odmor

Programiranje se dijeli na mnogo vrsta, a početnici za neke od njih niti ne znaju: sinkrono/asinkrono/temeljeno na događajima, sekvencijalno/paralelno, različito po zadacima koje rješavaju te uključivanju umjetne inteligencije i statistike.

Odabir početne paradigme programiranja ne znači odabir samo jednog puta. Naprotiv, bez vezivanja za određene jezike, profesije i softverska okruženja, počevši od "vašeg" načina razmišljanja, za koji ćete se u početku postaviti ispravno razumijevanje u srži. Uspješan, sretan i bogat informatičar nije onaj koji uđe u pravu struju, već onaj za koga je svaka struja prilika da ostvari svoj potencijal.

1. Uvod

Uvođenje računala u sve sfere ljudske djelatnosti zahtijeva od stručnjaka različitih profila ovladavanje vještinama korištenja računalne tehnologije. Sve je veća obučenost studenata koji se već od prve godine upoznaju s korištenjem računala i jednostavnih numeričkih metoda, a da ne govorimo o tome da pri izradi kolegija i diplomskih projekata korištenje računalne tehnologije postaje norma u velika većina sveučilišta.

Računalna tehnologija sada se koristi ne samo u inženjerskim proračunima i ekonomskim znanostima, već iu takvim tradicionalno nematematičkim specijalnostima kao što su medicina, lingvistika i psihologija. S tim u vezi, može se konstatirati da je korištenje računala postalo široko rasprostranjeno. Pojavila se velika kategorija stručnjaka - korisnika računala kojima je potrebno znanje o korištenju računala u svojoj djelatnosti - vještine rada s postojećim softverom, kao i kreiranje vlastitog softvera prilagođenog rješavanju određenog problema. I ovdje opisi programskih jezika dolaze u pomoć korisniku.

2. Što je programski jezik

Programski jezik- formalni znakovni sustav dizajniran za opisivanje algoritama u obliku koji je prikladan za izvođača (na primjer, računalo). Programski jezik definira skup leksičkih, sintaktičkih i semantičkih pravila koja se koriste za sastavljanje računalnog programa. Omogućuje programeru da točno odredi na koje će događaje računalo reagirati, kako će se podaci pohranjivati ​​i prenositi te koje akcije treba izvršiti na njemu pod različitim okolnostima.

Od stvaranja prvih programabilnih strojeva, čovječanstvo je već smislilo više od dvije i pol tisuće programskih jezika. Svake godine njihov se broj nadopunjuje novima. Neke jezike koristi samo mali broj vlastitih programera, dok drugi postaju poznati milijunima ljudi. Profesionalni programeri ponekad koriste više od desetak različitih programskih jezika u svom radu.

Tvorci jezika različito tumače koncept programski jezik. Među zajedničkim točkama koje prepoznaje većina programera su sljedeće:

· Funkcija: programski jezik dizajniran za pisanje računalni programi, koji služe za prijenos instrukcija računalu za izvođenje određenog računalnog procesa i organiziranje upravljanja pojedinim uređajima.

· Zadatak: Programski jezik razlikuje se od prirodnih jezika po tome što je dizajniran za prijenos naredbi i podataka od osobe do računala, dok se prirodni jezici koriste samo za međusobnu komunikaciju ljudi. U načelu možemo generalizirati definiciju "programskih jezika" - ovo je način prijenosa naredbi, naredbi, jasnih smjernica za djelovanje; dok ljudski jezici također služe za razmjenu informacija.

· Izvršenje: Programski jezik može koristiti posebne konstrukcije za definiranje i manipuliranje podatkovnim strukturama i kontrolu procesa izračunavanja.

3. Faze rješavanja problema na računalu.

VT je pronašao svoju najučinkovitiju primjenu pri izvođenju radno intenzivnih proračuna u znanstvenim istraživanjima i inženjerskim proračunima. Kod rješavanja problema na računalu glavna uloga ipak pripada osobi. Stroj samo izvršava svoje zadatke prema razvijenom programu. Ulogu čovjeka i stroja lako je razumjeti ako se proces rješavanja problema podijeli u dolje navedene faze.

Formulacija problema. Ova se faza sastoji od smislene (fizičke) formulacije problema i utvrđivanja konačnih rješenja.

Konstrukcija matematičkog modela. Model mora ispravno (adekvatno) opisivati ​​osnovne zakonitosti fizikalnog procesa. Konstrukcija ili odabir matematičkog modela od postojećih zahtjeva duboko razumijevanje problema i poznavanje relevantnih grana matematike.

Razvoj Svjetskog kupa. Budući da računalo može izvoditi samo najjednostavnije operacije, ono ne “razumije” formulaciju problema, čak ni u matematičkoj formulaciji. Da bi se to riješilo, mora se pronaći numerička metoda koja omogućuje smanjenje problema na neki računski algoritam. U svakom konkretnom slučaju potrebno je odabrati odgovarajuće rješenje od već razvijenih standardnih.

Razvoj algoritma. Proces rješavanja problema (proces računanja) zapisan je kao niz elementarnih aritmetičkih i logičkih operacija koje vode do konačnog rezultata i naziva se algoritam rješavanja problema.

Programiranje. Algoritam za rješavanje problema napisan je strojno razumljivim jezikom u točnom obliku određeni slijed operacije – programi. Proces se obično provodi pomoću nekih posredni jezik, a njegovo emitiranje provodi sam stroj i njegov sustav.

Prilagodba programa. Sastavljeni program sadrži razne vrste pogrešaka, netočnosti i administrativnih pogrešaka. Otklanjanje pogrešaka uključuje praćenje programa, dijagnosticiranje (traženje i određivanje sadržaja) grešaka i njihovo otklanjanje. Program se testira rješavanjem kontrolnih (testnih) problema kako bi se dobila sigurnost u pouzdanost rezultata.

Izvođenje proračuna. U ovoj fazi pripremaju se početni podaci za izračune i izračuni se provode pomoću dobro uspostavljenog programa. u isto vrijeme, kako biste smanjili ručni rad u obradi rezultata, možete široko koristiti prikladne obrasce za izdavanje rezultata u obliku teksta i grafičke informacije, u obliku razumljivom ljudima.

Analiza rezultata. Rezultati proračuna pažljivo se analiziraju, te se izrađuje znanstveno-tehnička dokumentacija.

4. Čemu služe programski jezici?

Proces rada računala sastoji se od izvršavanja programa, odnosno skupa vrlo specifičnih naredbi vrlo određenim redoslijedom. Strojni oblik instrukcije, koji se sastoji od nula i jedinica, označava točno koju akciju središnji procesor treba izvesti. To znači da kako biste računalu dali slijed radnji koje ono mora izvršiti, trebate navesti niz binarnih kodova za odgovarajuće naredbe. Programi strojnog koda sastoje se od tisuća instrukcija. Pisanje takvih programa je težak i dosadan zadatak. Programer mora zapamtiti kombinaciju nula i jedinica binarnog koda svakog programa, kao i binarne kodove adresa podataka korištenih u njegovom izvođenju. Mnogo je lakše napisati program na nekom jeziku koji je bliži prirodnom ljudskom jeziku, a posao prevođenja tog programa u strojne kodove povjeriti računalu. Tako su nastali jezici dizajnirani posebno za pisanje programa - programski jezici.

Dostupno je mnogo različitih programskih jezika. Zapravo, možete koristiti bilo koji od njih za rješavanje većine problema. Iskusni programeri znaju koji jezik je najbolje koristiti za rješavanje svakog konkretnog problema, jer svaki jezik ima svoje mogućnosti, usmjerenost prema određenim vrstama problema i svoj način opisivanja koncepata i objekata koji se koriste u rješavanju problema.

Svi brojni programski jezici mogu se podijeliti u dvije skupine: jezici niske razine I jezici visoke razine.

Jezici niske razine uključuju montažne jezike (od engleskog toassemble - sastaviti, sastaviti). Asemblerski jezik koristi simboličke naredbe koje je lako razumjeti i brzo zapamtiti. Umjesto niza binarnih kodova naredbi ispisane su njihove simboličke oznake, a umjesto binarnih adresa podataka koji se koriste pri izvođenju naredbe ispisana su simbolička imena tih podataka po izboru programera. Asemblerski jezik se ponekad naziva mnemonički kod ili autokod.

Većina programera koristi jezike visoke razine za pisanje programa. Poput običnog ljudskog jezika, takav jezik ima vlastitu abecedu - skup simbola koji se koriste u jeziku. Ovi se simboli koriste za sastavljanje takozvanih ključnih riječi jezika. Svaka od ključnih riječi ima svoju funkciju, baš kao u našem poznatom jeziku riječi sastavljene od slova abecede ovog jezika, može obavljati funkcije različitih dijelova govora. Ključne riječi povezuju se u rečenice prema određenim sintaktičkim pravilima jezika. Svaka rečenica definira određeni slijed radnji koje računalo mora izvesti.

Jezik visoke razine djeluje kao posrednik između osobe i računala, omogućujući osobi da komunicira s računalom na način bliži ljudima. Često ovaj jezik pomaže u odabiru ispravna metoda rješavanje problema.

Prije nego što napiše program na jeziku visoke razine, programer mora pisati algoritam rješavanje problema, tj korak po korak plan akcije koje je potrebno poduzeti da bi se riješio ovaj problem. Stoga se često nazivaju jezici koji zahtijevaju preliminarnu kompilaciju algoritma algoritamski jezici.

Proceduralno (imperativno) programiranje odraz je arhitekture tradicionalnih računala. Program u proceduralnom programskom jeziku sastoji se od niza operatora (uputa) koji određuju postupak rješavanja problema. Glavni je operator dodjele, koji se koristi za promjenu sadržaja memorijskih područja. Koncept memorije kao pohrane vrijednosti čiji se sadržaj može ažurirati programskim izjavama temeljan je za imperativno programiranje. Proceduralni programski jezik omogućuje programeru da definira svaki korak u procesu rješavanja problema. Osobitost takvih programskih jezika je da su zadaci podijeljeni u korake i rješavani korak po korak. Imperativno programiranje je najprikladnije za implementaciju malih podzadataka, gdje je brzina izvršenja na modernim računalima vrlo važna.

Proceduralni programski jezici uključuju: Ada, Basic (verzije počevši od Quick Basica prije pojave Visual Basic), C, COBOL, Fortran, Modula- 2, Pascal, PL/1, Rapir, REXX.

Strukturirano programiranje- metodologija izrade softver koji se temelji na prikazu programa u obliku hijerarhijska struktura blokovi izgrađeni od tri vrste osnovnih struktura: sekvencijalno izvođenje, grananje i petlja.

Objektno orijentirano programiranje je metodologija programiranja koja se temelji na predstavljanju programa kao skupa objekata od kojih je svaki implementacija određene klase (posebne vrste podataka), a klase tvore hijerarhiju temeljenu na principima nasljeđivanja.

Objekti označavaju kombinaciju podataka i postupaka koji ih obrađuju u jedinstvenu cjelinu. Objekti mogu međusobno razmjenjivati ​​poruke. Kada objekt primi poruku, odgovarajući rukovatelj, inače se zove metoda. Objekt ima asocijativni spremnik koji dopušta njegovu poruku da se dohvati metodom za njezinu obradu. Osim toga, objekt ima objekt pretka. Ako nije pronađena metoda za obradu poruke, poruka će biti proslijeđena objektu pretka. Ova struktura kao cjelina (tablica rukovatelja + preci), iz razloga učinkovitosti, odvojena je u poseban objekt tzv. razreda ovog objekta. Sam objekt će imati referencu na objekt koji predstavlja njegovu klasu. Objekti međusobno komuniciraju isključivo slanjem poruka jedni drugima.

Važno je istaknuti sljedeća tri glavna svojstva objekata.

Enkapsulacija (zaštita podataka)- mehanizam koji kombinira podatke i metode koje manipuliraju tim podacima i štiti oboje od vanjskih smetnji.


Nasljedstvo je proces kojim jedan objekt može naslijediti svojstva drugog objekta i dodati im značajke karakteristične samo za njega. Odnos "potomak-predak" u klasama obično se naziva nasljeđivanjem.

Polimorfizam je svojstvo koje omogućuje zamjenu objekta drugim objektom slične strukture klase. Stoga, ako u bilo kojem scenariju interakcije objekta zamijenite proizvoljni objekt drugim koji može obraditi iste poruke, scenarij će također biti implementiran.

Deklarativno programiranje. Naglasak u deklarativnom programiranju je na onome što treba učiniti, a ne na tome kako bi se to trebalo učiniti (u imperativnim jezicima). Ovdje je glavna stvar točna formulacija problema, a odabir i primjena potrebnog algoritma za njegovo rješavanje problem je izvršnog sustava, ali ne programera. Na primjer, web stranice na HTML jezik su deklarativne jer opisuju što stranica treba sadržavati, a ne kako stranica treba biti prikazana na ekranu. Ovaj pristup se razlikuje od imperativnih programskih jezika, koji zahtijevaju od programera da specificira algoritam koji treba izvršiti.

Postoje dvije grane deklarativnog programiranja: funkcionalna, koja se temelji na matematičkom konceptu funkcije koja ne mijenja svoje okruženje, za razliku od funkcija u proceduralnim jezicima koji dopuštaju nuspojave, i logička, u kojoj se programi izražavaju kao matematičke logičke formule i računalo za rješavanje problema pokušava iz njih izvući logične posljedice.

Logičko programiranje na temelju matematičke logike. Ali najpoznatiji logički programski jezik je PROLOG. PROLOG program sadrži dvije komponente: činjenice i pravila. Činjenice predstavljaju podatke s kojima program operira, a zbirka činjenica čini PROLOG bazu podataka, koja je u biti relacijska baza podataka. Glavna operacija koja se izvodi na podacima je operacija podudaranja, koja se naziva i operacija objedinjavanja ili usklađivanja.

Kao i kod drugih deklarativnih jezika, pri radu s njim programer opisuje situaciju (pravila i činjenice) i formulira cilj (upit), dopuštajući PROLOG tumaču da pronađe rješenje problema za njega. PROLOG interpreter je mehanizam za rješavanje problema korištenjem PROLOG jezika. PROLOG program je skup činjenica i (moguće) pravila. Ako program sadrži samo činjenice, onda se naziva baza podataka. Ako sadrži i pravila, onda se često koristi termin baza znanja.

Za razliku od programa napisanih u proceduralnim jezicima, koji propisuju slijed koraka koje računalo mora izvesti da bi riješilo problem, u PROLOGU programer opisuje činjenice, pravila, odnose među njima i postavlja pitanja o problemu. Najčešća primjena PROLOG-a je u ekspertnim sustavima.

Pitanja za samotestiranje

1. Što je program? Što podrazumijevate pod izvođačem?

2. Što je strojni kod?

3. Što je prevoditelj? Nabrojite vrste prevoditelja.

4. Kako radi prevoditelj? Koje su njegove prednosti?

5. Koja je prednost kompilatora?

6. Koje su komponente uključene u integrirani programski sustav?

7. Što se podrazumijeva pod strukturom podataka, koja je klasifikacija strukture podataka?

8. Što se podrazumijeva pod podatkovnim nizovima i koje se operacije s njima mogu izvoditi?

9. Koji algoritmi postoje za sortiranje nizova?

10. Koja je svrha potprograma?

11. Zašto nam je potrebna knjižnica potprograma?

12. Koje vrste programiranja postoje?

Književnost

1. Stavrovsky A.B., Karnaukh T.A. Prvi koraci u programiranju. Priručnik za samoučenje. - M.: Williams, 2006. - 400 str.

2. Okulov S. Osnove programiranja Izdavač: Binom. Laboratorij znanja, 2008. - 383 str.

3. Kansedal S.A. Osnove algoritmizacije i programiranja. - M.: Forum, 2008. - 351 str.

4. httn//www myfreesoft ru/default-windows-nroprams html - standardno Windows programi

5. httn//khni-iin mink kharkiv edu/lihrary/datastr/hook/nrt01 html#lb11 - modeli i strukture podataka

6. httn://www.intuit.ru/denartment/se/nhmsu/11/3.html#sect5 - modeli i strukture podataka

7. http://inf.1sentemher.ru/2007/15/00.htm - enciklopedija nastavnika informatike

8. http://www.delnhi.int.ru/articles/119/ - potprogrami.

9. httn//inroc ru/narallel-nroPramminP/lection-5/ - razvrstavanje hrpe.