Računala Windows Internet

Jezik visoke razine za pisanje programa. Izbor programskog jezika. Razine programskog jezika

Različiti programski jezici i njihova područja primjene. Predavanje u Yandexu

Svoj prvi ovogodišnji post odlučili smo posvetiti jednoj vrlo osnovnoj temi, o kojoj je predavanje održano u Maloj SHAD-u. Angažirani su učenici srednjih škola koji se zanimaju za tehnologiju, otuda i specifičnost izlaganja - predavanje će biti posebno zanimljivo onima koji tek počinju programirati i razmišljaju u kojem smjeru se razvijati. Za njih Yandex ima tečaj "Uvod u programiranje (C ++)", koji se može polagati na platformi Stepic.org.

Opseg programa i aplikacija

Pisanje ciklusa kompilacije može dovesti do više ili manje ozbiljnih kašnjenja u razvoju programa. Njihova je sintaksa često bliska ljudskim jezicima, što znači da čak i neiskusni programeri mogu brzo čitati programe. Osim toga, često nude elemente sintakse koje samo programski jezici niske razine mogu pružiti samo putem knjižnica. Najbolji primjeri su ugrađeni hash nizovi. Skriptni jezici su uglavnom besramni, što je prednost, a može biti i nedostatak.

Predavač Mikhail Gustokashin - kustos akademskih programa u Yandexu, direktor Centra za studentske olimpijade Fakulteta računalnih znanosti, HSE. Mikhail je trenirao desetke pobjednika i nagrađenih sveruskih olimpijada u programiranju.

U okviru predavanja govori se o tome što su programski jezici, po čemu se razlikuju, kako su se pojavili i koji su bolji, a koji lošiji. U početku ćemo malo govoriti o povijesti jezika - kako su se pojavili, kako su ljudi počeli programirati, kako se sve razvijalo, što se sada događa. U drugom dijelu će se dotaknuti za koje zadatke koji jezik odgovara, kako “odabrati svoj omiljeni jezik i uživati ​​u životu”. Predavač će također malo pričati o tome kako, po njegovom mišljenju, sve to naučiti i onda se zaposliti.

Skriptni jezici također često pružaju ugrađeno upravljanje memorijom i ne pružaju aritmetiku pokazivača. Osobito u slučaju zadataka s intenzivnim podacima, nedostaci skriptnih jezika u brzini postaju jasni - postoje različite metode koje pokušavaju zaobići ovaj nedostatak.

U kratkoj povijesti računala, stotine i stotine programskih jezika već su izmišljene. Međutim, u bilo kojem trenutku, postojalo je možda samo desetak popularnih programskih jezika. Pojavljuju se programski jezici i programski jezici. Neki od njih su čak i stvarno poznati, ali većina nije. Popis sjajnih programskih jezika se mijenja, ali to čini vrlo sporo. Većina programera puno uči i koristi različiti jezici u svojoj karijeri. Ali kada shvatite glavnu ideju, relativno ju je lako naučiti novi jezik jer se kaže da latinski pomaže da lakše naučite različite nove jezike.

Kao i uvijek, ispod reza je detaljan transkript predavanja kako biste se mogli kretati njegovim sadržajem.

Povijest programskih jezika

Krenimo od početka. U početku računala nisu imala ni tipkovnicu! Odnosno, sve je bilo jako loše - nisu imali tipkovnicu ni ekran, imali su bušene kartice (to su takve stvari s rupama ili bez rupa). U skladu s tim, ili su igle tamo zabodene, ili su tamo sjale svjetlom. Ako postoji rupa (ili obrnuto), to je značilo nula ili jedan. A programi su se u to vrijeme pisali strojnim kodovima – svaka operacija u računalu (zbrajanje, oduzimanje, neke složenije operacije) imala je neku vrstu strojnog koda. Ljudi su sami birali ovu šifru s pločice, svakakve adrese u memoriji, sve su to izbijali rukama i gurali u čitač - i sve se izbrojilo. Naravno, posao programera tada vjerojatno nije bio baš zanimljiv – praviti rupe – a s razvojem znanosti i tehnologije, naravno, počeli su smišljati svakakve „zanimljivije“ stvari. Na primjer asembler (Assembler), koji je već malo olakšao život.

Pa, kako je olakšao život? Umjesto pamćenja da postoji neka vrsta "čarobne" šifre za tim, korištene su svakakve riječi slične "ljudskom" Engleski- neki add ili mov - a zatim su nabrojani registri ili memorijska područja, varijable s kojima se te operacije trebaju izvesti. No, jasno je da je to, općenito, zahtijevalo i dovoljno veliki mentalni napor da se ima na umu u kojem registru što leži, gdje koje varijable i što se općenito događa. Zašto se to dogodilo? Zato što su računala bila "glupa" i nisu mogla razumjeti ništa "pametnije". Zapravo, za prevođenje strojnog koda iz asemblera također je potrebno vrijeme, memorija (tada je, naravno, nije bilo dovoljno).

Kasnije ćemo pogledati neke od najpopularnijih jezika. Ali ako ste novi u ovome, zapitajte se: zašto postoji toliko različitih programskih jezika kada sve što radimo je dajemo jednostavne naredbe računalu? Zašto ne postoji jedan programski jezik s kojim možete sve? Pa, ovaj jezik postoji. Ali ovo nije jedan od njih. Svako računalo, uključujući prijenosno računalo, pametni telefon, poslužitelj ili moj hladnjak, ako je jedno od ovih pametnih, ima mali mozak, ugrađenu središnju procesorsku jedinicu.

U svakodnevnom životu kažemo da pišemo kod koji računalo razumije ili je uglavnom, ali ne strogo gledano, netočan. Ovo su jedine istinite upute koje se pokreću izravno na računalu. Stoga se postavlja pitanje: zašto ne napišemo strojni kod? Pa zato što to jednostavno nije moguće. To su numeričke operacije, najmanja uputstva koji se izvršavaju na najmanjoj mogućoj razini u računalu. Šifra je samo za stroj, a ne za nas ljude. Različiti model računala znači drugačiji kod.

Postupno je postalo jasno da je vrlo teško razviti tako velike složene programe. Programerova produktivnost u ovim naredbama bila je iznimno niska – to jest, pisao je nekoliko redaka dnevno (značajno), a svaki redak nije radio ništa posebno – neke jednostavne aritmetičke operacije. I ljudi su željeli jezike učiniti mnogo sličnijim ljudskom jeziku, posebno engleskom, kako bi bilo lakše i praktičnije pisati programe. I idemo!

Upisati računalni program u strojni kod je kao kopati tunel kroz Alpe samo sa starom žlicom, žličicom od aluminija. Teoretski zamislivo, ali praktički nemoguće. Svi programski jezici su zapravo kompromis. Izmišljeni su kako bi premostili jaz između računala i ljudi. Neki programski jezici su vrlo bliski strojnim kodovima. Sljedeći je vjerojatno Assembler. Općenito, što je jezik bliži strojnim kodovima, to ga je teže programirati i više trebate znati o hardveru koji koristite.

Stari i mrtvi jezici

Fortran je postao jedan od prvih jezika. Inače, nokautiran je i na bušenim karticama - postojale su posebne bušene kartice za nokautiranje Fortran programa. Ali ako sad uzmete ovaj Fortran - po meni je čak negdje između 50-60. pojavio - i pokušajte nešto napisati na njemu, bit će vam jako neugodno, jamčim vam! Moderni Fortran je i danas živ, ali je sasvim drugačiji od onoga što je bio.

Drugi jezici - sada ću napisati jednu stvar za koju ste vjerojatno čuli, tada samo na svim događajima na kojima govore o povijesti programiranja - ovo je COBOL. Bio je to jezik za pisanje poslovnih aplikacija. Što su poslovne aplikacije? Bilo kakve transakcije u bankama, nešto drugo, sve je to napisano u Kobolu. Kod nas, naravno, nije baš popularan. Mislim da ćete teško naći programera na Kobolu, u Moskvi. I negdje ne u Moskvi - s još većim poteškoćama. Ali, iznenađujuće, čak i prije 10 godina, više od polovice svih kodova koje je čovječanstvo napisalo bilo je napisano u Cobolu. I do sada se značajan dio svih bankovnih transakcija obavlja pomoću programa napisanih u njemu (COBOL), a ljudi još uvijek na njemu nešto pišu.

Čemu služe programski jezici?

To je ono što nazivamo jezikom niske razine. Ovaj jezik se naziva jezikom visoke razine. Mnogo je lakše razumjeti i programirati. No, naravno, oni se sporije izvode jer ih računalo mora prevesti umjesto vas. Međutim, brzina u ovom trenutku nije važna, zbog čega se u ovom vodiču fokusiramo na ove jezike visoke razine. Ali bez obzira što napišemo, uvijek se mora prevesti u strojni kod prije nego što se izvrši. Dakle, iako je strojni kod toliko važan, nije nas briga.

Postoji i "smiješni" jezik, zvao se Algol (68. verzija, koja karakterizira godinu njegovog nastanka). To je algoritamski jezik. Uglavnom, tamo su nešto mogli, ali sad nas ne zanima baš što mogu. I tu naš izlet u antiku i relativno nekorištene jezike može završiti i prijeći na ono što je još živo (i aktivno živi).

Moramo razumjeti u čemu je stvar, ali programiranje za nas znači: mi pišemo izvor... Pišemo ovaj takozvani izvorni kod. Mi pišemo kod, a računalo nam ga prevodi. Da biste to objasnili, morate znati kako računalo radi i što znači programiranje.

Računalo se sastoji od mnogo dijelova, ali najvažniji je procesor, koji se naziva i središnja procesorska jedinica. Izračunava zadatke i djelomično koordinira rad računala. Ako nešto programirate, dat ćete upute računalu koje pokrećete. Da bi programirani program bio interaktivan, ulaz, Rezultat je ono što vidimo na ekranu ili u obliku lista s pisača. To bi bila igra bez inputa, bez igre, jer ne bi bila interaktivna. Postoji mnogo različitih vrsta unosa, ali najčešće se koristi unos s tipkovnice.

Stari, ali živi jezici

Algol je izmišljen u Europi, a Fortran se uglavnom koristio u Sjedinjenim Državama - nema velikih razlika. Koji je trend vidljiv? Isprva je sve bilo teško i za pisanje moraš biti gotovo inženjer, elektrotehničar, razumjeti gdje su zatvoreni kontakti i još nešto za programiranje. I tada je trebalo sjediti s lišćem i brojati uspomenu, paziti na nju. I postupno je sve postalo jednostavnije, jednostavnije, jednostavnije i onda još lakše za programera - da čovjek što manje misli, da što više radi automatski. Potkraj tog razdoblja (predavač ukazuje na Algol i Kobol) počinju se pojavljivati ​​jezici koji su u izvjesnom smislu "preživjeli" do danas.

OSNOVNI, TEMELJNI. Možda neki ljudi još uvijek nešto pišu na njemu, prema barem Vidio sam da u nekim ustanovama predaju na QBasicu - takav plavi prozorčić gdje piše "1989". Općenito, on živi "na sve strane"! Izmišljen je kao jezik za ne-programere. U to vrijeme programer je bio vrlo specijalizirana profesija. I ovdje vam kažu: “Ovdje imamo cool Basic jezik, i svaka razumna osoba će uzeti i napisati program na njemu - lako”. Opet, taj BASIC i moderni BASIC je ogromna razlika. Svi ovi redovi su numerirani svakih 10, svakakvi GOTO i ostali horori - nemaju nikakve veze s modernim BASIC-om, a nemaju čak ni s BASIC-om od 89.

Povijest programskih jezika

Programiranje, obrada ulaza i generiranje izlaza logičkim i matematičkim operacijama. Programski jezici su tekstovi, računalo ih čita i izvršava. Ali to nije tako jednostavno kao pisanje njemačkog ili engleskog teksta, nego je kao strani jezik, kineski, jer ne razumiješ nijednu riječ. Ne mogu ništa objasniti programskim jezicima, oni su namijenjeni samo da upućuju upute računalu i imaju samo mali "rječnik". To znači da nešto jednostavno, na primjer, "nebo je plavo", kompjuter ne bi trebao razumjeti, jer ono ne zna ništa i može se gotovo samo razmatrati.

Još jedna smiješna priča je Pascal jezik, nadaleko poznat u sveučilišnim krugovima, uglavnom u Rusiji i zemljama bivšeg Sovjetskog Saveza. Iznenađujuće se koristio i nastavlja se koristiti kao nastavni jezik. U ostatku svijeta je rjeđi, ali je i živ i zdrav. Postoji takva osoba Wirth - ovdje je znanstvenik, teoretičar. Sudjelovao je u raspravi o Algolu, nije mu se svidjelo to što se dogodilo i smislio je svoj jezik - Pascal. A onda je tvrtka Borland (a prije toga i mnoge druge tvrtke - posebice Apple bio angažiran) uzela i sve pokvarila. Imao je lijepu teoriju, vitak – “sve će biti dobro” – i tamo su uzeli i trpali što ljudima treba za posao. Pa, nije išlo onako lijepo kako je želio.

Koji programski jezici?

Procesor danas može razumjeti oko 90 instrukcija, što i čini. Budući da je ove naredbe ljudima teško razumjeti i da ih rijetko tko može programirati, razvijeni su programski jezici visoke razine. Oni se dobro razumiju u usporedbi s jezicima niske razine, koji se također nazivaju asemblerskim jezicima, i nude preko 90 unaprijed definiranih naredbi. Veća brzina računanja vaša je prednost.

Koja je razlika između viših i nižih programskih jezika

Prvo, dublji programski jezici su bliži strojnim kodovima i obično se kompiliraju.

I konačno,. Xi su izmislili inženjeri. Ako je Pascal izumio znanstvenik, onda su C izmislili Kernighan i Ritchie, oni su radili kao inženjeri u Bellu. Kako je do toga došlo? U to vrijeme bilo je nemoguće napisati išta sustavno na tim jezicima (predavač pokazuje na Fortran, COBOL, Algol). Što je "sustavno"? Na primjer, operativni sustav, neki drajveri, nešto drugo. Ovi jezici su bili za matematiku, za posao, za sve te stvari. A sve ostalo je napisano u Assembleru. Bilo je nekih jezika, oni su sada mrtvi, odnosno C jezik se nije pojavio odmah iz Assemblera, već kroz neke međustvari.

Kompilacija je prijevod u izvršni strojni jezik ili bytecode. Bytecode je iznad strojnog jezika i stoga mu je potreban tumač, koji zatim prevodi kod u strojni jezik. Prednost ovoga je neovisnost od platforme, interpreter se može programirati za svaki operativni sustav. Loša strana je u tome što su interpretirani jezici sporiji od kompiliranih jezika, posebno u razvoju igara - ključni argument za korištenje kompiliranog jezika. Također, programski jezici niže razine nemaju automatski kontroler memoriju, ali prilikom programiranja trebaju adresirati potrebnu memoriju, što može donijeti brzinu, ali je zeznuto.

Što je bit? Kernighan i Ritchie voljeli su se igrati igračkom Asteroidi - leti svemirski brod, a postoje asteroidi, on puca na njih i oni se raspadaju. Imali su server na kojem su igrali, ali tamo je bilo puno ljudi, a igračka je usporavala. I otkrili su negdje u svom uredu da imaju nekakvo računalo koje nitko ne koristi. No, postojao je problem - bila je drugačije arhitekture, a igra je napisana u Assembleru.

Viši programski jezici posebno su prikladni za početnike i zbog neovisnosti tipa podataka za početnike. Neovisnost tipa podataka znači da programskom jeziku nije važno je li varijabla numerička, slovna ili neka druga.

Što je potrebno za programiranje?

Na primjer, tip vrijednosti morate znati unaprijed, za razliku od jezika skriptiranja. Recimo da želite programirati program. Što trebaš? Prije svega, računalo koje je neophodno ako želite pokrenuti svoj program. Zapravo, gotovo samo poznavanje programskog jezika. Dakle, definitivno ste dobili sve, samo ono što morate napisati u uredniku, sada ćete se možda iznenaditi. Naredbe su ono što karakterizira programski jezik s "gramatikom" i programskom sintaksom.

Prepisali su ga, naravno, čak su i izrezali neke značajke kako bi se na njemu igrali. Ali to ih je navelo na pomisao da prepisivanje za novu arhitekturu svaki put nije baš pametno. I odlučili su napisati jezik visoke razine koji bi bio prikladan za sistemsko programiranje, odnosno u kojem bi bilo moguće upravljati memorijom, u kojem bi bilo moguće razumjeti gdje se nešto nalazi i kako pristupiti tim dijelovima memorije . I tako se pojavio jezik C, koji je imao ogroman utjecaj na sve kasnije. Svi su oni (predavač ukazuje na Algol, Fortran i ostale spomenute jezike) imali veliki utjecaj, ali C - da...

Zašto gramatika? Opet, nije teško napisati njemački tekst bez gramatike, ne. Sintaksa je potpuno drugačija između različiti jezici programiranje, ali ako znate koristiti programski jezik, nije tako teško naučiti novi. Zašto sintaksa? Budući da računalo ne prepoznaje početak i kraj instrukcije, morate mu reći gdje instrukcija počinje i gdje završava. To se radi s točkom i zarezom, točkama, odlomcima i raznim zagradama.

Koje elemente ima programski jezik?

No, ovo su samo neka od "gramatičkih pravila", ali ako znate da je to već pola stanarine. Mnogo je elemenata koje programski jezik mora objasniti, a svi oni ne bi bili od velike koristi i samo bi vas zbunili. Umjesto toga, trebali biste sada znati nešto programirati, samo trebate znati o osnovnim elementima. Kao što znate, računalo ne razumije ništa, pa programer pokušava dati računalu matematičke uvjete kako bi mu objasnio da ima naredbu. Ako želite programirati, potrebno vam je dobro matematičko i logičko razumijevanje.

Sukladno tome, to je bio glavni jezik u Unixu – operativnom sustavu koji je u to vrijeme bio još popularniji nego sada. A otprilike 80-ih godina situacija je bila otprilike ovakva (predavač pokazuje na Basic, C i drugim jezicima koji su spomenuti). Recimo da je sve to već potajno zamrlo (predavač briše reference na Assembler, Fortran i Algol)... A 80-ih su računala postala manja, pametnija, jeftinija, a ljudi su htjeli svakakve čudnosti, kako bi živjeti još bolje, živjeti još zabavnije.

Varijabla je način pohranjivanja broja, niza ili logičke vrijednosti u programu. U gotovo svim programskim jezicima varijable su najvažniji dio programskog jezika, samo oni "placeholderi" koji se mogu zamijeniti zadanom vrijednošću mogu stvarati interaktivne programe.

Što je programski jezik

Uvjet je zahtjev, ako se primijeni, onda se izvršava ono što je unutar uvjeta. Postoje operatori za stvaranje uvjeta. Operatori će biti: jednako, ne jednako, veće od, manje, istinito i netočno. Petlja sadrži kod koji se izvršava sve dok je uvjet koji pripada petlji istinit. Na primjer, deset puta ima prednost u tome što programer ne treba deset puta napisati kod.

Jezici izvorni iz 80-ih

Jedna od prvih neobičnosti bio je jezik C ++. C jezik ima ogroman broj nedostataka (pa, samo ogroman općenito) - na njemu možete učiniti bilo što, uključujući pucanje u nogu, pucanje u nogu s fikcijom, u drugu nogu, pucanje s jedna noga u drugu nogu, općenito - to želite učiniti. No, u isto vrijeme, neke arhitektonske stvari se tamo rade prilično teško - opet, kao u Assembleru, moramo pratiti gdje smo, što i koju memoriju smo dodijelili; tu je cijelo vrijeme ta memorija negdje "teče" - to jest, odabrali smo, zaboravili izbrisati, izbrisali pogrešnu stvar, izašli iz memorije, općenito - dobili smo hrpu problema.

C++ je izvorno stvoren kao skup dodataka jeziku C koji bi olakšao razvoj. U to vrijeme je objektno orijentirano programiranje postalo moderno i ljudi su odlučili da se sve može opisati u obliku hijerarhije, odnosno da imate loptu (apstraktnu), od nje nasljeđujete nogometnu loptu, odbojku, drugu apstraktnu loptu . Tada je bilo moderno da "sada sve pišemo u obliku neke hijerarhije, i sve će biti u redu, život će se poboljšati, sve će biti u redu i sve." U određenom smislu, C ++ je implementirao ovaj objektni pristup - to nije bio prvi objektno orijentirani programski jezik, ali je postao prilično popularan i u njemu su se počele pojavljivati ​​sve vrste značajki. Istodobno, C ++ je zadržao gotovo potpunu kompatibilnost (u to vrijeme) s jezikom C, program napisan u C uspješno je kompiliran kao C ++ u 99% slučajeva i čak je radio na isti način. Namjera je bila olakšati prelazak s C na C ++.

Funkcija je zbirka koda koja se može pozvati u bilo kojem trenutku. Na primjer, ako je kod upisan u funkciju, kod se ne bi trebao pisati tako često i može se pozvati putem odgovarajućeg naziva funkcije. Također možete pozvati funkcije s parametrima. Ovaj broj funkcija može koristiti kao varijablu. Na primjer, možete koristiti istu funkciju za izračun više faktura koje imaju istu formulu.

Ako želite vidjeti izvorni kod moje još nedovršene igre. Na stranicu s verzijom trenutne igre. Na ovoj web stranici bilo je potrebno programirati i prikazati atraktivan dizajn i brojne funkcije web stranice na optimalan i za moju majku zadovoljavajući način.

Uz objektni pristup (u C ++), brzo se pojavila Standard Template Library (STL). Mislim da su u školi oni koji su još učili Pascal otkrili da, prvo, tamo niste imali ugrađeno sortiranje (u drevnom plavom Borland Pascalu, sada je već u modernim verzijama) - postoji primjer (izvor) sortiranja , možete ga kopirati i zalijepiti. Ali ako ovdje želite sortirati cijele brojeve, ovdje želite stvarne brojeve, a ovdje su nizovi koji se mogu međusobno usporediti, morali ste napisati tri različite vrste koje rade apsolutno istu stvar, samo imaju različiti tipovi podaci. To nije baš dobro, a predlošci koji se nisu odmah pojavili u C ++ znatno su olakšali ovaj problem. To jest, imali ste apstraktni program koji je uspješno razvrstao nešto što se može usporediti jedno s drugim.

Skriptni jezici iz 90-ih

Ali vrijeme nije stalo, 80-ih se dogodilo puno zanimljivih stvari. No, negdje na prijelazu iz 80-ih u 90-e, računala su postala toliko dobra da je već bilo moguće raditi vrlo čudne i vrlo neučinkovite stvari. Konkretno, to su bili skriptni jezici koji nisu kompajlirani u strojni kod, već interpretirani. BASIC se također tumačio neko vrijeme, ali ti su skriptni jezici bili namijenjeni uglavnom za obradu teksta - na primjer, Perl, Python (tada nije bio jako poznat), PHP, Ruby - to su skriptni jezici koji se nalaze u u jednom ili drugom stupnju još uvijek žive (svi su se uspjeli pojaviti prije 2000. godine, čak i mnogo ranije).

Idemo malo preko njih, jer su to specifične stvari i sada se koriste na mnogim mjestima. Koja je ideja? Ako ne kompajliramo, onda se može dopustiti puno više. Na primjer, program može pogledati svoj kod i nekako ga koristiti; ona zna što se u njoj događa i zahvaljujući tome može učiniti puno zanimljivih stvari.

Perl je bio dizajniran za obradu teksta - u to je vrijeme već bilo toliko memorije u računalima da je u njega bilo moguće ubaciti neki tekst i učiniti nešto korisno s tim tekstom (na primjer, brojati riječi, tražiti neku vrstu). Ali, po mom mišljenju, osmislili su ga ljudi koji su bili malo izvan sebe, jer postoji jedna šala o njemu: "Svaki skup znakova napisan je ispravan program u Pearlu." Po mom mišljenju, na njemu možete samo pisati, ne možete ga čitati. Kada pogledam kod u Perlu i pokušam nešto shvatiti, ništa ne razumijem. Možda da ga bolje poznajem, nešto bih i razumio, ali kako sam čuo od onih ljudi koji još znaju, kažu da je lakše prepisati. Odnosno, programi su kratki i stvarno ih je lakše prepisati nego shvatiti što postoji i popraviti.

Otprilike u to vrijeme, sredinom 90-ih, pojavio se internet. Isprva je to bila pošta, stranice sa statičnim HTML-om, ali ljudi su tu htjeli dodati nekakvu dinamiku kako bi nam se sve odvijalo dinamički, mogli se ispuniti neki obrasci, knjige gostiju i još nešto. Sukladno tome, to je zahtijevalo neku vrstu interakcije, osmislili su protokol, kako on komunicira, i, što je najvažnije, generiranje tih statičnih (uvjetno) stranica koje će se "ispljunuti" korisniku na njegov zahtjev.

Općenito, ništa osim Pearl nije bilo prikladno u to vrijeme. Bila je loša ideja pisati rukovalac u čistom C ili C++. A zbog nedostatka boljeg jezika u to vrijeme (i dovoljno dugo), Pearl je bio popularan jezik za web razvoj. Naravno, razmjeri nisu usporedivi s onim što se sada događa.

PHP je nastao kao ... slučajno. Jedna osoba je brzo prestala s tim - napravio je nekakvu svoju stranicu, imao je nekakvu knjigu gostiju, nešto drugo, neke stvari. I napisao je skup makronaredbi neke vrste za Pearl, koji je izgledao kao C, jer je znao koristiti C, samo zato što mu je bilo tako udobno. I nazvao sam je Personal HomePage. Podijelio i rekao: "Ljudi, pogledajte koji sam komad napisao, ovdje je sve puno jasnije nego na Pearlu i možete ga urediti." I ljudima se svidjelo.

Onda je odustao od slučaja. Općenito, kao rezultat toga, ovaj PHP je počeo živjeti i s vremenom je postao mnogo popularniji od Perla. Ali ova njegova "porođajna trauma" (ideja je poput skupa makronaredbi za Pearl) s njim se poprilično našalila. Jezik se pokazao čudnim. Odnosno, razvijao se sam, nitko ga nije dizajnirao, nitko nije upravljao razvojnim procesom (ni tvrtka niti bilo koja osoba), ali je bilo mnogo grupa, od kojih je svaka pila ono što im se sviđa. Kao rezultat toga, funkcije se tamo nazivaju drugačije, nema čak ni stila, sve je kroz podvlake, općenito, postavke su tu i tamo, a kako će sve funkcionirati nije baš jasno. Ali možete sjesti i pisati u PHP-u za dva sata, jer je on to tako namjeravao.

Python i Ruby: Ruby je sada manje popularan, Python je nekako bolje "izrezan", ajmo o tome kasnije. Jasno je da su u to vrijeme to bili (predavač ukazuje na Perl, Python, Ruby, PHP) visokospecijalizirani jezici za visokospecijalizirane svrhe. Uglavnom, tada se u njima nije pisalo sistemsko programiranje, nikakva poslovna logika, a sada to ne radi puno.

Sastavljeni jezici iz 90-ih

Ići ćemo otprilike u isto vrijeme, ali u drugom smjeru. U to vrijeme koristili smo C ++ za gotovo sve što je trebalo napisati ne za web, ne za obradu teksta, već za jednostavne aplikacije, za operacijske sustave, za igračke - općenito, za bilo što. Ali C++ je zapravo jeziv jezik. Zašto? Jer, kao prvo, naslijedio je zbog kompatibilnost unatrag svi C problemi. Još bi ih moglo pobiti milijun različiti putevi, isti oni koji su bili u C (naravno, novi načini su dodani u C ++). U isto vrijeme, ako sve napišete dobro i ispravno, kako su zamislili autori C ++, tada se, naravno, nije bilo moguće ubiti starim metodama, a čini se da ih je bilo manje. Međutim, imao je vrlo neobičan model objekta. Podjela programa na module, na dijelove neke vrste došla je iz C (ako možete pisati uključiti u C ili C ++ - zapravo, zamišljeno je kao samo umetanje teksta biblioteke u vaš program, na kraju, kada napišeš hrpu inkluzija, imaš sve - ako je "primitivno", kao što je bilo na samom početku - sve se ubaci u jednu datoteku i onda se sve skupa užasno dugo kompajlira, jer se vrti nekoliko puta .verzije su još bolje.

Općenito, C ++ ima puno nedostataka. Kvalifikacije programera su morale biti visoke da bi pisao na C++, a takvi programeri su bili skupi (i obuka i nešto drugo, odnosno teško je pronaći programere na tržištu, moraju puno platiti, pa, općenito, to nije slučaj...). A naša računala sve brže broje, sve su jeftinija, ljudi si kupuju nova računala i žele više aplikacija, više igračaka za telefon, općenito - više radosti.

Tako se pojavila Java (Java). Tu je također povezana prilično smiješna priča kako se ime pojavilo na ovom jeziku. Ima programera, stalno piju kavu i u to vrijeme je bilo moderno piti kavu koja je rasla na otoku Javi. Jezik je zamišljen kao jezik za ugradbene uređaje, posebno za aparat za kavu. Ovako je nastao naziv...
Što je počelo s njom, što je bilo dobro u njoj i zašto je stekla toliku popularnost? Prvo su se potpuno riješili Sishnyne ostavštine. Bez pokazivača, mnogo manje načina da odbijete bilo koji dio tijela i razbijete sve. Drugo, uveli su mnogo novije ideje u smislu objektnog modela - to jest, C++ se pojavio mnogo ranije od Jave i koristio je arhaičniji, "divlji" model objekta. Eto, ovdje (predavač pokazuje na Javu) je već tada bilo promišljenije i u teoriji su ljudi mislili, a u praksi su primjenjivali i radili sve puno kul.

I na kraju, treći. Naši Java programi nisu sastavljeni u strojni kod, već u kod za virtualni stroj. Odnosno, imali ste JVM virtualni stroj (VM) - Javovsky. Vaši su programi skupljeni u neku vrstu međuprezentacije i onda su, uz pomoć ovog stroja, već izvršeni. Što je to učinilo? Prvo, usporio je, a drugo, pojeo je memoriju strašnom silinom, i treće, bio je prenosiv bilo gdje (teoretski) - čak i na aparat za kavu, čak i na mlin za kavu, čak i na računalo, čak i na mobitel. S jedne strane, ovo je dobro, to jest, upravo ste napisali implementaciju virtualnog stroja, a zatim svuda pokrećete svoje Java programe. No, s druge strane, loše je što je isti telefon u to vrijeme imao malo memorije, slabe performanse, a sve je to dodatno počelo zatupljivati ​​i usporavati.

Ali ni to nije glavni razlog zašto je jezik uopće izmišljen. Jezik Java je izmišljen kako bi se smanjili zahtjevi za kvalifikacijama programera. Odnosno, mogli bi pisati lošiji programeri dobri programi u Javi jer vam ne dopušta pisanje loših programa - ne postoji način za pisanje loših programa. Tamo možete pisati samo dobre programe. Pa u shvaćanju tvoraca jezika.

Odnosno, ako u C, u C++, u Pythonu, na bilo čemu, možemo otopiti nekakvo jezivo smeće iz našeg projekta, gdje imamo sve pomiješano, skupljeno satima i tamo još nešto. U Javi možete otopiti i kantu za smeće, ali za to se već morate malo potruditi. Odnosno, po defaultu ne ispadne "gomila smeća", nastaju drugi problemi, da je tu nešto naslijeđeno ili naslijeđeno - općenito na jedan suvisli red dolazi deset ne baš smislenih. S druge strane, možda tako srednje vješt programer može napisati prilično kvalitetan kod.
Skoro smo pri kraju. Kod nas se sljedeće što se pojavilo je .Net (doći će), dobro, a posebno nas zanima C# (gotovo isto [predavač pokazuje na Javu], odnosno postoje razlike u detaljima, ako birate između njih - pogledajte gdje platite više novca).

I još jedna stvar je JavaScript. Nema nikakve veze s jezikom Java, pojavio se iste godine - riječ je bila moderna, licencirana zaštitni znak koristiti.

Na što je najvažnije obratiti pažnju? (Predavač crta strelice od C++ do Java, .Net, C#, JavaScript i PHP). Da biste napisali jednostavan program na jednom od ovih jezika, i na mnogim drugim - ako znate C++, općenito ne morate znati ništa drugo - uzmete i napišete na C++, a zatim dodate dolare na početku , nešto drugo radi male stvari i počinje vam raditi na bilo čemu (predavač pokazuje na jezike kojima su dodijeljene strelice iz C++). Odnosno, izrazito su slični u nekim jednostavnim stvarima. Ako rješavate neke školske probleme, obrazovne zadatke, nešto drugo (ne osmišljavate veliki projekt – imate jednu datoteku koja čita brojeve, prikazuje brojeve u konzoli, radi nešto drugo), onda gotovo da i nema razlike između tih jezika. Jasno je da su JavaScript i PHP specijalizirani, imaju sve malo drugačije. I ovdje (predavač ukazuje na Javu i C #) općenito je vrlo mala razlika.

Od tada su se pojavile razne druge zanimljivosti, ali nije jasno hoće li uspješno živjeti ili umrijeti. Što sada koriste, za koje zadatke?

Odabir jezika ovisno o zadatku

Recimo da ste suočeni sa zadatkom pisanja upravljačkog programa za video karticu. Koji jezik ćete koristiti danas? (Kliknite iz publike: Java!) Zašto... Java je super, ali zašto ne Ruby ili PHP? (Predavač govori sarkastično.)

Programiranje na niskoj razini

Ako pišete nešto niske razine, onda je C najbolji izbor, ali zapravo sam čuo nešto (ali nisam vidio) da se C ++ koristi za to. Ali jedva vjerujem u ovo, jer u C-u možete jasno kontrolirati - budući da ste dali toliko bajtova memorije, bit će tako i tako. A u C ++ (STL), kako se implementira niz? Pa, nekako implementirano. I na kraju ne znamo kako i što se tamo događa, možda će nam ponestati memorije na našoj video kartici ili će se dogoditi nešto drugo. Dakle, C i dalje živi i ne umire, takvi zadaci programiranja sustava i dalje postoje - napišite operativni sustav, napišite upravljačke programe, napišite nešto drugo - C je odličan za ovo. Osim toga, sada postoje razni uređaji (Internet stvari obećava da će uskoro doći) koji žive na baterije (i, naravno, bit će ih milijuni, sve će biti obješeno ovim Internetom stvari), trebali bi biti vrlo jeftini i troše vrlo malo električne energije. Sukladno tome, bit će 2 KB memorije, procesor od 5 kHz, pa naravno, što malo zašrafiti virtualni stroj ili skriptni jezik neće raditi u bliskoj budućnosti, što znači da ćete morati nešto napisati u C. Pa čak i sada npr. kalkulacije na video kartici (OpenCL ili neka druga tehnologija) - ne smisle im novi jezik da im napišu programe - tamo rade C uz neka velika ograničenja. Samo zato što ljudi već znaju kako, zašto učiti nešto novo? Formalno, ovo je vjerojatno također, u određenom smislu, C.

Web programiranje

Recimo da želite napisati novi Facebook ( društvena mreža). Na čemu ćeš ovo napisati? (Iz publike govore o HTML-u i CSS-u.) HTML, CSS je dizajn, a mi želimo tu moći dodavati fotografije, prijatelje, ostavljati komentare.

Za dio skriptiranja - to jest, ono što će se dogoditi na strani klijenta - to je JavaScript. A ponekad se JavaScript generira na drugom jeziku i šalje (događa se da se skripta generira... jer je ponekad lakše upravljati nekim promjenama u logici na ovaj način).

Iznenađujuće, to je napisano u PHP-u - i Facebooku i mnogim drugim velikim projektima. Naravno, morao sam napisati neke svoje stvari kako bi i dalje funkcioniralo kako treba, a ne kao što je "tyap-blooper" napravljen, ali oni su to učinili. Uglavnom, nije bitno u što pišete, ali ne preporučujem Perl. Ovdje i sada, naravno, nitko ništa ne piše ispočetka za web. Svatko piše nekakav okvir ili nešto slično. Online kupovina? Skinuli smo okvir za internet trgovinu – eto, to je to, napisali smo internetsku trgovinu.

Poslovno programiranje

Zatim želite napisati neku dosadnu bankovnu aplikaciju. Ili, na primjer, imate li nekoga tko prodaje sim kartice? Možda ste ikada kupili telefon ili nešto drugo pa su vam rekli: "Sustav visi, ne možemo ništa." Na što ćete napisati takvu prijavu? (Poklič publike o Pythonu) Ne možeš tako nešto napisati u Pythonu, što si ti?! Ne isplati se pisati ništa za posao u Pythonu. Zašto? Jer kada nešto napišete u Pythonu, ne možete pronaći značajan broj grešaka u procesu pisanja. Python se dinamički tipka na sve moguće načine, a općenito tu možete sakriti bug tako da iskoči u takvoj situaciji da ne možete ni shvatiti što su ti pokvareni korisnici tu radili, da vam je sve puklo. Odnosno, bolje je pisati male skripte za sebe u Pythonu - razumijete što se tamo događa i što se radi. Pa, ili nešto što nije šteta izbaciti: hoćeš nešto izvaljati prije konkurencije, pa što ako će se svaki drugi put pokvariti. Napisali ste u Pythonu i to je to – preuzeli ste tržište. A ako nešto dugo pišeš npr. nekakvu bankovnu aplikaciju (pa da odobrava kredite, nešto drugo) - to napišeš u Javi. Jer postoji ozbiljna stvar, komadići papira, novac, dokumenti, nešto drugo, ali ne možete u tome zabrljati toliko da će se sve pokvariti, inače će se ljudi uvrijediti - njihov novac je otišao i nikuda nije stigao, u trenutku kada se niz pretvorio u broj ili obrnuto. Dakle, to znači da metodično uzimate Javu i pišete, pišete... Pa, ili na.Netu, takve se situacije, u principu, također događaju. Tu, naravno, također možete naići na probleme, ali vjerojatnost za to je ipak nešto manja.

Programiranje za vojsku, zrakoplovstvo

Sada zamislite da su vas odlučili poslati na Mjesec u raketi. Što biste radije upotrijebili za pisanje koda koji kontrolira raketne motore? Da vidimo. Ovo, vjerojatno (predavač pokazuje na Perlu, Pythonu, PHP-u, Rubyju), ne vrijedi - usporava, događa se nešto drugo, pa, općenito, ne bih pristao letjeti na takvoj raketi. U C++? Da budem iskren, ne bih ni meni vjerovao, jer postoji previše načina da se ubiješ u C ++. Kad si tamo negdje u svemiru, nije baš dobro.

Možda u Javi? Čini se da je tamo sve prilično pouzdano i arhitektura je dobra, nema divljih tipova, nema viška memorije. Recimo da je došao najpresudniji trenutak, a naša Java je odlučila skupljati smeće umjesto nas. Moramo sletjeti, usporiti, a ona kaže: "Ne, smeće ide." Općenito, ni ne baš dobro.

Da budem iskren, radije bih dao ovaj program napisan na Pascalu. Ja, naravno, ne volim baš Pascal, ali nekako bi u takvim stvarima bilo jako cool.

Korištenje nekoliko jezika odjednom za razvoj softvera

Pa, što bi uopće trebalo reći o modernim jezicima. Danas mnogi projekti ne žive ni na jednom jeziku, odnosno neki od njih žive na jednom jeziku, neki na drugom, a neki na trećem. Na primjer, ako imate neku vrstu web aplikacije koja obrađuje divlje količine informacija, pristup diskovima (čak ni bazama podataka, toliko su ogromni da čak ni baza podataka ne podržava neku već napisanu) vjerojatno je napisan u nekim tada niskim -razina C za nevjerovatno brzo pisanje na disk i sve to. Naravno, pisati cijeli projekt u C-u se ne isplati. Možda postoji neka srednja logika napisana u Javi koja poziva Cis funkcije za brze pozive. Pa, frontend (ono što korisnik gleda), naravno, već je napisan u nečemu, u nekim skriptama, u nečemu što se izravno izvršava od strane preglednika (JavaScript). I sve to živi zajedno i uspješno komunicira.

Što ljudi ponekad rade u razvoju nekih aplikacija, čak i velikih? Uzimaju i napišu prototip u Pythonu (kako će sve funkcionirati), skiciraju, razmišljaju o nekakvoj arhitekturi. Pisanje na njemu je stvarno vrlo brzo - ubacili su prototip, eksperimentirali s njim i rekli: “Wow! To je tako cool! " I potpuno prepisan. Čini se da su posao odradili dvaput, trajalo je duplo duže (pa, jedan i pol). Ali ne! Često se pokaže da ova metoda nije loša, jer ako odmah napišete nešto, na primjer, u Javi, a zatim odlučite: "Ne, idemo refaktorirati, potpuno promijeniti arhitekturu i sve to", onda ćete potrošiti 10 puta više vremena... Takve stvari također postoje i žive.

Uvjeti za uspjeh bilo kojeg programskog jezika

Sada razgovarajmo o tome zašto neki zgodni jezici nisu preživjeli ili žive u vrlo ograničenom prostoru. Kada je Wirth vidio što loše tvrtke Apple, Borland i sve to rade s njegovim Pascalom, smislio je još bolji jezik – Oberon. Bilo je jednostavno divlje minimalistički - to jest, bilo je vrlo malo naredbi (Strings? Zašto su nam potrebni nizovi? Napravit ćemo niz znakova!). Pa mu nešto nije išlo, u mjeri u kojoj je moglo.

Još jedna stvar. Zamoljena je i američka vojska da ih razvije cool jezik, na kojem sve radi i sve se može napisati. Rezultat je prilično monstruozan jezik zvan Ada, na kojem, međutim, još uvijek nešto pišu, ali opet - samo za vojsku.

U čemu je problem? Zašto su neki jezici poput Pythona, kojega nijedna tvrtka u početku nije podržavala, preuzeli tržište. PHP, koji je također loše dizajniran, također je sam preuzeo i zauzeo tržište (veći dio). A uložene su svakakve milijarde dolara (predavač pokazuje na Adu) i nikamo nisu otišli, ništa se nije dogodilo. Koji je razlog tome? To je zbog činjenice da oko ovih jezika nema infrastrukture. Odnosno, jezik je možda izvrstan, ali sve dok nema dokumentacije, dok ne postoji zajednica koja može odgovoriti na pitanja (na Stack Overflowu) i, na kraju, ono najvažnije, sve dok nema velikog broja knjižnica, jezik se ne pali. To jest, vi ste, na primjer, htjeli napisati web stranicu na Oberonu. Zašto ne? I počinje zbrka... Ne možete podići svoj web poslužitelj na Oberonu da biste lagano testirali, ne možete spojiti nijednu knjižnicu, jer one nisu na Oberonu. I sve se to radi preko nekakvih štaka, sile odlaze, i općenito pljuješ i pišeš svoju stranicu na čistom C umjesto Oberona. A oni jezici koji mogu koristiti biblioteke drugih jezika dobro žive. Isti Python na onim mjestima gdje usporava. Pa, općenito, svakakve standardne stvari poput sortiranja i nečega drugog su napisane u C-u, a on (Python) zna kako s njima komunicirati.

Java također ima izvorno Java sučelje. Ovo je u biti C, odnosno tamo (po mom mišljenju, žele zabraniti cijelo vrijeme, ali čini se da još nisu zabranili) ti jezici mogu komunicirati s već postojećim bibliotekama (uglavnom onim Sishny). I zbog toga uzimaju i rade. Ideja koju vam pokušavam prenijeti je jasna, zar ne? Nemojte pisati na jezicima koji ne znaju kako povezati C biblioteku. Pa, ako želite uživati ​​u nečemu cool. Pa, i postupno su oni (jezici) obrasli svojom infrastrukturom. I žive nekako dobro.

Programski jezik i karijerno vođenje

Sada razgovarajmo o tome kako razumjeti što želite u životu. Što su cool stvari? Možete napraviti neku vrstu programiranja sustava, zar ne? Super je brojati ove bicikle tamo, želite pokrenuti kvadrokoptere, neke kamere i još nešto za raditi. Onda je C vjerojatno vaš izbor.

Ako želite pisati, možda i ne najzanimljivije aplikacije u životu, ali vam je super da ih dizajnirate, razmislite o svemu i zaradite puno novca za sjedenje i dosadu većinu vremena (za ovo morate platiti ako vi ste kvalitetna miss), evo ih - Java, .Net. Odeš raditi u banku, pišeš, ideš na posao u devet u bijeloj košulji, dobiješ dobru plaću i pišeš po preporuci najboljih Java-izvora, .Net-ovce i sve to...

Ako želite pisati bilo koju aplikaciju, neki preglednik, neke igračke, nešto drugo, onda je C ++ izvrstan. Ako želite pisati web stranice, evo ih, na jezicima po vašem izboru (predavač pokazuje Perl, Python, PHP, Ruby), nema velike razlike. Jedino što će PHP umrijeti prije Pythona, pa ako ste lijeni učiti nove stvari, onda naučite Python. Nećete primijetiti veliku razliku, ali izdržat ćete duže.

Nejasno je i što se događa s Ruby. Pa, možete i PHP, ako ste ga već naučili, jer su toliko jednostavni da ne treba toliko dugo za ponovno učenje.

I, konačno, postoji još jedno područje primjene programskih jezika - to je kada ih koristi ne-programer. Recimo da ste matematičar, fizičar, kemičar, analitičar, bilo tko, i trebate brzo nešto izračunati, analizirati neke podatke (za biologe npr. koliko arktičkih lisica živi na Zapovjedničkim otocima). Sve to možete ugurati u tablicu u Excelu ili analizirati nečim. Python je također dobar za to, zna raditi s tekstom, a knjižnice su pune svih vrsta, statističkih i svega toga. Ako želite napraviti neku vrstu strojnog učenja, obraditi neke podatke, predvidjeti, onda se i to sada najbrže radi u Pythonu. Međutim, treba napomenuti da su zadaci vrlo različiti. Na primjer, ako želite odmah trgovati na burzi u uvjetima kada se kotacije stalno mijenjaju, onda bez obzira na to koliko cool Machine Learning pišete u Pythonu, ljudi koji imaju to napisano u nečem bržem će imati vremena kupiti sve ranije, dok ćete biti pobrojani, čak i ako su njihovi algoritmi lošiji. Stoga čak i ovi zadaci strojnog učenja (neki od njih) zahtijevaju visoke performanse (i iznimno visoke), a prema tome i druge jezike.

Jedini način da znate što želite je isprobati sve. Sada ću to reći kao jednu od vizija kako možete isprobati sve. Kako postati programer, i to sretan? Tako. Počinjemo od nule. Ovdje u školi učite matematiku, ruski jezik i ostale obavezne i izborne predmete, a vaše znanje iz područja programiranja se ogleda na ploči (predavač pokazuje na praznu ploču) na ovaj trenutak... I želite postati sretna osoba, raditi ono što volite, zaraditi puno novca i ništa sebi ne uskraćivati ​​i biti sretni.

Jedan od načina da to učinite. Postoje, naravno, svakakve inspirativne priče o ljudima koji uopće nisu išli na fakultet, ili su ih napustili i postali milijarderi, vlasnici tvrtki i tako dalje. No, treba napomenuti da je većina ljudi koji možda nisu postali milijarderi, ali i dobro žive, u nekom trenutku ipak završila fakultet.

Kakva je naša situacija s upisom na sveučilište (sada studirate u školi)? Dok ste u školi, morate shvatiti da je sljedeći korak upisati se i pobrinuti se za to. Položite ispit ili pobijedite na olimpijadi. Na ispitu možete koristiti Pascal, C ++ (uključujući čisti C), Python (neću ih dalje spominjati). Na olimpijadi - isti Pascal, isti C++, isti Python (sada ćemo govoriti o njegovim problemima) i, najčešće, postoji Java. I dalje se sve može dogoditi ovisno o olimpijadi, ali ne i o suštini.

Kako izgleda grafikon raspodjele jezika na Sveruskoj olimpijadi iz informatike? Ljudi koji sudjeluju na Sveruskoj, najkul olimpijadi, o čemu pišu? To izgleda ovako (ovdje znači Pascal, a ovdje je oko 2000, a ovdje je oko nule, ovdje je C++, a ovdje je 2015).

Godine 2000. gotovo nitko nije pisao na C ++. Petnaest godina kasnije gotovo nitko ne piše na Pascalu, unatoč činjenici da je Pascal moderan. Ovo je jezik koji može učiniti gotovo sve isto. Samo, svi su postali prelijeni da bi to naučili, svaki novi trend, i svi nastavljaju pisati u Borland Pascalu, koji naravno ne može ništa. U C ++ ljudi pišu neke algoritme za sortiranje (STL) - super, napisali su sort () i to je to. Na Pascalu, na redovnom, na starom - to je problem. Napisali su neki skup (trebao) - super, napisali su ga u C++, u Pascalu opet muka traje. Na novim Pascalima, naravno, možete to učiniti, ali oni zapravo koštaju. Možda niste primijetili, ali jest.

Postoji i Java, ali Java ima puno slova. To je za velike projekte, ali za male jednokratne programe ispada dosta loše, jer ih ima puno dodatna slova... Ali također neki ljudi pišu, možete naučiti pisati na tome. Ali na Jedinstvenom državnom ispitu nije i još će se najvećim dijelom morati položiti Jedinstveni državni ispit.

Što je najbolje za ispit? Za ispit je najbolje (ako ništa ne znaš i ništa te ne uče u školi) naučiti Python. Neki zadaci ispita na njemu su savršeno riješeni. Na olimpijadi se, općenito, pokazalo da se C ++ (koristi), jer je Python jako spor, tu nije sve riješeno.

Dakle, proučili ste neki mali podskup jezika i neke algoritme (eventualno) i riješili puno problema kako biste dobili diplomu svoje olimpijade i otišli na sveučilište da biste stekli visoko obrazovanje.

Sada ću vam ispričati kako mi u HSE-u gradimo tečaj, kojim redoslijedom su jezici, kako se predaju primijenjena matematika i informatika na Fakultetu primijenjenih znanosti, što Yandex i ja radimo. U prvom semestru - Python (ne u cijelosti, o tome kako treba učiti u školi) i C ++ (širi, puno širi nego što se inače uči u školama). Odmah da vam kažem da se ne uplašite, ako odjednom poželite ući, recite: „Zašto, ja to već znam, zašto ću negdje studirati? Radije bih otišao negdje drugdje." Za one koji već znaju dobro programirati, postoji mogućnost izravnog izučavanja algoritama i to na prilično teorijskoj obuci. Ne gledamo ih sada, ovo (pokazuje na ploču) je za one koji programiraju srednje ili nikako.

U prvom semestru uče osnove Pythona, samo da ljudi nauče programirati i da se nitko posebno ne uvrijedi. Python se rijetko uči u školama, uglavnom ljudi dolaze sa znanjem Pascala ili C++. Uglavnom čak i Pascal, ako se radi o masovnoj školi. Pa da se nitko ne uvrijedi, svi uče novi jezik (kao da su ravnopravni). A C ++ jednostavno zato što onda možete otići bilo gdje s C ++.

Zatim dolazi kolegij „Algoritmi“ i zaseban tečajni projekt... Klasični algoritmi s implementacijom. Nije da smo u teoriji nešto uzeli, izračunali složenost. Na predavanju smo uzeli, izračunali složenost, na seminaru - uzeli, implementirali algoritam. Projekt je o tome da učenici rade nešto završeno. Na primjer, jedan od projekata je bio: prebrojati ... Recimo da imate puno stanova u Moskvi i razumijete: „Oh, imam puno nepotrebnih stvari, iznajmit ću neke. I određuju cijenu, a nitko ne želi od vas iznajmiti stan – vjerojatno preskupo. Ili daju nekakvu cijenu, odmah ga skinu i pomisliš: “Ma, vjerojatno sam ga jeftino prodao”, pa se i ti naljutiš. Odnosno, trebalo je izračunati koliko je koštao najam stana? Unosite podatke - oni izrađuju procjenu za vas. Takva stranica, koja se sastojala od nekoliko stvari: uzeti prijedloge, analizirati, primijeniti nekakav algoritam strojnog učenja (vjerojatno) nepretenciozan i napraviti prekrasno web lice u kojem možete nešto odabrati, ubaciti nešto, nekoliko metara, bilo koji broj soba , broj sauna, broj jacuzzija u vašem stanu i okvirno procijenite trošak. Odnosno, neka vrsta gotova, ne baš teška stvar... Ovdje to znači (predavač pokazuje na tečaj o algoritmima) tako snažan C++, s konzolnim I/O. Eto, ovdje (predavač pokazuje na natpis "projekt") je nešto pod vodstvom mentora, eventualno s bazama podataka, možda s raščlanjivanjem tekstova i s nečim drugim.
Zatim slijedi treći semestar – kolegij pod nazivom „Računalni sustavi“. Postoji dosta asemblera za razumijevanje (vrlo malo) i onda, nešto slično čistom C-u i interakciji s operativnim sustavima, programiranje sustava u biti. A projekt za seminar također je nešto na temu svih mrežnih interakcija, prilično niske razine: razviti neki uslužni program, na primjer rsync (sinkronizacija, možda znate. U čistom C-u, manje-više, napišite analogni rsync, koje ćete imati preko mrežnih mapa za sinkronizaciju sa svim pristupima datotekama i tako dalje).

I konačno, četvrti. Ne znam ni kako da to nazovem, ovo je takav vinaigrette tehnologija potrebnih za pravi razvoj, na primjer, za razvoj weba. Odnosno, radi se o praktičnoj primjeni baza podataka, opet nešto slično onome što je urađeno u projektu (predavač ukazuje na projekt 2. godine), ali dublje. Odnosno, takve više-manje konkretne stvari su već praktično programiranje. Paralelno s tim, postoji bilo kakva teorija, pa, ovdje se bave i znanošću.

I nakon dva tečaja ljudi se raziđu da rade ono što ih zanima, jer ova stvar pokriva prilično široko takve osnove programiranja i ljudi u ovom trenutku već razumiju da se ne žele ni na koji način baviti računalnim sustavima (oni npr. nije volio sistemsko programiranje), ali se žele pozabaviti nekim teoretskim algoritmima, poteškoćama u proračunu, smišljanju nekih novih stvari, distribuiranih ili nečim trećim. Ili, naprotiv, misle da ovdje nemaju baš puno ( predavač pokazuje na prvu liniju tečaja s Pythonom i C++) Idi onda ( Predavač pokazuje na treću liniju kolegija, sa sustavnim programiranjem) - kako vam se ne sviđa, brojite bajtove i postavljajte razna ograničenja za čitanje-pisanje, radite streamove, niti i nešto drugo. I u skladu s tim ljudi biraju neki smjer i uče. Odnosno, u principu, da ne biste razvili "sindrom pačeta" - prvo ste vidjeli svog Pascala i sada recite "Pascal je moć"; ili napredniji - vidjeli ste C ++ i počeli o svima govoriti da je C ++ moćan, a sve ostalo nije baš dobro.

Ovdje to trebamo sagledati šire (predavač pokazuje na popis kolegija na ploči) - to je jedna od metoda koja je odabrana, posebice na HSE-u (pojavila se nedavno, pa je dosta moderna). Postoje i drugi načini da se međusobno upoznate. Na drugim dobrim sveučilištima malo drugačijim redoslijedom i drugi naglasci su stavljeni. Ali također pokušavaju upoznati ljude sa svime što imaju.

Kako programer traži posao

ti si ovo ( predavač pokazuje na popis kolegija) sve je radio, studirao na sveučilištu, učio nešto produktivnije još dvije godine i trebaš ići na posao. Kako birate nešto s čime ćete raditi? Prvo si sve upoznao, otišao negdje duboko i već znaš što voliš. Morate odabrati ono što volite prirodno. Jer ako voliš, uložit ćeš energiju, imat ćeš motivaciju i općenito će sve biti u redu. Jer nije riječ samo o novcu, već o tome da vam bude zanimljivo i ugodno. Pa, a želite ući u cool tvrtku, zaposlite se. Kakvu bih osobu osobno volio vidjeti? Recimo, dođe mi sto studenata – moram uzeti dvoje ili jednog na posao. Zašto dolaze, uopće ne razumijem tko su, što su, kako su? U najboljem slučaju, pokazat će mi diplomu koju su dobili na fakultetu, a ja ću reći: “Jao! Ovo je kul diploma, ali nije tako cool!" A mogao bih i pogriješiti, usput. Možda je osoba imala puno slobodnog vremena i puno bolje naučila.

Što bi bilo super? Prvo, neki open source projekt koji ste napisali od početka do kraja. Poželjno je, ako radim nekakvu infrastrukturu da se podaci mogu brzo čitati, ili nešto drugo, onda bi me, naravno, zanimalo da mi napiše nešto open source. Nije napravljena web stranica, nego nešto na temu. Zašto me ovo zanima? Mogu pogledati tvoj kod, vidim koliko si se često bavio, vidim kako si reagirao na bugove korisnika, bugove programera koji ga koriste - sve je zapisano, gledam sve i mislim: “Vau, ovaj bug nije bilo dvije godine. zatvoreno, evo ti si neljubazno odgovorio korisniku, onda ne uzimam nešto drugo”. Odnosno, ovo je vaš osobni projekt.

Dalje, što bi još bilo cool? Volio bih vidjeti kako ste radili timski rad. Odnosno, dođeš mi na razgovor i kažeš: “Dečki sa fakulteta i ja smo napravili dobru prijavu. Tamo sam napravio bazu podataka, oni su napravili nekakvu mobilna aplikacija, a kod nas je radio i dečko, cura-dizajner, dečko na tehničkoj podršci. Bilo nas je petero i napravili smo sjajan projekt." Pa vidim što je zapravo tvoj projekt, kažem: "Koji je tvoj?" Opet pogledam kod i shvatim da znaš raditi u timu s ljudima.

Nije programer onaj koji sjedi sam (takav indie) u garaži, negdje s ugašenim svjetlom, ni s kim ne priča, hvata bradu i piše. Svejedno, postoji neka vrsta interakcije s ljudima. Sa šefom, na primjer, koji vas ponekad može psovati (šefovi, oni su takvi, nisu uvijek ljubazni). I vidim da znaš raditi s ljudima i veseli me ako imaš kakav-takav dobar tim. Čak i ako nije dobro, bolje je nego ga nemati.

Što bih ja osobno još volio? Ako ste se pokazali u velikim projektima. Na primjer, predali smo nešto Linux kernelu, ako se bavite programiranjem sustava, popravili smo neki bug. To jest, pokazali su da možete čitati tuđi kod i da ste u mogućnosti napraviti neke promjene u njemu. Gledam: "Oh, doista, shvatio si nešto komplicirano i popravio neke greške!" I počinjem biti jako sretan zbog toga. Jer imam... pa ne znam... moj programer je dao otkaz jer su mu konkurenti nudili veću plaću, a ja moram hitno nekoga ušutkati - tebe. Izgledam kao da si pisao samo od nule, ali ne znaš čitati i uređivati ​​tuđi kod i uzrujam se.

I na kraju, ovisno o konkretnoj poziciji, postoje razne druge stvari. Ako ste analitičar posla, želio bih da rješavate zadatke analize podataka na Kaggleu. Ako dobijete posao na nekim algoritamskim stvarima, volio bih da radite neke algoritme u sportskom programiranju. I na kraju, ako ste razmišljali o struci, pročitali kako se vode razgovori, susreli ste se da neki ljudi tamo izražavaju veliko nezadovoljstvo: “Došao sam, pitaju me koji mi je hobi. Sjedim kao sova i ne odgovaram, jer nemam hobi “- i misle da to rade HR. Zapravo, pokušavaju shvatiti koliko ste prijateljski raspoloženi i primjereni. Ako ste neprijateljski raspoloženi i neadekvatni, onda koliko god bili genijalni i radoholičar, teški stručnjak s velikim znanjem, timu će biti teško raditi s vama, a projekt nećete izvući sami. Osim toga, čak i ako se protegnete, možete zamisliti kakvo opterećenje za tvrtku. I da ćeš sutra doći i reći: "Povećaj mi plaću 10 puta, inače ću te ostaviti." Razumljivo je da tvrtke ne žele doći u ovu situaciju. Stoga je odgoj primjerenosti i dobre volje u sebi jednako važan (barem) kao i razvoj neke vrste profesionalnih vještina.

Da rezimiramo, što možete reći? Koji su jezici dobri, a koji loši? Pa, unutar grupe jezika, na primjer između Ruby, Python i PHP, koji odabrati? Naravno, točan odgovor je Python, ali zapravo razlika između njih je u broju dopuštenih grešaka, u količini nečeg drugog – 5%, pa, možda 10%. Odnosno, ako već imate gotov projekt napisan u PHP-u, tada nitko pri zdravoj pameti neće reći: "Idemo prepisati sve u Pythonu." Oni će reći: "Unajmimo više PHP programera i nastavimo pisati u PHP-u." Super, to nije loš izbor. Jasno je da ako iznenada počnete pisati projekt, onda bi možda bilo pametno odabrati Python sada. Iako, i to ovisi. Možda imate gomilu jeftinih PHP programera na tržištu, ali oni na pythonu su skupi i mislite: "Da, tehnologija je hladnija, ali uštedjet ću novac na gotovim programerima." I to je sve, super, već si došao i tamo radiš.
Kako da biram između Jave i C++? Da, isto se događa. Mislim da ćete do trenutka kada odlučite na kojem jeziku započeti novi veliki projekt steći znanje iz svog profesionalnog područja i moći ćete pravi izbor... Trenutno se još ne morate odlučiti za taj izbor, pa vam savjetujem da radite što želite.

Osnove, kao što sam već rekao, same, same osnove programiranja (što je funkcija, što su if's, for's, nizovi, nešto drugo) mogu se naučiti manje-više na bilo kojem jeziku. Na primjer, u C ++, jer izgleda kao puno stvari, a specifičnosti u njemu (na ovoj razini) su najmanje, a slova najmanje pisati nepotrebna. Pa, onda, kada naučite neke složene arhitektonske stvari, učite i brinite se previše o tome. Odnosno, glavno je - probaj, traži što ti se sviđa, a kad shvatiš da je već 4 sata ujutro, a sjediš iz zabave i pišeš jer ti se sviđa - vjerojatno je u ovom trenutku da ste našli svoju...

Programiranje za početnike

Za početak, želio bih reći da svatko može upravljati računalom i stvarati programe. Za stvaranje računalni programi ne morate imati nevjerojatnu inteligenciju ili diplomu iz matematike. Potrebna vam je samo želja da nešto smislite i strpljenje kako ne biste napustili nastavu.

Sposobnost pisanja programa ista je vještina kao i sposobnost plivanja, plesa ili žongliranja. Neki ljudi to uspijevaju puno bolje od drugih, ali svatko može postići određene rezultate uz pravilnu praksu. Upravo iz tog razloga djeca već u ranoj dobi postaju vješti u programiranju. Djeca nisu nužno briljantna; jednostavno su skloni učiti nove stvari i ne boje se pogriješiti.

Unatoč činjenici da računala izgledaju kao vrlo složena elektronička čudovišta, opustite se. Vrlo malo ljudi zna točno kako rade tražilice koje vam omogućuju brzo pronalaženje potrebnih informacija na internetu, a neki ljudi nisu shvatili kako voziti automobil. Isto tako, gotovo svatko može naučiti kako stvarati programe bez upuštanja u detalje o tome kako točno računalo radi.

Općenito govoreći, program govori računalu kako riješiti određeni problem. Budući da je svijet pun problema, broj programa koji ljudi mogu napisati je beskonačan.

Međutim, da biste računalu rekli kako riješiti jedan veliki problem, obično morate reći računalu kako riješiti cijeli niz malih problema koji čine veliki problem.

Zapravo, programiranje uopće nije teško i nije nešto tajanstveno ili nadnaravno. Ako ste u stanju pisati upute korak po korak koji će omogućiti osobi da pronađe vaš dom, možete napisati i računalni program.

Najteži dio programiranja je identificirati male probleme koji čine problem koji trebate riješiti. Budući da su računala apsolutno glupa, morate im reći kako da izvrše bilo koju radnju.

Ako mislite da je stvaranje programa zabavnije od korištenja, imate sve što vam je potrebno za izradu računalnih programa. Ako želite naučiti pisati računalne programe, potrebne su vam sljedeće tri kvalitete.

Potjera. Želite li nešto jako jako, sigurno ćete to i dobiti (ali ako učinite nešto protuzakonito, riskirate da provedete puno vremena u zatvoru). Ako želite naučiti programirati, vaša će vam želja svakako pomoći, bez obzira na to koliko vam se prepreka nađe na putu.

Znatiželja. Zdrava doza znatiželje može potaknuti vašu želju za eksperimentiranjem i poboljšati svoje vještine programiranja čak i nakon čitanja ove knjige. Znatiželja čini učenje programiranja manje dosadnim i zanimljivijim. A ako ste zainteresirani, sigurno ćete proučiti i zapamtiti više informacija od bilo koje osobe koju to potpuno ne zanima (npr. vašeg šefa).

Mašta. Računalno programiranje je vještina, ali mašta može pomoći da ova vještina bude profinjenija i ciljanija. Programer početnik s priličnom količinom mašte uvijek će stvarati mnogo zanimljivije i korisni programi nego divan programer bez mašte. Ako ne znate što učiniti sa svojim programskim vještinama, vaš će talent jednostavno umrijeti bez mašte.

Težnja, znatiželja i mašta tri su najvažnije kvalitete koje bi svaki programer trebao posjedovati. Ako ih imate, trebate se brinuti samo o malim stvarima: koji programski jezik naučiti (na primjer, C++), što nije u redu s matematikom itd.

Među mnogim programskim jezicima uvijek možete pronaći upravo onaj jezik koji je prikladan za rješavanje zadanog zadatka. Kad se pojavi nova vrsta problema, ljudi stvaraju nove jezike.

Naravno, u stvarnosti računalo razumije samo jedan jezik jedinica i nula, koji se zove strojni jezik. Tipično, program napisan u strojnom jeziku izgleda otprilike ovako:

0010 1010 0001 1101

UN 1100 1010 1111

0101 ONO 1101 0101

1101 1111 0010 1001

Nadalje, vrlo je važno za koju svrhu je jezik odabran - za podučavanje programiranja ili za rješavanje konkretnog primijenjenog problema. U prvom slučaju, jezik bi trebao biti lak za razumijevanje, strog i, ako je moguće, bez zamki. U drugom, to je složen, ali učinkovit i izražajan alat za profesionalca koji zna što želi.

Sada bih vam želio pojasniti što bi trebalo razlikovati programski jezik (Basic, Pascal) od njegove implementacije, koji se obično predstavlja kao dio programskog okruženja (Quick Basic, Virtual Pascal) - skup alata za uređivanje izvornih tekstova, generiranje izvršnog koda, otklanjanje pogrešaka, upravljanje projektima itd. Sintaksa i semantika programskog jezika fiksne su u jezičnom standardu. Svaka programska okolina pruža vlastiti interpreter ili prevodilac iz ovog jezika, što često dopušta korištenje konstrukcija koje nisu fiksne u standardu.

Razmotrite glavne i popularne programske jezike

Asembler Ovo je najsjajniji predstavnik jezika niske razine, čiji se skup koncepata temelji na hardverskoj implementaciji. To je alat za automatizaciju za programiranje izravno u procesorske kodove. Strojne instrukcije opisane su u obliku mnemoničkih operacija, što omogućuje postizanje dovoljno visoke promjenjivosti koda. Budući da je skup uputa na različitim procesorima različit, onda o kompatibilnosti ne treba govoriti. Korištenje asemblera preporučljivo je u slučajevima kada je potrebno ostvariti izravnu interakciju s opremom, odnosno postići veću učinkovitost nekog dijela programa zbog veće kontrole nad generiranjem koda.

Cobol- Programski jezik visoke razine razvijen u kasnim 1950-ima. Udruga CADASIL za rješavanje komercijalnih i gospodarskih problema. Razlikuje se u naprednim alatima za rad s datotekama. Budući da naredbe programa napisane na ovom jeziku aktivno koriste obični engleski vokabular i sintaksu, Cobol se smatra jednim od jednostavni jezici programiranje. Trenutno se koristi za rješavanje ekonomskih, informacijskih i drugih problema.

Fortran- Programski jezik visoke razine koji je razvio IBM 1956. za opis algoritama za rješavanje računskih problema. Spada u kategoriju proceduralno orijentiranih jezika. Najčešće verzije ovog jezika su Fortran IV, Fortran 77 i Fortran 90. Koristi se na svim računalnim klasama. Njegova najnovija verzija također se koristi na računalima s paralelnom arhitekturom.

Pakao- Programski jezik visoke razine usmjeren na primjenu u sustavima u stvarnom vremenu i dizajniran za automatizaciju zadataka upravljanja procesima i/ili uređajima, na primjer, na brodskim (brodskim, zrakoplovnim, itd.) računalima. Razvijen na inicijativu američkog Ministarstva obrane 1980-ih. Ime je dobio po engleskoj matematičarki Adi Augusti Byron (Lovelace), koja je živjela 1815-1851.

OSNOVNI, TEMELJNI(Beginner "s All-purpose Symbolic Instruction Code) Rođen 60-ih godina u Americi. BASIC je zamišljen kao jednostavan jezik za brzo učenje. BASIC je postao de facto standard za mikroračunala upravo zbog svoje jednostavnosti u učenju i implementaciji. Da bi se postigao ove kvalitete donesene su brojne odluke (nedostatak tipkanja, numeriranja redaka i nestrukturni GOTO itd.) koje negativno utječu na stil učenika programiranja. Osim toga, nedostatak izražajnih sredstava doveo je do pojave ogromnog broja dijalekata jezika, međusobno nekompatibilnih.specijalizirane verzije BASIC-a (kao što je Visual Basic), unatoč stečenoj "strukturi", imaju sve iste nedostatke, prije svega - nemar u odnosu na vrste i opise. srodni sustavi) ili kao alat za brzu izradu aplikacija.

Pascal Pascal je razvio poznati teoretičar N. Wirth na temelju ideja Algol-68, prvenstveno za podučavanje programiranja. Izgrađen na principu "potrebno i dovoljno", ima snažnu kontrolu tipa, konstrukcije za opisivanje proizvoljnih struktura podataka i mali, ali dovoljan skup operatora strukturiranog programiranja. Nažalost, loša strana jednostavnosti i strogosti su glomazni opisi jezičnih konstrukcija. Najpoznatija implementacija - Turbo / Borland Pascal - unatoč razlikama od Pascal standarda, je okruženje i skup knjižnica koje čine nastavni jezik industrijski sustav za razvoj programa u MS-DOS okruženju.

C i C ++ Jezik C temelji se na zahtjevima sistemskog programera: potpun i učinkovit pristup svim računalnim resursima, programski alati visoke razine, prenosivost programa između različitih platformi i operativnih sustava. C ++, zadržavajući kompatibilnost s C, uvodi objektno orijentirano programiranje izražavajući ideju klase (objekta) kao korisnički definiranog tipa. Zahvaljujući tim kvalitetama, C / C ++ je zauzeo poziciju univerzalnog jezika za svaki zadatak. Ali njegova primjena može postati neučinkovita tamo gdje je potrebno dobiti rezultat spreman za korištenje u najkraćem mogućem vremenu ili kada sam proceduralni pristup postaje neisplativ.

Delphi- ovo nije nastavak poslovanja Borland Pascal / Borland C, njegova niša - t.j. brzo stvaranje aplikacije (Rapid Application Developing, RAD). Takvi alati omogućuju brzo stvaranje program rada od gotovih komponenti, bez trošenja puno truda na sitnice. Posebno mjesto u takvim sustavima zauzimaju mogućnosti rada s bazama podataka.

Lisp- Algoritamski jezik, koji je 1960. razvio J. McCarthy i dizajniran za manipulaciju popisima elemenata podataka. Uglavnom se koristi u sveučilišnim laboratorijima u Sjedinjenim Državama za rješavanje problema vezanih uz umjetnu inteligenciju. U Europi radije koriste Prolog za rad na umjetnoj inteligenciji.

Prolog- Deklarativni programski jezik visoke razine dizajniran za razvoj sustava i programa umjetne inteligencije. Pripada kategoriji jezika pete generacije. Razvijen je 1971. na Sveučilištu u Marseilleu (Francuska), i jedan je od široko korištenih i stalno razvijanih jezika. Njegova najnovija verzija je Prolog 6.0


LOGO- Programski jezik visoke razine razvijen na Massachusetts Institute of Technology oko 1970. godine u svrhu podučavanja matematičkih pojmova. Također se koristi u školama i korisnicima osobnih računala prilikom pisanja programa za kreiranje crteža na ekranu monitora i upravljanja olovkom za crtanje.

Java Kao izvrstan primjer specijalizacije, Java jezik pojavio se kao odgovor na potrebu za savršeno prenosivim jezikom, programi u kojima se učinkovito izvode na strani klijenta WWW-a. Zbog specifičnosti okruženja, Java može biti dobar izbor za sustav baziran na Internet/Intranet tehnologiji.

ALGOL- Programski jezik visoke razine usmjeren na opisivanje algoritama za rješavanje računskih problema. Stvorili su ga 1958. stručnjaci iz zapadnoeuropskih zemalja za znanstvena istraživanja. Algol-60 verziju ovog jezika usvojila je Međunarodna konferencija u Parizu (1960.) i bila je široko korištena na računalima 2. generacije. Verzija Algol-68, koju je razvila skupina stručnjaka iz Međunarodne federacije za obradu informacija (IFIP) 1968. godine, dobila je status međunarodnog univerzalnog programskog jezika usmjerenog na rješavanje ne samo računskih, već i informacijskih problema. Iako se danas Algol praktički ne koristi, poslužio je kao osnova ili je imao značajan utjecaj na razvoj više moderni jezici, na primjer, Ada, Pascal, itd.
Ako želite postaviti pitanje o određenom jeziku, koristite forum za programere
Sam bolji jezik ne postoji. Ako ćete postati profesionalac u pisanju programa, morate naučiti jedan od programskih jezika visoke razine (najpopularniji programski jezik je C++), kao i jedan od programskih jezika baze podataka ( na primjer, SQL). Nakon što naučite programski jezik C ++, ne možete pogriješiti. Poznavajući ovaj jezik, uvijek možete pronaći posao u bilo kojoj programskoj tvrtki.

Unatoč velikoj popularnosti programskog jezika C ++, često se koriste drugi jezici. Mnoga naslijeđena računala još uvijek pokreću programe napisane u programskom jeziku COBOL. Stoga su nam potrebni programeri koji mogu poboljšati te programe, ali i napisati nove. Vrlo često takve programere velike tvrtke isplaćuju visoke plaće.

Ako ćete raditi sami, bolje je naučiti stvarati vlastitim programima za baze podataka. Da biste to učinili, morat ćete naučiti programske jezike kao što su SQL ili VBA, koji se koriste u Microsoft Accessu. Za izradu web stranica potrebno je poznavati HTML, kao i malo znanja o Javi, JavaScriptu, VBScript-u i drugim programskim jezicima za Internet. Najpotrebniji će biti programski jezik koji će vam omogućiti da lako i brzo rješavate zadane zadatke. To može biti C++, BASIC, Java, SQL ili asemblerski jezik.
Zaključno, napominjemo da sa stručnog stajališta nije toliko važno na kojem jeziku i u kojem okruženju programer radi, koliko radi svoj posao. Oprema se mijenja i OS... Novi zadaci proizlaze iz raznih predmetnih područja. Oni se povlače u prošlost i pojavljuju se novi jezici. Ali ljudi ostaju - oni koji pišu i oni za koje se pišu novi programi i čiji zahtjevi za kvalitetom ostaju isti bez obzira na te promjene.
Ovdje smo pregledali osnove programiranja i glavne programske jezike.

Želim ti puno sreće u učenju programiranja!