» »

Začetki programiranja

Začetki programiranja

FZ13 ::

Pozdravljeni, zanima me na kak način se je najbolje lotiti učenja programiranja in informatike, če želimo čimprej priti do nekih konkretnih rezultatov. So internetni course-i dovolj dobri? Obstaja kak dober bootcamp in ali so privat inštrukcije učinkovite?
  • spremenilo: FZ13 ()

scipascapa ::

Uf, robe je milion....imaš kaj predznanja? Kok si star ipd?
Laptop + monitor itd imaš? Oziroma PC + 2 monitorja sta danes nuja za učenje.....Internenti tečaj so OK, Udemy, EDX, sololearn, coursera, code academy, freecodeacademy je sueper, pa tudi w3schools ipd.
Od slovenskih imaš https://nsa-splet.si/index.php, mojeznanje.si in smartninja, kot skoraj edini, ki imajo bootcampe za 500€......

bluefish ::

Za začetek se odloči za neko področje (desktop, web,... - ja, marsikaj se prekriva, a je smiselno, da te že v začetku ne pokoplje en kup tehnologij), izberi programski jezik, se seznani s sintakso in nato prični z delom na konkretnih problemih oz. osebnih projektih. Tečaji so OK za nabiranje osnov, a se je slej ko prej treba odlepiti od njih in znanje uporabiti v praksi.

win64 ::

Konkretni rezultati bojo zelo slabi, če delaš na hitrih rešitvah.
Po mojem mnenju nekaj je spodnja knjiga knjiga osnova. Tudi, če ne razumeš vsega popolnoma, je dober začetek.
The Art of Computer Programming @ Wikipedia

Daliborg ::

Jaz sem prebral od op-a post takole:
Vidim da programerji dobijo več denarja kot jaz pa še za računalnikom so cel dan. Kje dobim schnelkurs do takih služb?

Ravno danes sem odgovoril na to isto vprašanje takole:
Če bi te programiranje ZARES zanimalo potem bi spraševal kako rešiti neko zadevo ne pa kako priti do začetnega znanja ali spraševati če so neki dragi kurikulumi ok za svoj denar. Ker če pa še iskalnika ne znaš uporabiti da bi en j**en hello world napisal in probal dojeti kaj si sploh naredil s pisanjem kode potem kar pozabi!
Format life:
Warning all life will be erased!
Do you want to continue?(y/n) Y_

FZ13 ::

Stvar je v tem, da sem v letih v katerih nabiram znanja za prihodnost, sicer sem študent medicine in me interesirata področji medicinske tehnologije in medicinske informatike. Ker imam čez poletje največ časa je idealen čas za učenje teh veščin, ne gre se za službo in ne gre se za denar.

Zgodovina sprememb…

  • predlagal izbris: amacar ()

pegasus ::

Poišči si kake jupyter notebooke s konkretnimi primeri iz tvoje branže, ki obdelajo kak tebi znan problem v R, pythonu ali juliji (ali kateremkoli drugem jeziku, ni važno). Tako boš najhitreje povezal konkreten problem in programski opis in obdelavo tega problema in najhitreje vstopil v magični svet programiranja. Jupyter ti nudi še smiseln interaktivno okolje, kjer lahko spreminjaš parametre in opazuješ posledice teh sprememb.

FZ13 ::

scipascapa je izjavil:

Uf, robe je milion....imaš kaj predznanja? Kok si star ipd?
Laptop + monitor itd imaš? Oziroma PC + 2 monitorja sta danes nuja za učenje.....Internenti tečaj so OK, Udemy, EDX, sololearn, coursera, code academy, freecodeacademy je sueper, pa tudi w3schools ipd.
Od slovenskih imaš https://nsa-splet.si/index.php, mojeznanje.si in smartninja, kot skoraj edini, ki imajo bootcampe za 500€......


Star sem 23 let, predznanje imam po domače rečeno "bolj bogo", na faksu so nam našteli nekaj protokolov in problemov, nekaj o umetni inteligenci, bazah podatkov, big data... Naučili so nas tudi uporabljanja SPSS in Jasp za analizo podatkov pacientov. Ostalo je vse stvar bolj rekreativnega branja o novejših tehnologijah (blockchain, umetna inteligenca). Kar se tiče programiranja sem par let nazaj začel s pythonom, na začetku obstal in do zdaj se nisem loteval tega bolj konkretno. Imam laptop in ekran na razpolago. Zanimajo me predvsem data science in distributivni sistemi . Gre se zato, da raje vprašam nekoga, ki ve kako se lotiti ne da preveč hodim v "slepe ulice". Hvala za poslane linke, bom pregledal :D

Vazelin ::

Kaj pa tečaji za recimo napredne nivoje programiranja (advance level), se dobi pri nas. Ali je omejeno na frizerke in avtomehanike, ki bi radi switchali na programiranje (smartninja in podobno)?

Zgodovina sprememb…

  • spremenilo: Vazelin ()

DeeCoy ::

Vazelin je izjavil:

Kaj pa tečaji za recimo napredne nivoje programiranja (advance level), se dobi pri nas. Ali je omejeno na frizerke in avtomehanike, ki bi radi switchali na programiranje (smartninja in podobno)?

seveda, temu se reče FRI. Za vse ostalo je srednja računalniška dovolj.. tečaja za napredno programiranje ni, ker ni tečaja, ki bi obsegal dovolj ur, da bi lahko zajeli vso snov..

HotBurek ::

... na kak način se je najbolje lotiti učenja programiranja...
... Zanimajo me predvsem data science in distributivni sistemi ...

Ok, moj predlog.

Prvo, programski jeziki, ki so interesantni: Matlab, Python, R

Ter splošni jezik za delo s podatki: SQL

V vsakem za začetek narediš t.i. Hello World program. Ravno toliko, da imaš ide/kompajler postavljen.

Potem nadaljuješ s stavki if, if/else, if/else-if/else, for loop, while loop, itn. Tu so v pomoč lahke naloge:
if - če je vhodni x večja ali enaka 5, gre v if stavek, sicer ne
if/else - če je vhodni x sodo število, gre v if, sicer gre v else
if/else-if/else - če je vhodni x manši od 5, gre v if, če je med 10 in 20 gre v else-if, sicer v else
for loop - izpis števil od 100 do 200, izpis sodih števl itn.
while loop - vhodni x je 0, while loop ima pogoj, da se izvaja, dokler je x manjši od 100, v while loop pa x povečuješ po ena (x = x + 1;) in vmes izpisuješ vrednost x ali pa namenoma zakomentiraš inkrement in program zaciklaš

Pol naslednje so array, class in funkcije.
array - branje podatkov iz arraya, sortiranje (nrp. input = [5, 7, 2, 9];) večdimenzionalni array...
class - sample je recimo class person, ki ima lastnosti ime, priimek, starost, kako tak objekt inicializirat, pisat in brat v objekt, mogoče sestavit array nafilan z objekti oseba
funkcija - point je da neko funkcijo napišeš 1x, kličeš pa jo potem na 100 različnih koncih v "main" delu programa in se tako le ta ne ponavlja vse povsod. npr. numDiff(a as float, b as float) { koda... return c; }; vzame vhodna podatka (število), jih primerja in vrne razliko. prednost je, da če je potrebno funkcijo dodelat, jo popravit/pohitrit, to narediš na enem koncu (in popraviš klic z find/replace, če spreminjaš parameter funkcije) ne pa na 100 koncih

Pol naprej so podatkovni tipi string, int.
string - tekst
int - število
true/false - bit [0, 1]
Tu je potrebno pogledat, kaktere tipe ima posamičen jezik ter naredit par testov. Pri stringu so funkcije search (ali se string "LM" nahaja v besedi trollMaster). Potem pri stringu so funkcije upper/lower, ki spremeinjo zapis, ter split. Npr. String.split("aa|bb|cc", "|"); bo naredil array/list dolžine 3, in potem uporabiš funkcijo for (0 to len(array)), da se sprehodiš čez vse iteme in narediš print.
Potem so funkcije za konvert int to string in obratno. Npr int a = 5; in potem funckija str s = String(a); Problem je obratno, če se zgodi int b = ToInt32("demo");
Bit omogoča shranjevanje ja/ne vrednosti. Če sta to edini možnosti v določenem primeru (npr. if a > 5), potem uporabi true/false.

Potem naprej je try/cacth/exception.
try - v ta blok napišeš kodo, za katero nisi siguren, da bo vedno delovala brez problemov (ali pa namenoma notri napišeš bug)
catch - je blok, ki ujame exception in v tem bloku se odločiš, kaj in kako v primeru napake
exception - objekt, ki ima podatke o tem, kje (line number) in kaj ("cannot convert", "empty value", "not init...") se je zgodilo
Tu narediš kak sample, da znaš ulovit napako, jo zabeležit, uporabniku pa sporočit "Ups, jebi ga, tud medicincem se kdaj zgodi..."

Potem naprej delo z fajli.
check path - Primer, ko preveriš, če neka pot obstaja npr. IO.IfDirExists("/etc/config/");
check file - Primer, ko preveriš, če file obstaja na lokaciji npr. IO.IsThereFile("/etc/config/troll.me");
write file - Primer, ko zapišeš podatke v fajle...
new line - Kako zapisat novo vrstico v file (ponavadi je znak za novo vrstico \n)
read lines - Kako prebrat vsebino fajla, naredit split by new line (file.readAll.split("\n")) in preko for loop prebrat vsako vrstico, naredit trim (odstranit presledke na začetku/koncu stringa), naredit counter in izpisat line number...
....itn....


Evo, to je že kar nekaj za začetek.


Glede SQLa pa naš priljubljen potrošnik:
1 - naredit tabelo Customers (column id|name|lastName|yearOfBirth|itn...)
Ta prava tabela ima prvi stolpec id, typa Int32, ter gor postavljen primary index
2 - naredit tabelo Articles (column id|articleName|articlePrice|articleMaker)
In isto index na id.

Ko sta ti dve tabeli narejene, dodamo par janezov in mick v Customers tabelo, ter šampon, kruh, mleko in mišjo past v Articles tabelo. Za vrednost id vnašamo [0, 1, 2, 3, 4, ...]

Ta tretja tabela pa povezuje obe zgornji. Po slovensko se temu reče many-to-many relacija; en kupec lahko kupi več artikolv, in en artikel lahko kupi več kupcev. Tabelo poimenujemo CustomersArticles.

Ta tabela ima tri stolpce (id|idCustomer|idArticles); id je primary index, idCustomers je vezan (relacija) na id v Customers tabeli, idArticles pa je vezan na id v Articles tabeli.

Ko je to povezano, se lahko v to, povezovalno tabelo vnašajo cifre. Npr. če je kupec janez, z id-jem 4 v tabeli Customers kupil mišjo past, ki je v tabeli Articles zavedena pod id 7, se v tabelo CustomersArticles vnese:
0|4|7

Če janez kupi še milo, ki je v Articles zaveden pod id 11, je tabela CustomersArticles takšna:
0|4|7
1|4|11

In ko prider micka, ki je v tabeli Costumers zavedena pod id 8, in kupi milo (id 11) in bobi palčke (id 9), je tabela CustomersArticles takšna:
0|4|7
1|4|11
2|8|11
3|8|9

Od tu naprej so pa vaje za delo s SQL stavki, v osnovi v treh delih.

1- Prvi del je SELECT, INSERT, UPDATE, DELETE.
2- Drugi del uporaba WHERE, ORDER BY, GROUP BY
3- Tretji del pa JOIN; INNER, OUTER, LEFT, RIGHT (Katere vse izdelke je kupil Janez z id=4? Kdo so kupci izdelkov, dražjih od 7 evrov? Kater artikel je kupil samo en kupec? Kateri artikli še niso bili kupljeni? itn.)



Evo, ko imaš to pokrito, se pa loti reševanje problemov iz foha, ki te zanima.


Pa še nekaj bi ti predlagal, in to je, da si namestiš Linux (Debina, ker je dbest), se spoznaš s terminalom, na desktop mašini imaš tako grafični vmesnik (GNOME). Zakaj? Ker je delo bolj hekersko-raziskovalne narave, bolj odprto in dlje/globje lahko greš in raziskuješ, veliko how to dokumentacije.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

scipascapa ::

HotBurek: kdaj odpreš kak bootcamp? :)

FTad ::

Fajn bi bilo tudi, da spoznas osnove, kaj pomenijo and/or operatorji, negacije... Ter operacije nad mnozicami unija, presek, minus itd. Torej, kar je npr na FRI-ju pri predmetu diskretne strukture.

HotBurek ::

scipascapa, pa je kej interesa za te reči?

Od tega, kar znam oz. me zanima, bi razdelil na dva področja:
- sistemska administracija (postavitev Debian strežnika + bind, nginx, postfix + dovecot, pure-ftpd, mariadb/mongodb, bacula, iptables/nftables, fail2ban, inspircd, openldap, squid, openvpn, easyrsa, varnish, haproxy). Končni produkt bi bil strežnik z vsemi storitvami, kako naconfat, potestirat itn. primeren za lasten server ali pa kako firmo.
- programiranje (frontend HTML/CSS/JS, middleware Python/uwsgi/nginx, backend MariaDB (and maybe MongoDB)). Tu bi bil celoten primer postavitve web sajta, ki bi na frontendu omogočil login (v ozadju avtentikacija na bazo, kreiranje session id-ja, ter cookie response), ter vnos/edit/delete podatkov v neko tabelo. In kakšen upload/download in iskanje fajlov v MariaDB bazo.
(Mogoče še websockets, ker se mi zdi kul. Link: https://www.fullstackpython.com/websock... )
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

scipascapa ::

interesa je ogromno, kako izpeljati pa odvisno od volje in časa ter lokacije.....meetup scena pa to.

FZ13 ::

HotBurek je izjavil:


Evo, ko imaš to pokrito, se pa loti reševanje problemov iz foha, ki te zanima.


Vau, noro, hvala za ta detajlna navodila!!

Bi znali edino približno oceniti koliko časa (neto) je potrebno začetniku, da pride vsaj "s pozitivnim" skozi oz. vsaj toliko, da se stvar stvar razume in z neko povprečno hitrostjo programira/obdeluje podatke?

Cilj mi je stvar v grobem osvojiti v naslednjih 2eh letih, da imam dovolj osnov za kakšne bolj konkretne projekte. Je realno?

scipascapa ::

2 leti, da. Sploh, ker si samo 23 let star in tako in tako delaš že zajeban faks.

FZ13 ::

FTad je izjavil:

Fajn bi bilo tudi, da spoznas osnove, kaj pomenijo and/or operatorji, negacije... Ter operacije nad mnozicami unija, presek, minus itd. Torej, kar je npr na FRI-ju pri predmetu diskretne strukture.


Sicer nekaj o množicah in Boolovih operatorjih itd. že vem, ampak predvidevam, da je treba stvar še kar naštudirati. Najlepša hvala za nasvet, si bom probal nekako priskrbeti gradivo. :D

FTad ::

FZ13 je izjavil:

FTad je izjavil:

Fajn bi bilo tudi, da spoznas osnove, kaj pomenijo and/or operatorji, negacije... Ter operacije nad mnozicami unija, presek, minus itd. Torej, kar je npr na FRI-ju pri predmetu diskretne strukture.


Sicer nekaj o množicah in Boolovih operatorjih itd. že vem, ampak predvidevam, da je treba stvar še kar naštudirati. Najlepša hvala za nasvet, si bom probal nekako priskrbeti gradivo. :D


ja boolovi operatorji so pomembni, ko bos pisal if stavke, mnozice pa ko bos pisal sql select poizvedbe

HotBurek ::

Moje mnenje glede programiranja je preprosto; če želiš bit über dober programer, moraš poznat osnove elektrotehnike. Z neko srednjo poštarsko šolo pač to ne gre. Zakaj elektro? Ker se toliko prepleta. Da se pa naučit vse.

Npr. tale dokumentacija kaže vsebino, ki se jo uči na srednji elektro šoli. In kasjene, ko programiraš, delaš ravno to.
http://colos.fri.uni-lj.si/ERI/RACUNALN...
IN: if (a == true && b == true) { done some stuff; };
ALI: if (a == true || b == true) { done some stuff; };
XOR: if ((a == true && b == false) || (a == false && b == true)) { done some stuff; };

Pa še ostala vsebina: http://colos.fri.uni-lj.si/ERI/GRADIVA/...


Glede na to, da toliko podatke omenjaš, mogoče začneš s SQL bazo, ter naštudiraš SQL jezik. Zraven si pa kakšno skripto spišeš za branje in pisanje podatkov v bazo.

Pa kot rečeno, da imaš prvo željo nek problem rešit, nekaj naredit. Potem se že sproti učiš.

Npr. kar je od države na https://podatki.gov.si/. Mogoče zanimiv projekt, zloudat vse podatke v bazo (to bi blo 5000 tabel?), potem pa delat kakšne monster JOIN-e. Pa še optimizacijo/caching bi se naučil. In to bi lahko dal na public web site, kjer bi posamičen JOIN predstavil kot VIEW. I bet, da bi se našli taki, ki bi plačali keš money za tako bazo.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

XLapse ::

za se naučit amatersko hekanje, moreš vedet tudi programirat? pa ne govorim o raznih skriptah, keyloggerjev, stvari k lahko še 10 letnik naredi.
alien technology

HotBurek ::

Poglej, za kuhanje špagetov res ne potrebuješ bit kuhar. To lahko dela tudi ta tvoj 10 letnik.

Je pa problem, če bi poizkušal konkurirati Gordon Ramsay-u in ga kao šolat, kako se špagete pravilno naredi, skuha in postreže na osnovi znanja pridobljenega pri kuhanje špagetov iz škrnicla, omaka pa iz piksne.


Isto za hekanje; predznanje operacijskih sistemov, podatkovnih struktur, omrežja, programiranja in strojne opreme (tranzistorjev) ti vsekakor da globji in širši pogled v področe "računalništva", da veš kaj sploh delaš.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

kow ::

FZ13 je izjavil:


Cilj mi je stvar v grobem osvojiti v naslednjih 2eh letih, da imam dovolj osnov za kakšne bolj konkretne projekte. Je realno?


Nekaj so osnove programiranja, drugo je (industrijski) software development.
Torej je zelo odvisno kaksni so tvoji cilji. Osvojiti programiranje "v izolaciji" - programiras program, ki ga bos uporabljal sam, je vsaj 10x lazje kot programirati profesionalno.

Da ratas software developer potrebujes, od oka, 5 let studija in 5 let prakse. Torej 10 let.

FTad ::

HotBurek je izjavil:

Moje mnenje glede programiranja je preprosto; če želiš bit über dober programer, moraš poznat osnove elektrotehnike. Z neko srednjo poštarsko šolo pač to ne gre. Zakaj elektro? Ker se toliko prepleta. Da se pa naučit vse.

Npr. tale dokumentacija kaže vsebino, ki se jo uči na srednji elektro šoli. In kasjene, ko programiraš, delaš ravno to.
http://colos.fri.uni-lj.si/ERI/RACUNALN...
IN: if (a == true && b == true) { done some stuff; };
ALI: if (a == true || b == true) { done some stuff; };
XOR: if ((a == true && b == false) || (a == false && b == true)) { done some stuff; };

Pa še ostala vsebina: http://colos.fri.uni-lj.si/ERI/GRADIVA/...


Glede na to, da toliko podatke omenjaš, mogoče začneš s SQL bazo, ter naštudiraš SQL jezik. Zraven si pa kakšno skripto spišeš za branje in pisanje podatkov v bazo.

Pa kot rečeno, da imaš prvo željo nek problem rešit, nekaj naredit. Potem se že sproti učiš.

Npr. kar je od države na https://podatki.gov.si/. Mogoče zanimiv projekt, zloudat vse podatke v bazo (to bi blo 5000 tabel?), potem pa delat kakšne monster JOIN-e. Pa še optimizacijo/caching bi se naučil. In to bi lahko dal na public web site, kjer bi posamičen JOIN predstavil kot VIEW. I bet, da bi se našli taki, ki bi plačali keš money za tako bazo.


To je bilo na FRI-ju vse obdelano v 1. letniku - Diskretne Strukture in (po starem programu se je imenoval predmet) Preklopna vezja in strukture, kjer si lahko po potrebi kompleksne funkcije okrajsal tako, da si imel razne and/or/xxx operatorje res minimalne, pa so pokrili vse kombinacije


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

križci krožci c # (strani: 1 2 )

Oddelek: Programiranje
5011799 (10458) Yacked2
»

PHP in objektno programiranje (strani: 1 2 )

Oddelek: Programiranje
8512053 (10520) kivi113
»

C# HashSet<T>, HashTable kako deluje iskanje v ozadju? a lahko faila?

Oddelek: Programiranje
121537 (1318) detroit
»

razložitev nekaterij elementov v visual studio 05

Oddelek: Programiranje
72104 (1909) darkolord
»

[C] bitni operator (strani: 1 2 3 )

Oddelek: Programiranje
1125523 (4356) Thomas

Več podobnih tem