Úplný nováček se chce naučit programovat

PetrM

Re:Úplný nováček se chce naučit programovat
« Odpověď #120 kdy: 22. 08. 2016, 14:07:35 »
že je něco nejrozšířenější (v nějaké oblasti) neznamená, že je to nejlepší (pro jakýkoliv účel)
Obecná pravda. Ale jak to souvisí s naší diskuzí? OOP je v současném světě hlavní proud programování. Programátoři to potřebují umět a není žádný důvod, proč se bránit OOP jazyku jako vstupnímu jazyku pro začátečníka.
Já píši proti pascalu pro začátečníka hlavně proto, že ten jazyk je mrtvý. Ne proto, že není objektový.

a) Pascal je objektový, a to už od doby Turbo Pascalu. Myslet objektově jsem se učil na průmce na Turbo Vision, jestli ti to něco říká...

b) Pascal je ukecaný. Naučí jej, co je to typ proměnné a jaký je význam, jak strukturovat program,... Třeba u JavaScriptu, kde napíše x = 0 a neví, jestli je v X string nebo číslo, bude zmatený jako Goro před Tokyem.

c) Třída v Pascalu si s sebou nese plno informací, jako jméno, published properties, ... Pomůže mu to uvědomit si, že instance třídy není zadarmo a jakou to má cenu.

d) properties ho naučí, jak se vyhnout globálním proměnným a jak zapouzdřit data. Stejně tak set ho naučí, jak se vyhnout booleovskýmu poli, žeroucímu paměť i bez maskování bitů.

e) Tazatel neuvedl doménu, takže těžko doporučovat konkrétní jazyk. Obecně, nejhorší není zvládnout syntaxi jazyka, tu máš zvládnutou za těch 21 dní, jak slibují příručky. Knihovny taky nejsou problém, ty jsou v nápovědě, stačí matně vědět, co hledáš. Ale jde o to, naučit se myslet a naučit se algoritmy. S Pascalem dosáhne na hodně literatury, původně určené pro Turbo Pascal a Delphi (mj. hodně používaný ve školství před Javou).

umět víc jazyků se IMHO obecně považuje za dobrou věc
A zase - obecná pravda, ale co s tím jako? Když jste se začal učit první cizí jazyk, tak to předpokládám byla latina, protože umět více jazyků je dobré, takže směle do toho. Anebo ne? Anebo vaši rodiče a učitelé nechtěli, abyste tříštil síly a první cizí jazyk jste se naučil takový, co má použití v reálném světě (např. angličtina, němčina)? Asi to druhé co?
Necháte své dítě prvně naučit latině, protože se to tak dříve dělalo a ti lidi fakt byli vzdělanci, nebo ho dáte prvně na angličtinu?

První jazyk je mateřský. Takže by se měl naučit prvně "mateřský jazyk uživatele" - skriptovat v shellu. Ušetří mu to hodně práce a nenásilně to tlačí  do algoritmickýho myšlení. A naučí se používat příkazovou řádku, kompilovat ze shellu, napsat makefile,... To se vždycky hodí, pokud nechce být na úrovni Javamana.

jsou lidi, co se k programování dostanou od elektroniky, ti můžou mít docela dobrou představu jak funguje počítač a C tak není úplně špatná volba
Mezi běžnými klopnými obvody, které může ovládat 16letý kluk a hardwarem se kterým pracuje C je OBROVSKÝ rozdíl.
I kdyby ten kluk měl dobrou představu, jak funguje pokročilá elektronika používaná v počítačích, tak pořád se bude mnohem snadněji učit programování v jazyku jako je python, nebo java, nebo pascal. Takový velmi pokročilý elektronik by v C pouze nebyl tolik ztracen - ale v programování jako takovém, by mu to nic neusnadnilo.
C je dobrý jazyk pro učitele. C je dobrý jazyk pro programátory, kteří něco umí a chtějí jít více do hloubky. Ale proboha, dejte si mokrý ručník na hlavu, pokud máte pocit, že komplikovanost a nízkoúrovňovost céčka někomu pomůže snáze začít programovat!
C je na embedded aplikace nejrozšířenější. C je nutnost. Ale neznamená to, že je nejlepší. Kdybych si jako embeďák mohl vybrat, tak bych na něm hodně věcí změnil... A pár věcí bych obšlehl i z "mrtvýho" Pascalu... Čím víc jazyků poznávám, tím víc toho na Cčku postrádám.

Ale tak, jak to popisuje K&R (http://knihy.cpress.cz/programovaci-jazyk-c.html) je to celkem stravitelný.

A nepodceňoval bych -náctiletý, s Basicem jsem začínal v 10 letech na Spectru v kroužku (pak odbočka k ASM Z80, tak v těch 14), potom ten Turbo Pascal (v 16), Delphi, potom C na embedded věci a pak už to šlo samo. Spíš jde o to, jaký k tomu má vztah, protože pokud si zvolí tuhle cestu, tak to budou tisíce hodin dřiny, než bude použitelný.


Re:Úplný nováček se chce naučit programovat
« Odpověď #121 kdy: 22. 08. 2016, 14:19:39 »
Javascript na zaciatok? To asi nee, chceme kvalitneho programatora a nie patlala. Zacinat s niecim takymto mi nepride ako vhodna volba. Ked tak ten pascal alebo Cecko

Nezlobte se na mě, ale přesně toto říkají lidé, kteří mají dojem, že JavaScriptem vládnou nebo v něm "umí programovat". Ale když přijde na věc, tak je potrápí i "this", takže bych to odsuzování krotil. JavaScript je velmi ale velmi se vyvíjející se jazyk. A pokud má někdo pocit, že to není "plnohodnotný jazyk", tak ať si v něm zkusí napsat něco většího a uvidí. ;) Nebo stačí kouknout na ES6.

Jinak neříkám, že je to nejlepší volba, to záleží na představách tazatele, ALE IMHO je to jedna z těch lepších voleb. Céčko je pro SAMOUKA bez vedení celkem... šílená volba... neříkám, že je to nemožné, ale mohlo by to odradit. :)

Jinak pokud tazatel funguje na Linuxu, tak bych možná i zauvažoval nad Perlem. Perl 5 hezky ukazuje, jak ten jazyk hezky dozrál.

TVL

Re:Úplný nováček se chce naučit programovat
« Odpověď #122 kdy: 22. 08. 2016, 14:33:49 »
... i se s ním dá něco udělat v reálném světě?

cize s Ceckom sa neda nic urobit v realnom svete? Ak statistika neklame, tak je to 2. najpouzivanejsi jazyk. a da sa s nim urobit vela veci.

To jsem nepsal, to je tvoje chybná interpretace. Pokud ti to nedocvaklo doteď, tak tedy:

Pascal - vhodný pro výuku, ale v reálném světě je mrtvý. Tedy se s ním nedá něco dělat v reálném světě. Ano těším se, že mi teď někdo napíše 17 dožívajících projektů v některém z nástupců pascalu, ale to na věci nic nemění. Pokud někam přijdu a řeknu, že umím pascal, tak prostě jako odpověď uslyším - tak se nauč něco jiného.

C - velmi použitelný v reálném světě, ale nevhodný k výuce.

TVL

Re:Úplný nováček se chce naučit programovat
« Odpověď #123 kdy: 22. 08. 2016, 14:39:31 »
Ansi C je celkom vpohode, az C++ pridava komplexnost. C-cko som sa ucil podla knizky K&R tam je to jednoducho vysvetlene https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628 , Herout to moc komplikuje. Pointre su jednoduchy koncept, len sa ich netreba bat. Tak isto manualne alokovanie a dealokovanie pamate.

Vy jste se tu sešli dneska teda...
Pointery jsou jednoduchý koncept - nepochybně. Ale pro někoho, kdo je už dobře umí, kdo je už dobře pochopil a zvládl jejich úskalí. Manuální práce s pamětí taktéž. Přesně tohle jsou věci, ve kterých dělají občas chyby i zkušení profíci.
A vy to chcete doporučovat začátečníkovi, který je navíc sám, takže mu nikdo neřekne - hele tady se podívej, tady to funguje jinak, než si myslíš? 16letý nováček bude mít fakt co dělat zvládat koncept programování jako takový - tak proč ho nutit velmi složitě dělat věci, které jiné jazyky umí "zadarmo"? Jaký to má smysl?
A asi posedmé opakuji - dotaz NEklade učitel, jehož cílem je zjistit, kdo je velmi nadaný a kdo méně.

Od toho je ta knizka, ktoru som dal do linku. Osobne som zacinal v basicu na pmd 85 v 6-tich rokoch. To bolo najjednoduchsie stacilo zapnut pocitac a nebolo treba riesit uskalia spustania vykonatlenych suborov. Odbremenilo to zaciatocnika od konceptu operacneho systemu a hned to islo.

To pořád nic nemění na tom, že C je komplikovaný jazyk.
K&R je skvělá kniha, ale není a nikdy to nebyla učebnice programování pro začátečníka, natož samouka začátečníka. Jistě v historii bylo mnoho nadaných hlav, které se naučili ledacos - ale to neznamená, že budeme někomu radit jednu z nejtěžších cest, protože někdo ji v minulosti zvládl (a zapomněli jsme že hodně ji taky nezvládlo).

v

Re:Úplný nováček se chce naučit programovat
« Odpověď #124 kdy: 22. 08. 2016, 14:42:34 »
To pořád nic nemění na tom, že C je komplikovaný jazyk.
[citation needed]


ehmmm

Re:Úplný nováček se chce naučit programovat
« Odpověď #125 kdy: 22. 08. 2016, 14:56:28 »
Cele to cist nebudu, jenom muj nazor a letmy komentar k tomu, co jsem zde zahlednul.

Pokud Pascalem myslime v soucasne dobe Delphi nebo Lazarus, tak at si to klidne zkusi.
Neublizi mu to.
Naklika si nejakou aplikaci s tlacitky a labely a bude mit dost brzo prvni uspech.
(Jedina nevyhoda je, ze proti snad vsem ostatnim jazykum je nejukecanejsi, Javu neznam.)

Jak tu nekdo pise, Javascript vubec neni spatny jazyk.
Pro zacatenika je dobre, ze to muze mastit v notepadu a zkouset ve www prohlizeci. Proc ne.

Ted me nekamenujte, ale dost podobny Javascriptu mi prijde Python.
Kdyby si vybral ten, tak by mu to take neublizilo.
I kdyz podle me, az clovek, ktery si prosel jinymi hroznymi jazyky, teprve oceni, jak to je elegantni jazyk.

C? Ja nevim. Podle me to pro zacatecnika neni.
Pointery, pole, pointer na pole pointeru...
Ja mel to stesti, ze me to potkalo zhruba ve stejny cas jako assembler, takze to do sebe docela zapadalo.
Ale pro zacatecnika, pokud nechce sve zacatky absolvovat s nejakym Arduinem, asi ne.

I kdyz ty pointery jsou i v Pascalu, ale tam jsem si dost dlouho vydrzel hrat bez nich.
On z toho ten Javascript vlastne nevychazi uplne spatne.

A pak samozrejme klasika vsech klasik, na kterou se zapomina:

do_zdi
znamena
  dokud nebude zed
    krok
  konec
konec

dokola
znamena
  opakuj 4 krat
    do_zdi
    vlevovbok
  konec
konec

čumil

Re:Úplný nováček se chce naučit programovat
« Odpověď #126 kdy: 22. 08. 2016, 15:07:30 »
Jak tu nekdo pise, Javascript vubec neni spatny jazyk.
Pro zacatenika je dobre, ze to muze mastit v notepadu a zkouset ve www prohlizeci. Proc ne.
+1

Pro začátečníka ještě lepší než python řekl bych.

čumil

Re:Úplný nováček se chce naučit programovat
« Odpověď #127 kdy: 22. 08. 2016, 15:11:54 »
Javascript na zaciatok? To asi nee, chceme kvalitneho programatora a nie patlala. Zacinat s niecim takymto mi nepride ako vhodna volba. Ked tak ten pascal alebo Cecko
Nezlobte se na mě, ale přesně toto říkají lidé, kteří mají dojem, že JavaScriptem vládnou nebo v něm "umí programovat". Ale když přijde na věc, tak je potrápí i "this", takže bych to odsuzování krotil. JavaScript je velmi ale velmi se vyvíjející se jazyk. A pokud má někdo pocit, že to není "plnohodnotný jazyk", tak ať si v něm zkusí napsat něco většího a uvidí. ;) Nebo stačí kouknout na ES6.
To říkají i lidé kteří v něm neumí dělat vůbec. Ostatně, plno JS developerů ani nepochopilo (nechtělo se obtěžovat) systém prototypů a proto v nový verzi JS je syntaktickej cukr pro dělání tříd (pod kapotou prototypů).

Hanit JS rovná se hanit Self a hanit Self rovná se hanit Smalltalk ...

gl

Re:Úplný nováček se chce naučit programovat
« Odpověď #128 kdy: 22. 08. 2016, 15:14:43 »
To pořád nic nemění na tom, že C je komplikovaný jazyk.
[citation needed]

Jako citaci bych použil Rosetta Code. Srovnejte si délky programů v jednotlivých jazycích. C je jednoduchý jazyk, ale produktivita práce v něm je nízká a hrozí těžko odhalitelné chyby. Pro začátečníka je příjemné, když s malým úsilím může napsat program dělající složité věci. To mu C nedovolí.

TVL

Re:Úplný nováček se chce naučit programovat
« Odpověď #129 kdy: 22. 08. 2016, 15:21:43 »
co se zamyslet na vztahem mezi strukturovaným programování a objektovým, C a C++, Pascalem (BTW - má ukazatele) a Object Pascalem?
Kam míříte?

a nepodceňujte šestnáctileté kluky, když uvážím, že v sedmnácti na SŠ jsem se učil programovat v assembleru a nadšenci bývaji napřed před školní výukou
1. Ten kluk asi na elektroprůmyslovce nebude, když v 16 letech ještě neprogramuje ve škole a chce se to učit sám.
2. I kdyby to byl HW bůh, tak to pořád znamená, že pro něj C bude méně těžké. Nebude to znamenat, že bude lehčí, než jiné jazyky.

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Úplný nováček se chce naučit programovat
« Odpověď #130 kdy: 22. 08. 2016, 15:25:39 »
C je složitý jazyk? To jako opravdu? Protože pointery? Protože malloc? Nebo proč? Jako úplný začátečník to používat nemusí, v první řadě je třeba probudit v sobě algoritmizační já. Pokud ho nemá, nemá cenu pokračovat. Pokud ho má, rozhodne se časem sám, co chce. Osobně si myslím, že 16 je cca ten věk, kdy je mozek v ideálním stavu pro učení se složitějším věcem, v ideálním případě už to chtělo mít základy.
Osobně bych se v úplném začátku vyhnul OOP, ale ne proto, že se nehodí, ani proto, že ho osobně nemám rád, ale spíš proto, že ať udělá cokoliv, bude to špatně a to ho odradí. Buď to bude zbytečně moc OOP, nebo málo OOP, někdo bude tvrdit, že má používat singletony, někdo bude tvrdit, že je to špatný, někdo si na dědičnosti ulítítává, někdo se jí vyhýbá... v tomhle ohledu je OOP tragédie. Ze skupiny 100 OOP programátorů si totiž každej myslí, že to dělá nejlíp a kolem je 99 debilů. (Ne)zaujatý pozorovatel potom vidí 100 debilů a myslí si o programátorech svoje.
Tomu všemu se v C vyhne, naučí se algoritmizovat, naučí se používat cykly a když bude chtít, může, ale nemusí se vrhnout na pointery, práci s pamětí a podobně, čímž se lehce dostane i k HW, což není na škodu. Ale jinak může klidně i ten Pascal.
Já začínal někdy ve 12ti s
Kód: [Vybrat]
10 PRINT "Pepa je debil"
20 GOTO 10
, postupně jsem to rozšiřoval na první textový hry, kolem 16ti jsem dospěl k assembleru, protože grafika v ničem jiným rychle dělat nešla...

balki

Re:Úplný nováček se chce naučit programovat
« Odpověď #131 kdy: 22. 08. 2016, 15:31:29 »
Javascript na zaciatok? To asi nee, chceme kvalitneho programatora a nie patlala. Zacinat s niecim takymto mi nepride ako vhodna volba. Ked tak ten pascal alebo Cecko
Nezlobte se na mě, ale přesně toto říkají lidé, kteří mají dojem, že JavaScriptem vládnou nebo v něm "umí programovat". Ale když přijde na věc, tak je potrápí i "this", takže bych to odsuzování krotil. JavaScript je velmi ale velmi se vyvíjející se jazyk. A pokud má někdo pocit, že to není "plnohodnotný jazyk", tak ať si v něm zkusí napsat něco většího a uvidí. ;) Nebo stačí kouknout na ES6.
To říkají i lidé kteří v něm neumí dělat vůbec. Ostatně, plno JS developerů ani nepochopilo (nechtělo se obtěžovat) systém prototypů a proto v nový verzi JS je syntaktickej cukr pro dělání tříd (pod kapotou prototypů).

Hanit JS rovná se hanit Self a hanit Self rovná se hanit Smalltalk ...

Nerovna sa to, smaltalk (respektive self) nie je az tak nekonzistentny vo svojom spravani ako javascript:
https://www.youtube.com/watch?v=wjYlw_VtPtw

Plus javascript sa tazko debuguje, niekedy kvoli chybe zhuci na uplne inom mieste, a clovek moze dohladavat, kde to bolo. Jedina vyhoda je, ze je v kazdom browseri. Ale ako zaciatocnika by ma nekonzistentne spravanie prave mylilo.

gl

Re:Úplný nováček se chce naučit programovat
« Odpověď #132 kdy: 22. 08. 2016, 15:35:05 »
Plus javascript sa tazko debuguje, niekedy kvoli chybe zhuci na uplne inom mieste, a clovek moze dohladavat, kde to bolo. Jedina vyhoda je, ze je v kazdom browseri. Ale ako zaciatocnika by ma nekonzistentne spravanie prave mylilo.

Při pádu to vypíše stack trace. Z toho se to dá dohledat snadno.

gl

Re:Úplný nováček se chce naučit programovat
« Odpověď #133 kdy: 22. 08. 2016, 15:39:49 »
Osobně bych se v úplném začátku vyhnul OOP, ale ne proto, že se nehodí, ani proto, že ho osobně nemám rád, ale spíš proto, že ať udělá cokoliv, bude to špatně a to ho odradí. Buď to bude zbytečně moc OOP, nebo málo OOP, někdo bude tvrdit, že má používat singletony, někdo bude tvrdit, že je to špatný, někdo si na dědičnosti ulítítává, někdo se jí vyhýbá... v tomhle ohledu je OOP tragédie. Ze skupiny 100 OOP programátorů si totiž každej myslí, že to dělá nejlíp a kolem je 99 debilů. (Ne)zaujatý pozorovatel potom vidí 100 debilů a myslí si o programátorech svoje.

Líp bych to nenapsal.

Ivan Nový

Re:Úplný nováček se chce naučit programovat
« Odpověď #134 kdy: 22. 08. 2016, 15:40:57 »
Cele to cist nebudu, jenom muj nazor a letmy komentar k tomu, co jsem zde zahlednul.

...

Interaktivní Python v prohlížeči s grafickým výstupem s lekcemi

https://trinket.io/
https://codepen.io/#