Jaký jazyk zvolit pro začátečníka

alef0

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #105 kdy: 08. 11. 2010, 13:55:20 »
Pozor, ja netvrdim, ze OOP sa ma pouzivat vsade, vzdy a zakazdym -- v mnohych problemoch na to jednoducho nie su nastroje, resp. moznosti. Programovanie zeleza s pouzitim OOP nik robit nebude, lebo tie jazyky na to nedava moznosti.

Ale tu sa bavime o metodologiach pre zaciatocnikov a nehovor mi, ze programovanie zeleza je idealny sposob ako prilakat generalne masy k programovaniu.

Ty ako keby si tvrdil, ze vyucba OOP je kontraproduktivna, lebo ,,ludia pchaju OOP vsade a to nie je vzdy vhodne a je to na skodu.", lebo nevedia naprogramovat MBR?

(Programovanie Unixu je opat zvlastna kategoria, ktora si rozhodne zasluzi pozornost, ale ako to suvisi so zaciatocnikmi, nechapem.)


Logik

  • *****
  • 1 049
    • Zobrazit profil
    • E-mail
Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #106 kdy: 08. 11. 2010, 15:12:31 »
iwtu:Unix není objektovej? Odkdy? Co je např. socket, soubor, semafor? Jaktože to není objekt?
Právě např. design "vše je soubor" je krásnej příklad OO myšlení: jeden interface pro soubory a konkrétní objekty ho implementují.
 Že je většina jádra linuxu v C? No a co, to něčemu vadí? OOP se týká designu a přístupu k entitám, se kterými se pracuje, nikoli o tom, jestli něco píše tak nebo jinak. Tzn. to, že se v unixu píše místo socket.write(data, size) write(socket, data, size) nemá s tím, jestli unix je nebo není OO společnýho lautr nic.

iwtu

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #107 kdy: 08. 11. 2010, 18:07:50 »
Toto ma zaujalo, vieš to nejak elaborovať? Teda nejaké konkrétne príklady problémov, keď je použitie OOP na škodu?

Zaujalo Ta to... tak som Ti povedal. Skusil si naprogramovat Aho-Corasick? Cerveno-cierny strom? Ja ano a nemam tam ziadne OOP, lebo sa mi to nevidi vhodne. Ak nepocitam cely ten kod obalit to nejakej triedy... Tu studenti, ktori zacinali s OOP tak pchaju OOP vsade. Pisu kvalitne OOP ale znasilnuju ho tam, kde sa nehodi. Sami uznali, ked si zacali porovnavat kody, ze Java/C# nebola najstastnejsia volba na zaciatok... (ked videli kod ludi, ktori zacinali C/C++, Haskell, Erlang, Lisp ...) (podla mna preto, lebo mozog bavit sa ucit OOP aj uz zvladne veci predtym ale ak uz pouziva OOP tak ho nebavi sa vraciat k veciam pred nim)

A to je to cele nedoruzemie a cely tvoj problem. Hrate na sa na individualny pristup a a idete na to masovo. Rovno Javou, ktora sa bezproblemov naucit z netu.

Ja si zaciatocnika predtavujem trochu inac, nemasovo. Predpokladam, ze masovy student nezacne programovat v 13-16 rokoch a pocka si na skolu, ved tam sa nauci. Nebavim sa ako ma zacat prvak na vysokej skole, lebo je to bezpredmetne. Ak zacne byt masovy, tak si pocka do vysky atd...

Skor predpokladam nemasovaho cloveka a snazim sa mu ukazat, ze jazyky Java/C# vsebe zahrnuju vsetko a musi so vsetkym zapasit naraz a s velkej casti ich pouzivaju masy, teda asi to nebude az taky problem zvladnut. Tvoj cely predmet paz1c za mojich cias sa nauci priemerny schopny student za tyzden. Teraz neviem, aku tam mate stavbu ale v Jave nie je problem ani siet ani vlakna. Clovek, ktory vie uvazovat a programovaval inde, tak sa za 2-3 tyzdne nauci vase 3 semestre Javy.

No ak ked predpokladam nemasovaho citatela, tak sa skor snazim ukazat nemasove moznosti, ktore sa hodia aj v praxi. Teraz prisla do Prahy z Londyna firma a hlada ludi na programovanie v Haskell (dalsi specialny pripad). A tych specialnych pripadov je vela, masa je iba jedna... Tot moja logika.

V tom sa lisime. Ja sa nesnazim prilakat masy k programovaniu...Snazim sa tomu, kto naozaj chce, ukazat co najviac moznosti.

Myslim si, ze programovanie urcite nie je cinnost, ktora by mala lakat masy...

alef0

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #108 kdy: 08. 11. 2010, 19:13:32 »
Ale ja stale nechapem, preco je kvalitne napisane OOP pre efektivne napisany algoritmus zle.

Co sa tyka Javy, nebudem ju branit zubami nechtami, napr. moj sen je urobit experimentalny kurz pre uplnych zaciatocnikov.

Ostatne argumenty su ale velmi ovplyvnene tym, ze ked uz clovek nieco ovlada a ma za sebou skusenosti, tak sa mu ovela lahsie diva na omyly minulosti... problem je vsak to, ako naucit cloveka, ktory ziadne skusenosti nema a teda nevie porovnavat. Inak povedane, cim viac jazykov jednej paradigmy ovladam, tym lahsie sa mi migruje na iny jazyk, pretoze je to obvykle len syntakticky cukor.

Napr. velmi rad by som videl ucenie zaciatocnikov v Haskelli (nejake skusenosti?), viem totiz, ze na MIT mali (a asi aj maju) zauzivanu vyucbu uvodneho kurzu v Lispe.

A mame tu dva problemy:
a) cloveka, ktory sa pytal, cim zacat
b) a masy studentov, ktore chodia studovat informatiku na rozlicne skoly.

Cielom by malo ulahcit pristup a nezaujimat elitarsky postoj, kde sa povie, ze tento odbor nie je pre masy, pretoze to je unik od riesenia.

Logik

  • *****
  • 1 049
    • Zobrazit profil
    • E-mail
Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #109 kdy: 08. 11. 2010, 20:23:44 »
iwtu - jenžeš algoritmy nejsou všechno. Zrovna takovej červenočervenej strom v podstatě pochopí a napíše každej blb. A kdo ne, tak nemá šanci se naučit programovat.
Jenže pak přijde okamžik, kdy máš ten červenočervenej strom použít. A tam už se opoužití OOP nevyhneš.

Samozřejmě jsou špičkoví odborníci, který např vymejšlej co nejefektivnější IO plánovač. Tam se uplatní hlavně algoritmizace a jen okrajově o OOP. Ale stejně tak musí při psaní jádra existovat člověk, kterej vůbec vymyslí, že tam bude nějakej plánovač, že bude mít zodpovědnost za todle, že bude se zbytkem systému komunikovat takhle atd... A to je doména, kde bude excelovat člověk s dobrým OO myšlením.

Tím netvrdím, že lepení komponent k sobě je vrchol programování. Ale mezi lepením komponent a psaním algoritmu je ještě velkej prostor. Např. kdyby se OO návrh dodržoval při psaní linux kernelu, tak by se teď nemusel odstraňovat big kernel lock... Když se koukneš na vývoj kernelu, tak bych řekl, že daleko víc problémů je dáno špatným původním návrhem, kdy se to teď snaží zlepšit, aniž by porušili zpětnou kompatibilitu, než špatných algoritmů, které je třeba vylepšit (špatný algoritmus se snadno nahradí, špatný návrh nikoli).

Nebo naopak - jací jsou Ti nejhorší programátoři? Lepiši komponent. Z toho vyplývá, že lepit komponenty je evidentně nejednodušší k pochopení. Takže rozhodně jedna z dobrých cest, jak se naučit programovat je začít lepit komponenty. Navíc je to "povzbuzující", protože je daleko dříve vidět hezký výsledek. Samozřejmě, chytrej člověk u toho lepení komponent nesmí zůstat dlouho...

PS: A i u toho RB stromu se částečně využije OO myšlení - jednotlivé nody jsou objekty a na psaní stromu se můžeš koukat jako na metody těch objektů. Samozřejmě třeba kvůli rychlosti nebudeš striktně vyžadovat zapouzdření apod., ale pokud se na ten RB strom "správně" podíváš, tak máš půl práce hotový. A to je přesně to OOP - umět se správně podívat na to, co píšeš.
« Poslední změna: 08. 11. 2010, 20:26:27 od Logik »


ondra.novacisko.cz

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #110 kdy: 08. 11. 2010, 20:49:01 »
Chtěl jsem napsat totéž co Logik. OOP člověk využije zejména při zapojování menších celků do větších. A i ty větší celky lze navrhovat jako objekty, aby se daly zapojit do dalších větších celků. Dokonce si myslím, že dobrý OOP návrh vede nejen k rychlejšímu lepení, ale kolikrát i k rychlejšímu kódu, byť se to nemusí na začátek zdát, protože všechno je slepení a tu vlastní práci dělá jen minimum kódu. Jenže třeba díky správnému návrhu to dělá efektivnějí.

Prostě OOP je zejména o zapojování černých krabiček a proto tomu začatečníkovi bych objektový jazyk doporučil. Zrovna třeba Java, kde jsou výsledky hned vidět, napsat UI aplikaci lze za pár hodin a to člověk nemusí vytvářet dokonalé objekty hned na začátku. Ale obecná objektová architektura ho donutí (snad) se nad tím zamyslet a psát to podobně, jako jsou navrženy všechny Javovské knihovny.


iwtu

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #111 kdy: 08. 11. 2010, 21:29:30 »
Ano, ale aj tie mensie celky by mal podla mna vediet programator spravit. nie iba lepit dokopy.

alef0: Nemate uplnych zaciatocnikov a nezacinaju v Jave? Tusim Viliam Bur tak experimentoval s Javou. Vysledok bol, ze lepenim dokazali spravit uzasne veci ale nevedeli utriedit 4 cisla.

Dalej, pokial je mi zname, ludia co maju cosi odprogramovane a chytia do ruky Javu, pisu v nej povacsine lepsi kod ako ti, ktori videli iba Javu.

Osobne poznam vela programatorv C/C++, ktori dostali ponuku na projekt v Jave, vzali ho a dari sa im. Su lepsi ako nativni Javisti povacsine. Ale opacne pripady, velmi, nepoznam... Ludia co zacinali s Javou, vacsinou uz pri Jave ostali a C++, Erlang, Lips su im uplne cudzie. Neviem, mate nejake ine skusenosti? Mne osobne pride lepsie mat skusenosti aj s C aj Java aj Erlang atd... ako iba Java.

Vela ludi obhajuje LISP ako jazyk vhodny na zaciatok... Ono pohlad na data ako celok programu moze byt zaujimavy...

Cely cas, ze kvalitny programator by nemal vediet iba lepit male krabicky, ale aj ich naprogramovat.

Ja si osobne predstavujem kvalitneho programatora/analytika ako cloveka, ktory pozna technologie a vie zvolit tu nalepsiu, z programovacich jazykov zvolit ten spravny (casto krat je velmi vhodna volba Erlang), vedomost o algoritmoch, vymysliat vlastne algoritmy, vediet co nejde za danych podmienok vediet riesit efektivne a tak nejako.

A moje osobne skusenosti vravia, ze Javisti skoncia na Jave a nic okrem nej a C# nic okrem C#, to sa mi vidi s v rozpore s mojou predstavou kvalitneho programatora/analytika.

Programovanie sa nevidi ako masova cinnost. Masova cinnost mi pride sex, prijem potravy a vylucovanie. Tak ako sa nemoze kazdy zivit hudbou, tak podla mna ani programovanim.

Logik... Skus sa pre srandu opytat, kolko ludi naprogramovalo cerveno cierny strom a kolkno z nich by som naprogramovalo za den ;)

Ani medicina nie je podla mna pre kazdeho ani nic (okrem vyssie vymenovanych cinnosti vyplyvajuce zo zivocisnej podstaty cloveka). Nevidim dovod, preco by malo byt programovanie pre masy...

Poznate ludi, ktory zacinali s Javou/C# a vedia schopne aj nieco ine? Ja iba velmi malo vynimiek...

Logik

  • *****
  • 1 049
    • Zobrazit profil
    • E-mail
Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #112 kdy: 08. 11. 2010, 21:44:04 »
iwtu: Ale my nikdo nepopíráme, že kvalitní programátor se nemusí učit takový věci, jako RB strom. Jen že není potřeba, by to dělal hned od začátku. Je to určitě jedna z možných cest, ale rozhodně ne jediná a já osobně nevím, jestli nejlepší.
Osobně si myslím, že ať už člověk začne s OOP, nebo s algoritmizací, tak by měl hodně rychle začít i ten druhej směr - jeden bez druhýho v podstatě nemůže existovat.

Co se týče dobrejch a špatnejch javistů a C++, tak Java je mladá, takže ji uměj mladý ucha, zatimco starý zkušený programátoři se učili v C++. Popř mladý schopný se učili od starejch schopnejch.. zas C++.
Ono to dost často vypadá (na školách), že učit v javě znamená učit jakoby pascal, akorát v javovský syntaxi. A to je blbina. To ale neznamená, že nejde dobře učit v javě.

iwtu

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #113 kdy: 08. 11. 2010, 22:48:05 »
Co se týče dobrejch a špatnejch javistů a C++, tak Java je mladá, takže ji uměj mladý ucha, zatimco starý zkušený programátoři se učili v C++. Popř mladý schopný se učili od starejch schopnejch.. zas C++.
Ono to dost často vypadá (na školách), že učit v javě znamená učit jakoby pascal, akorát v javovský syntaxi. A to je blbina. To ale neznamená, že nejde dobře učit v javě.

Nevravim, ze nejde dobre ucit v Jave. Na jednej strane viem o kopec prasicov v Jave a na druhe viem aj o kopec Ceckarov, ktory sa rychlo naucili Javu a robia v nej lepsi kod ako ti prvy. To je dovod, preco neodporucam zacat s Java/C#, lebo neviem o dobrych (podla mna) programatorov, ktori zacinali Java/C#.

Nikomu nebranim v Jave experimentovat a priniest nejaku novu metodologiu. Ale z mojich doterazsich poznatkov je dost nizka sanca aby takto vznikol kvalitny programator. To je vsetko, co vravim :)

Preto ja osobne neodporucam...

Logik

  • *****
  • 1 049
    • Zobrazit profil
    • E-mail
Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #114 kdy: 08. 11. 2010, 23:06:22 »
Kdo umí C, je dobrej a inteligentní programátor.
Kdo umí javu, je většinou břídil.

Je třeba dodat, že java programátorů oproti C programátorům je v poslední době více
(Cčko se už skoro bohužel neučí) a že existuje i dobrej Java programátor.

Co z toho plyne? IMHO nikoli: "neučte se javu, udělá z vás blbce", ale "javu se naučí i blbec". IMHO je to spíš argument proto, aby se začlo s Javou :-)

nekdo

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #115 kdy: 09. 11. 2010, 01:41:07 »
Budiz flame ...

je lepsi zacit s vysokourovnovym programovanim / nizkourovnovym ... ma cenu zacinat s jazyky "pro vyuku programovani" / nebo s realne pouzitelnymy ??? ... tot vec nazoru.

Podle me ma cenu zacit s tim, co clovek potrebuje nebo chce pouzivat. Praxe je totiz praxe.

Osobne jsem zacinal s C (Podle knihy od Pavla Herouta) a rozhodne nelituju. Kdyz se uci matematika tak se taky zacina se zakladnima operacema, scitani, odcitani, nasobeni a postupuje se k slozitejsim vecem. Clovek tak totiz porad vi oc jde ... Kdyz se neco preskoci (napr. jazyky s GC) clovek se nemusi starat o pamet a tim padem si neuvedomi, ze sprava pameti take neco stoji. Stejne jako ostatni operace - muze pak klidne psat "prvni varianta" == "prvni varianta" misto PRVNI_VARIANTA == PRVNI_VARIANTA ... a nemusi se starat, vzdyt to za nej jazyk vsechno poresi ... 

Trochu mi to pripomelo jednoho "programatora" ve flashi, ktery v nicem jinem neumel a delal webovou aplikaci. O TCP/IP nemel ani paru a vsecho co znal bylo RTAP, Stream a Shared Object ... kouzelne objekty, ktere zajistuji ze objekt na jedne strane je stejny jako objekt na strane druhe .... zkuste takovemu cloveku neco rict o optimalizaci nebo s nim vubec cokoli resit ... jedineho ceho se dockate je halda Adobe terminologie a nic nevyresite.

iwtu

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #116 kdy: 09. 11. 2010, 10:27:08 »
Kdo umí C, je dobrej a inteligentní programátor.
Kdo umí javu, je většinou břídil.

Je třeba dodat, že java programátorů oproti C programátorům je v poslední době více
(Cčko se už skoro bohužel neučí) a že existuje i dobrej Java programátor.

Co z toho plyne? IMHO nikoli: "neučte se javu, udělá z vás blbce", ale "javu se naučí i blbec". IMHO je to spíš argument proto, aby se začlo s Javou :-)
Ako kto to berie takto, tak Java pre neho jeden s najlepsich jazykov (ja osobne by som ho nezamestnal, no kopec firiem ano). Verim, ze  ide o to, ako to clovek berie. Ja osobne od mojich styroch rokov, kde som prvy krat videl PMD, chcem byt programator. Lebo ma bavi mysliet a chcem vediet principy, ako funguje PC atd. Nechcem programovat zfleku magicke veci, ale chcem rozumiet principom a potom podla toho, co treba. Mne osobne pride krajsie programovat nejake API, lebo nad API bezi uz nieco ine, co je obmedzene tym API, teda musi byt API vyoptimalizovane  a mam zmysel tam uvazovat prirodzene. Prirodzene je pre mna, aj usetrit jeden bite ak mam k dispozicii 512B a dost. Mne na tej nizsiej urovni pride myslenie prirodzenejsie. Zas bavi ma aj pisat specifikacie a robit OOP navrh, ale uz podstatne menej to vsetko kodit, pride mi to taka rutinna praca. Ale to su veci specificke pre mna ale viem, ze nie som takto zmyslajuci sam.

Nekdo zacinal s C a nelutuje toho a ver, ze takych ludi je velmi vela ako on. Plus ma podla mna pravdu v tom, ze by na uvod mohlo byt nieco prakticke. Ked chce clovek zistit, ci by bavilo algoritmicky uvazovat atd, ako vhodna volba je napr. Python (pascal je nepouzitelny a clovek sa s nim a jeho strasnou syntaxou uz nestretne) Odstieni co najviac od vsetkych technickych veci, co najviac sa zamera na logiku programu, teda jeho ucenie by malo ist  pomerne rychlo a v praxi sa naozaj vyuziva, lebo sa v nom daju rychlo robit nie uplne trivialne veci. Plus je na druhe spustenie celkom rychly, ked uz je  .pyc. Preto je taky hybrid medzi imperativnych a skriptovacim jazykom... Bruce Eckel casto pise az na Python...

Potom by nebolo na skodu napriklad C, ktore je podstatne jednoduchsie ako C++ a ukazuje veci, ako su. Z toho principialneho hladiska. Ale okrem C by nebol na skodu ani Erlang a podobne jazyky.  Sice uz velmi nebude zapasit s algorimizaciou (tu by mal mal zvadnutu s Pythonu) ale s implementaciou. Co pri pride fajn, lebo si bude isty, ze je chyba s implementaciu a nie v logike programu (ako by si mohol mysliet, keby s tym zacinal rovno).

Ono da sa pokracovat aj zacat s C++, ale bez kvalitnej knihy to bude znacne kontraproduktivne.

Potom moze byt aj kludne Java a bude velmi schopny programator v Jave a mu to pojde rychlo.

Univerzalna odpoved nie je, malo by to byt silno podmieneme tym, o co zaciatocnikovi ide. Ked chce programovat webove stranky, tak PHP a uplne zbytocne mu je tlacit do hlavy nejaku Javu ci C. Na druhej strane, Python tlacit do hlavy nemusi byt na skodu nikdy (posednu vetu som len tak tresol, lebo fakt ma nepride zbytocne s nim zacinat, nenapada ma rychlo preco...)...

Ked chce programovanim co najskor zarabat a ide mu iba o to, nech sa paci, kludne Java, C# a ine masy...

Ked chce rovno programovat nejake hry, tak Game Maker je priam idealna vec pre neho...

Mozno tu boli tendencie hladat univezalnu odpoved, ale myslim si, ze odpoved je silno podmienena tym, co dany clovek chce...

Ivan

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #117 kdy: 26. 11. 2010, 23:24:56 »
Docla obsahlou odpoved o tomhle jsem napsal jsem:

http://forum.root.cz/index.php?topic=1143.0

prispevek od Ivan: « Odpověď #34 kdy: Dnes v 23:10:25 »

Mam pres 15 let zkusenosti s programovanim, ziskal jsem i nekolik oceneni a po tom vsem co znam doporucuji si odpovedet na zakladni otazky "proc chces programovat". jestli kvuli zabave, jdi do C# (desktop) a ASP.NET (web). Checes-li kvuli penezum, ber Javu.

Z DB platforem, chces-li efektivitu a technologicky nejvyspelepsi DB za rozumnou cenu ber Firebird, chces-li byt "in" ber MS SQL Server, chces-li hodne penez a nevadi te donekonecna se s*at se zbyetcnymi problemy jdi do Oracle. Chces-li nejvykonnejdi databazu na obrovske mnoztsvi dat jdi to Teradata.

Jakub

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #118 kdy: 28. 11. 2010, 01:46:19 »
Docla obsahlou odpoved o tomhle jsem napsal jsem:

http://forum.root.cz/index.php?topic=1143.0

prispevek od Ivan: « Odpověď #34 kdy: Dnes v 23:10:25 »

Mam pres 15 let zkusenosti s programovanim, ziskal jsem i nekolik oceneni a po tom vsem co znam doporucuji si odpovedet na zakladni otazky "proc chces programovat". jestli kvuli zabave, jdi do C# (desktop) a ASP.NET (web). Checes-li kvuli penezum, ber Javu.

Z DB platforem, chces-li efektivitu a technologicky nejvyspelepsi DB za rozumnou cenu ber Firebird, chces-li byt "in" ber MS SQL Server, chces-li hodne penez a nevadi te donekonecna se s*at se zbyetcnymi problemy jdi do Oracle. Chces-li nejvykonnejdi databazu na obrovske mnoztsvi dat jdi to Teradata.

No jednou bych se tím i rád živil. Ovšem netrvám na tom.
Chtěl bych ale jít studovat informatiku na VŠ, předpokládám, že mi vyjde Brno MU či ČVUT.
Samozřejmě bych si rád spravil nějaký ten užitečný software, jak pro sebe, tak pro širší veřejnost či pro přítelkyni. Game maker znám a zdá se mi, že hry v něm zabírají hrozně moc místa na disku a berou si velmi mnoho paměti.

Velmi uvažuji, že začnu s C pak přejdu na C++ či C# , podívám se také na Javu a ASP, na tu Javu bych se rád pozdějí zaměřil. Ale nechci vynechat C.
Navíc chci psát kod správně a srozumitelně, tak abych ho za pár let pochopil, kdybych se k němu vrátil.

Kdybyste byl někdo tak hodný a řekl mi jestli a popřípadě kde jste studovali. Také co.

Omlouvám se za svůj pravopis, jsem poměrně unavený.

Encore

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #119 kdy: 28. 11. 2010, 09:24:27 »
Cčko se už skoro bohužel neučí
Jetli myslíte VŠ, tak právě naopak :) Každá kvalitnější škola chce naučit principy a jde od základů výš a výš. Proto se skoro všude setkáte s Assemblerem a Cčkem.