Шта ми препоручујеш да учим од програмских језика, одакле да почнем?
Свако 5-6 питање које сам добијао на имејл или Фејсбук страницу блога било је препорука за програмски језик који би човек требао да учи…а како ни сам нисам програмер (иако је у не-ИТ народу системаш и програмер исто) позвао сам у помоћ људе који прате Фејсбук страницу овог блога и у програмерским су водама.
Пре даље приче да разјаснимо нешто – не да нисам ИТ гуру него нисам ни близу, да сам вољан да помогнем другима нисам – некад сам био….више не, и не можете судити ништа о мени или било коме на основу блебетања на блогу.
Ево одговора заједнице са Фејсбук странице блога, ја ћу само мало да их исформатирам и преформулишем и евентуално ‘конвертујем’ у екавицу како би било једнозначно. Понављам, нисам програмер не могу лично тврдити да је доле написано истинито или не….тако је прозборила заједница која прати Фејсбук страницу овог блога и ја јој верујем на реч.
C++ је далеко од најтежег – ко жели да се поигра термином ‘најтежи’ нека проба LISP, Haskell и C (це). Савет је да прво кренеш да учиш основне концепте програмирања. Мени су ту помогли највише – папир, оловка и цртање блок дијаграма. Након тога сам те задатке ‘преписивао’ у C програмски језик (мада је језик небитан ако си ове основне концепте добро савладао). Ја колико знам C је тежи од C++, а по мени је Assembler најтежи од свих које сам ајмо рећ учио, Python ти није лаган као што кажу, само што има синтаксу која ти омогућава лакши рад, преферирам Python понајвише ради ; и {}, а опет неки људи које знам кажу да им је боље да има {}, с чим лакше прате ток кода. Assembler је, узгред речено и плаћенији од већине наведеног што ћеш прочитати овде.
C++ је почео недавно слабити сада тренутно јача JavaScript и C# тако се ухвати онога шта ће се користити у будућности. C# и Java постају главни језици за игре док је PHP и JavaScript за веб.
Прво свакако треба савладати основе. Алгоритми и основе OOP. Даље, основе SQL упита (УВЕК ће требати). Након више од 30 година рада у струци могу само следеће да препоручим: није битан програмски језик, најбољи је онај који користиш и који ће да „стави лебац на астал“. Ако имаш идеју коју треба реализовати алгоритам је основа (у мом случају – папир и оловка, ја сам old-school) а све остало је само техника. Та основа ће помоћи да себи временом олакшаш посао, правећи сопствене dll-ове на пример. Ја сам имала срећу да сам учила од најбољих. Солидна основа коју сам тада усвојила је једини разлог због кога сам успела да опстанем у овом послу све ове године. НИКАДА не треба заборавити да се сваки софтвер прави за потребе корисника, КОРИСНИК (задовољан или не) је најбољи консултант. И на крају, треба бити спреман на учење до краја живота.
Никад није био битан језик, од алгоритама се креће увек. Сваки језик се лако савлада ако постоји добра и ефикасна идеја за решење.
Python за почетак, јер не дозвољава аљкавост, а јако је читљив и прегледан – односно уколико не желиш да бринеш за посао наредних 50 година – Python и C су најбоља комбинација.
Узми било који програмски језик и добро га савладај. Савладај и SQL… Затим се прими конкретног посла. Узми радити најједноставнију апликацију за посао који ради нетко од теби блиских. Научи како тај посао функционише и покушај га унапредити помоћу рачунала и програмирања, јер, само знање било којег програмског језика није довољно. Тражи се искуство. Искуство стећи тако да радиш нешто… Направи евиденцију локалног спортског клуба… Некад су програмери учили програмирање тако да су радили програме за видео клубове… битно је тај први посао радити бесплатно, јер то је прилика да се нешто научи… Касније послови долазе сами… Битно је схватити да се програмирање не учи на течају него кроз рад… Треба пуно радити да би се постало програмером. За почетак то значи најчешће бесплатан рад и захвали сваком ко ти пружи прилику као почетнику, јер то је пут са пуно дјечјих болести до одрастања у зрелог програмера… Језици с којима сам ја почињао и медији са којима сам радио и стројеви и процесорске снаге су се мењале кроз 30 година рада. Искуство је данас највећа вриједност.
PHP, JS или можда чак Java за почетак. Мансе C++, пошто је понуда послова код нас очајна за C++…а Java и C# су садашњост – ако желиш да видиш шта је будућност крени да учиш JavaScript. JavaScript је добар за WebApp девелопмент, а и тражи се на велико (има фрејмворкове за практички све) тако да с тиме ће вјеројатно најбрже наћи посао (препорука књиге – Professional JavaScript for Web Developers, добра је за почетнике, јер се лако чита и добри су примјери). Треба додати да је JavaScript врло лош језик. Мислим да ће се с тим сложити ко год се бави озбиљним програмирањем. Но, чињеница је да је и поред тога тражен. А и брзо се учи. Можеш одмах у браузеру да кренеш не требају ти никакве специјалне инсталације.
Ја радим у C++-у и иако није то посебно тежак језик, може бити пуно за почетнике, чисто зато јер укључује пуно тога што се мора научити како би се направило нешто конкретно, да и не спомињем низ библиотека које су MUST за одређене ствари. Лакше је почети с нечим једноставнијим, видјети како то отприлике изгледа, а онда касније експериментирати и пронаћи -свој- језик који се може почети усавршавати. P.S: У случају да овај жели у game-dev бизнис, због чега му је можда C++ најзанимљивији (мало се и тражи ван индустрије), тада препоручам језик Lua (препорука књиге – Programming in Lua). P.P.S.: Опет ја о видео играма (јер сам game-dev па ваљда морам тако) – ‘ЕВЕ онлајн’ је направљен у Python-у, а Minecraft у Java-i, чисто пар примјера да се зна да C++ није апсолутно нужан за игре.
Одлучити се за грану ИТ индустрије која те занима и кренути са ванила језицима који се тамо користе, у случају веба (јбг, у вебу сам па само за њега могу да наведем пример) то би било: HTML и HTML5 (нису програмски језици али су неопходни), CSS3 (не улазити превише осим ако желиш да постанеш јак кодер = дизајнер ти да PSD и ти по њему правиш статичну веб страну са минимумом JS-а, па после фронтендовци то праве да има употребну вредност и динамику), PHP и JavaScript (у даљем тексту JS). JS радити бар 30 дана Vanilla ES5 па додати jQuery (у даљем тексту JQ) и полако учити ES6, радити са JQ бар 2 месеца. НЕ МЕШАТИ ES5 и ES6!!. За PHP не учити никакав фрејмворк пре него што стекнеш потпуно разумевање и процедуралног и објектног PHP-а и најбитније, НИКАКО их не мешати у једном пројекту.
За лакши и исправнији рад са PHP-ом треба научити и како функционише .htaccess фајл. Погледати REST он је сада стандард за креирање API-ја – апији су PHP стране које генеришу xml или json и служе да се фронту (JS-у) доставе подаци који су на серверу, односно да слањем параметара на тај линк са фронта Ajax позивом (JS), сервер (PHP) сачува нешто у бази, избрише из ње и сл или изврши неку логику и да повратну информацију, рецимо прочита фајл коме није могуће приступити директно кроз URL. Када се савладају основе PHP-а онда истражити OWASP и сконтати колико бушне пројекте си правио, изгубити вољу за животом и обећати да нећеш више никад, након свега овога озбиљно одрађеног, можеш се пријавити као јак јуниор на било кој конкурс. Ако заиста савладаш JS и JQ, било кој фрејмворк (Angular, React, Bootstrap, Vue.js и даље, има их тона, али ово су најтраженији) ћеш моћи да савладаш за месец дана и мање. Исто важи и за PHP и његове фрејмворкове (Falcon, Symphony, CakePHP, Laravel…)
Оригинални линк ка овим препорукама са Фејсбук је овде и ту можете видети ко је све учествовао у овој дискусији.
Marina
15/10/2017 @ 18:53
Lepo što si objavio. I poražavajuće donekle. Samo nas par je spomenulo algoritme. I još jedan od navedenih je spomenuo praksu i logiku tipa „nije bitno kako ćeš napraviti nego ŠTA ĆEŠ ISPORUČITI korisniku“. Suština cele priče je da nije bitno koju ćeš tehnologiju koristiti ako razumeš ono što radiš. Kolega koji je spomenuo .htaccess fajl ne kapira da to nije suština nego nešto što se savlada usput ako radiš bilo šta vezano za određenu tehnologiju. Sa dotičnim fajlom sam se srela dvaput u životu, slučajno, trebao mi je za rešavanje nekog minor problema ali me razumevanje zašto istog moram da imam nije učinilo boljim programerom. Dakle, papir i olovke u ruke ( ili nešto naprednije, nije bitno) da shvatite šta treba da napravite. I pre svega naučiti da razmišljate kao korisnik koji će sutra u polje tipa „date“ da zvekne ime i prezime pa ćete da se češkate tamo gde ne svrbi kada shvatite da ste zaboravili da napravite najobičniju proveru za takvu budalaštinu ( i za milion budalaština sa kojima ćete se sresti kada vaših ruku delo „zaživi“ kod korisnika). Verujem da zainteresovani za ovu temu ne žele da ostanu obični koderi, to može svako. Moji saveti su za one koji planiraju da budu developeri sopstvenih aplikacija a to je sigurno ono o čemu početnici u ovom poslu maštaju.
GG
15/10/2017 @ 21:57
Zašto bi itko početniku spominjao algoritme? Čakšto – spominjao to osobi koju se želi motivirati da krene, kojoj se želi pokazati da stvari nisu niti strašne niti nemoguće. Ma jok, najbolje odmah bacit ciglu apstraktnih informacija + ovu prastaru ‘programiraj na papiru’ logiku.
Da, naravno da su algoritmi srž svega i naravno da se proper dev obavlja „na papiru“, ali stvar se mora početi malim koracima kojima će budući programer/dev osjetiti progres i nekakvo zadovoljstvo time što uči. Tako može početi učiti trivijalne stvari, od hello worlda do funkcija, i tako postepeno napredovati do točke da može shvatiti što točno algoritmi jesu, ili OOP, ili suštinski dev, ili što već.
Ovako ispada da da ponekad profesionalci više žele ispast pametni nego stvarno pomoći onima koji tek trebaju postat juniori. Chill, ljudi.