Zaciname programovat :-)

Sekcia o programovaní, programovacích jazykoch...
Používateľov profilový obrázok
pEpinko
Používateľ
Používateľ
Príspevky: 850
Dátum registrácie: Po 19. Máj, 2008, 09:31
Bydlisko: BA/NR

Re: Zaciname programovat :-)

Príspevok od používateľa pEpinko »

Preco nesuhlasim s celym postom? Skusim to strucne zhrnut. Spominas tam rozne "urovne" potreby matematiky. Ale matematika je tak siroky pojem, ze vlastne som si nie isty, co tym myslis. Hlavne co je to "stredna potreba matematiky", to nejednoznacnejsie uz ani nemoze byt. Navyse nerozumiem preco kazdy pcha matematiku do programovania. Ked, tak sa bavme o medzistupni a to teoretickej informatike (somputer science).

Ostatok je o vybere jazyka (o tom je vlastne +/- cely thread), podla mna je takyto vyber uz od zaciatku zly. Sposob akym sa vyucije programovanie na strednych a vysokych skolach nie je az taky zly, tak naco ist proti prudu a zacat s vlastnym grafickym enginom... zacat treba vzdy s jednoduchymi vecami a to, v ktorom jazyku je uplne irelevantne. Preto radsej sa ucit to co v skole, ale ak clovek na skole programovanie nema, alebo sa silou mocou chce ucit aj sam, tak si treba najst nejaky dobry tutorial (knihu) a jazyk prilis neriesit. Nevidim velky prinos v tom si na zaciatku nieco vybrat, len preto, lebo sa mi to bude hodit na vlastny graficky engine.

A teraz k optimalicii. Myslim, ze prelozit f / 2 na f * 0.5 si nedovoli ziaden optimalizator bez patricneho nastavenia. Nechce sa mi to teraz hladat, ale mam tusenie, ze vysledky nemusia byt uplne rovnake. Ale ked sa kompilatoru povie aby optimalizoval floating point aritmetiku, tak to takmer isto zoptimalizuje (ak to teda rychlejsie je). Vsetky tieto optimalizacie su niekde na urovni pisania ++i namiesto i++. Clovek, ktory potrebuje takuto mieru optimalizacie si uz rovno moze napisat niektore funkcie v instrukciach pre danu platformu. Viem si predstavit iba jeden pripad ked treba vediet taketo optimalizacie a neprogramuje sa v strojovom kode a to pri pisani optimalizatorov.
Trovaricon
Nový používateľ
Nový používateľ
Príspevky: 38
Dátum registrácie: Ne 09. Mar, 2008, 14:00
Bydlisko: Bratislava / Presov

Re: Zaciname programovat :-)

Príspevok od používateľa Trovaricon »

AD matematika - to je presne dovod preco som spomenul graficky engine v suvislosti s tiez spomenutou goniometriou. Ak sa chce dostat na tuto uroven, tak nech dopredu vie, ze sa moze ako programator vymakat na akukolvek uroven ak nebude ovladat transformacie v priestore (s cim v D3D/OGL suvisi pouzivanie "starych znamych" 4x4 matic), tak moze ist tak akurat "kravy past". S tou strednou potrebou matematiky mas pravdu - ale na napisanie konkretnej oblasti by bolo potrebne pisat aj o jednotlivych "low leveloch". Nikde tam nie je napisane, ze vsetky oblasti su "startovacie ciary", ale kde sa aky jazyk zide (ono sa to dalo rozpisat na x dalsich specifickejsich kategorii a doplnit o cele oblasti dalsich jazykov). Ved neznaly clovek (ako som vycitil z prispevkov autora) si mysli, ze "jazyk ako jazyk" - ale narocnost zvladnutia a ucel jazykov su niekedy diametralne odlisne. S tymto zamerom bol ten zoznam pisany. Preto som v prispevku zvyraznil, ze najschodnejsia cesta je C# / Java.

Ak to zazeniem do extremu, tak vsetko po "Hello world" vyzaduje viac "algoritmu" ako mnohe oknoidne aplikacie - tam vacsinou matematiku v ziadnej podobe netreba - co je sranda - casto dostava zabrat aj (ne)algoritmizacia.

AD ucenie na skolach - veru neviem na co bolo dobre na strednej skole v pascale programovat vysokoskolsku matematiku > po prichode na VS si nad tymi rovnicami studenti skrabali hlavy (aj ked to bolo mozno specifikum skoly / ucitela). Tak ako sa uci C / Pascal na strednych skolach alebo aj v zaciatkoch na VS je z mojho pohladu mozne povazovat za ucenie algoritmizacie a nie ucenie programovania. Pre mna je programovanie implementacia algoritmov v konkretnom jazyku s vyuzivanim specifik jazyka. (Som si vedomy, ze tato definicia ma vela dier, ale hadam sa chapeme, co sa tym snazim povedat)
Preto sa relativne skoro zacina s ucenim rekurzie aj na prikladoch, ktore by ziadneho programatora pri zmysloch nikdy nenapadlo takto riesit. Rekurzia moze dobre posluzit na "drvenie mozgov" studentov pri navrhu algoritmu.

Zase sa dostanem k tomu co som spomenul umyselne na zaciatku prveho prispevku, aby bolo jasne, ze rozlisujem terminy programovanie a algoritmizacia. Totiz na skole sa vela veciam hovori ucenie programovania, ktore co su v skutocnosti ucenie algoritmizacie...

Na ucenie algoritmizacie netreba ziaden programovaci jazyk - ten tam sluzi len ako pomocka na overitelnost spravnosti algoritmu. (Na tie jednoduchsie algoritmy su plne pouzitelne aj jazyky Korytnacka (Logo) a ak sa dobre pamatam - "Lego panacik" Karel :D )

Vratim sa k spomenutej rekurzii (OT: zivo si spominam na vyucbu rekurzie v 3 jazykoch, ktora vzdy zacala vetou "Faktorial je zly priklad na rekurziu" a v zapati zadanie prveho prikladu: "Implementujte faktorial rekuziou" :facepalm: ).

Ak napisem priklad na rekurziu v C# a skopirujem telo programu do template v IDE-cku JAVA, C++ alebo C tak to uspesne prelozim... (ok, treba zachovat u Javy konvenciu velkych/malych pismen a pri OOP mozno sem-tam dopisat "static")
Znamena to, ze clovek vie programovat vo vsetych tychto jazykoch ? Asi nie...


Jedine co sme spravili je, ze sme nahradili pseudokod algoritmu "c-ckoidnou" syntaxou.

Myslim, ze to co sa prezentuje pojmom "programovanie" by sa dalo rozdelit na 3 urovne:
Ucenie algoritmizacie (uvod do "programovania")
- riesenie rekurzie, cyklov, vetvenia, triedeni

Koncepty programovania a ucenie programovania v konkretnom jazyku
- u proceduralnych jazykov: smerniky vs. referencie, automaticka vs. manualna sprava pamate, pretazovanie operatorov a funkcii (OOP), dedenie, specifika jazykov (napr. delegaty v .Net), datove struktury

Optimalizacia kodu
- sem patri "tunenie" v podobe uz spominanych optimalizacii (float konstanty, bitshift delenie), loop unroll, nasadenie specialnych instrukcii (napr. SSE), manualne vyvolanie prefetch-u dat do cache procesora - toto vsetko sa da robit bez mordovania sa s assemblerom...

V akom jazyku prebieha prva uroven je takmer jedno. Obtiaznost drujej je uz vyrazne zavisla na jazyku a dostupnost resp. rozsah dostupnosti tretej urovne je uplne podmienena vyberom jazyka (navyse cely cas sa tocim len okolo proceduralneho programovania)

p.s. float (single precision FP) aj double (double precision FP) su tak definovane (IEEE 754), ze hodnota 2^n je presne vyjadritelna (v ramci rozsahu exponentu). V oboch pripadoch sa pri vyjadrovani meni len exponent, mantisa je vzdy rovna nule (resp. float ma mantisu 23 0 bitov a double 52 0 bitov). Automaticke pouzitie tejto substitucie konstanty je samozrejme zavisle na prekladaci a jeho nastaveni.
O optimalizovani "konzumneho softveru" v si nerobim ziadne iluzie - clovek (amater v oblasti) prezenie cez PIX (sucast DirectX SDK) zopar hier a nevie, ci sa ma smiat, alebo plakat... A to je rec o vysokej urovni - volanie funkcii API.
Gigabyte GA-970A-UD3, 16GB ECC DDR3, AMD FX-6300@4GHz, Xigmatek Loki, Asus HD7770 DirectCU, Intel 330 180GB / Seagate 7200.14 1.5TB + 2TB, Corsair CX400, CM 330K (mod), Philips 235PQ2EB + LG W2253TQ-PF, Windows 8 x64 Pro
Používateľov profilový obrázok
crux2005
VIP
VIP
Príspevky: 10030
Dátum registrácie: So 18. Jún, 2005, 20:00
Bydlisko: Nové Zámky

Re: Zaciname programovat :-)

Príspevok od používateľa crux2005 »

Jeden z dôvodov prečo niečo napísať v C namiesto C++ alebo Java a pod. je rýchlosť. http://blog.dhananjaynene.com/2008/07/p ... by-groovy/

Ale stačí napr. porovnať výkon pri načítaní 100k dvojíc zo súboru s následným zapísaním (x,f(y))
Čistý Python: 4 s
Čistý Perl: 3 s
Čisté Tcl: 11 s
Čisté C (fscanf/fprintf): 1 s
Čisté C++ (iostream): 3,6 s
Čisté C++ (proudy s vyrovnávací pamětí): 2,5 s
Numerické moduly Pythonu: 2,2 s


alebo program pre počítanie výskytu jendotlivých slov (C vs. C++).

=> ako vidieť, väčšie abstrakcie v jazyku majú svoju cenu. Nie je teda na škodu vedieť C.
s pozdravom, crux.
Trovaricon
Nový používateľ
Nový používateľ
Príspevky: 38
Dátum registrácie: Ne 09. Mar, 2008, 14:00
Bydlisko: Bratislava / Presov

Re: Zaciname programovat :-)

Príspevok od používateľa Trovaricon »

Vzhladom na to, kolko vstviev je medzi volanim metody na IO ulohu a hardverom v dnesnych OS, by som sa velmi na testovanie pri citani/zapise do suborov nespoliehal.

Ved to je (dufam) kazdemu jasne, ze C bude rychlejsi (myslim tu ulohu na blogu - akurat po prebehnuti zdrojakov by som minimalne za ten v Jave riadne "nalozil na rit" - OO paradigmova absurdnost dosahujuca uroven edukacnych materialov / uloh na nasich skolach > totalne neefektivna)

Ak by sa jednalo len o ulohu spominanych rozsahov, tak je uplne jedno v com je to spravene. Ak vsak mnohonasobne znasobime objem spracovanych dat, tak ich bude treba nasledne aj nejak triedit (katalogizovat), niekam odosielat, riadit vyber dat a pod. a to uz v jazyku C asi nepojde naprogramovat velmi rychlo...

Drviva vacina komercneho softveru nie je "performance critical" alebo ako to nazvat. Takyto problem sa ale da poriesit relativne elegantne - cely program sa napise napr. v C# a algoritmy na spracovanie dat sa napisu v C a prelozia ako dynamicka kniznica. Pomocou dllimport / p-invoke mechanizmov sa z manazovaneho kodu spustia optimalizovane funkcie. A mame aj rychlost vyvoja aj rychlost aplikacie zabezpecenu...
Gigabyte GA-970A-UD3, 16GB ECC DDR3, AMD FX-6300@4GHz, Xigmatek Loki, Asus HD7770 DirectCU, Intel 330 180GB / Seagate 7200.14 1.5TB + 2TB, Corsair CX400, CM 330K (mod), Philips 235PQ2EB + LG W2253TQ-PF, Windows 8 x64 Pro
Atham
Nový používateľ
Nový používateľ
Príspevky: 147
Dátum registrácie: So 26. Máj, 2012, 16:16
Bydlisko: Slovensko, Bratislava, Devin

Re: Zaciname programovat :-)

Príspevok od používateľa Atham »

Zacal som asi pred tyzdnom sa ucit programovat. Bolo mi navrhnute zacat s Python.

Python je lahky a dobry zaciatok na jazyky ako C/C++/C#/Java.

Prenosny Python je dobry. Zoberes si ho na kluc a ides. Napriklad v skole, ak sa nic nedeje, tak mozes si toto pozriet.
Hovoris anglicky? Ak hej tak to mas knihu na stiahnutie. Velmi dobra a detailna.

Bav sa

~Alexander Tham
Spoiler: ukázať
CPU [Intel] i7 3770k 4.0GHz MB [ASUS] P8Z77-V Video [Gigabyte] GTX 670 Zdroj [Corsair] AX750 Skrinka [NZXT] Switch 810 SSD [Intel] 520 120GB HDD [WD] Caviar Green 1TB Optical Drive [Samsung] SH-222BB RAM [Corsair] Vengeance 8GB 1866MHz Chladic [Noctua] NH-U12P SE2
jetmarek
Nový používateľ
Nový používateľ
Príspevky: 11
Dátum registrácie: Št 23. Feb, 2012, 19:49

Re: Zaciname programovat :-)

Príspevok od používateľa jetmarek »

Ahojte,chcel by som sa opytat,ktory program je najvhodnejsi na ucenie sa web stranok. Dik.
Používateľov profilový obrázok
materik
Používateľ
Používateľ
Príspevky: 2323
Dátum registrácie: Št 10. Apr, 2008, 14:00
Bydlisko: Prešov

Re: Zaciname programovat :-)

Príspevok od používateľa materik »

pozri si tuto stranku http://w3schools.com/
program uz aky si vyberies, mne najviac sedi Notepad++, ale tam moze len kodit, WYSIWYG editor to nema
PC -> Topping DX7 Pro+ -> Meze 109 PRO / Microlab B77
Používateľov profilový obrázok
mArtinko5MB
Používateľ
Používateľ
Príspevky: 1879
Dátum registrácie: St 04. Jan, 2012, 23:32
Bydlisko: Kosice

Re: Zaciname programovat :-)

Príspevok od používateľa mArtinko5MB »

myslím, že máš popletené pojmy s dojmami :D

asi sa pýtaš na programovací jazyk a vývojové prostredie :) Máš nejaké skúsenosti s programovaním ?

kodiť web v notepad++ je trošku hardcore, nezdá sa Ti ? :)
It might make sense just to get some in case it catches on. If enough people think the same way, that becomes a self fulfilling prophecy.
- Satoshi Nakamoto
jetmarek
Nový používateľ
Nový používateľ
Príspevky: 11
Dátum registrácie: Št 23. Feb, 2012, 19:49

Re: Zaciname programovat :-)

Príspevok od používateľa jetmarek »

Dik za radu,nemam ziadne skusenosti s programovanim.Chcel by som sa naucit na zaciatok robit web,alebo je lepsie zacat s programovacim jazykom?
Používateľov profilový obrázok
materik
Používateľ
Používateľ
Príspevky: 2323
Dátum registrácie: Št 10. Apr, 2008, 14:00
Bydlisko: Prešov

Re: Zaciname programovat :-)

Príspevok od používateľa materik »

no, takto... ak zacnes robit web, skor sa mozes dostat k peknym vysledkom (stranky, css-ka...), proste vysledok bude
krajsi na pohlad. Co sa tyka HTML, tak to je len o spravnom poukladani tagov, ak tam zacnes drbat skripty, tak vtedy je
uz lepsie mat nejake skusenosti s algoritmizaciou a programovanim ako takym. Ale urcite nespravis chybu ak zacnes s HTML
a postupne zacnes nabalovat na to dalsie jazyky, technologie.... ;)
kodiť web v notepad++ je trošku hardcore, nezdá sa Ti ?
:D
PC -> Topping DX7 Pro+ -> Meze 109 PRO / Microlab B77
jetmarek
Nový používateľ
Nový používateľ
Príspevky: 11
Dátum registrácie: Št 23. Feb, 2012, 19:49

Re: Zaciname programovat :-)

Príspevok od používateľa jetmarek »

Dik,no uvidim ako mi to pojde a podla toho budem pokracovat.
Používateľov profilový obrázok
mArtinko5MB
Používateľ
Používateľ
Príspevky: 1879
Dátum registrácie: St 04. Jan, 2012, 23:32
Bydlisko: Kosice

Re: Zaciname programovat :-)

Príspevok od používateľa mArtinko5MB »

česť práci
It might make sense just to get some in case it catches on. If enough people think the same way, that becomes a self fulfilling prophecy.
- Satoshi Nakamoto

Návrat na "Programovanie"