SITNA CREVCA
Kako postati programer (2): Izbor jezika
Maternji jezik?
Ognjen POPOVIĆ
1. novembar 2016.

Većini nas je početni motiv da naučimo programiranje bio pravljenje sopstvene video igre, motiv koji nas može pratiti tokom cele karijere. Drugi motiv koji se pre ili kasnije nametne su mesečna primanja, i u tom smislu veći izbor na tržištu imate kao programer aplikacija. Nekome je motiv da postane vrhunski programer, a mnogi imaju sve ove želje istovremeno.

Jedna od najvećih dilema za početnika u programiranju jeste koji programski jezik izabrati i šta uopšte programirati?

Za početak je najbolje izabrati jedan od programskih jezika koje poznaje neko iz vašeg bližeg okruženja, jer je pomoć koju na taj način možete dobiti dragocena. Još bi bolje bilo ako bi se to uklopilo sa vašom željom prema gruboj podeli da li želite da budete web programer, programer mobilnih aplikacija, ili klasičnih desktop aplikacija. Trebalo bi da odaberete aktuelniji jezik, neki koji se često pominje prilikom listanja programerskih poslova. Osim programskog jezika, poslodavac često podrazumeva da poznajete neke od biblioteka ili framework-ova. Tu se ne završava lista stvari koje je poželjno znati, ali njih ćemo se dotaći u nekom od narednih tekstova.

Programski jezici rangirani prema broju ponuda za posao za programere (izvor: indeed.com, 2016.)
Najbolji scenario je da relativno brzo dobijete praksu ili probni rad u nekoj firmi, programirajući u jeziku koji ste počeli da učite. Naravno da je potrebno da prethodno steknete solidno znanje za juniorsku poziciju/praksu pre samog prijavljivanja za posao, ali pazite da se ne rasplinete i počnete da učite sve žive frameworke i jezike dok sebe ne počnete da cenite dovoljno spremnim za prijavu. Kasnije možete da naučite još neki jezik i da na razne načine proširujete svoje programerske vidike.

Programski jezik, biblioteka, framework...

Programeri su vremenom uočili da se prilikom pisanja programa pojedini delovi kôda često ponavljaju, i taj kôd izdvojili su u biblioteke. Veliki broj njih je besplatan i danas ih je najlakše preuzeti sa Interneta. Tako ćete skratiti vreme izrade vašeg programa, jer nećete morati da ga pišete u potpunosti „od nule”. Na primer, Java je poznata po tome da je imala nezgrapan način baratanja sa datumima, pa se kao zamena najčešće koristi popularna biblioteka Joda Time. Delove vašeg kôda i sami možete da izdvojite u biblioteku.

Framework je mnogo glomazniji od biblioteke i donosi neka pravila oko toga kako bi trebalo da izgleda struktura vašeg programskog kôda. Dok dodavanjem biblioteke često olakšavate rad sa nekim specifičnim segmentom kôda, Framework dolazi sa velikim brojem biblioteka i često se ceo kôd nadalje zasniva na pravilima tog frameworka.

Pored svega, potrebno je pratiti izlaske novih verzija programskih jezika, premda između njih ume da prođe popriličan broj godina. U novije vreme možemo da primetimo da svi jezici sve više liče jedan drugom. Na primer, Javascript je u najnovijoj verziji uveo klase, što je jedna od karakteristika objektno orijentisanih programskih jezika.

Asembler

Zbog celovitosti teksta, pomenućemo da se nekada programiralo u asembleru. On je bio prvi korak ka tome da se programerima olakša posao tako što su neke adrese i instrukcije koje ste zadavali procesoru dobile tekstualnu formu (u skraćenicama, tzv. mnemonicima), ali je inače skoro isti kao mašinsko programiranje u kojem se koriste samo binarni brojevi (i njihova heksadecimalna reprezentacija). Asembler je program koji ove znakovne instrukcije prevodi u binarne (mašinski kôd) koje procesor „razume”. Kako bi programerski kôd bio sličniji ljudskom jeziku, nastali su moderniji programski jezici.

C/C++

Mnogi kažu da nije loše početi od jezika C++, jer ćete nakon njega lakše naučiti i sve ostale. Mislimo da danas nije potrebno krenuti ovim putem, ali ga možete (kasnije) naučiti ukoliko želite da budete kompletan programer. C i C++ programi su jako brzi, zahtevaju malo resursa i prave veoma mali izvršni fajl koji pokrećete na računaru. Zato se često koriste za specijalizovane (embedded) uređaje koji imaju malo memorije i procesorske snage. Koriste se i u grafici, igrama i drugim primenama gde su važne performanse.

Ovi jezici korisniku pružaju direktan pristup memoriji računara i nemaju automatsko čišćenje zauzete memorije (nema tzv. garbage collectora). Zbog toga je potrebno voditi računa da slučajno ne prepišete nepoželjni deo memorije, ali i da oslobađate zauzetu memoriju kada vam više nije potrebna. Na sreću, moderni operativni sistemi ograđuju deo memorije rezervisane za vaš program, pa osim toga što se može desiti da vaš program izvrši „ilegalnu operaciju” i „pukne”, teško da će oštetiti sistem (ovo ne mora da važi za operativne sisteme embedded uređaja). Napomenimo da programi mogu da se prave i bez petljanja sa memorijom i na taj način se i dalje dobija brz program, ali koji je lakše napisati. Programi pisani u jeziku C++ su često deo većih aplikacija.

C i C++ se odlikuju korišćenjem pokazivača (pointera) i komandama za baratanje sa memorijom. Za razliku od C-a, C++ ima više mogućnosti, uvodi objektno orijentisano programiranje itd. Najpopularniji skup biblioteka široke namene za C++ je Boost. Navešćemo i Qt biblioteku koja olakšava cross-platform programiranje i pravljenje korisničkog interfejsa (UI), libCurl za HTTP i druge protokole i tako dalje.

Java

Java se najviše koristi za izradu back-end dela web aplikacija ili za samostalne desktop aplikacije. Može se reći da su Java, kao i C++ i C# jezici opšte namene. Java se često koristi za glomaznije i robusnije enterprise aplikacije, koje je po potrebi moguće skalirati bez previše gubljenja na performansama. Neki od najpopularnijih Java frameworka su Spring sa svojim komponentama, Hibernate biblioteka kojom vašu aplikaciju povezujete sa bazom podataka, ali i mnogi drugi iz ogromne baze dodataka za Javu. Ovaj i svi naredni jezici imaju ugrađen garbage collection, što znači da ne morate previše da brinete o baratanju sa memorijom računara. Sintaksa jezika Java podseća na C++. Prednost učenja ovog jezika je što se u njemu pišu i aplikacije za Android telefone.

C#

Ovo je Microsoftov odgovor na Javu i sličniji je njoj nego jezicima C ili C++ (čita se „si šarp”). On čini deo Microsoftovog Dot Net frameworka (.NET) koji u sebi obuhvata i druge programske jezike, a karakterističan je po tome što je namenjen Windows platformi. Slično Javi, C# može da se koristi i za back-end programiranje i za pravljenje samostalnih aplikacija. Treba imati u vidu da je C# zvaničan programski jezik koji koristi Unity, jedan od najpopularnijih endžina (engine) koji se danas koriste za pravljenje igara. Ovaj framework dolazi i u kompaktnoj verziji, pa C# možete koristiti i za programiranje za embedded i mobilne uređaje (Windows Phone).

Javascript

Prelazimo na web programiranje i skript jezike, koje možemo podeliti na front-end (program koji se izvršava u Internet pretraživaču), i back-end (ono što se dešava na udaljenim serverima koje kontaktirate preko web pregledača kada upišete web adresu). Javascript (JS) nema nikakve veze sa Javom, i donekle se razlikuje od prethodno nabrojanih jezika. Javascript se izvršava u browseru i omogućava razne napredne funkcije koje će imati vaša web stranica. Danas skoro svaka web stranica koristi JS, i ukoliko želite da postanete web programer, JS je jezik koji morate da znate.

Najdinamičnije promene u programiranju se dešavaju u domenu biblioteka i frameworka za web programiranje. Node.js omogućava da koristite JS i za back-end, najpopularnija biblioteka je i dalje jQuery, a onda imamo Backbone, Angular, Typescript, React i mnoge druge. Morate znati AJAX pozive, korisno je poznavati template endžine (moustache, handlebars) i tako dalje.

HTML/CSS

Mnogi ove „tehnologije” ne smatraju programskim jezicima. HTML tekst je neophodan za postojanje web stranice, a njega upotpunjuju CSS i Javascript. Vrlo lako možete da napravite web stranicu kao tekstualni fajl sa ekstenzijom HTML na vašem hard disku. Klikom na takav fajl, u vašem web browseru će se učitati web stranica. CSS i Javascript možete uneti u taj HTML fajl, ali se obično izdvajaju u posebne fajlove. U praksi, vi ove podatke nećete imati na vašem kompjuteru, već ćete dobijati sa Interneta posetom nekoj web stranici. Ukratko, HTML ispisuje tekst, linkove, slike na web strani, CSS ga formatira i grafički doteruje, dok JS omogućava mnoge napredne funkcije kojih ćemo se dotaći u nekom drugom tekstu. Ako ste web programer, podrazumeva se da pored JS-a poznajete HTML i CSS.

PHP

Radi se o jednom od najpopularnijih jezika za back-end programiranje, sa velikom programerskom zajednicom i ogromnim brojem sajtova zasnovanim na njemu (često manje komplikovanih). Za razliku od Jave, mnogo je lakše naći web hosting koji podržava PHP i druge skript jezike. Još jedna vrednost PHP-a je što se koristi za napredno razvijanje sajtova urađenih u WordPressu i drugim CMS platformama. Njegovi najpoznatiji framework paketi su Laravel, Symfony i drugi koji znatno skraćuju količinu kôda potrebnu za funkcionalan back-end.

Ruby on Rails

Ruby on Rails je kovanica koja označava Rails framework za Ruby jezik, i koristi se za back-end programiranje. Ova kombinacija već neko vreme ima veliku popularnost i zbog toga može da bude dobar izbor za traženje posla. Sintaksa i način programiranja su drugačiji od PHP-a, omogućeno je brzo razvijanje web aplikacije (pogodno za proof of concept), i neki PHP framework paketi nastali su po ugledu na Ruby on Rails. Ruby bez Railsa može da se koristi i za izradu standardnih aplikacija, slično kao PHP.

Python

Python je skript jezik opšte namene. Python krasi razumljiva sintaksa, pa je kôd pisan u njemu čitljiv i lako razumljiv. Koristi se i u naučnim krugovima za matematička izračunavanja i analizu podataka, lako se povezuje sa drugim jezicima, a neke od alatki za 3D modelovanje, kao što je Maya, podržavaju Python kao svoj skript jezik. Django je popularni framework za Python za front-end i back-end razvoj.

Swift / Objective C

Ukoliko ste zaljubljenik u Apple proizvode, naučite Swift, jezik koji je Apple lansirao 2014. godine, za pravljenje aplikacija za MacOS i iOS uređaje. Radi se o modernom jeziku, solidno čitljive sintakse, za razliku od njegovog prethodnika Objective C koji je bio poprilično težak za razumevanje i koristio je pokazivače poput jezika C++. Iako je najveći broj programa i dalje napisan u Objetive C-u, predlažemo da krenete sa učenjem Swifta.

SQL

Iako se ne radi o pravom programskom jeziku, imajte u vidu da je za neke pozicije prednost ako znate kako se kreira baza podataka, kako se vrše upiti, ili kako povezati bazu sa vašim kôdom. Iako postoje moderni vizuelni interfejsi za baratanje sa bazom, bilo kakve složenije upite morate ručno da unosite putem komandi jezika baze. SQL je osnova jezika za tzv. relacione baze podataka (MySQL, PostgreSQL, Microsoft SQL Server...), dok su sa druge strane nešto drugačije nerelacione baze podataka kao što su MongoDB, Cassandra, Redis...

Igre

Za neke od prethodno nabrojanih jezika postoje biblioteke koje vam olakšavaju pravljenje igara u njima. Danas su ipak poznatiji specijalizovani programi za pravljenje igara koji se zasebno instaliraju. Ima onih koji se usko specijalizovani kao što je RPG Maker, ali ćete poslovne prilike često naći u onim programima čija širina će vam, po cenu nešto teže krivulje učenja, omogućiti da napravite igru bilo kog žanra i da manje liče jedna na drugu (obično spisak poslova imate na sajtu ili forumu tog programa). Ovi programi (gejm endžini) trebalo bi da, uz lep korisnički interfejs, olakšaju programiranje stvari kao što su detekcija sudaranja (kolizije) između objekata na sceni, lako baratanje unosom komandi sa tastature ili nekog kontrolera, pravljenje skripti, opcioni realni fizički model koji se primenjuje u igri, 3D endžin i editor nivoa itd.

Game Maker je sigurno jedno od najboljih rešenja za pravljenje 2D igara. Pre svega tu je podrška za lako upravljanje nivoima i sprajtovima, a mnoge osnovne operacije nad objektima u igri se mogu podesiti preko ikonica. Za naprednije opcije potrebno je savladati sintaksu ugrađenog GML jezika koji se ne razlikuje mnogo od klasičnog programskog jezika, i ima objektno orijentisane mogućnosti kao što je nasleđivanje klasa. Jezik je u mogućnosti da igru plasira na različite platforme, obično preko modula koji se posebno dokupljuju. Nije loše vrebati priliku kada je neki od paketa na velikom popustu, verovatno zato što se uskoro očekuje izlazak Game Maker verzije 2.

Unity je možda danas najpoznatiji endžin za pravljenje 3D i 2D igara. Možete da baratate scenom kao u nekom programu za 3D modelovanje, dok se „ispod haube” komande unose preko C# jezika. Slično važi za Unreal Engine koji je odgovoran za neke od produkcijski najjačih („triple A”) naslova. Njegov programerski jezik je C++.

Kada birate endžin u kojem ćete raditi, obratite pažnju i na cenu i uslove objavljivanja sopstvene igre. Svi ovi gejm endžini manje-više omogućavaju da igra radi na više operativnih sistema. Postoji još sijaset drugih programa za izradu igara kao što su Cocos2D koji je kreiran tako da podseća na Flash, pa Microsoftov XNA (sada pod nazivom MonoGame), Torque...

Kompatibilnost (cross-platfrom)

Rangiranje programskih jezika u poslednjih nekoliko godina (izvor: GitHub.com)
Da li će aplikacija raditi na nekom računaru zavisi od hardvera tog računara, ali i operativnog sistema instaliranog na njemu. Različiti jezici imaju različita rešenja za ovaj problem.

U slučaju Jave, ono što isprogramirate na svom računaru možete pokrenuti na maltene bilo kom drugom kompjuteru, uz jedan uslov: instaliranje JRE (Java Runtime Environment) na taj kompjuter. Srećom, JRE postoji za skoro svaku kombinaciju operativnog sistema i arhitekture procesora i velika je verovatnoća da ga već imate instaliranog. Naime, JRE je u stvari klasična instalacija Jave, i verovatno vam ponekad iskoči podsetnik u Windowsu da skinete neki update za nju. U prošlom broju smo naveli da je za programiranje Java aplikacija potrebno instalirati JDK, koji je širi pojam i u sebi obuhvata i JRE.

Bez ulaska u detalje, Java koju ste instalirali na svoj operativni sistem je, dakle, JRE koji u sebi, između ostalog, sadrži Java Virtuelnu mašinu (JVM). Kada ste isprogramirali vašu Java aplikaciju, vi je prvo kompajlirate u tzv. bajt-kôd (byte-code). Kada aplikaciju preuzme korisnik i pokrene je, uključuje se JVM koja, pored drugih stvari, pretvara deo bajt-kôda u mašinski jezik. Zato Jave aplikacije ne zavise od računara, već od JRE-a koji je na njemu instaliran.

C# radi po sličnom principu, sa tim što je ograničen na Windows računare. Da biste pokrenuli C# kôd na drugim računarima moraćete da instalirate .NET Framework. Sigurno vam se dešavalo da pre pokretanja nekog programa Windows od vas traži instaliranje potrebnih biblioteka. A možda i nije, s obzirom na to da .NET dolazi ugrađen u nekoliko poslednjih verzija Windowsa, pa je moguće da ste aktuelnu verziju ovog frameworka već imali instaliranu.

Skript jezici generalno imaju veliku kompatibilnost. Javascript se lako pokreće u većini poznatijih browsera i konfiguracija. Python i ostali (Perl, Lua) se pokreću ukoliko na računaru imate interpreter za taj jezik. Interpreteri su, umesto glomaznih instalacija Jave ili .NET-a, manji izvršni programi koji postoje u verzijama za sve poznatije sisteme i procesore. Svoje lako pokretanje skript jezici „plaćaju na ćupriji” lošijim performansama, ali se te razlike često ne vide u praksi, osim u relativno zahtevnim aplikacijama.

Za jezike koji se kompajliraju direktno u izvršni fajl operativnog sistema, kao što su C i C++, imamo drugačiju situaciju. Sa strane korisnika situacija je lakša i on ne mora ništa da instalira na svoj računar (čitaj: Interpreter, Java ili .NET), već programer mora da napravi verziju kôda za svaku kombinaciju operativnog sistema i procesora (često preko tzv. preprocesorskih direktiva). Sa ovom situacijom ste se kao korisnik već susretali kada ste na internetu morali da birate verziju nekog programa koji skidate - da li je za MacOS × ili Windows, da li je za 32-bitni ili 64-bitni operativni sistem i slično. Pošto se program maltene neposredno izvršava u računaru i ne zahteva dodatne instalacije, aplikacije imaju visoke performanse i zauzimaju malo prostora na hard-disku.

Cross-platform jezici

Nakon svega rečenog, potrebno je osvrnuti se nazad na nabrojane programske jezike jer postoje rešenja koja znatno proširuju njihovo polje primene. Naveli smo da se preko Node.js biblioteke JS može koristiti i za back-end programiranje, čime ste u mogućnosti da sa jednim jezikom napravite celokupnu web aplikaciju! Ako na to nadogradite i neki od Apache Cordova framework derivata, JS može da se koristi za Android i iOS aplikacije. U suprotnom smeru, Javu možete da koristite za front-end development uz pomoć GWT frameworka. Ako govorimo o jeziku C#, Xamarin omogućava da programe pisane za C# pokrenete i za Android i Apple uređaje (iOS/MacOS X). Slična rešenja postoje i za ostale jezike, što omogućava da sa jezikom koji poznajete plasirate program na što veći broj platformi.

Neke od prednosti ovakvog pristupa mogu biti i mane, jer programiranje na ovaj način ne poziva obavezno nativne, to jest podrazumevane komponente operativnog sistema na kojima će se program pokrenuti. Na mobilnim uređajima, izgled dugmića ili polja za unos teksta u takvoj aplikaciji ne mora da ima izgled standardnog iOS ili Android okruženja, i samim tim će odudarati od klasičnog izgleda aplikacije za te uređaje. Sa druge strane, ovo omogućava brže pravljenje uniformnog korisničkog interfejsa za više platformi. Faktor je i pitanje procenta kompatibilnosti kôda i brzine ovako napravljenih aplikacija. Poslodavci mogu da daju prednost onima koji znaju da programiraju u jeziku prevashodno namenjenom jednom operativnom sistemu.

• • •

Kao što vidimo, pred početnikom je težak izbor. Za front-end programiranje dobitna početna kombinacija je HTML/CSS/JS/jQuery, dok za back-end to može da bude kombinacija Java ili PHP ili Ruby + SQL. Za klasične i zahtevnije web aplikacije tu su Java i C# i opet SQL. Tu negde je i Python. Za mobilne aplikacije imamo Javu i Swift. Ipak, kako tehnologija napreduje, postoji sve više toga što možete da uradite sa jednim omiljenim programskim jezikom. U tom slučaju, izbor vašeg omiljenog jezika može da zavisi od nekih drugih stvari kao što su načini na kojima programirate u njima: proceduralno, objektno-orijentisano, ili čak funkcionalno, što ćemo probati da objasnimo u narednim brojevima, uz popriličan broj tema koje smo načeli u ovom tekstu.


PRETHODNI TEKST
SLEDEĆI TEKST
Najčitanije
Igre
Telefoni
Hardver
Softver
Nauka
Aktuelno štampano izdanje
APRIL 2024
Gigabyte Radeon RX 7900 GRE Gaming OC 16G
Zlatni zeka
Model koji je izvorno namenjen kineskom tržištu, i koji se tamo pojavio još prošlog leta, lepo je popunio prazninu između modela RX 7800 XT i RX ...
Asus ROG Zephyrus G16 (GU605MY-QR085X)
Najkompaktnija zverka
Uz sve kompromise, ovo je verovatno najsnažniji laptop smešten u manje od dva kilograma i 18 milimetara visine...
Honor Watch 4
Savršeno upakovan
Sat koji donosi veoma malo pravih noviteta, ali kod kog je uklapanje poznatog i očekivanog dovedeno do savršenstva...
Mobile World Congress 2024
Ovde i AI ima AI
Utisak je da MWC „na nogama” drže isključivo velike kineske kompanije, a praksa predstavljanja flegšip telefona na sajmu je sve ređa...
Inovativni motori i reaktori
Bolji pogon
Električni motori uskoro stižu u putničke avione, samo da se reši nekolicina konstruktorskih prepreka...
Honor Magic 6 Pro
Magična Šestica
Sistem kamera oslanja se na tehnički sofisticiran dizajn sa promenjivim otvorom blende...
Apple, AI i nova tužba za monopol
Kisela ili slatka jabuka
Apple će uvek da koristi sopstveno rešenje, ukoliko može da ga napravi dovoljno brzo i kvalitetno...
Dragon’s Dogma 2
Nastavak dvanaest godina stare igre koja odavno ima kultni status, naoko, jednostavan akcioni RPG koji se trudi vas angažuje, ali i pomalo namuči...
Rise of the Ronin
Rise of the Ronin izuzetno podseća na Ghost of Tsushima, kako po izgledu, tako i po konceptu...
Highwater
Ugodan koktel postapokaliptične komike i poetične melanholije...
Microsoft Windows 3.0
Prisećamo se treće iteracije operativnog sistema baziranog na grafičkom korisničkom okruženju, koja je konačno mogla da izađe na crtu takmacima...
© 2024 Svet kompjutera. Sva prava zadrzana.
Novi broj - Arhiva - Forum - O nama