public
Last active

Dobil vprašanje na LinkedIn za začetnike programiranja, pa sem se odločil napisati daljši odgovor, ker pogosto prejemam podobna vprašanja.

  • Download Gist
gistfile1.md
Markdown

Vprašanje:

Zdravo,

Sem rekel, da se bom kar na tebe obrnil, ker si mi zdiš najbolj primeren za to vprašanje.

Sem mal pregledal zadevo in sedaj imam sledeči spisek:

  • Ruby
  • Java
  • Java script?
  • Python
  • C#
  • C++
  • Objective c
  • PHP
  • MySQL

A se mora soliden programer spoznati na vse te programske jezike? Kako je vse to sploh možno zaobvladati?! Upam, da so si vsaj (kolikor toliko) podobni med sabo.

Vprašanje pa je, seveda: s čim začeti?

Codecademy.com se mi zdi kar solidna zadeva, ali pač?

Živjo,

Poznavanje širokega spektra programskih jezikov je nekaj, kar pride s prakso. V osnovi vsi počnejo isto oz. imajo zelo podobne, če ne identične, koncepte, s katerimi operirajo, razlikuje se samo "ubeseditev" teh navodil, nekako tako, kot so si angleščina, nemščina in nizozemščina podobni jeziki – v osnovi imajo vsi več ali manj podobno slovnico, pa še veliko besed si delijo.

Obvladanje jezika je zavajujoč termin; raje rečem, da gre tukaj za obvladanje in razumevanje konceptov objektov, s katerimi razpolagaš v danem okolju, naj bo to podatkovna baza (tabele, vrstice, polja), programski objekti (klase, instance, metode) ali visokonivojski koncepti (paralelno procesiranje, asinhroni model, funkcionalno programiranje, itd.). Vsi ti koncepti so skupni vsem programskim jezikom, zato je poznavanje jezika potrebno samo do te mere, da veš, s katerimi funkcijami razpolagaš in kako jih klicati (izvajati). Sam recimo primarno delam v JavaScriptu, zarad poznavanja konceptov programiranja pa mi ni popolnoma tuje programirati tudi v drugih jezikih, ki niso sorodni JavaScriptu – razlika med JS, Ruby in Python je kar velika, ampak s hitrim pregledom ključnih besed in mehanike jezika je vse hitro jasno.

Izbira jezika je pravzaprav irelevantna za začetnika, a je priporočljivo, da za prve korake zahteva čim manj kode za najpreprostejše programe. V to kategorijo NE spadajo jeziki iz družine C (Java, C#, C++, Obj-C), ki zahtevajo relativno veliko "boilerplate" kode (tj. kode, ki pravzaprav samo služi temu, da pripravi program do zagona, ne izvede pa ničesar).

V nadaljevanju se bom omejil na razvoj spletnih aplikacij, ker proces ustvarjanja zahteva najmanj predpogojev z največ uporabnimi rezultati.

Katerikoli izmed naslednjih jezikov je bolj primeren za začetnika: Ruby, Python, JavaScript in PHP. Sam sem pristaš JavaScripta, ki je na voljo v vsakem brskalniku, pri čemer je eksperimentiranje zelo priročno, kjerkoli že si, za Ruby, Python in PHP pa je potrebno namestiti programsko okolje, v primeru PHP pa tudi enega izmed spletnih strežnikov (Apache, navadno v obliki XAMPP, ki vključuje PHP, Apache in MySQL kot priročen paket za razvoj).

SQL je jezik za poizvedbe v podatkovnih bazah, ki se ga naučiš, ko pride do priložnosti.

Za začetnike obstaja mnogo tečajev za veliko različnih jezikov:

Nekatere stvari tukaj so plačljive, ampak so vredne svojega denarja.

Za začetek priporočam, da se lotiš HTML in CSS, da se navadiš spletnih dokumentov, s katerimi boš delal, ne glede na to, ali boš pisal kodo, ki teče na strežniku in generira strani (Python, Ruby, JavaScript, PHP, C#,...), ali pa teče znotraj brskalnika in ponuja uporabniku bogato izkušnjo (JavaScript – igre, aplikacije, orodja za online komunikacijo,...). Zaradi padanja popularnosti PHP bi odsvetoval rabo tega, ker postaja zmeraj bolj irelevanten, vedno več delovnih mest pa se odpira na področju ostalih programskih jezikov.

Kasneje izbereš enega izmed tečajev (recimo Ruby on Rails, knjižnica za Ruby za lažji in hitrejši razvoj spletnih aplikacij) in s pomočjo Ruby sestaviš delujočo aplikacijo, ki omogoča uporabniku neko interakcijo (seznam idej ali TODO list, ipd.). Pri tem lahko uporabiš tudi Rails Girls ( http://railsgirls.com/materials ) učni program, ki ti v enem dnevu predstavi celoten koncept Rails in Ruby, od začetka do delujoče in uporabne aplikacije, na koncu pa poskrbi tudi za objavo aplikacije na internetu s svojo lastno domeno na gostovalni platformi Heroku.

Rails for Zombies je alternativna, bolj poglobljena zadeva za razvoj Rails aplikacij, če se ti zdi Rails Girls preveč ohlapen program: http://railsforzombies.org/

Nadaljnji koraki so potem odvisni od lastnih želja in potreb. Vsekakor pa to ni nekaj, kar bi se naučil v enem tednu, ampak gre za učni proces, ki hitro obrodi sadove, ampak zahteva dolgoročni razvoj veščin in neprestano izboljševanje. :)

Naj bo to zaenkrat to.

tudi PHP lahko poganjaš kot CLI program preko interpreterja, ne potrebuješ nujno strežnika. :P

@kernc Detajl, ki v tej debati nima mesta. Saj za vse jezike obstajajo interpreterji, kar pa še ne pomeni, da je namestitev in koncept izvajalnega okolja zato kaj lažje razumeti – vsak zna uporabljati spletno stran, veliko jih pozna tudi HTML, omogoča tudi prikaz slik, videa in drugih vsebin z interneta, nekaj, do česar nimaš preprostega dostopa prek tekstovnega vmesnika.

Mel par ljudi, ki so se ucili python preko CodeCademy.com ... ne priporocam, ker so kdaj naredili prav le ne tako kot je bilo poskriptano. Prav tako se niso naucili, kako pomemben je traceback, ker jim je za traceback printalo nek garbage.

@brodul Ne rečem, da so tečaji zadostni za samostojno programiranje, je samo način, kako začenjaš razumeti jezik, s katerim formuliraš proces v obliki, ki ga računalnik razume. Socializacija z bolj izkušenimi, branje in praktične izkušnje z delom na konkretnih problemih je še vedno edini pravi način za učenje programiranja. Tega se človek ne more naučiti v vakuumu, ne da bi poizumljal toplo vodo.

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.