Java nebo C++ pro absolutní začátečníky?

klw

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #75 kdy: 05. 09. 2012, 15:33:47 »
Ondřej Novák: Postavit vedle sebe Javu a C je podle mě naopak žádoucí, protože oba jazyky mají průnik snad jen v syntaxi. Já bych rozhodně neřekl Trabant vs. Audi, ale spíše sportovní vs. nákladní automobil. Co se týče C++, já se zde ohrazuji vůči možnosti psát jak čistě procedurálně, tak objektově (v druhém případě ne úplně ideálním způsobem, napsáno o tom bylo dost), což umožňuje vytvořit hezkého kočkopsa. V praxi ano – výhoda, pro učení nevýhoda. Nováček by si podle mě měl zkusit striktně a názorně jedno a striktně druhé, aby viděl jasný rozdíl, co mu který z obou jazyků přináší za výhody a nevýhody, a aby naučil se myslet oběma způsoby a nebyl přitom ochuzen o žádný z obou světů.


klw

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #76 kdy: 05. 09. 2012, 15:43:08 »
...a samozřejmě zkusit si striktně nízkoúrovňovost a striktně vysokoúrovňovost, ale to je doufám zřejmé.

Viky

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #77 kdy: 05. 09. 2012, 16:44:22 »
Nechci působit příliš staromilecky, ale zatím jsem nepoznal snad nikoho z generace těch, co začínali na C++, Javě atp., kteří by se svými návyky, čistotou kódu a elegantností algoritmů blížili odchovancům Pascalu. Ti, co začínali na FORTRANu 77 blahé paměti, mají naprosto úděsný styl (nicneříkající jména proměnných, dekomposice a faktorace ve stylu "jak to přišlo pod ruku"...), zato častokrát dělají různé zelegantňující vychytávky algoritmů. Programy těch, co začínali C++kem nebo Javou mi připadají šíleně ukecané, vždycky si kladu otázku "pro boha, co může být na řešení takové blbosti tak dlouhého?" Obvykle se ukáže, že vůbec nic, že jen zvolili tak blbý algoritmus a tak blbé datové struktury, že i kdyby se člověk hodně snažil, netrumfnul by to. Ale neříkám, že to je jazykem. Spíš dobou, v níž s programováním začínali, a všeobecným nárůstem hlouposti v IT oborech.
Zkrátka - nechci zevšeobecňovat -, ale pokud jsem poznal někoho fakt dobrého, zatím se pokaždé ukázalo, že mnoho času ve svých začátcích strávil na Pascalu. Ať už před 20 lety nebo před 5 na MFF nebo FJFI třeba, kde na Pascalu v úvodních kursech pořád jedou.
Osobně si pak myslím, že nejlepším jazykem pro někoho, kdo chce do programování opravdu proniknout do hloubky, je Scheme. V něm si může vyzkoušet prakticky všechny možné přístupy k programování, aniž by se pokaždé musel učit novému jazyku a ztrácet čas s věcmi, jež jsou pro tyto účely málo podstatné (jako třeba konkrétní syntax). Přitom je to jazyk jednoduchý, čistý, přehledný, tvárný a není ani příliš těžké v něm napsat překladač sebe sama. Ostatně - že ho používají pro tyto účely na M.I.T. asi taky o něčem svědčí. Ale na střední bych ho asi necpal.

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #78 kdy: 05. 09. 2012, 17:14:05 »
že ho používají pro tyto účely na M.I.T. asi taky o něčem svědčí.

Pokud máš na mysli kurz 6.001 (Structure and Interpretation of Computer Programs) tak nedávno buď přešli na python, nebo o tom hodně vážně uvažovali. Důvod byl ten, že PLT Scheme (dnes Racket language), ve kterým se to učilo, se v praxi i v jiných kurzech používá minimálně.

Citace: aoeu
oba jazyky su relativne komplexne

Z čistě formálního hlediska ... ne. C++ je jeden z nejsložitějších a nejkomplexnějších, Java je relativně jednoduchá - moc konstrukcí nenabízí a de facto Tě nemá co překvapit, i když extrém typu Smalltalk (který má jen 2 operátory) to samozřejmě není. Co je horší je struktura a používání základních funkcí a knihoven.

Citace: aoeu
C++ by u mna vyhralo pretoze je relativne standardizovane

Hm, nechci rejpat, ale nemůžu se zbavit dojmu, že Java o dost je na tom lépe.

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #79 kdy: 05. 09. 2012, 17:33:08 »
Citace: aoeu
C++ by u mna vyhralo pretoze je relativne standardizovane

Hm, nechci rejpat, ale nemůžu se zbavit dojmu, že Java o dost je na tom lépe.

Tohle je o diskuzi. Je lepší, když máme stabilní platformu, kde se standard upravuje jednou za 10 let a to ještě velice střízlivě (zavedení lambda a auto je asi největší revolucí), nebo máme platformu, která se mění několikrát za rok (často vidím update Java RT).


alef0

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #80 kdy: 05. 09. 2012, 17:59:03 »
Update Java RT znamená oprava chýb vo virtualmachine a v špecifickom správaní niektorých metód: API ostáva medzi major verziami stabilné. (Ono sa často pletie Java ako základná knižnica, Java ako syntax jazyka a Java ako virtuálny stroj.)

Úpravy "niekoľkokrát za rok" spadajú do tohto chlievika.

Najväčšie zmeny v syntaxi boli v Jave 5 (rok 2005): generiká, for-eache a milión vecí. Java 6 nepriniesla žiadne zmeny v jazyku: len pribudli nové metódy v základnej knižnici. Ďalšie syntaktické zmeny boli v JDK7 (2011), ale ani po roku nevidím žiadne veľké projekty, ktoré by na to migrovali: všetci sa držia päťkovej syntaxe. A ďalšia megavárka bude v JDK 8 budúceho roku: tam pribudnú lambdy, ale na tie sa čaká už asi tak sto rokov a debaty o nich bežia minimálne 5 rokov.

V porovnaní s C# je to ešte pomerne pomalý dinosaurus.

Rado2

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #81 kdy: 05. 09. 2012, 22:10:18 »
Na strednú školu kde je predpoklad že sa programovaniu bude ďalej venovať tak 1% žiakov stačí hocijaký jazyk, ideálne taký, v ktorom sa na 2 riadky dá niečo vykresliť na obrazovku, čo má nejaký for loop a jednoduchú matematiku, kde sa dá žiakov zaujať a prebudiť záujem o programovanie. Java a C++ je najlepší spôsob, ako tento predmet znechutiť väčšine žiakov.

Čo sa týka tej správy pamäte v C++, robil som v C++ roky, teraz sa motám okolo C# a Javy (android) a skôr teraz mám problém s pamäťou, v C++ som deklaroval class a mohol som ho používať, zásobník sa staral o uvoľňovanie pamäte, existujú smart pointre, nebol problém. Teraz musím všade dávať aj new() na čo občas zabudnem a zbytočne oveľa viac debugujem a odchytávam výnimky. Na ten new sa dá zabudnúť tak, že pri testovaní sa to neprejaví, až u zákazníka a potom nie je sranda to riešiť.
Čo sa týka memory leako, v C občas môže niečo ujsť, v jazykoch s GC niečo uteká stále (aj keď väčšinou len dočasne).

S javou doslova len bastlím podľa skúseností s C# a s pomocou googla bez toho aby som si prečítal o nej čo len riadok, len kvôli novej androidovej hračke, takže ju nemôžem veľmi súdiť, nie je mi sympatická. Musím ale uznať, že C# veľmi šikovný, pár mesiacov v ňom robím biznis aplikácie a pokiaľ nie je problém s viazaním sa na Windows platformu, v tejto oblasti neviem či má konkurenciu (jazyk, .NET, vývojové prostredie). Nevýhodou je ale logicky menej špecializovaných (free) knižníc ako pre C++. A mám obavy, či po pár mesiacoch nezostanem blbý z C++  :'(

alef0

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #82 kdy: 05. 09. 2012, 22:35:25 »
Citace
Teraz musím všade dávať aj new() na čo občas zabudnem a zbytočne oveľa viac debugujem a odchytávam výnimky. Na ten new sa dá zabudnúť tak, že pri testovaní sa to neprejaví, až u zákazníka a potom nie je sranda to riešiť.
Ako sa dá zabudnúť na new, keď to je kompilačná chyba?


aaa

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #83 kdy: 05. 09. 2012, 23:06:30 »
Z tychto dvoch skor Javu, mimo to na proceduralne mozno Pascal.

Dovody su:
-bounds checking - nic nepotrapi novacika viac ako chyba, ktoru ma na riadku 30 ale vdaka malemu polu a prepisovaniu si vlastnej pamate sa prejavi az na riadku 300 len ak sa tam nieco vyvola v nejakom poradi (inak nie).
-pomerne zrozumitelne exception pri pade oznamujuce chybny riadok namiesto nic nehovoriaceho "segmentation fault"
-obmedzuje "prasacke pouzitie" - ono je pekne mat viacnasobnu dedicnost, "public/private dedicnost", pretypovanie prakticky lubovolneho typu na lubovolny iny atd, ale u zaciatocnikov (a mnohokrat nielen u nich) su tieto moznosti len na skodu a vedu k divne navrhnutym programom.

Toto je z mojich vlastnych zazitkov - nehovorim, ze to nejde riesit, ale myslim si, ze zaciatocnik by riesenim stratil kopec casu, ktory by mohol vyuzit na rozumnejsie veci.

Waseihou

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #84 kdy: 06. 09. 2012, 06:09:02 »
Pro prvotní výuku programování by mohlo posloužit i GNU Octave, zvláště někde na gymnáziu které je obecně zaměřené. Ono se totiž daleko víc studentů kteří potom půjdou na VŠ setká s Octave/Matlabem než s "normálním" programováním. Pokud vím tak i takoví strojaři a nebo stavaři mají kurzy matematiky kde se toto používá. Základní programová konstrukce (sekvence, podmínka, cyklus) to má, na obrazovku to také dovede kreslit, IDE se pro to dá taky sehnat. A ani ti kteří půjdou studovat informatiku tomu nejspíše neuniknou, byť pro ně by neměl být problém naučit se základy za večer a pak zplácat cokoliv za pomoci dokumentace. Největší nevýhodou Octave či Matlabu je, že nemá příliš mimoškolní využití - aplikaci či web v tom nenaprogramujete. Na druhou stranu, mají před sebou roky matematiky, fyziky a jiných předmětů, a ze znalosti Octave mohou těžit po celou tu dobu.

NoFlame

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #85 kdy: 06. 09. 2012, 09:08:18 »
Pro prvotní výuku programování by mohlo posloužit i GNU Octave, zvláště někde na gymnáziu které je obecně zaměřené. Ono se totiž daleko víc studentů kteří potom půjdou na VŠ setká s Octave/Matlabem než s "normálním" programováním.

Právě pro lidi u kterých většinou programování nebude hlavním profesním směrem to chce něco, co nemá všelijaká omezení. A to prakticky všechny matematické balíky mají. Není to programovací nástroj a některé (programovací) věci se tam dělají přes ruku. Nejlepší je něco, kde studenti nebudou řešit věci, které řešit nemají. A mají řešit pochopení obecných věcí a naučit se algoritmicky myslet a vyjádřit to kódem. A to byl dříve pascal, dneska to je python.
Někdo potom bude programovat v excelu, někdo v matlabu, někdo si bude scriptovat photoshop - to už se naučí. Začínat rovnou v nějakém matematickém balíku je hloupost.

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #86 kdy: 06. 09. 2012, 18:34:51 »
Tak koukám, že pan učitel si s námi už nepovídá. Škoda, mohli jsme se dostat k tomu, koho, co a proč chce učit. A pak bychom se mohli bavit o tom jak by to bylo nejlepší a mohlo by to vést i k nějakému závěru. Takhle z toho zase nejspíš nic nebude.

iwtu

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #87 kdy: 06. 09. 2012, 19:00:44 »
zacat s C problem neni, lebo C je vcelku priamociary jazyk a kto uvazuje priamociaro, tak mu pride prirodzeny. Samo, treba nieco vediet o tom, ako procesy a celkovo PC funguje.

Java vynucuje OOP, ale koncept OOP podla mna nie je trivialny a nie nutny pri zaciatkoch. premenne/ify/cykly/funkcie su nutne. Teda ak nechce zacat s Haskellom :-)

Pisat v C++ ceckovskym sposobom je prasarna a C++ nie je priamociari jazyk a aj par prvych pohladov, pokial clovek skutocne presne nevie, co ako a preco, tak je taka cierna magia. Mne ako studentovi cierna magia nikdy nerobila dobre.

alef0 je na VS, kde mozno vymysleli prelomovy sposob ako zacat s Javou. Vlastne, on asi vie. Ja som videl zaverecne testy, ktore boli super z obecnej znalosti programovania a algoritmov... Ale on potom informatikov asi uci Javu, tak vie, ako zvladaju Javu a OOP take.

A zalezi mozno aj na tom, ci chcete ucit Javu/C++ alebo programovanie. Ja osobne kedy som mal ucit uvod do programovania, tak vyberiem C, Pascal, Python ... Deti by asi najviac bavil Python, predpokladam. Koncept OOP nepovazujem za nutny a C++ obsahuje pre zaciacnika nesmierne mnozstvo ciernej magie.

Joj, clovek ma romanticku naladu a taka diskusia ho dnes posadi do normalu :D

Rado2

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #88 kdy: 06. 09. 2012, 19:51:02 »
Citace
Teraz musím všade dávať aj new() na čo občas zabudnem a zbytočne oveľa viac debugujem a odchytávam výnimky. Na ten new sa dá zabudnúť tak, že pri testovaní sa to neprejaví, až u zákazníka a potom nie je sranda to riešiť.
Ako sa dá zabudnúť na new, keď to je kompilačná chyba?

ak chcem objekt ako member variable tak to nie je (a nemôže byť) chyba pri kompilácii.

Petros84

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #89 kdy: 06. 09. 2012, 19:56:56 »
Pánové (možná i dámy), děkuji všem za velmi cenné a obohacující příspěvky a omlouvám se za nereakce na některé podněty. Myslím, že napsáno toho bylo vcelku dost a pokud se tato diskuze dá uzavřít, tak ji tím to uzavírám. Co se týče zaměření školy, oboru, využití apod. párkrát se mi tu dostalo odpovědi přímo pro můj konkrétní případ, takže i to bylo pro mne přímosné. Tedy pro ty, kteří se zapojovali píšu info o škole atd. Jedná se o elektro průmku a konkrétné tento problém (C++ vs. Java) pro obor IT. Takže se předpokládá širší znalost a dovednost než u ostatních oborů. OOP by měli začít až ve 3. ročníku. Na mé škole (než nás sloučili) se přešlo z Pascalu na C++, jelikož studenti ve valné většině chodiny na elektro vejšku, kde nám za tuto změnu i děkovali :-) Ale problém je právě ve sloučení, jelikož nejsme nástupnická organizace a musíme se přizpůsobit jejich zvykům. Jejich škola měla zaměření na IT (ovšem pozor jednalo se o integrovanou střední školu).

Takže ještě jednou stručněji:
1) naše škola je přes 100 let elektro průmka - přešlo se z Pascalu na C++
2) jejich škola je za měřená na IT - studenti, kteří nezvládali naši školu šli na jejich - jednalo se o integrovanou sš (dříve učňák)
3) v současnosti jsme oficiálně elektro a IT průmka ovšem podle zvyklostí "jejich" školy

Z výše popsaného možná vyjde jaasná odpověď, že když to děláme nějak a je to minimálně v návznosti na VŠ, proč tak nepokračujeme. Problém je že jsme nenašli dostatečné proti argumenty nové šéfové, která je tvrdohlavá a obhajuje Javu horem spodem :-)
Výsledkem pro v této diskuzi měly být argumenty pro a proti C++ a Java, což se mi podařilo a na závěr ještě jedno děkuji.

Přeji všem pěkné dny :-)