Шта ми препоручујеш да учим од програмских језика, одакле да почнем?

Свако 5-6 питање које сам добијао на имејл или Фејсбук страницу блога било је препорука за програмски језик који би човек требао да учи…а како ни сам нисам програмер (иако је у не-ИТ народу системаш и програмер исто) позвао сам у помоћ људе који прате Фејсбук страницу овог блога и у програмерским су водама.

Углавном, ево једног од последњих питања:Видим да си гуру у ИТ свету и да си вољан да помогнеш другима, па хтео бих да те замолим за пар савета. Имам неко основно знање о компјутерима а сад бих се бацио на програмирање. Колико сам чачкао по форумима видим да је C++ (це-плус-плус) најтежи али су и програмери који знају C++ доста цењени те ме та чињеница да је најтежи јако вуче да почнем баш од C++. Увек сам волео изазове. Дакле занима ме шта би још осим самог програмског језика требало да учим, или препоручи неку књигу. Интересује ме твој савет јер ако могу да судим по твом блогу видим да ниси надмен тип и пун себе који би ме спутавао.

Пре даље приче да разјаснимо нешто – не да нисам ИТ гуру него нисам ни близу, да сам вољан да помогнем другима нисам – некад сам био….више не, и не можете судити ништа о мени или било коме на основу блебетања на блогу.

Ево одговора заједнице са Фејсбук странице блога, ја ћу само мало да их исформатирам и преформулишем и евентуално ‘конвертујем’ у екавицу како би било једнозначно. Понављам, нисам програмер не могу лично тврдити да је доле написано истинито или не….тако је прозборила заједница која прати Фејсбук страницу овог блога и ја јој верујем на реч.

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…)

Оригинални линк ка овим препорукама са Фејсбук је овде и ту можете видети ко је све учествовао у овој дискусији.