Računalniki Windows internet

Jezik visoke ravni za pisanje programov. Izbira programskega jezika. Raven programskega jezika

Različni programski jeziki in njihova področja uporabe. Predavanje v Yandexu

Našo prvo letošnjo objavo smo se odločili posvetiti zelo osnovni temi, o kateri je bilo predavanje v Mali SHAD. S tem se ukvarjajo dijaki, ki jih tehnika zanima, od tod tudi specifičnost predstavitve – predavanje bo še posebej zanimivo za tiste, ki šele začenjajo s programiranjem in razmišljajo o smeri razvoja. Zanje ima Yandex tečaj "Uvod v programiranje (C ++)", ki ga lahko opravite na platformi Stepic.org.

Obseg programov in aplikacij

Pisanje cikla kompilacije lahko povzroči bolj ali manj resne zamude pri razvoju programa. Njihova sintaksa je pogosto blizu človeškim jezikom, kar pomeni, da lahko tudi neizkušeni programerji hitro berejo programe. Poleg tega pogosto ponujajo sintaksne elemente, ki jih lahko zagotovijo samo programski jeziki nizke ravni samo prek knjižnic. Najboljši primeri so vgrajeni hash nizi. Skriptni jeziki so večinoma nesramni, kar je prednost, lahko pa tudi slabost.

Predavatelj Mikhail Gustokashin - kustos akademskih programov pri Yandexu, direktor Centra za študentske olimpijade Fakultete za računalništvo, HSE. Mikhail je treniral na desetine zmagovalcev in nagrajencev vseruskih programskih olimpijad.

V okviru predavanja se govori o tem, kaj so programski jeziki, v čem se razlikujejo, kako so se pojavili in kateri so boljši in kateri slabši. Na začetku bomo govorili malo o zgodovini jezikov - kako so se pojavili, kako so ljudje začeli programirati, kako se je vse razvijalo, kaj se zdaj dogaja. V drugem delu se bomo dotaknili, za katere naloge kateri jezik je primeren, kako »izbrati svoj najljubši jezik in uživati ​​življenje«. Predavatelj bo malo spregovoril tudi o tem, kako se po njegovem mnenju vsega tega naučiti in potem zaposliti.

Skriptni jeziki pogosto zagotavljajo tudi vgrajeno upravljanje pomnilnika in ne zagotavljajo aritmetike kazalca. Zlasti v primeru podatkovno intenzivnih nalog postanejo jasne pomanjkljivosti hitrosti skriptnih jezikov - obstajajo različne metode, ki poskušajo zaobiti to pomanjkljivost.

V kratki zgodovini računalnika je bilo izumljenih že na stotine in stotine programskih jezikov. Vendar pa je bilo v danem trenutku morda le ducat priljubljenih programskih jezikov. Pojavijo se programski jeziki in programski jeziki. Nekateri so celo zares slavni, večina pa ne. Seznam odličnih programskih jezikov se spreminja, vendar zelo počasi. Večina programerjev se veliko nauči in uporablja različnih jezikih v svoji karieri. Ko pa razumete glavno idejo, se je relativno enostavno naučiti nov jezik saj naj bi latinščina pomagala pri lažjem učenju različnih novih jezikov.

Kot vedno je pod rezom podroben prepis predavanja, da se lahko pomikate po njegovi vsebini.

Zgodovina programskih jezikov

Začnimo od začetka. Na začetku računalniki sploh niso imeli tipkovnice! Se pravi, vse je bilo zelo slabo - niso imeli tipkovnice ali zaslona, ​​imeli so luknjane kartice (to so takšne stvari z luknjami ali brez lukenj). V skladu s tem so bili ali zatiči potisnjeni tja ali pa so tam svetili s svetlobo. Če je luknja (ali obratno), je to pomenilo nič ali ena. In programe so takrat pisali s strojnimi kodami – vsaka operacija v računalniku (seštevanje, odštevanje, nekatere bolj zapletene operacije) je imela nekakšno strojno kodo. Ljudje so sami izbrali to kodo s plošče, vse vrste naslovov v spominu, vse so izbili z rokami in potisnili v čitalnik - in vse se je preštelo. Seveda delo programerja takrat verjetno ni bilo preveč zanimivo – delati luknje – in z razvojem znanosti in tehnologije so seveda začeli prihajati do najrazličnejših »zanimivih« stvari. Na primer asembler (Assembler), ki je že malo olajšal življenje.

No, kako je olajšal življenje? Namesto da bi se spomnili, da je za ekipo obstajala nekakšna "čarobna" koda, so bile uporabljene vse vrste besed, podobnih "človeški". angleščina- nekaj add ali mov - in nato so bili našteti registri ali pomnilniška področja, spremenljivke, s katerimi je treba te operacije izvesti. Jasno pa je, da je to na splošno zahtevalo tudi dovolj veliko miselnega napora, da bi imeli v mislih, v katerem registru kaj ležimo, kje katere spremenljivke in kaj se na splošno dogaja. Zakaj se je to zgodilo? Ker so bili računalniki »neumni« in niso mogli razumeti nič bolj »pametnega«. Pravzaprav prevajanje strojne kode iz asemblerja zahteva tudi čas, pomnilnik (takrat ga seveda ni bilo dovolj).

Kasneje si bomo ogledali nekaj najbolj priljubljenih jezikov. Če pa ste novi v tem, se vprašajte: zakaj obstaja toliko različnih programskih jezikov, ko pa računalniku samo dajemo preproste ukaze? Zakaj ni enega programskega jezika, s katerim bi lahko naredil vse? No, ta jezik obstaja. Toda ta ni eden izmed njih. Vsak računalnik, vključno s prenosnikom, pametnim telefonom, strežnikom ali mojim hladilnikom, če je eden od teh pametnih, ima majhne možgane, vgrajeno centralno procesno enoto.

V vsakdanjem življenju pravimo, da pišemo kodo, ki jo računalnik razume oziroma je večinoma, vendar ne strogo gledano, napačna. To so edina prava navodila, ki se izvajajo neposredno v računalniku. Zato se postavlja vprašanje: zakaj ne napišemo strojne kode? No, ker preprosto ni mogoče. To so numerične operacije, najmanjša navodila ki se izvajajo na najmanjši možni ravni v računalniku. Koda je samo za stroj, ne za nas ljudi. Različen model računalnika pomeni drugačno kodo.

Postopoma je postalo jasno, da je zelo težko razviti tako velike kompleksne programe. Programerjeva produktivnost pri teh ukazih je bila izjemno nizka – se pravi, pisal je več vrstic na dan (smiselno), vsaka vrstica pa ni delala nič posebnega – nekaj preprostih aritmetičnih operacij. Ljudje so želeli jezike narediti veliko bolj podobne človeškemu jeziku, zlasti angleščini, da bi bilo lažje in bolj priročno pisati programe. In gremo!

Zapisati računalniški program v strojno kodo je kot kopati tunel skozi Alpe z ničemer, razen s staro žlico, čajno žličko iz aluminija. Teoretično je možno, a praktično nemogoče. Vsi programski jeziki so pravzaprav kompromis. Izumljeni so bili, da bi premostili vrzel med računalniki in ljudmi. Nekateri programski jeziki so zelo blizu strojnim kodam. Naslednji je verjetno Assembler. Na splošno velja, da bližje jezik strojnim kodam, težje ga je programirati in več morate vedeti o strojni opremi, ki jo uporabljate.

Stari in mrtvi jeziki

Fortran je postal eden prvih jezikov. Mimogrede, izstrelili so ga tudi na luknjanih karticah - obstajale so posebne luknjene kartice za izbijanje programov Fortran. Če pa zdaj vzameš tale Fortran - po moje je celo nekje med 50-60. pojavil - in poskusite nekaj napisati na njem, to vam bo zelo neprijetno, zagotavljam vam! Sodobni Fortran je še danes živ, vendar je precej drugačen od tistega, kar je bil nekoč.

Drugi jeziki - zdaj bom napisal eno stvar, za katero ste verjetno že slišali, potem samo na vseh dogodkih, kjer pripovedujejo o zgodovini programiranja - to je COBOL. To je bil jezik za pisanje poslovnih aplikacij. Kaj so poslovne aplikacije? Kakršne koli transakcije v bankah, kaj drugega, vse to je bilo napisano v Kobolu. Pri nas seveda ni zelo priljubljena. Mislim, da na Kobolu v Moskvi skoraj ne boste našli programerja. In nekje ne v Moskvi - s še večjimi težavami. Toda presenetljivo je bilo, da je bila celo pred 10 leti več kot polovica vse kode, ki jo je napisalo človeštvo, napisana v Cobolu. In do zdaj se velik del vseh bančnih transakcij izvaja s programi, napisanimi v njem (COBOL), in ljudje še vedno nekaj napišejo.

Čemu so programski jeziki?

Temu pravimo jezik nizke ravni. Ta jezik se imenuje jezik visoke ravni. Veliko lažje je razumeti in programirati. Seveda pa se izvajajo počasneje, ker ga mora računalnik prevesti namesto vas. Vendar pa hitrost trenutno ni pomembna, zato se v tej vadnici osredotočamo na te jezike na visoki ravni. Toda ne glede na to, kaj pišemo, ga je treba vedno prevesti v strojno kodo, preden se izvede. Čeprav je strojna koda tako pomembna, nam je vseeno.

Obstaja tudi "smešni" jezik, imenovan je Algol (68. različica, ki označuje leto njegovega nastanka). Je algoritemski jezik. Na splošno so tam lahko nekaj naredili, zdaj pa nas ne zanima preveč, kaj zmorejo. In tu se lahko naš izlet v antiko in v relativno neuporabljene jezike konča in preide na tisto, kar še živi (in aktivno živi).

Razumeti moramo, v čem je stvar, a programiranje nam pomeni: pišemo vir... Pišemo to tako imenovano izvorno kodo. Napišemo kodo in računalnik nam jo prevede. Če želite to razložiti, morate vedeti, kako deluje računalnik in kaj pomeni programiranje.

Računalnik je sestavljen iz številnih delov, najpomembnejši pa je procesor, imenovan tudi centralna procesna enota. Računa naloge in delno usklajuje delo računalnika. Če nekaj programirate, boste računalniku dali navodila, ki jih izvajate. Da bi bil programiran program interaktiven, je vhod, Rezultat tisto, kar vidimo na zaslonu ali v obliki lista s tiskalnika. To bi bila igra brez vnosa, brez igre, ker ne bi bila interaktivna. Obstaja veliko različnih vrst vnosa, vendar je najpogosteje uporabljen vnos s tipkovnico.

Stari, a živi jeziki

Algol je bil izumljen v Evropi, Fortran pa so uporabljali predvsem v ZDA - velikih razlik ni. Kakšen trend je viden? Sprva je bilo vse težko in za pisanje si moral biti skoraj inženir, elektrotehnik, razumeti, kje so zaprti kontakti in še kaj za programiranje. Tudi takrat je bilo treba sedeti z listjem in preštevati spomin, paziti nanj. In postopoma je vse postalo preprostejše, enostavnejše, enostavnejše in nato še lažje za programerja - čim manj razmišljati za človeka, narediti čim več samodejno. Ob koncu tega obdobja (predavatelj pokaže na Algol in Kobol) se začnejo pojavljati jeziki, ki so v nekem smislu »preživeli« do danes.

OSNOVNO. Morda nekateri še vedno kaj napišejo na njem vsaj Videl sem, da v nekaterih ustanovah poučujejo v QBasicu - tako modro okno, kjer piše "1989". Na splošno živi "z vso močjo"! Izumljen je bil kot jezik za ne-programerje. Takrat je bil programer tako zelo specializiran poklic. In tukaj vam pravijo: "Tu imamo kul osnovni jezik in vsak razumen človek bo vzel in napisal program v njem - zlahka". Še enkrat, ta BASIC in sodobni BASIC je velika razlika. Vse te vrstice so oštevilčene na vsakih 10, vse vrste GOTO in druge grozljivke - nimajo nič opraviti s sodobnim BASIC-om in celo nimajo veliko opraviti z BASIC-om 89.

Zgodovina programskih jezikov

Programiranje, obdelava vhoda in generiranje izhoda z logičnimi in matematičnimi operacijami. Programski jeziki so besedila, računalnik jih bere in izvaja. Ampak to ni tako enostavno kot napisati nemško ali angleško besedilo, ampak je kot tuji jezik, kitajščina, ker ne razumeš besede. S programskimi jeziki ne morem razložiti ničesar, namenjeni so le navajanju navodil računalniku in imajo le majhen "slovar". To pomeni, da nekaj preprostega, na primer "nebo je modro", računalnik ne bi smel razumeti, saj ne ve ničesar in ga lahko skoraj samo upošteva.

Druga smešna zgodba je jezik Pascal, ki je splošno znan v univerzitetnih krogih, predvsem v Rusiji in v državah nekdanje Sovjetske zveze. Presenetljivo se je in se še vedno uporablja kot učni jezik. V ostalem svetu je manj pogost, a je tudi živ in zdrav. Obstaja takšna oseba Wirth - tukaj je znanstvenik, teoretik. Sodeloval je pri razpravi o Algolu, ni mu bilo všeč, kar se je zgodilo, in izmislil si je svoj jezik - Pascal. In potem je podjetje Borland (in pred tem številna druga podjetja - še posebej Apple se je ukvarjalo) vzelo in uničilo vse. Imel je lepo teorijo, vitek – »vse bo v redu« – in tam so vzeli in natlačili, kar ljudje potrebujejo za delo. No, ni se izšlo tako lepo, kot je želel.

Kateri programski jeziki?

Procesor danes lahko razume približno 90 navodil, kar tudi razume. Ker je te ukaze za ljudi težko razumeti in komaj kdo lahko programira, so bili razviti programski jeziki na visoki ravni. V primerjavi z jeziki nizke ravni, imenovanimi tudi zbirni jeziki, so dobro razumljivi in ​​ponujajo več kot 90 vnaprej določenih ukazov. Večja hitrost računanja je vaša prednost.

Kakšna je razlika med višjimi in nižjimi programskimi jeziki

Prvič, globlji programski jeziki so bližje strojnim kodam in so običajno prevedeni.

In končno,. Xi so izumili inženirji. Če je Pascal izumil znanstvenik, sta C izumila Kernighan in Ritchie, delala sta kot inženirja pri Bellu. Kako je do tega prišlo? Takrat v teh jezikih ni bilo mogoče napisati ničesar sistemskega (predavatelj pokaže na Fortran, COBOL, Algol). Kaj je "sistemsko"? Na primer operacijski sistem, nekateri gonilniki, kaj drugega. Ti jeziki so bili za matematiko, za posel, za vse te stvari. In vse ostalo je bilo napisano v Assemblerju. Nekaj ​​jezikov je bilo, zdaj so mrtvi, se pravi, da se jezik C ni pojavil takoj iz Assemblerja, ampak skozi nekaj vmesnih stvari.

Prevajanje je prevod v izvedljivi strojni jezik ali bajtno kodo. Bytecode je nad strojnim jezikom in zato potrebuje tolmača, ki nato kodo prevede v strojni jezik. Prednost tega je neodvisnost od platforme, za vsak operacijski sistem je mogoče programirati tolmač. Slaba stran je, da so interpretirani jeziki počasnejši od prevedenih jezikov, zlasti pri razvoju iger - ključni argument za uporabo prevedenega jezika. Prav tako programski jeziki nižje ravni nimajo avtomatski krmilnik pomnilnika, vendar morajo pri programiranju nasloviti zahtevani pomnilnik, kar lahko prinese hitrost, vendar je težavno.

Kaj je bistvo? Kernighan in Ritchie sta se rada igrala z igračo Asteroidi - vesoljska ladja leti in so asteroidi, on strelja nanje in ti razpadejo. Imeli so strežnik, na katerem so igrali, a je bilo tam veliko ljudi, igrača pa se je upočasnila. In so nekje v svoji pisarni ugotovili, da imajo nekakšen računalnik, ki ga nihče ne uporablja. Toda nastala je težava - bila je drugačne arhitekture, igra pa je bila napisana v Assemblerju.

Višji programski jeziki so še posebej primerni za začetnike in zaradi neodvisnosti podatkovnih tipov za začetnike. Neodvisnost podatkovnega tipa pomeni, da programski jezik ni pomemben, ali je spremenljivka številčna, črkovna ali druga.

Kaj je potrebno za programiranje?

Na primer, morate vedeti vrsto vrednosti vnaprej, za razliko od skriptnih jezikov. Recimo, da želite programirati program. Kaj rabiš? Najprej računalnik, ki je nepogrešljiv, če želite zagnati svoj program. Pravzaprav skoraj samo znanje programskega jezika. Torej ste zagotovo dobili vse, samo tisto, kar morate napisati v urejevalniku, zdaj boste morda presenečeni. Ukazi so tisto, kar označuje programski jezik s "slovnico" in programsko sintakso.

Seveda so ga prepisali, nekatere funkcije so celo izrezali, da bi se nanj igrali. Toda to jih je pripeljalo do misli, da vsakokratno prepisovanje za novo arhitekturo ni zelo pametno. In odločili so se, da bodo napisali jezik na visoki ravni, ki bi bil primeren za sistemsko programiranje, torej v katerem bi bilo mogoče upravljati s pomnilnikom, v katerem bi bilo mogoče razumeti, kje je kaj in kako do teh kosov pomnilnika dostopati. . In tako se je pojavil jezik C, ki je imel ogromen vpliv na vse pozneje. Vsi (predavatelj kaže na Algol, Fortran in druge omenjene jezike) so imeli velik vpliv, a C - ja ...

Zakaj slovnica? Spet ni težko napisati nemškega besedila brez slovnice, ne. Sintaksa je med seboj popolnoma drugačna različnih jezikih programiranje, a če znaš uporabljati programski jezik, se novega ni tako težko naučiti. Zakaj sintaksa? Ker računalnik ne prepozna začetka in konca ukaza, mu morate povedati, kje se navodilo začne in kje konča. To se naredi s podpičji, pikami, odstavki in različnimi oklepaji.

Katere elemente ima programski jezik?

A to so le nekatera "slovnična pravila", a če veš, da je to že polovica najemnine. Obstaja veliko elementov, ki jih mora razložiti programski jezik, vsi pa ne bi bili zelo uporabni in bi vas le zmedli. Namesto tega bi morali zdaj vedeti, kako nekaj programirati, vedeti morate le osnovne elemente. Kot veste, računalnik ne razume ničesar, zato programer poskuša dati računalniku matematične pogoje, da mu razloži, da ima ukaz. Če želite programirati, potrebujete dobro matematično in logično razumevanje.

V skladu s tem je bil to glavni jezik v Unixu – operacijskem sistemu, ki je bil takrat še bolj priljubljen kot zdaj. In približno v 80. letih je bila situacija nekako taka (predavatelj kaže v Basic, C in drugih jezikih, omenjenih). Recimo, da je vse to na tihem že zamrlo (predavatelj briše reference na Assembler, Fortran in Algol) ... In v 80. letih so računalniki postali manjši, pametnejši, cenejši in ljudje so želeli vse mogoče nenavadnosti, da bi živeti še bolje, živeti še bolj zabavno.

Spremenljivka je način za shranjevanje števila, niza ali logične vrednosti v programu. Skoraj v vseh programskih jezikih so spremenljivke najpomembnejši del programskega jezika, le tisti »placeholders«, ki jih je mogoče zamenjati z dano vrednostjo, lahko ustvarijo interaktivne programe.

Kaj je programski jezik

Pogoj je zahteva, če je uporabljena, se izvede tisto, kar je v pogoju. Obstajajo operaterji, ki ustvarijo pogoj. Operaterji bodo: enaki, ne enaki, večji od, manjši, resnični in napačni. Zanka vsebuje kodo, ki se izvaja, dokler je pogoj, ki pripada zanki, resničen. Prednost desetkrat je na primer, da razvijalcu ni treba desetkrat napisati kode.

Jeziki, ki izvirajo iz 80. let

Ena prvih nenavadnosti je bil jezik C ++. Jezik C ima ogromno pomanjkljivosti (no, na splošno samo ogromno) - na njem lahko narediš karkoli, tudi ustreliš se v nogo, se ustreliš v nogo s fikcijo, v drugo nogo, streljaš z eno nogo v drugi nogi, na splošno - kar želite narediti. Toda hkrati se nekatere arhitekturne stvari tam izvajajo precej težko - spet, tako kot v Assemblerju, moramo spremljati, kje smo, kaj in kakšen spomin imamo; tam je ves čas, ko ta pomnilnik nekam "teče" - se pravi, izbrali smo, pozabili izbrisati, izbrisali napačno stvar, ušli iz pomnilnika, na splošno - dobili smo kup težav.

C ++ je bil prvotno ustvarjen kot niz dodatkov k jeziku C, ki bi olajšali razvoj. Takrat je postalo modno objektno usmerjeno programiranje in ljudje so se odločili, da je vse mogoče opisati v obliki hierarhije, torej imaš žogo (povzetek), od nje podeduješ nogometno žogo, odbojko, drugo abstraktno žogo. . Takrat je bilo v modi, da "zdaj vse pišemo v obliki neke hierarhije in vse bo v redu, življenje se bo izboljšalo, vse bo v redu in vse." V nekem smislu je C ++ implementiral ta objektni pristop - ni bil prvi objektno usmerjen programski jezik, vendar je postal precej priljubljen in v njem so se začele pojavljati vse vrste funkcij. Hkrati je C ++ ohranil skoraj popolno združljivost (takrat) z jezikom C, program, napisan v C, je bil v 99% primerov uspešno preveden kot C ++ in je celo deloval na enak način. Namen tega je bil olajšati prehod s C na C ++.

Funkcija je zbirka kode, ki jo lahko pokličete kadar koli. Na primer, če je koda zapisana v funkcijo, se koda ne sme pisati tako pogosto in jo je mogoče poklicati prek ustreznega imena funkcije. Pokličete lahko tudi funkcije s parametri. To številko lahko funkcija uporabi kot spremenljivko. Na primer, isto funkcijo lahko uporabite za izračun več računov, ki imajo isto formulo.

Če bi radi videli izvorno kodo moje še nedokončane igre. Na spletno mesto z različico trenutne igre. Na tej spletni strani je bilo potrebno programirati in prikazati privlačen dizajn in številne funkcije spletne strani na optimalen in za mamo zadovoljiv način.

Poleg objektnega pristopa (v C ++) se je hitro pojavila standardna knjižnica predlog (STL). Mislim, da so v šoli tisti, ki so še učili Pascala, odkrili, da najprej tam niste imeli vgrajenega razvrščanja (v starodavnem modrem Borland Pascal, zdaj je že v sodobnih različicah) - obstaja primer (vir) razvrščanja , ga lahko kopirate in prilepite. Toda če želite tukaj razvrstiti cela števila, tukaj želite realna števila in tukaj so nizi, ki jih je mogoče primerjati med seboj, ste morali napisati tri različne vrste, ki delajo popolnoma isto stvar, le imajo različni tipi podatkov. To ni zelo dobro in predloge, ki se niso takoj pojavile v C ++, so to težavo precej olajšale. To pomeni, da ste imeli abstrakten program, ki je uspešno razvrstil nekaj, kar je mogoče primerjati med seboj.

Skriptni jeziki iz 90. let

Toda čas ni miroval, v 80. letih se je zgodilo veliko zanimivih stvari. Toda nekje na prelomu iz 80. v 90. so računalniki postali tako dobri, da je bilo že mogoče delati zelo čudne in zelo neučinkovite stvari. Zlasti so to bili skriptni jeziki, ki niso bili prevedeni v strojno kodo, ampak interpretirani. Nekaj ​​časa je bil tudi tolmačen BASIC, vendar so bili ti skriptni jeziki namenjeni predvsem obdelavi besedil - na primer Perl, Python (takrat še ni bil zelo znan), PHP, Ruby - to so skriptni jeziki, ki so v eni ali v drugačni meri še vedno živijo (vsi so se uspeli pojaviti pred letom 2000, celo veliko prej).

Pojdimo malo čez njih, saj so to specifične stvari in se zdaj uporabljajo marsikje. Kakšna je ideja? Če ne sestavimo, potem lahko dovolimo še veliko več. Program lahko na primer pogleda svojo kodo in jo nekako uporabi; ve, kaj se v njej dogaja in zaradi tega lahko počne marsikaj zanimivega.

Perl je bil zasnovan za obdelavo besedil - v tistih časih je bilo v računalnikih že toliko pomnilnika, da je bilo mogoče vanj vtakniti nekaj besedila in s tem besedilom narediti nekaj koristnega (na primer prešteti besede, poiskati kakšno vrsto). Toda po mojem mnenju so ga zasnovali ljudje, ki so bili malo iz sebe, saj o njem obstaja taka šala: "Vsak nabor napisanih znakov je pravilen program v Pearlu." Po mojem mnenju lahko nanj samo pišeš, ne moreš ga brati. Ko pogledam kodo v Perlu in poskušam nekaj ugotoviti, ne razumem ničesar. Mogoče, če bi ga bolje poznal, bi kaj razumel, a kot sem slišal od tistih, ki še znajo, pravijo, da je lažje prepisati. To pomeni, da so programi kratki in jih je res lažje prepisati kot ugotoviti, kaj je tam in popraviti.

Približno v tem času, sredi 90. let, se je pojavil internet. Sprva je bila to pošta, spletna mesta s statičnim HTML-jem, a ljudje so želeli dodati nekakšno dinamiko, da bi se nam vse dogajalo dinamično, izpolnjevali nekaj obrazcev, knjige gostov in še kaj. V skladu s tem je to zahtevalo nekakšno interakcijo, pripravili so protokol, kako deluje in, kar je najpomembneje, generiranje teh statičnih (pogojno) strani, ki bodo »izpljunele« uporabniku kot odgovor na njegovo zahtevo.

Na splošno takrat ni bilo primerno nič drugega kot Pearl. Slaba ideja je bila pisati upravljalnik v čistem C ali C++. In zaradi pomanjkanja boljšega jezika v tistem času (in dovolj dolgo) je bil Pearl priljubljen jezik za spletni razvoj. Seveda obseg ni primerljiv s tem, kar se dogaja zdaj.

PHP je nastal kot ... po naključju. Ena oseba je hitro prenehala s tem - naredil je svojo stran, imel je kakšno knjigo gostov, nekaj drugega, nekaj stvari. In za Pearl je napisal nekakšen nabor makrov, ki so bili videti kot C, ker je znal uporabljati C, samo zato, ker mu je bilo tako udobno. Poimenoval sem jo Osebna domača stran. Delil in rekel: "Ljudje, poglejte, kakšen komad sem napisal, tukaj je vse veliko bolj jasno kot na Pearlu in ga lahko urejate." In ljudem je bilo všeč.

Potem je zadevo opustil. Na splošno je posledično ta PHP začel živeti in sčasoma postal veliko bolj priljubljen kot Perl. Toda ta njegova "porodna travma" (ideja je kot nabor makrov za Pearl) se je z njim precej okrutno pošalila. Jezik se je izkazal za čudnega. Se pravi, razvijal se je sam, nihče ga ni zasnoval, nihče ni upravljal razvojnega procesa (ne podjetje niti katera koli oseba), bilo pa je veliko skupin, od katerih je vsaka žagala, kar jim je bilo všeč. Posledično se funkcije tam imenujejo drugače, ni niti sloga, vse je skozi podčrtaje, na splošno so nastavitve tu in tam in kako bo vse delovalo, ni zelo jasno. Lahko pa se usedeš in pišeš v PHP v dveh urah, saj je tako nameraval.

Python in Ruby: Ruby je zdaj manj priljubljen, Python je nekako bolje "izrezan", o tem se pogovorimo kasneje. Jasno je, da so bili v tistih časih to (predavatelj kaže na Perl, Python, Ruby, PHP) visoko specializirani jeziki za visoko specializirane namene. Na splošno v njih takrat ni bilo zapisanega nobenega sistemskega programiranja, nobene poslovne logike, zdaj pa tega ne dela veliko.

Sestavljeni jeziki iz 90. let

Šli bomo približno ob istem času, vendar v drugo smer. Takrat smo C ++ uporabljali za skoraj vse, kar je bilo treba napisati ne za splet, ne za obdelavo besedila, ampak za preproste aplikacije, za operacijske sisteme, za igrače - na splošno za karkoli. Toda C++ je pravzaprav grozljiv jezik. Zakaj? Ker je, prvič, podedoval zaradi združljivost za nazaj vse težave s C. Še vedno bi jih lahko ubil milijon različne poti, enaki, kot so bili v C (seveda so bili dodani novi načini v C ++). Hkrati, če napišete vse dobro in pravilno, kot so si zamislili avtorji C ++, potem se seveda ni bilo mogoče ubiti s starimi metodami in zdi se, da jih je bilo manj. Vendar je imel zelo nenavaden objektni model. Razdelitev programa na module, na nekakšne kose, je prišla iz C (če lahko pišete vključi v C ali C ++ - pravzaprav je bilo zamišljeno kot samo vstavljanje besedila knjižnice v vaš program, na koncu, ko napišeš kup vključkov, imaš vse - če je "primitivno", kot je bilo na samem začetku - se vse vstavi v eno datoteko in potem se vse skupaj sestavlja strašno dolgo, ker gre večkrat naokoli .različice so še boljše.

Na splošno ima C ++ veliko pomanjkljivosti. Kvalifikacije programerja so morale biti visoke, da bi lahko pisal v C ++, in takšni programerji so bili dragi (tako usposabljanje kot še kaj drugega, torej težko je najti programerje na trgu, plačati je treba veliko, no, na splošno ni tako ...). In naši računalniki vse hitreje štejejo, postajajo cenejši, ljudje si kupujejo nove računalnike in želijo več aplikacij, več igrač za telefon, na splošno - več veselja.

Tako se je pojavila Java (Java). Tudi tam je povezana precej smešna zgodba, kako se je ime pojavilo v tem jeziku. Obstajajo programerji, ves čas pijejo kavo in takrat je bilo v modi piti kavo, ki je rasla na otoku Java. Jezik je bil zasnovan kot jezik za vgradne aparate, zlasti za aparat za kavo. Tako je nastalo ime ...
Kaj se je z njo začelo, kaj je bilo dobrega na njej in zakaj je pridobila tako priljubljenost? Najprej so se popolnoma znebili Sishnyjeve zapuščine. Brez napotkov, veliko manj načinov, kako ustreliti kateri koli del telesa in zlomiti vse. Drugič, predstavili so veliko novejše ideje v smislu objektnega modela – to pomeni, da se je C ++ pojavil veliko prej kot Java in uporabljal bolj arhaičen, "divji" objektni model. No, tukaj (predavatelj pokaže na Javo) je bilo že takrat bolj premišljeno in v teoriji so ljudje mislili, v praksi pa so uporabljali in delali vse veliko bolj kul.

In končno, tretji. Naši programi Java niso bili sestavljeni v strojno kodo, ampak v kodo za virtualni stroj. To pomeni, da ste imeli navidezni stroj JVM (VM) - Javovsky. Vaši programi so bili zbrani v nekakšni vmesni predstavitvi, nato pa so se s pomočjo tega stroja že izvajali. Kaj je naredilo? Prvič, upočasnil se je, drugič, s strašno silo je pojedel spomin, tretjič pa je bil prenosljiv povsod (teoretično) - tudi v aparat za kavo, celo v mlinček za kavo, celo v računalnik, celo na mobilni telefon. Po eni strani je to dobro, se pravi, da ste samo napisali implementacijo virtualnega stroja, nato pa povsod poganjate svoje programe Java. Toda po drugi strani je slabo, da je imel isti telefon takrat malo pomnilnika, bila je nizka zmogljivost in vse to se je dodatno začelo dolgočasiti in upočasniti.

A tudi to ni glavni razlog, zakaj je bil jezik na splošno izumljen. Jezik Java je bil izumljen, da bi zmanjšali zahteve za kvalifikacije programerjev. Se pravi, da bi lahko pisali slabši programerji dobri programi v Javi, ker vam ne dovoljuje pisanja slabih programov - ni sredstev za pisanje slabih programov. Tam lahko pišete samo dobre programe. No, v razumevanju ustvarjalcev jezika.

Se pravi, če v C, v C++, v Pythonu, na karkoli, lahko raztopimo nekakšno srhljivo smeti iz našega projekta, kjer imamo vse pomešano, zbrano ure in tam še kaj. V Javi lahko raztopite tudi koš za smeti, vendar se je za to že treba malo potruditi. Se pravi, da se privzeto ne izkaže, da je "smetnjak", pojavijo se druge težave, da je bilo tam nekaj podedovano ali podedovano - na splošno je za eno smiselno vrstico deset ne preveč smiselnih. Po drugi strani pa morda tako srednje izkušen programer zna napisati dokaj kakovostno kodo.
Smo že skoraj pri koncu. Pri nas je naslednja stvar, ki se je pojavila, .Net (bo dosegel), no, predvsem pa nas zanima C# (skoraj enako [predavatelj pokaže na Javo], torej so razlike v podrobnostih, če izbirate med njimi - poglejte, kje plačate več denarja).

In še ena stvar je JavaScript. Nima nobene zveze z jezikom Java, pojavil se je istega leta - beseda je bila modna, so licencirani blagovna znamka uporabiti.

Na kaj je glavno biti pozoren? (Predavatelj riše puščice iz C++ v Javo, .Net, C#, JavaScript in PHP). Če želite napisati preprost program v enem od teh jezikov in v mnogih drugih - če poznate C ++, vam na splošno ni treba vedeti ničesar drugega - vzamete in napišete v C ++, nato pa na začetku dodate dolarje , nekaj drugega naredi malenkosti in ti začne delati karkoli (predavatelj pokaže na jezike, katerim so bile dodeljene puščice iz C++). Se pravi, da sta si v nekaterih preprostih stvareh izjemno podobna. Če rešujete kakšne šolske probleme, izobraževalne naloge, kaj drugega (ne načrtujete velikega projekta – imate eno datoteko, ki bere številke, prikazuje številke v konzoli, počne kaj drugega), potem med temi jeziki skoraj ni razlike. Jasno je, da sta JavaScript in PHP specializirana, vse imata malo drugače. In tu (predavatelj pokaže na Javo in C#) je na splošno zelo malo razlike.

Od takrat se je pojavilo še marsikaj zanimivega, a ni jasno, ali bodo uspešno živele ali umrle. Kaj zdaj uporabljajo, za katere naloge?

Izbira jezika glede na nalogo

Recimo, da se soočate z nalogo pisanja gonilnika za grafično kartico. Kateri jezik boste uporabljali danes? (Kričite iz občinstva: Java!) Zakaj ... Java je odlična, zakaj pa ne Ruby ali PHP? (Predavatelj govori sarkastično.)

Programiranje na nizki ravni

Če pišete nekaj nizkega nivoja, potem je C najboljša izbira, dejansko pa sem nekaj slišal (pa nisem videl), da se za to uporablja C ++. Toda v to komaj verjamem, saj lahko v C-ju jasno nadzorujete - ker ste dali toliko bajtov pomnilnika, potem bo tako in tako. In kako se izvaja niz v C ++ (STL)? No, nekako implementirano. In na koncu ne vemo, kako in kaj se tam dogaja, morda nam bo na video kartici zmanjkalo pomnilnika ali pa se bo zgodilo kaj drugega. Zato C še vedno živi in ​​ne umira, takšne naloge sistemskega programiranja še vedno obstajajo - napišite operacijski sistem, napišite gonilnike, napišite kaj drugega - C je odličen za to. Poleg tega zdaj obstajajo vse vrste naprav (Internet stvari obljublja, da bo kmalu prišel), ki živijo na baterijah (in seveda jih bo na milijone, vse bo obešeno s tem internetom stvari), morajo biti zelo poceni in porabiti zelo malo električne energije. Temu primerno bo 2 KB pomnilnika, 5 kHz procesor, no, seveda, kaj privijati navidezni stroj ali skriptni jezik v bližnji prihodnosti ne bo deloval, kar pomeni, da boste morali nekaj napisati v C. Pa še zdaj na primer izračuni na grafični kartici (OpenCL ali kakšna druga tehnologija) - ne izmislijo si novega jezika, da bi jim pisali programe - tam delajo C z nekaterimi velikimi omejitvami. Samo zato, ker ljudje že vedo, zakaj bi se naučili nekaj novega? Formalno je to verjetno v nekem smislu tudi C.

Spletno programiranje

Recimo, da želite napisati nov Facebook ( socialno omrežje). Na kaj boste to napisali? (Iz občinstva govorijo o HTML in CSS.) HTML, CSS je dizajn in želimo, da bi tam lahko dodajali fotografije, prijatelje, puščali komentarje.

Za skriptni del – torej kaj se bo zgodilo na strani odjemalca – je JavaScript. In včasih se JavaScript generira v drugem jeziku in pošlje (zgodi se, da je skript ustvarjen ... ker je včasih na ta način lažje obvladati nekatere spremembe v logiki).

Presenetljivo je, da je napisana v PHP - in Facebooku in številnih drugih velikih projektih. Seveda sem moral napisati nekaj svojih stvari, da je še vedno dobro delovalo, in ne tako, kot je bil narejen "tyap-blooper", vendar so to naredili. V bistvu ni pomembno, v kaj pišete, vendar Perla ne priporočam. Tukaj in zdaj za splet seveda nihče nič ne piše iz nič. Vsak piše nekakšen okvir ali kaj podobnega. Spletno nakupovanje? Prenesli smo okvir za spletno trgovino – no, to je to, napisali smo spletno trgovino.

Poslovno programiranje

Nato želite napisati dolgočasno bančno aplikacijo. Ali, na primer, imate nekoga, ki prodaja kartice SIM? Morda ste že kdaj kupili telefon ali kaj drugega in so vam rekli: "Sistem visi, nič ne moremo." Na kaj boste napisali takšno prijavo? (Jok občinstva o Pythonu) Kaj takega ne moreš napisati v Pythonu, kaj si?! Ni vredno pisati ničesar za posel v Pythonu. Zakaj? Ker ko nekaj napišete v Pythonu, v procesu pisanja ne morete najti večjega števila napak. Python se dinamično tipka na vse možne načine in na splošno tam lahko skrijete napako, tako da se pojavi v takšni situaciji, da sploh ne morete razumeti, kaj so ti pokvarjeni uporabniki tam naredili, da se vam je vse zlomilo. To pomeni, da je v Pythonu bolje napisati majhne skripte zase - razumete, kaj se tam dogaja in kaj se dela. No, ali nekaj, česar ni škoda vreči ven: hočeš nekaj razvaljati pred svojimi konkurenti, pa kaj ko se bo vsakič zlomilo. Pisal si v Pythonu in to je to – prevzel si trg. In če nekaj pišeš dalj časa, na primer kakšno bančno aplikacijo (da ti odobrava posojila, kaj drugega) - to napišeš v Javi. Ker gre za resno zadevo, kosi papirja, denar, dokumenti, kaj drugega, a v njej ne moreš toliko zmešati, da bi se vse pokvarilo, sicer bodo ljudje užaljeni - njihov denar je šel in ni prišel nikamor, v trenutku, ko se je niz spremenil v številko ali obratno. Torej, to pomeni, da metodično vzamete Javo in pišete, pišete ... No, ali na.Net, se takšne situacije načeloma tudi dogajajo. Tam seveda lahko naletite tudi na težave, a je še vedno verjetnost za to nekoliko manjša.

Programiranje za vojsko, vesolje

Zdaj si predstavljajte, da so se odločili, da vas bodo z raketo poslali na Luno. Kaj bi raje uporabili za pisanje kode, ki nadzoruje raketne motorje? Pa poglejmo. To verjetno (predavatelj kaže v Perlu, Pythonu, PHP, Rubyju) ni vredno - upočasni se, nekaj drugega se dogaja, no, na splošno se ne bi strinjal, da bi letel na takšni raketi. V C++? Iskreno povedano, tudi meni ne bi zaupal, ker je v C ++ preveč načinov, da se ubiješ. Ko si tam nekje v vesolju, ni ravno dobro.

Mogoče v Javi? Zdi se, da je tam vse precej zanesljivo in arhitektura dobra, brez divjih tipov, brez odvečnega pomnilnika. Recimo, da je prišel najpomembnejši trenutek in naša Java se je odločila, da nam pobere smeti. Moramo pristati, upočasniti in ona reče: "Ne, smeti gredo." Na splošno tudi ne zelo dobro.

Če sem iskren, bi raje dal ta program napisan v Pascalu. Pascal mi seveda ni všeč, a nekako bi bilo v takih zadevah zelo kul.

Uporaba več jezikov hkrati za razvoj programske opreme

No, kaj je treba na splošno povedati o sodobnih jezikih. Dandanes veliko projektov ne živi v nobenem jeziku, torej nekateri živijo v enem jeziku, nekateri v drugem, drugi pa v tretjem. Na primer, če imate kakšno spletno aplikacijo, ki obdeluje divje količine informacij, je dostop do diskov (niti do baz podatkov ne, teh je tako ogromno, da tudi baza podatkov ne podpira kakšne že napisane) je verjetno zapisan v nekem takrat nizkem -level C za izjemno hitro pisanje na disk in vse to. Seveda se pisanje celotnega projekta v C ne splača. Mogoče obstaja nekakšna vmesna logika, napisana v Javi, ki kliče funkcije Cis za hitre klice. No, frontend (kar gleda uporabnik) je seveda že napisan v nečem, v nekaterih skriptih, v nečem, kar neposredno izvaja brskalnik (JavaScript). In vse to živi skupaj in uspešno sodeluje.

Kaj ljudje včasih naredijo pri razvoju nekaterih aplikacij, tudi velikih? Vzamejo in napišejo prototip v Pythonu (kako bo vse delovalo), skicirajo, premislijo o nekakšni arhitekturi. Pisanje na njem je res zelo hitro - vstavili so prototip, eksperimentirali z njim in rekli: "Joj! To je tako kul! " In popolnoma prepisana. Zdi se, da so delo opravili dvakrat, trajalo je dvakrat dlje (no, eno in pol). Vendar ne! Pogosto se izkaže, da ta metoda ni slaba, saj če takoj napišete v nekaj, na primer v Javi, in se nato odločite: "Ne, preoblikujemo, popolnoma spremenimo arhitekturo in vse to," potem boste porabili 10x več časa ... Takšne stvari tudi obstajajo in živijo.

Pogoji za uspeh katerega koli programskega jezika

Zdaj pa se pogovorimo o tem, zakaj nekateri lepi jeziki niso preživeli ali živeli v zelo omejenem prostoru. Ko je Wirth videl, kaj so slaba podjetja Apple, Borland in vse to naredili z njegovim Pascalom, je prišel do še boljšega jezika - Oberon. Bilo je preprosto divje minimalistično – to pomeni, da je bilo ukazov zelo malo (Strings? Zakaj potrebujemo nize? Naredili bomo niz znakov!). No, nekaj mu ni šlo, kolikor je lahko.

Še ena stvar. Tudi ameriška vojska je bila pozvana, da jih razvije kul jezik, na katerem vse deluje in se da vse napisati. Rezultat je precej pošastni jezik z imenom Ada, v katerem pa vseeno nekaj pišejo, a spet - samo za vojsko.

V čem je problem? Zakaj so nekateri jeziki, kot je Python, ki ga na začetku ni podpiralo nobeno podjetje, prevzeli trg. Tudi PHP, ki je tudi slabo oblikovan, je sam prevzel in zavzel trg (večino). In vložene so bile vse možne milijarde dolarjev (predavatelj pokaže na Ado) in niso šli nikamor, nič se ni zgodilo. Kaj je razlog za to? To je posledica dejstva, da okoli teh jezikov ni infrastrukture. Se pravi, jezik je morda odličen, vendar dokler ni dokumentacije, dokler ni skupnosti, ki bi znala odgovoriti na vprašanja (na Stack Overflow) in, končno, kar je najpomembneje, dokler ni veliko število knjižnic se jezik ne sproži. To pomeni, da ste na primer želeli napisati spletno stran na Oberonu. Zakaj ne? In zmeda se začne ... Ne morete dvigniti svojega spletnega strežnika na Oberonu, da bi lahko testirali, ne morete povezati nobenih knjižnic, ker niso na Oberonu. In vse to se naredi s pomočjo nekakšnih bergel, sile odidejo in na splošno pljuvate in pišete svojo stran v čistem C namesto Oberona. In tisti jeziki, ki lahko uporabljajo knjižnice iz drugih jezikov, živijo dobro. Isti Python na tistih mestih, kjer se upočasni. No, na splošno so vse vrste standardnih stvari, kot je razvrščanje in kaj drugega, napisane v C in on (Python) ve, kako z njimi komunicirati.

Java ima tudi domači vmesnik Java. To je v bistvu C, torej tam (po mojem mnenju želijo ves čas prepovedati, vendar se zdi, da še niso prepovedali) ti jeziki lahko komunicirajo z že obstoječimi knjižnicami (predvsem tistimi Sishny). In zaradi tega vzamejo in delajo. Ideja, ki vam jo poskušam posredovati, je jasna, kajne? Ne pišite v jezikih, ki ne znajo povezati knjižnice C. No, če želite uživati ​​v nečem kul. No, in postopoma so (jeziki) preraščeni s svojo lastno infrastrukturo. In nekako dobro živijo.

Programski jezik in poklicna orientacija

Zdaj pa se pogovorimo o tem, kako razumeti, kaj si želite v življenju. Kaj so kul stvari? Lahko narediš nekakšno sistemsko programiranje, kajne? Tam je kul šteti ta kolesa, hočeš lansirati kvadrokopterje, nekaj kamer in še kaj početi. Potem je C verjetno vaša izbira.

Če želite pisati, morda ne najbolj zanimive aplikacije v življenju, vendar vam je kul, da jih oblikujete, premislite o vsem in zaslužite veliko denarja za sedenje in dolgčas večino časa (za to morate plačati, če vi ste kakovostna gospodična), tukaj so - Java, .Net. Greš delat v banko, pišeš, greš v službo ob devetih v beli srajci, dobiš dobro plačo in pišeš po priporočilih najboljših Java-virov, .Net-ovce in vse to ...

Če želite napisati kakršne koli aplikacije, nekaj brskalnika, nekaj igrač, nekaj drugega, potem je C ++ odličen. Če želite pisati spletne strani, tukaj so, jeziki po vaši izbiri (predavatelj prikazuje Perl, Python, PHP, Ruby), ni velike razlike. Edina stvar je, da bo PHP umrl pred Pythonom, tako da če ste leni za učenje novih stvari, se naučite Pythona. Ne boste opazili velike razlike, vendar boste zdržali dlje.

Tudi kaj se dogaja z Rubyjem, ni jasno. No, lahko tudi PHP, če ste se ga že naučili, saj so tako preprosti, da ne traja tako dolgo, da se jih ponovno naučite.

In končno, obstaja še eno področje uporabe programskih jezikov - to je, ko jih uporablja ne-programer. Recimo, da ste matematik, fizik, kemik, analitik, kdorkoli in morate na hitro nekaj izračunati, analizirati nekaj podatkov (za biologe, na primer, koliko arktičnih lisic živi na poveljniških otokih). Vse to lahko zapeljete v tabelo v Excelu ali ga z nečim analizirate. Za to je primeren tudi Python, zna delati z besedilom in knjižnice so polne vseh vrst, statističnih in vsega tega. Če želite narediti kakšno strojno učenje, obdelati nekaj podatkov, predvideti, potem je to zdaj tudi najhitreje narejeno v Pythonu. Vendar je treba opozoriti, da so naloge zelo različne. Na primer, če želite takoj trgovati na borzi v razmerah, ko se kotacije ves čas spreminjajo, potem ne glede na to, kako kul strojno učenje pišete v Pythonu, bodo ljudje, ki imajo to napisano v nečem hitreje, imeli čas kupiti vse prej, medtem ko vas bodo šteli, tudi če so njihovi algoritmi slabši. Zato tudi te naloge strojnega učenja (nekatere od njih) zahtevajo visoko zmogljivost (in izjemno visoko) in s tem tudi druge jezike.

Edini način, da veste, kaj želite, je poskusiti vse. Zdaj bom to povedal kot eno od vizij, kako lahko poskusiš vse. Kako postati programer in srečen? Torej. Začnemo iz nič. Tukaj v šoli študirate matematiko, ruski jezik in druge obvezne in izbirne predmete, vaše znanje s področja programiranja pa se odraža na tabli (predavatelj pokaže na prazno tablo) na ta trenutek... In želite postati srečna oseba, delati, kar ljubite, zaslužiti veliko denarja in si ničesar ne zanikati in biti srečen.

Eden od načinov za to. Obstajajo seveda vse vrste navdihujočih zgodb o ljudeh, ki sploh niso šli na univerzo ali pa so jo zapustili in postali milijarderji, lastniki podjetij itd. Vendar je treba opozoriti, da je večina ljudi, ki morda niso postali milijarderji, a tudi dobro živijo, v nekem trenutku vseeno diplomirala na univerzi.

Kakšna je naša situacija s sprejemom na univerzo (zdaj študiraš v šoli)? Medtem ko ste v šoli, morate razumeti, da je naslednji korak vpis in skrb za to. Opravite izpit ali zmagajte na olimpijadi. Na izpitu lahko uporabite Pascal, C ++ (vključno s čistim C), Python (ne bom jih več omenjal). Na olimpijadi - isti Pascal, isti C ++, isti Python (zdaj bomo govorili o njegovih težavah) in najpogosteje je Java. Še vedno se lahko zgodi karkoli, odvisno od olimpijade, ne pa bistva.

Kako izgleda graf porazdelitve jezikov na vseruski olimpijadi iz informatike? Ljudje, ki sodelujejo na vseruski, najbolj kul olimpijadi, o čem pišejo? Izgleda takole (tu pomeni Pascal, tukaj je približno 2000, tukaj pa je približno nič, tukaj je C ++ in tukaj je 2015).

Leta 2000 skoraj nihče ni pisal v C ++. Petnajst let pozneje skoraj nihče ne piše v Pascalu, kljub temu, da je Pascal sodoben. To je jezik, ki lahko naredi skoraj vse enako. Samo vsi so postali preleni, da bi se naučili tega, vsakega novega trenda, in vsi še naprej pišejo v Borland Pascal, ki seveda ne zmore ničesar. V C ++ ljudje pišejo nekaj algoritmov za razvrščanje (STL) - super, napisali so sort () in to je to. Na Pascalu, na običajnem, na starem - to je problem. Napisali so nekaj kompleta (potrebno) - super, napisali so ga v C++, v Pascalu so spet muke neprekinjene. Na novih Pascalih lahko to seveda storite, vendar dejansko stanejo. Morda tega niste opazili, vendar je.

Obstaja tudi Java, vendar ima Java veliko črk. Je za velike projekte, za majhne programe za enkratno uporabo pa se izkaže za precej slabo, ker jih je veliko dodatne črke... Ampak tudi nekateri ljudje pišejo, na tem se lahko naučiš pisati. A na enotnem državnem izpitu ni in enotni državni izpit bo večinoma še vedno treba opraviti.

Kaj je najboljše za izpit? Za izpit se je najbolje (če ne znaš ničesar in te v šoli nič ne naučijo) naučiti Python. Nekatere naloge izpita so na njem odlično rešene. Na olimpijadi se na splošno izkaže, da je (uporabljen) C ++, ker je Python zelo počasen, tam ni vse rešeno.

Tako ste preučili nekaj majhnega podmnožice jezika in nekaj algoritmov (morda) in rešili veliko težav, da bi dobili diplomo svoje olimpijade in šli na univerzo, da bi dobili visokošolsko izobrazbo.

Zdaj vam bom povedal, kako na HSE gradimo tečaj, v kakšnem vrstnem redu so jeziki, kako se poučujejo uporabna matematika in računalništvo na Fakulteti za uporabne vede, kar izvajamo z Yandexom. V prvem semestru - Python (ne v celoti, o tem, kako se morate učiti v šoli) in C ++ (širši, veliko širši, kot se običajno poučuje v šolah). Naj vam takoj povem, da se ne boste prestrašili, če nenadoma želite vstopiti, recite: »Zakaj, vse to že vem, zakaj bom nekje študiral? Raje bi šel drugam." Za tiste, ki že znajo dobro programirati, obstaja možnost, da gredo neposredno na študij algoritmov in na dokaj teoretično usposabljanje. Zdaj jih ne gledamo, to (pokaže na tablo) je za tiste, ki programirajo srednje ali sploh ne.

V prvem semestru se učijo osnov Pythona, samo zato, da se ljudje naučijo programirati in da ni kdo posebej užaljen. Python se v šolah redko poučuje, večinoma pridejo ljudje z znanjem Pascala ali C++. V bistvu celo Pascal, če je množična šola. No, da ni bil kdo užaljen, se vsi naučijo novega jezika (kot da so enakovredni). In C ++ preprosto zato, ker lahko od C ++ greste kamor koli.

Nato sledi tečaj "Algoritmi" in ločeno tečajni projekt... Klasični algoritmi z izvedbo. Ne, da smo teoretično nekaj vzeli, izračunali kompleksnost. Na predavanju smo vzeli, izračunali zahtevnost, na seminarju - prevzeli, implementirali algoritem. Projekt je, da učenci naredijo nekaj končanega. Na primer, eden od projektov je bil: šteti ... Recimo, da imate v Moskvi veliko stanovanj in razumete: »Oh, imam veliko nepotrebnih stvari, nekaj bom oddal. In določijo ceno in nihče noče od vas najeti stanovanja – verjetno predrago. Ali pa dajo kakšno ceno, jo takoj snejo in si pomisliš: »Oh, verjetno sem jo poceni oddal,« in se tudi ti razjeziš. To pomeni, da je bilo treba izračunati, koliko stane najem stanovanja? Vnašate podatke - za vas izdela oceno. Takšno spletno mesto, ki je bilo sestavljeno iz več stvari: vzemite predloge, razčlenite, uporabite nekakšen algoritem strojnega učenja (verjetno) nezahteven in naredite čudovit spletni obraz, v katerem lahko nekaj izberete, nekaj zapeljete, nekaj metrov, poljubno število sob , število savn, število jacuzzijev v vašem stanovanju in približno ocenite stroške. Se pravi, nekakšna končana, ne zelo težka stvar... Tukaj to pomeni (predavatelj pokaže na tečaj algoritmov) tako močan C++, s konzolnim V/I. No, tukaj je (predavatelj pokaže na napis "projekt") nekaj pod mentorskim vodstvom, po možnosti z bazami podatkov, morda z razčlenjevanjem besedil in še s čim.
Nato sledi tretji semester – predmet z naslovom »Računalniški sistemi«. Za razumevanje je kar nekaj asemblerja (zelo malo) in potem nekaj podobnega čistemu C-ju in interakciji z operacijskimi sistemi, sistemsko programiranje v bistvu. In projekt za seminar je tudi nekaj na temo vseh omrežnih interakcij, precej nizke ravni: razvijete kakšen pripomoček, na primer rsync (sinhronizacija, morda veste. V čistem C-ju bolj ali manj napišite analog rsync, ki jih boste imeli prek omrežnih map za sinhronizacijo z vsemi dostopi do datotek itd.).

In končno, četrti. Sploh ne vem, kako naj to imenujem, to je taka vinaigreta tehnologij, potrebnih za resnični razvoj, na primer za razvoj spletnih. Se pravi, to je praktična uporaba baz podatkov, spet nekaj podobnega, kot je bilo narejeno v projektu (predavatelj pokaže na projekt 2. letnika), vendar bolj poglobljeno. Se pravi, takšne bolj ali manj konkretne stvari so že praktično programiranje. Vzporedno s tem obstaja kakršna koli teorija, no, tukaj se ukvarjajo tudi z znanostjo.

In po dveh tečajih se ljudje razidejo, da bi delali tisto, kar jih zanima, saj ta zadeva precej široko pokriva takšne osnove programiranja in ljudje do te točke že razumejo, da se nikakor ne želijo ukvarjati z računalniškimi sistemi (npr. ni maral sistemskega programiranja), vendar se želijo ukvarjati z nekaterimi teoretičnimi algoritmi, težavami pri izračunih, izmišljanjem novih stvari, porazdeljenih ali česa drugega. Ali, nasprotno, mislijo, da tukaj nimajo prav veliko ( predavatelj pokaže na prvo vrstico tečaja s Pythonom in C++) pojdi, potem ( predavatelj pokaže na tretjo vrstico tečaja, s sistemskim programiranjem) - kot vam ni všeč, preštejte bajte in nastavite najrazličnejše omejitve branja-pisanja, delajte tokove, niti in še kaj. In v skladu s tem ljudje izberejo neko smer in se učijo. To je načeloma, da ne bi razvili "račji sindrom" - najprej ste videli svojega Pascala in zdaj recite "Pascal je moč"; ali bolj napreden - videli ste C ++ in začeli govoriti o vseh, da je C ++ močan, vse ostalo pa ni zelo dobro.

Tukaj moramo na to (predavatelj pokaže na seznam predmetov na tabli) pogledati širše - to je ena izmed metod, ki so jo izbrali predvsem na HSE (pojavila se je pred kratkim, torej je precej moderna). Obstajajo tudi drugi načini, kako se spoznati. Na drugih dobrih univerzah so v nekoliko drugačnem vrstnem redu in drugi poudarki. A tudi poskušajo ljudi seznaniti z vsem, kar imajo.

Kako programer išče službo

ti si to ( predavatelj pokaže na seznam predmetov) naredil vse, študiral na univerzi, študiral nekaj bolj produktivno še dve leti in moraš iti v službo. Kako izberete nekaj za delo? Najprej si vse spoznal, šel nekam globoko in že veš, kaj imaš rad. Izbrati morate tisto, kar imate radi naravno. Ker če ljubiš, boš vlagal energijo, imel boš motivacijo in na splošno bo vse v redu. Ker ne gre samo za denar, ampak za to, da je za vas zanimivo in prijetno. No, in če želiš priti v kul podjetje, se zaposli. Kakšno osebo bi jaz osebno rad videl? K meni pride na primer sto študentov – v službo moram vzeti dva ali enega. Zakaj pridejo, sploh ne razumem, kdo so, kaj so, kako so? V najboljšem primeru mi bodo pokazali diplomo, ki so jo prejeli na univerzi, jaz pa bom rekel: »Joj! To je kul diploma, vendar ni tako kul!" In lahko se motim, mimogrede. Mogoče je imela oseba veliko prostega časa in se veliko bolje naučila.

Kaj bi bilo super? Najprej nekaj odprtokodnega projekta, ki ste ga napisali od začetka do konca. Zaželeno je, če delam kakšno infrastrukturo za hitro branje podatkov ali kaj drugega, potem bi me seveda zanimalo, da mi napišejo kaj odprtokodnega. Ni narejena spletna stran, ampak nekaj na to temo. Zakaj me to zanima? Lahko pogledam vašo kodo, vidim, kako pogosto ste se zavezali, vidim, kako ste se odzvali na napake uporabnikov, hrošče razvijalcev, ki jo uporabljajo - vse je zapisano, pogledam vse in pomislim: "Vau, ta hrošč že dve leti ni bil tukaj. zaprto, tukaj si nevljudno odgovoril uporabniku, potem ne vzamem ničesar drugega. Se pravi, to je vaš osebni projekt.

Nadalje, kaj bi bilo še kul? Rad bi videl, kako ste opravili timsko delo. Se pravi, prideš k meni na razgovor in rečeš: »Fantje z univerze in jaz smo se dobro prijavili. Tam sem naredil bazo podatkov, nekaj so naredili mobilno aplikacijo, tam pa je pri nas delal tudi fant, dekle oblikovalec, fant na tehnični podpori. Bilo nas je pet in naredili smo odličen projekt." No, vidim, kaj je v resnici tvoj projekt, rečem: "Kaj je tvoj?" Še enkrat pogledam kodo in razumem, da znaš delati v timu z ljudmi.

Programer ni tisti, ki sedi sam (tako indie) v garaži, nekje z ugasnjenimi lučmi, se ne pogovarja z nikomer, dobi brado in piše. Vseeno obstaja nekakšna interakcija z ljudmi. S šefom, na primer, ki vas lahko včasih preklinja (šefe so tako, niso vedno prijazni). In vidim, da znaš delati z ljudmi in me veseli, če imaš kakšno dobro ekipo. Tudi če ni dobro, je bolje, kot da ga ne bi imeli.

Kaj bi jaz osebno še želel? Če ste se pokazali v velikih projektih. Na primer, nekaj smo zavezali jedru Linuxa, če se ukvarjate s sistemskim programiranjem, smo popravili nekaj napake. To pomeni, da so pokazali, da lahko berete kodo nekoga drugega in jo lahko spremenite. Pogledam: "Oh, res, ugotovil si nekaj zapletenega in popravil nekaj napak!" In tega se začenjam zelo veseliti. Ker imam ... no, ne vem ... moj programer je dal odpoved, ker so mu konkurenti ponujali višjo plačo, jaz pa moram nujno nekoga utihniti - tebe. Videti sem, kot da si napisal samo iz nič, a ne znaš brati in urejati kode nekoga drugega in se razburim.

In končno, odvisno od specifičnega položaja, obstajajo različne druge stvari. Če ste delovni analitik, bi rad, da naloge analize podatkov rešite na Kaggle. Če se zaposliš na nekaterih algoritemskih stvareh, bi rad, da narediš nekaj algoritmov v športnem programiranju. In končno, če ste razmišljali o poklicu, prebrali, kako potekajo razgovori, ste opazili, da nekateri tam izražajo veliko nezadovoljstvo: »Prišel sem, pa me sprašujejo, kaj je moj hobi. Sedim kot sova in ne odgovarjam, ker nimam hobija, «- in mislijo, da to počnejo HR. Pravzaprav poskušajo ugotoviti, kako prijazni in primerni ste. Če si neprijazen in neustrezen, potem ne glede na to, kako genij in deloholik si, trden specialist z velikim znanjem, bo ekipa težko sodelovala z vami in projekta ne boste izvlekli sami. Poleg tega, tudi če se raztegnete, si lahko predstavljate, kakšna obremenitev za podjetje. In da boš jutri prišel in rekel: "Povečaj mi plačo 10-krat, sicer te bom zapustil." Razumljivo je, da podjetja ne želijo priti v to situacijo. Zato je vzgoja ustreznosti in dobre volje pri sebi prav tako pomembna (vsaj) kot razvoj neke vrste poklicnih veščin.

Če povzamem, kaj lahko rečete? Kateri jeziki so dobri in kateri slabi? No, znotraj skupine jezikov, na primer med Ruby, Python in PHP, katerega izbrati? Seveda je pravilen odgovor Python, v resnici pa je razlika med njima v številu dovoljenih hroščev, v količini česa drugega – 5%, no, morda 10%. Se pravi, če že imate pripravljen projekt, napisan v PHP, potem nihče pri zdravi pameti ne bo rekel: "Napišimo vse v Python." Rekli bodo: "Najemimo več razvijalcev PHP in nadaljujmo s pisanjem v PHP." Super, to ni slaba izbira. Jasno je, da če nenadoma začnete pisati projekt, je morda pametno izbrati Python zdaj. Čeprav je tudi odvisno. Morda imate na trgu kup poceni razvijalcev PHP, vendar so tisti za python dragi in mislite: "Ja, tehnologija je bolj kul, vendar bom prihranil denar za že pripravljene razvijalce." In to je vse, super, že prideš in delaš tja.
Kako izberem med Javo in C++? Ja, isto se zgodi. Mislim, da boste takrat, ko se boste odločili, v katerem jeziku začeti nov velik projekt, pridobili znanje na svojem strokovnem področju in boste lahko prava izbira... Trenutno se vam še ni treba odločiti za to, zato vam svetujem, da počnete, kar vam je všeč.

Osnove, kot sem že rekel, samih, zelo osnov programiranja (kaj je funkcija, kaj so if's, for's, nizi, kaj drugega) se lahko naučimo bolj ali manj v katerem koli jeziku. Na primer, v C ++, ker je videti kot veliko stvari, posebnosti v njem (na tej ravni) pa so najmanj, črke pa so najmanj nepotrebne. No, potem, ko se naučiš nekaterih kompleksnih arhitekturnih stvari, se o tem učiš in skrbiš preveč. Se pravi, glavna stvar je - poskusite, poiščite, kar vam je všeč, in ko ugotovite, da je že 4. ura zjutraj in sedite za zabavo in pišete, ker vam je všeč - verjetno je v tem trenutku da si našel svoje...

Programiranje za začetnike

Za začetek bi rad povedal, da lahko vsak upravlja z računalnikom in ustvarja programe. Za ustvarjanje računalniški programi ni ti treba imeti neverjetne inteligence ali diplome iz matematike. Potrebujete le željo, da nekaj ugotovite, in potrpežljivost, da ne zapustite pouka.

Sposobnost pisanja programov je enaka veščina kot sposobnost plavanja, plesa ali žongliranja. Nekaterim to uspe veliko bolje kot drugim, vendar lahko vsakdo doseže določene rezultate s pravilno vadbo. Prav zaradi tega se otroci že zgodaj naučijo programiranja. Otroci niso nujno briljantni; preprosto so nagnjeni k učenju novih stvari in se ne bojijo narediti napak.

Kljub temu, da se računalniki zdijo zelo zapletene elektronske pošasti, se sprostite. Zelo malo ljudi natančno ve, kako delujejo iskalniki, ki vam omogočajo hitro iskanje potrebnih informacij na internetu, nekateri pa še niso ugotovili, kako voziti avto. Prav tako se lahko skoraj vsak nauči ustvarjati programe, ne da bi se spuščal v podrobnosti, kako natančno deluje računalnik.

Na splošno program pove računalniku, kako rešiti določeno težavo. Ker je svet poln težav, je število programov, ki jih ljudje lahko napišejo, neskončno.

Če pa želite računalniku povedati, kako rešiti en velik problem, morate običajno povedati računalniku, kako rešiti celo vrsto majhnih težav, ki sestavljajo velik problem.

Pravzaprav programiranje sploh ni težko in ni nekaj skrivnostnega ali nadnaravnega. Če ste sposobni pisati navodila po korakih ki bo človeku omogočil, da najde vaš dom, lahko napišete tudi računalniški program.

Najtežji del programiranja je prepoznati majhne težave, ki sestavljajo problem, ki ga morate rešiti. Ker so računalniki popolnoma neumni, jim morate povedati, kako naj izvedejo katero koli dejanje.

Če menite, da je ustvarjanje programa bolj zabavno kot uporaba, imate vse, kar potrebujete za ustvarjanje računalniških programov. Če se želite naučiti pisati računalniške programe, potrebujete naslednje tri lastnosti.

Zasledovanje. Če si nekaj zelo močno želite, boste to zagotovo dobili (če pa naredite nekaj nezakonitega, tvegate, da boste preživeli veliko časa v zaporu). Če se želite naučiti programirati, vam bo vaša želja zagotovo pomagala, ne glede na to, koliko ovir vam bo na poti.

radovednost. Zdrava doza radovednosti lahko spodbudi vašo željo po eksperimentiranju in izboljšanju vaših programskih veščin tudi po branju te knjige. Zaradi radovednosti je učenje programiranja manj dolgočasno in bolj zanimivo. In če vas zanima, boste zagotovo preučili in si zapomnili več informacij kot katera koli oseba, ki jo to popolnoma ne zanima (na primer vaš šef).

Domišljija. Računalniško programiranje je veščina, toda domišljija lahko pripomore, da bo ta veščina bolj izpopolnjena in ciljno usmerjena. Programer začetnik z veliko domišljije bo vedno ustvaril veliko bolj zanimivo in uporabni programi kot čudovit programer brez domišljije. Če ne veste, kaj storiti s svojimi programskimi veščinami, bo vaš talent preprosto umrl brez domišljije.

Težnja, radovednost in domišljija so tri najpomembnejše lastnosti, ki bi jih moral imeti vsak programer. Če jih imate, morate skrbeti le za malenkosti: katerega programskega jezika se naučiti (na primer C++), kaj je narobe z matematiko itd.

Med številnimi programskimi jeziki lahko vedno najdete točno tisti jezik, ki je primeren za reševanje dane naloge. Ko se pojavi nova vrsta problema, ljudje ustvarijo nove jezike.

Seveda računalnik v resnici razume samo en jezik enic in nič, ki se imenuje strojni jezik. Običajno je program, napisan v strojnem jeziku, videti nekako takole:

0010 1010 0001 1101

ZN 1100 1010 1111

0101 ONO 1101 0101

1101 1111 0010 1001

Poleg tega je zelo pomembno, za kakšen namen je jezik izbran - za poučevanje programiranja ali za reševanje določenega uporabnega problema. V prvem primeru mora biti jezik lahko razumljiv, strog in, če je mogoče, brez pasti. V drugem je zapleteno, a učinkovito in izrazno orodje za strokovnjaka, ki ve, kaj hoče.

Zdaj bi vam rad razjasnil, kaj naj bi razlikovalo programski jezik (Basic, Pascal) od njegove izvedbe, ki je običajno predstavljen kot del programskega okolja (Quick Basic, Virtual Pascal) - nabor orodij za urejanje izvornih besedil, generiranje izvedljive kode, odpravljanje napak, upravljanje projektov itd. Sintaksa in semantika programskega jezika sta določeni v jezikovnem standardu. Vsako programsko okolje ponuja lasten tolmač ali prevajalnik iz tega jezika, kar pogosto omogoča uporabo konstrukcij, ki niso določene v standardu.

Razmislite o glavnih in priljubljenih programskih jezikih

Sestavljalec To je najsvetlejši predstavnik jezikov nizke ravni, katerih nabor konceptov temelji na implementaciji strojne opreme. Je orodje za avtomatizacijo za programiranje neposredno v procesorske kode. Strojna navodila so opisana v obliki mnemoničnih operacij, kar omogoča doseganje dovolj visoke spremenljivosti kode. Ker je nabor navodil pri različnih procesorjih drugačen, potem o združljivosti ni treba govoriti. Uporaba asemblerja je priporočljiva v primerih, ko je potrebna neposredna interakcija z opremo ali za doseganje večje učinkovitosti nekega dela programa zaradi večjega nadzora nad generiranjem kode.

Cobol- Programski jezik na visoki ravni, razvit v poznih petdesetih letih prejšnjega stoletja. Združenje CADASIL za reševanje gospodarskih in gospodarskih problemov. Razlikuje se po naprednih orodjih za delo z datotekami. Ker ukazi programov, napisani v tem jeziku, aktivno uporabljajo navaden angleški besednjak in sintakso, Cobol velja za enega najbolj preprostih jezikov programiranje. Trenutno se uporablja za reševanje gospodarskih, informacijskih in drugih problemov.

Fortran- Programski jezik na visoki ravni, ki ga je razvil IBM leta 1956 za opis algoritmov za reševanje računalniških problemov. Spada v kategorijo postopkovno usmerjenih jezikov. Najpogostejše različice tega jezika so Fortran IV, Fortran 77 in Fortran 90. Uporablja se v vseh računalniških razredih. Njegova najnovejša različica se uporablja tudi na računalnikih z vzporedno arhitekturo.

pekel- Programski jezik na visoki ravni, osredotočen na uporabo v sistemih v realnem času in zasnovan za avtomatizacijo nalog nadzora procesov in/ali naprav, na primer v računalnikih na krovu (ladijski, letalski itd.). Razvito na pobudo ameriškega ministrstva za obrambo v osemdesetih letih. Poimenovan po angleški matematiki Adi Augusti Byron (Lovelace), ki je živela v letih 1815-1851.

OSNOVNO(Beginner "s All-purpose Symbolic Instruction Code) Rojen v 60. letih v Ameriki. BASIC je bil zasnovan kot preprost jezik za hitro učenje. BASIC je postal de facto standard za mikroračunalnike prav zaradi svoje preprostosti tako pri učenju kot izvajanju. Da bi dosegli te kakovosti so bile sprejete številne odločitve (pomanjkanje tipkanja, številčenje vrstic in nestrukturni GOTO itd.), ki negativno vplivajo na slog učencev programiranja. Poleg tega je pomanjkanje izraznih sredstev povzročilo nastanek ogromnega števila narečij jezika, ki so med seboj nezdružljivi. specializirane različice BASIC-a (kot je Visual Basic) imajo kljub pridobljeni "strukturi" vse enake pomanjkljivosti, najprej - malomarnost glede tipov in opisov. sorodni sistemi) ali kot orodje za hitro ustvarjanje aplikacij.

Pascal Pascal, ki ga je razvil slavni teoretik N. Wirth na podlagi idej Algol-68, je bil namenjen predvsem poučevanju programiranja. Zgrajen po načelu "potrebno in zadostno", ima močan nadzor tipov, konstrukcije za opis poljubnih podatkovnih struktur in majhen, a zadosten nabor operaterjev za strukturirano programiranje. Na žalost so slaba stran preprostosti in strogosti okorni opisi jezikovnih konstrukcij. Najbolj znana izvedba - Turbo / Borland Pascal - je kljub razlikam od standarda Pascal okolje in nabor knjižnic, ki sta sestavljena iz poučevanje jezika industrijski sistem za razvoj programov v okolju MS-DOS.

C in C ++ Jezik C temelji na zahtevah sistemskega programerja: popoln in učinkovit dostop do vseh računalniških virov, programska orodja na visoki ravni, prenosljivost programov med različnimi platformami in operacijskimi sistemi. C ++, medtem ko ohranja združljivost s C, uvaja zmogljivosti objektno usmerjenega programiranja z izražanjem ideje razreda (objekta) kot uporabniško definiranega tipa. Zahvaljujoč tem lastnostim je C / C ++ zavzel položaj univerzalnega jezika za vsako nalogo. Toda njegova uporaba lahko postane neučinkovita, če je treba v najkrajšem možnem času dobiti rezultat, pripravljen za uporabo, ali če sam postopkovni pristop postane nerentabilen.

Delphi- to ni nadaljevanje poslovanja Borland Pascal / Borland C, njegova niša - t.j. hitro ustvarjanje aplikacije (Rapid Application Developing, RAD). Takšna orodja vam omogočajo hitro ustvarjanje delovni program iz že pripravljenih komponent, ne da bi zapravljali veliko truda za malenkosti. Posebno mesto v takih sistemih zasedajo zmožnosti dela z bazami podatkov.

Lisp- Algoritemski jezik, ki ga je leta 1960 razvil J. McCarthy in zasnovan za manipulacijo seznamov podatkovnih elementov. Uporablja se predvsem v univerzitetnih laboratorijih v Združenih državah Amerike za reševanje problemov, povezanih z umetno inteligenco. V Evropi za delo na umetni inteligenci raje uporabljajo Prolog.

Prolog- deklarativni programski jezik na visoki ravni, zasnovan za razvoj sistemov in programov umetne inteligence. Spada v kategorijo jezikov pete generacije. Razvit je bil leta 1971 na Univerzi v Marseillu (Francija) in je eden izmed pogosto uporabljenih in nenehno razvijanih jezikov. Njegova najnovejša različica je Prolog 6.0


LOGO- Programski jezik na visoki ravni, razvit na Massachusetts Institute of Technology okoli leta 1970 za namen poučevanja matematičnih konceptov. Uporablja se tudi v šolah in uporabnikih osebnih računalnikov pri pisanju programov za ustvarjanje risb na zaslonu monitorja in krmiljenju risalnika s peresom.

Java Kot odličen primer specializacije, jezik Java pojavil kot odgovor na potrebo po popolnoma prenosnem jeziku, programi, v katerih se učinkovito izvajajo na strani odjemalca WWW. Zaradi posebnosti okolja je Java lahko dobra izbira za sistem, ki temelji na tehnologiji internet/intranet.

ALGOL- Programski jezik na visoki ravni, osredotočen na opis algoritmov za reševanje računskih problemov. Ustanovili so ga leta 1958 strokovnjaki iz zahodnoevropskih držav za znanstveno raziskovanje. Različico tega jezika Algol-60 je sprejela mednarodna konferenca v Parizu (1960) in je bila široko uporabljena na računalnikih 2. generacije. Različica Algol-68, ki jo je leta 1968 razvila skupina strokovnjakov Mednarodne federacije za obdelavo informacij (IFIP), je dobila status mednarodnega univerzalnega programskega jezika, osredotočenega na reševanje ne le računskih, temveč tudi informacijskih problemov. Čeprav se danes Algol praktično ne uporablja, je služil kot osnova oziroma je pomembno vplival na razvoj več sodobnih jezikih na primer Ada, Pascal itd.
Če želite postaviti vprašanje o določenem jeziku, uporabite forum za programerje
samega sebe boljši jezik ne obstaja. Če boste postali profesionalec pri pisanju programov, se morate naučiti enega od programskih jezikov na visoki ravni (najbolj priljubljen programski jezik je C ++), pa tudi enega od programskih jezikov baze podatkov ( na primer SQL). Ko se naučite programskega jezika C ++, ne morete zgrešiti. Če poznate ta jezik, lahko vedno najdete službo v katerem koli programskem podjetju.

Kljub veliki priljubljenosti programskega jezika C ++ se pogosto uporabljajo drugi jeziki. Številni starejši računalniki še vedno izvajajo programe, napisane v programskem jeziku COBOL. Zato potrebujemo programerje, ki lahko izboljšajo te programe, pa tudi napišejo nove. Zelo pogosto velika podjetja takim programerjem izplačujejo visoke plače.

Če boste delali sami, je bolje, da se naučite ustvarjati lastne programe za baze podatkov. Če želite to narediti, se boste morali naučiti programskih jezikov, kot sta SQL ali VBA, ki se uporabljata v Microsoft Accessu. Za ustvarjanje spletnih strani morate poznati HTML, pa tudi malo znanja o Javi, JavaScriptu, VBScript in drugih programskih jezikih za internet. Najbolj potreben bo programski jezik, ki vam bo omogočil enostavno in hitro reševanje zadanih nalog. Lahko je C++, BASIC, Java, SQL ali zbirni jezik.
Za zaključek ugotavljamo, da s strokovnega vidika ni tako pomembno, v katerem jeziku in v kakšnem okolju dela programer, koliko opravlja svoje delo. Oprema se menja in OS... Nove naloge izhajajo iz najrazličnejših predmetnih področij. Umikajo se v preteklost in pojavljajo se novi jeziki. A ljudje ostajajo - tisti, ki pišejo, in tisti, za katere se pišejo novi programi in katerih zahteve glede kakovosti ostajajo enake ne glede na te spremembe.
Tukaj smo pregledali osnove programiranja in glavne programske jezike.

Želim vam veliko sreče pri učenju programiranja!