Kako se lotiti učenja programiranja?

Ko tudi učitelj ne more pomagati...
Odgovori
strela
Prispevkov: 43
Pridružen: 9.12.2015 19:02

Kako se lotiti učenja programiranja?

Odgovor Napisal/-a strela »

Živjo vsem,

Želim se naučiti programirati. (-----> v Pythonu3)
Naj povem, da še nikoli prej nisem programirala, ampak ga bom prej ali slej krvavo potrebovala pri iskanju zaposlitve.
Glede na dodiplomske predmete, ki poučujejo programiranje na FMF, celotna zadeva malo šepa s svojo leseno nogo. Osebno sem mnenja, da čeprav nas na fakulteti tolažijo, da je uvodno programiranje v 1.letniku dobra podlaga za nadaljno programiranje, navadna oslarija in zavajanje.
Prišla sem do zaključka, da s takšnim načinom dela ne bom prišla nikamor.
Imam sošolce, ki programirajo že iz osnovne šole in jim je to, kar delamo pri študiju na FMF kot keks - celo v zabavo jim je, jaz pa si pulim lase in se sekiram, ker ne znam.
Ok, dovolj samopomilovanja. Strela, čas je za bojni načrt!

No, pri tej točki pa se obračam na vse tukaj, na Kvarkadabri.

Zaenkrat sem dobila iz višjih letnikov te nasvete:
1. Google je tvoj najboljši prijatelj.
2. Programiraj, Programiraj, Programiraj.

Vse super in prav, ampak kako začeti programirati? Opciji imam dve:
a) tečaj programiranja b) literatura(milijon knjig+)

Hja, zdaj pa sem prišla do srčike problema.
Za tečaj programiranja nimam denarja, ker sem študentka in preprosto nimam od kje vzeti denarja za plačilo. Vse kar je pa brezplačno, pa je bolj ali ne zajeto v uvodnem programiranju na FMF. Tako da ta pot je "no go".

Lotimo se literature. Ko pogleda človek na Amazon, ga skoraj kap zadene, koliko literature obstaja.
Ampak a je res pametno vzeti eno knjigo in delati po njej? Kako se odločiti za pravo knjigo, da ne zapraviš 1meseca časa in potem ugotoviš, da to ni to, kar iščeš oz. ti pri nadaljnem delu na fakulteti sploh ne bo koristilo?

Da sem realna, nikoli ne bom boljša od nekoga, ki se že več let ukvarja z programiranjem.
Ampak kljub temu - bi pa rada naredila tiste prve korake, da če ne drugega, bom čez nekaj časa znala tudi to, kar je mojim sošolcem v zabavo, tudi brez večjih težav znala sama sprogramirat. In nato še čez nekaj časa postala solidna programerka.

Zato vas naprošam za kakršnekoli nasvete, izkušnje, literaturo, ....

Lp, Strela

Uporabniški avatar
bargo
Prispevkov: 8108
Pridružen: 3.11.2004 22:41

Re: Kako se lotiti učenja programiranja?

Odgovor Napisal/-a bargo »

strela napisal/-a:
12.4.2021 18:37
Živjo vsem,

Želim se naučiti programirati. (-----> v Pythonu3)
Naj povem, da še nikoli prej nisem programirala, ampak ga bom prej ali slej krvavo potrebovala pri iskanju zaposlitve.
Glede na dodiplomske predmete, ki poučujejo programiranje na FMF, celotna zadeva malo šepa s svojo leseno nogo. Osebno sem mnenja, da čeprav nas na fakulteti tolažijo, da je uvodno programiranje v 1.letniku dobra podlaga za nadaljno programiranje, navadna oslarija in zavajanje.
Prišla sem do zaključka, da s takšnim načinom dela ne bom prišla nikamor.
Imam sošolce, ki programirajo že iz osnovne šole in jim je to, kar delamo pri študiju na FMF kot keks - celo v zabavo jim je, jaz pa si pulim lase in se sekiram, ker ne znam.
Ok, dovolj samopomilovanja. Strela, čas je za bojni načrt!

No, pri tej točki pa se obračam na vse tukaj, na Kvarkadabri.

Zaenkrat sem dobila iz višjih letnikov te nasvete:
1. Google je tvoj najboljši prijatelj.
2. Programiraj, Programiraj, Programiraj.

Vse super in prav, ampak kako začeti programirati? Opciji imam dve:
a) tečaj programiranja b) literatura(milijon knjig+)

Hja, zdaj pa sem prišla do srčike problema.
Za tečaj programiranja nimam denarja, ker sem študentka in preprosto nimam od kje vzeti denarja za plačilo. Vse kar je pa brezplačno, pa je bolj ali ne zajeto v uvodnem programiranju na FMF. Tako da ta pot je "no go".

Lotimo se literature. Ko pogleda človek na Amazon, ga skoraj kap zadene, koliko literature obstaja.
Ampak a je res pametno vzeti eno knjigo in delati po njej? Kako se odločiti za pravo knjigo, da ne zapraviš 1meseca časa in potem ugotoviš, da to ni to, kar iščeš oz. ti pri nadaljnem delu na fakulteti sploh ne bo koristilo?

Da sem realna, nikoli ne bom boljša od nekoga, ki se že več let ukvarja z programiranjem.
Ampak kljub temu - bi pa rada naredila tiste prve korake, da če ne drugega, bom čez nekaj časa znala tudi to, kar je mojim sošolcem v zabavo, tudi brez večjih težav znala sama sprogramirat. In nato še čez nekaj časa postala solidna programerka.

Zato vas naprošam za kakršnekoli nasvete, izkušnje, literaturo, ....

Lp, Strela
Pazi kaj si želiš, ker se ti lahko uresniči. :)

Programiranje je pisanje v nekem jeziku. Ko pišeš navodila v slovenščini, dejansko programiraš. Če želiš pisati navodila v angleščini, je to pač drug jezik, še zmeraj pa gre za navodila, kaj ne?

Različni programski jeziki, so kot različni človeški jeziki in lahko je nekdo poliglot in vendar ne bo znal napisati uporabnih navodil. :wink:

Ključ je torej v matematiki, s pomočjo katere lahko razviješ abstraktno razmišljanje, kar je pogoj za pisanje dobrih "navodil". Različne vrste matematik, od analize do diskretne matematike. Če si z matematiko nisi blizu potem boš kvečjemu "kuhar po receptih" ali "zidar po načrtih", kar pa je lahko precej dolgočasno početje.

Nato je potreben študij algoritmov, torej navodil/receptov, kako rešiti kakšen problem, recimo urediti nek nabor števil, glede na različne kriterije. Na začetku je nabor končen, torej že pred sortiranjem poznaš moč množice, nato je nabor za urejanje poljuben, itd.
Verjetno obstajajo takšne knjige, ki prikažejo rešitev za osnovne probleme.

Če ti bo to všeč, nadaljuješ s študijem objektnega programiranja, kjer se začne abstraktnost v vsej svoji veličini. Recimo, rešiš problem, kako urediti poljubne objekte, ki nosijo različne tipi informacij. Torej, samo nadgradiš urejanje, ki si se ga naučila v prvem koraku na podlagi števil.

Vse to seveda ni uporabno za prodajo na trgu, je pa verjetno zelo dober začetek.

Zavedati pa se moraš, da z obvladovanjem programiranja se študij komaj začne, ker zmeraj rešuješ neke konkretne probleme na nekem konkretnem področju, ki ga pa spet moraš naštudirati in to v podrobnosti. Skratka, življenje postane nenehen študij.

Roman
Prispevkov: 6504
Pridružen: 21.10.2003 8:03

Re: Kako se lotiti učenja programiranja?

Odgovor Napisal/-a Roman »

Priznam, da nimam več pravega občutka, kaj pomeni biti začetnik v programiranju. Jaz sem začel pred res mnogimi leti s fortranom. Ko enkrat osvojiš osnove in se tudi preizkusič v praksi, je seveda lažje. Za učenje basica se potreboval 10 minut, res pa je basic smešno preprost jezik. Z algolom, pascalom ali visual basicom je v bistvu enako, zaplete pa se, ko se jezik poveže z operacijskim sistemom, s knjižnicami, podatkovnimi bazami, internetom...

Jaz bi se začel učiti pytona tule: https://docs.python.org/3.9/tutorial/ ali tule: https://www.w3schools.com/python/default.asp. Pred tem moraš seveda imeti python nameščen na računalniku. Vedeti pa moraš, da je s programiranjem tako kot s seksom: samo na en način se ga naučiš.

ZdravaPamet
Prispevkov: 2842
Pridružen: 16.8.2004 19:41

Re: Kako se lotiti učenja programiranja?

Odgovor Napisal/-a ZdravaPamet »

Predpostavil bom, da te ne zanima lirično računalništvo, vsi ti algoritmi in čudoviti stili prebrisanega zankanja in pogojevanja.
Jaz bi ti svetoval samo eno. In sicer, da začneš tako, da poskusiš nekaj narediti. Nek program, ki ga lahko objaviš na github, kasneje na PyPi. Program, ki ga bo še kdo lahko uporabil, tako da bo prebral tvojo dokumentacijo. Ne rabiš nobenega tečaja, nikar zapravljat denarja. Najboljša stvar za Python je njihova dokumentacija:

https://www.python.org/doc/

Andrej Bauer, profesor na FMF, ima cel kup objavljenih predavanj o Pythonu, pogosto sicer zelo "liričnih", saj so v sklopu fakultete. Morda greš lahko čez te videje in se tako uvedeš v zadevo:

https://vimeo.com/293375153

Montiraj si distribucijo Pythona. Priporočam ti Anacondo: https://www.anaconda.com/products/individual. In pa razvojno okolje, ki se ga boš tekom let držala. Priporočam: Visual Studio Code ali pa Spyder.

Jaz kaj več od tega nikoli nisem rabil, ko sem šele pri 26. letih začel ljubiteljsko programirati za službo ;) In ko se zatakne? Potem vtipkaš v google in klikneš na StackOverflow. Kakor večina "programerjev". Naj ti bo to v pomiritev in v zabavo:

https://www.youtube.com/watch?v=r7dZKOL5rcg

Uporabniški avatar
shrink
Prispevkov: 14597
Pridružen: 4.9.2004 18:45

Re: Kako se lotiti učenja programiranja?

Odgovor Napisal/-a shrink »

Svetoval bi ti enako kot Roman in ZdravaPamet: osnov jezika Python se najhitreje naučiš na uradni strani Pythona (python.org), kjer je osnovni tutorial res dober.

Takšno pot sem ubral tudi sam, ko sem pred slabimi 10 leti naredil tranzicijo iz Fortrana in C/C++, ki sem ju prej ekskluzivno uporabljal, v Python.

S Python-om boš najbrž uporabljala knjižnice, kot so numpy, scipy, matplotlib, pandas itd., pa morda še kakšno bolj specializirano. Uradne strani za te knjižnice imajo tako dobre tutoriale in dokumentacijo, da se skoraj ne splača investirati časa v prebiranje kakšnih knjig. Če pa se odločiš za kakšno knjigo o osnovah, pa izberi eno in jo "preberi" (beri: pojdi skozi vse kode in jih preizkusi) od začetka do konca. Glede osnov boš namreč v vsaki knjigi dobila vse, kar je pomembno. Ostalo so detajli.

Dodatna možnost je, da se udeležiš kakšnega zastonj spletnega tečaja tipa MOOC. Na FutureLearn imaš recimo zastonj dostop za čas trajanja tečaja (ko se prijaviš) + 2 tedna. Tale je recimo začetni in je dokaj dober - trenutno poteka in imaš 6+2 tednov dostopa zastonj za vprašanja in interakcijo z drugimi tečajniki, lahko pa si seveda vsebine (spletne strani stepov tečaja) enostavno shraniš lokalno na svoj računalnik:

https://www.futurelearn.com/courses/pro ... ody-python

Ko pa se ti zatakne oz. potrebuješ kakšno specifično rešitev (konec koncev tudi za elementarne zadeve), pa Google: skoraj je ni zadeve, ki je ne bi mogla najti na StackOverflow, programcreek.com itd.

Kar se tiče inštalacije: če ravno nimaš Linuxa, ki ima standardni Python (brez dodatnih knjižnic) inštaliran po defaultu, tudi svetujem Anacondo. Na Windowsih zelo spodobno dela, pa tudi inštalacija knjižnic je načeloma lažja, če ravno nočeš uporabljati "pip install".

Kar se tiče razvojnega okolja, pa imaš na razpolago več variant: lahko uporabljaš običajne (tudi napredne) editorje (recimo Sublime Text), ki ti avtomatsko naredijo highlight kode glede na končnico izvornih datotek (konkretno *.py) ali pa uporabiš kak namenski IDE. Za Python je bil svoj čas popularen PyCharm.

Še ena možnost je uporaba Jupyter zvezkov (Jupyter notebook), ki ga lahko inštaliraš kot Python knjižnico in uporabljaš podobno kot zvezke v Mathematici, torej lahko poganjaš le dele kode kot input celice, ki jih Python, ki teče v Jupytru, lahko posebej evaluira ali pa cel zvezek (celotno kodo) naenkrat.

Zadnja možnost se mi zdi še najboljša za začetnika in kar je najbolje, je to, da jo imaš na razpolago na Google Colaboratory:

https://colab.research.google.com/notebooks/intro.ipynb

V tem primeru ne potrebuješ niti Pythona na svojem računalniku (dovolj je Google račun), saj vse teče preko Jupyter Notebooka v brskalniku preko dostopa do Colaba. Kar pa je res uporabniku prijazno, je to, da je večina Python knjižnic predinštaliranih (vključno s TensorFlow za Deep Learning) in ti sploh ni treba skrbeti zanje. Če pa hočeš kako eksotiko, recimo pyCUDA za Python na grafičnih karticah (GPU) - tudi te lahko aktiviraš, tako kot njihove specializirane TPU - pa samo v celici odtipkaš in poženeš:

Koda: Izberi vse

!pip install pycuda
in že lahko programiraš v Pythonu CUDA kode na grafičnih pospeševalnikih.

Srečno!

Uporabniški avatar
shrink
Prispevkov: 14597
Pridružen: 4.9.2004 18:45

Re: Kako se lotiti učenja programiranja?

Odgovor Napisal/-a shrink »

P.S. Skoraj bi pozabil omeniti knjigo v zvezi s Pythonom, ki sem jo "prebral":

Learn Python 3 the Hard Way: A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code

Sam sem sicer šel skozi knjigo za Python2, a verjamem, da je enako dobra. Sam sem jo imel kot aplikacijo na tablici (knjiga pretvorjena v app v obliki ebooka) in sem hkrati imel odprto še aplikacijo za Python na Androidu (QPython), v kateri sem sproti kodiral in izvajal kode.

Knjiga je odlična, ker je v stilu "for dummies" (za Američane pač). Na koncu gre tudi v bolj advanced zadeve, kot je pisanje modulov in celo step by step kodiranje pustolovščine (tekstovne igre v Pythonu). Slednje mi je bilo dokaj zabavno, pa tudi poučno, saj je bilo predstavljeno, kako se programira html forme preko modula/knjižnice web.py. Seveda je web.py že rahlo passe (v osnovi je tekel v Pythonu2, čeprav obstaja tudi za Python3), sedaj bi se v Pythonu za iste stvari uporabljal Django ali podobno. Mogoče je pa vseeno vredno to poskusiti, ker je odlično za začetnike, pa tudi reddit.com ga je svoj čas uporabljal za serviranje milijona strani dnevno.

EDIT: Sem pogledal verzijo knjige za Python3 in v njej "web.py" zamenjuje knjižnica "flask".

Odgovori