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

Waseihou

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #45 kdy: 04. 09. 2012, 18:07:56 »
Hm, nainstalovat python+eric pro windows nemusí být pro každého úplně triviální záležitost. Takže přikládám návod pro win32:

1. stáhněty .msi instalátor pythonu27 z http://www.python.org/download/ (tento odkaz: http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi) a nainstalujte jako výchozí python

2. stáhněte PyQT4 (http://www.riverbankcomputing.co.uk/software/pyqt/download) instalátor pro 2.7 (http://www.riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-Py2.7-x86-gpl-4.9.4-1.exe) a nainstalujte vše

3. stáhněte eric4 (http://eric-ide.python-projects.org/eric-download.html) - viz. http://heanet.dl.sourceforge.net/project/eric-ide/eric4/stable/4.5.6/eric4-4.5.6.zip a rozbalte do nějakého adresáře a poklepejte na install.py a chvíli čekejte než se to nainstaluje

4. V adresáři C:\Python27 je soubor eric4.bat, na ten poklepte a nebo udělejte zástupce na plochu, tím se spustí IDE

5. nakonfigurujte, v podstatě stačí odklepnout, časem prostudujte možnosti UTF-8 pro python2 (situace je o něco horší než v python3, ale dá s v pohodě použí a změňte kódování souborů na UTF-8)

6. Ukončete IDE a spusťe znova, třeba přes zástupce, můžete si pohrát s jeho nastavením aby nevyskakovalo černé okno baťáku.

A máte to spuštěné, včetně konzole python. Nyní si můžete hrát, protože toto je to co studenti uvidí, když poprvé "spustí python".


Waseihou

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #46 kdy: 04. 09. 2012, 18:13:36 »
Zkuste třeba zadat do té konzole: print "Hello, world!"

a jinak ten původní adresář kam jste rozbaloval ten eric4 a pak klepal na install.py můžete nejspíše smazat nebo zabalit, vše potřebné se nakopírovalo do python27. Leda že byste chtěl ten eric4 odinstalovat z python27, pak tam jsou nějaké soubory k tomu vytvořené právě při instalaci. To by ale mělo význam jenom kdybyste si svou intalaci pythonu hýčkal...

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #47 kdy: 04. 09. 2012, 18:46:59 »
Tak nevím, když si tady přečtu některé rady, tak nevím co bych si s tím měl jako počít:
... a postupně do toho zapojuj Cčko, jen ty pointry vynech, pointry jsou něco co i jako vysokoškolskej student IT nesnáším a nikdy nepochopím k čemu to proboha existuje

...tak bych volil C++ nebo samotný C. Nemá smysl zabíhat moc do OOP, hlavně ať vědí co je to pointer a jak se používá. Ze zkušenosti vím, že potom na VŠ není na čem stavět a nebo ty jejich programy nemají žádnou kultůru.

A tak taky považuju za nejlepší radu, která tady zatím zazněla, tuhle:

Opět se budu opakovat - nejdříve je nutné definovat cíl (studijní obor, očekávané uplatnění v praxi, návaznost na další předměty, zvládnutí některých konkrétních technologií) a teprve potom prostředky (osnovy, jazyk, cvičení, ...).

Martin Huněk

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #48 kdy: 04. 09. 2012, 19:06:54 »
Ten pointer pochopitelně jen v případě, že by se programováním měli výhledově zabývat. Rozhodně nemá cenu do nich hustit takové pointery na fce a podobné pokročilejší věci. Ale určitě je nutný, aby si dokázali rozdělit program na jednotlivé funkce a uměli si mezi něma předávat proměné pomocí pointerů a vysvětlit jim, kdy je to lepší předat pointerem a kdy hodnotou (opět pouze pokud se mají programováním zabývat). Pokud se totiž s Cčkem setkají na VŠ tak můžou mít bez znalosti základů koncepce pointerů problém.
Pokud se tím zabývat dál nebudou, tak to cenu nemá (i když to nejspíš uvidí v podobě char*).

neron

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #49 kdy: 04. 09. 2012, 19:38:41 »
Vtipná diskuze. řekl bych, že všichni zapomínají na to, že jde o výuku programování - takže je celkem jedno, jestli v tom či onom jde napsat hra nebo jiný program ale jde přece o základy algoritmizace, o to naučit se "myslet", pochopit základní principy, vědět co je to funkce, procedura, proměnná. Na to se Java hodí výborně, je to staticky typovaný jazyk, má to prvky moderních programovacích jazyků, takže pokud jde jenom o výběr mezi C++ a Javou, není co řešit. C++ s pointerovou aritmetikou, vícenásobnou dědičností a virtuálními metodami bych nechal pro pokročilejší.


DK

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #50 kdy: 04. 09. 2012, 19:46:30 »
neron: ona ani java neni vhodna pro absolutni zacatecniky -> prisvoji si blbe techniky a poveze to s nima dlouho

mozna me nekdo ukamenuje, ale zacal bych na pascalu pro algoritmizaci, pak python (a aspon se nauci strukturovat si kod :) ) a az pak treba tu javu nebo cecko

neron

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #51 kdy: 04. 09. 2012, 20:05:02 »
DK: Nevim sice jako konkretni blbe techniky, ale budiz. Ja bych take radil Pascal, ostatne to je jazyk urceny k vyuce, ale otazka byla, jestli C++ nebo Javu.

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #52 kdy: 04. 09. 2012, 20:07:15 »
zacal bych na pascalu pro algoritmizaci, pak python (a aspon se nauci strukturovat si kod :) ) a az pak treba tu javu nebo cecko

Na střední škole, a to většinou ani tam, kde se učí IT, není IMHO reálné učit 3 a více jazyků.

Martin Huněk

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #53 kdy: 04. 09. 2012, 20:10:56 »
DK: Tak pascal bych už mezi použitelné jazyky neřadil. Kdysi nám sice říkali, že je názornej a pro začátečníky dobře srozumitelnej, ale nikdy mi nepřišlo, že by byl lehčí na pochopení než C ve kterým se dá dobře pracovat i dnes. A to aby se učili velké množství jazyků asi také nebude nejlepší, dle mého názoru je lepší aby se naučili jeden nebo dva jazyky, ale pořádně.

neron: Myslím, že je zbytečný začínat učit OOP a pokud to člověk vynechá, tak v tom výčtu zůstane u C++ jen ten pointer. Bylo by asi lepší začínat u procedurálního přístupu. Přece jenom se studenti prvně zeptají "jak to mám udělat" než "co budu mít za data a jak s něma budu pracovat." Vzhledem k tomu, že C++ vyšlo z Cčka které je procedurální, tak se mi zdá lepší začínat v něm...

Waseihou

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #54 kdy: 04. 09. 2012, 20:31:27 »
Ono také velice záleží na přístupu. Já když jsem byl v 9. třídě tak jsem se zapsal do kroužku programování a pořídil jsem si knihu Jazyk C od Dalibora Kačmáře a tu jsem měl celou přečtenou asi za tři dny a pochopil jsem tak 70% toho co tam bylo (u těch stromů jsem se trochu zasekal), pak jsem ji asi měsíc každý den četl znovu a znovu a dělal si příklady co tam byly v Borland C++ takové to dosové IDE s modrou obrazovkou. Pak se mi podařilo rozjet grafiku, z toho jsem měl tehdy velkou radost protože jsem nevěděl že knihovnu je třeba zatrhnou někde v IDE tak jsem si kvůli tomu vytvořil .bat soubor který to kompiloval s potřebný parametrem (takže jsem se vlastně vytvořil jakýsi makefile, ale to jsem tehdy nevěděl že se tomu tak říká). No a pak hrátky s grafikou a pokus o vymyšlení způsobu jak zobrazit 3D objekt, ale na to už jsem sám nepřišel a muselo to počkat až do doby kdy se mi dostaly do rukou dokumenty o tom jak to naprogramovat, vzorec co jsem tehdy objevil ale umožňoval otáčení hmotného bodu kolem kružnice, a to mi trvalo tři dny přemýšlení než jsem z učebnice s přehledem učiva pro ZŠ a SŠ vymyslel x=r*cos(2*pi*t) a y=r*sin(2*pi*t) a pak po malých to krocích foroval t od 0.0 do 1.0 a po obrazovce obíhal zelený bod kolem červeného středu. A někdy v té době se zbytek třídy dostal právě k cyklům...

Ve své mladické nerozvážnosti jsem byl extremista, a věřil že kód je můj, pokud vznikl mým ťuknutím do klávesnice. A proto pokud jsem chtěl použít cizí kód, tak místo copy-paste jsem ho ručně přepisoval, abych si ho "přivlastnil". Našel se tam kód jednoho týpka který už na tý škole nebyl a v něm byly classy a to jsem taky ručně přepsal aniž bych to plně chápal, a teprve při tom přepisování mi trochu doklaplo, jak to funguje. Tak jsem začal používat classy na členění kódu, hlavní program jsem ale psal vždy do mainu či funkcí a classy používal jen jako pomocné objekty. Dědičnost jsem neřešil, přistupoval jsem k tomu jen jako k lepší struktuře.

Pochopit základy pointerů není naprosto problém, v porovnání s takovými ADT je to brnkačka. Akorát se to musí dobře vysvětlit. To je tak těžké říct že pamět je v podstatě jedno obrovské pole bajtů(...) číslovaných od nula do něco (dnes obvykle 4 miliardy), a pointer je vlastně proměnná ve které je uložen index(číslo) do toho pole bajtů (unsigned char) na místo kde je "něco" uložené, a když se před něj dá hvězdička pak teprve získáme to "něco", s tím že pokud to "něco" má více jak jeden bajt tak se načtou i nějaké další za ním, přesně sizeof(něco)? Každý kdo pochopil co je to pole, tak nutně musí pochopit i pointery, zbytek už je pouze problém pochopení syntaxe, a zde nehraje roli ani tak rozum jako spíš talent na jazyky. Největší chybou při vysvětlování je říct, že pointer "ukazuje na něco" a udělat z něj něco "magického". Dereferovat pointer tedy znamená získat obsah paměti na místě v tom jednom velkém poli jménem pamět na indexu který je v tom pointeru uložen, a dvojitá derefernce pak vezme opět to číslo co se takto získalo a znovu ho použije stejným způsobem a teprve pak se získá to, co tam opravdu je. Opět nic nepochopitelného.

Vůbec kdybych byl učitel a vyučoval C/C++, tak bych alespoň nějaké zjednodušující abstarkce systému na kterém celý program běží zavedl, aby se mohly použít k vysvětlování. Takže třeba pamět je v podstatě velké pole čísel indexovaných od nuly do 4 miliard, ale je jakýmsi způsobem chráněná takže si nemůžeme zapisovat kam chceme jinak program spadne. Ale když deklarujeme proměnnou tak tím počítači mimojiné říkáme, aby nám vyčlenil nějaké místo kam nám povolí ty data zapsat. Každý program má nějaký zásobník, tam se při deklaraci nějaké proměnné bere místo, ze druhé strany roste jakási halda. Proměnné na zásobníku jdou obvykle v paměti po sobě, takže i přes to že je pamět chráněná se nám může povést přepsat si pomocí pointeru něchtěně data. Také to že počítač nemusí mít ty 4GB paměti nevadí, prostě se tváří že je má dokud pamět nedojde a většinou nic stejně tolik paměti nechce. Každý program má jakoby svojich celých 4GB.

V takovém pythonu programátor nejspíše jakousi abstrakci paměti vůbec nepotřebuje znát, protože to jazyk řeší za něj, ale pro pochopení C/C++ je nějaká abstrakce paměti klíčová. Učení se C++ tedy klade větší nároky jak na žáka, tak na učitele, to je bez debat.

TrollWarLord

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #55 kdy: 04. 09. 2012, 21:21:47 »
V skole sa u nas uci asm+C --> C++\+Java --> ruby --> haskell (cize v podstate historia --> sucastnost).
Imho najlepsi pristup

TrollWarLord

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #56 kdy: 04. 09. 2012, 21:22:49 »
ad pointre

Kit

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #57 kdy: 04. 09. 2012, 22:16:21 »
mozna me nekdo ukamenuje, ale zacal bych na pascalu pro algoritmizaci, pak python (a aspon se nauci strukturovat si kod :) ) a az pak treba tu javu nebo cecko

Trochu mi uniká, v čem má Pascal výhodu proti Pythonu v algoritmizaci. Pascal je podle mne jen obstruktivnější a výhodu oproti Pythonu nemá žádnou.

Waseihou

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #58 kdy: 04. 09. 2012, 22:25:52 »
Pascal je už mrtvola, byť to nebyl špatně navržený jazyk. Když se ale dnes někdo naučí Python, tak pokud by to měl být jediný jazyk u kterého zůstane, tak mu to díky všemožným knihovnám nebude k hovnu. Největší nasíračka je tím odsazováním, nekvalitní editor či špatn nastavený editor může dělat problémy. Osobně jsem v programování zastáncem používání tabů, protože jim lze nastavit libovolnou velikost co se zobrazení týče, ale u Pythonu bude třeba udělat výjimku a raději vždy nahrazovat taby vždy mezerami a držet se pep8. Kvalitní textový editor je tedy nutnost.

Pavel

Re:Java nebo C++ pro absolutní začátečníky?
« Odpověď #59 kdy: 05. 09. 2012, 00:16:43 »
DK: Tak pascal bych už mezi použitelné jazyky neřadil. Kdysi nám sice říkali, že je názornej a pro začátečníky dobře srozumitelnej, ale nikdy mi nepřišlo, že by byl lehčí na pochopení než C ve kterým se dá dobře pracovat i dnes. A to aby se učili velké množství jazyků asi také nebude nejlepší, dle mého názoru je lepší aby se naučili jeden nebo dva jazyky, ale pořádně.

neron: Myslím, že je zbytečný začínat učit OOP a pokud to člověk vynechá, tak v tom výčtu zůstane u C++ jen ten pointer. Bylo by asi lepší začínat u procedurálního přístupu. Přece jenom se studenti prvně zeptají "jak to mám udělat" než "co budu mít za data a jak s něma budu pracovat." Vzhledem k tomu, že C++ vyšlo z Cčka které je procedurální, tak se mi zdá lepší začínat v něm...

Ohledně výuky má Pascal jednu velkou výhodu - má jednodušší návrh ohledně práce s proměnnými - předávání proměnné hodnotou nebo referencí. Za mých časů pak další velkou výhodou byla rychlost kompilace a IDE. Samozřejmě i knihovny jsou v Pascalu jednodušší. Cčkové jsou příliš napasované na Unix, což je super pro praxi, ale pro výuku je to horší.

Běžnému středoškoláku klidně stačí BASIC - jde o to, aby pochopili, že počítač je přerostlá rychlá kalkulačka a úlohy, které budou stejně prográmky na 20 řádek typu - výpočet kvadratické rovnice. Kolik z nich se tím bude živit - důležitější je, a to už tu zaznělo - aby existovala koncepce - aby svou znalost programování mohli studenti zužitkovat ještě v dalších cvičeních. Dovedu si představit, že pro hromadu studentů by bylo praktičtější je naučit VBA, Rko nebo Matlab