Zdroje ke studiu programování

Zdroje ke studiu programování
« kdy: 12. 04. 2012, 23:21:18 »
Zdravím všechny čtenáře tohohle fóra,

Jsem student IT oboru na jedné z Pražských VŠ, konkrétně ČZU 1. ročník, protože je studium silně teoreticky zaměřený a je docela rozházený rozhodl jsem se že se pokusím dostudovat ale ne za každou cenu a radši se budu více věnovat věcem se kterými na trhu práce spíše uspěji.


projel jsem si jobs.cz nabídky práce pro programátory a mám docela dobrou představu co je žádané a co bych měl umět.
(Rozhodl jsem se naučit se pořádně C/C++ a poté přejít na C# nebo Object C/Cocoa, ale chci umět i alespoň nadstandartně HTML, PHP a CSS)


teď ta hlavní otázka na kterou jsem zatím nikde nenašel odpověď ->  Jaké verze se mám učit?
třeba u HTML jsem nikde v požadavcích nenašel verzi, je mi jasné že 4ka pomalu končí ale 5ka ještě nemá dokončený standardy.
Pak u C/C++ když jsem otevřel učebnice případně www stránky pokaždé jsem našel i u nejzákladnějších programů lehce odlišnou syntaxi (např. C++ - std::cout co mi vyhodí jako vzorovej příklad devC a samotné std co mi vyhodí code:blocks).


možná se ptám zbytečně pro nedostatek znalostí ale hodily by se mi co možná nejaktuálnější zdroje (www i knihy) ze kterých bych měl čerpat abych se neučil zastaralé věci a neškodil si tak.



má někdo k tomuto tématu dobrou radu?

 
« Poslední změna: 13. 04. 2012, 00:02:58 od Petr Krčmář »


eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Zdroje ke studiu programování
« Odpověď #1 kdy: 13. 04. 2012, 07:41:53 »
Začínat jako samouk na C/C++ ... bude to boj :). Jinak C a C++ jsou rozdílné jazyky, raději začni s C, ten jazyk je jednodušší. Až pak se dívej na C++. C++ je jeden z nejsložitějších jazyků, který se v dnešních dobách používá. (Ale práce v něm je podle mne o mnoho příjemnější, oproti C má spoustu věcí, které Ti usnadní život, jen o nich musíš vědět a vědět jak je použít.)

std::cout vs cout neřeš. "std" je tzv. "namespace" (prostor pro jména) a buď můžeš před každé cin, cout, cerr, string ... psát std:: nebo můžeš na začátek souboru napsat "using namespace std;" a už nemusíš. Tohle je jedna z těch věcí, které C++ přidává k Cčku.

Umět nadstandardně PHP, HTML, CSS a ještě k tomu C/C++ a C#? Tak jestli tohle všechno zvládneš sám po večerech během vysokoškolského studia, tak (alespoň v prvních letech) nebudeš mít problém s tím, aby po Tobě firmy pokukovaly. Umět pořádně C++ začíná být u běžných programátorů nadstandard (pokud děláš běžné desktop/web aplikace, tak to nepotřebuješ). Pokud C# myslíš jen jako naučit se jazyk, pak po zvládnutí C++ nebudeš mít problém. Ale znalost jazyka C# Ti bude celkem k ničemu, pokud nebudeš mít přestavu o knihovnách v Microsoft .Net, což je opět celkem rozsáhlé téma. Aby C++ bylo použitelné v praxi, taky musíš mít v hlavě přehled o mnoha knihovnách (alespoň Boost a Qt).

Podle mě si bereš moc do nůše. Nevím, jak je náročné studium informatiky na ČZU (upřímně, ani nevím, co ta zkratka znamená; já jako rodilý Ostravák a obrovský ostravksý patriot studuji samozřejmě v Brně :-D ), ale všechno to, co jsi psal, je dost těžké zvládnout. Vyber si, co bys chtěl v životě dělat - podle toho se rozhodni.

Co se týká "prvního" jazyka, vedou se spory a šíleně dlouhé diskuse. Na internetu se většinou dočteš flame mezi Python a Ruby, javisti říkají že Java, akademici že Assembler, u nás ve firmě většina lidí začínala na Perlu, tak by Ti řekli, že Perl ještě nebyl ničím překonán.

Můj osobní názor je ten, že začít se má jednoduchým jazykem, na kterým je možné demonstrovat principy a mít dobrého učitele (nebo alespoň učebnici) programování a ne jazyka. Např. http://www.htdp.org/ . (Dlouho se podle toho učilo programovat na MIT). Potom teprve něco šaškovat s "běžně používanými technologiemi" - v praxi se často projevuje princip "good enough", což znamená, že to, s čím se běžně setkáš, je strašná sračka a spíš Tě to znechutí (nedávno jsem narazil na neopravený kritický bug v .Netu, reportovaný v roce 2002. Do teď nebyl opravený s oficiálním vyjádřením, že na to naráží málo lidí. Mně trvalo půl dne, než jsem to obešel...)

Re:Zdroje ke studiu programování
« Odpověď #2 kdy: 13. 04. 2012, 09:20:47 »
ČZU je zemědělka :) máme tu It zaměřený až moc na matiku a logiku, celej první semestr jsme měli prakticky jenom logiku a algoritmizace a teď jedeme jenom matiku/logiku a k tomu hrozně moc teorie.

ty základy programování právě nepotřebuji protože ty mi nedělají problém (Algo z 1. semestru nám učitelka vysvětlovala na Cčku).
proto taky chci v C a C++ pokračovat (spíš se zaměřit k C++ protože Objekty :)),
Javu sem k tomu připojil protože jsem si o ní něco málo přečetl a není podle mě tak složitá, spíš než syntaxe se bojim že si budu motat jednotlivý příkazy ze všech jazyků dohromady. A to HTML,...,... podle pracovních nabídek je o to velkej zájem takže aspoň ty základy - pokročilou úroveň bych rád zvládl ale jak už jsem psal spíš se chci zaměřit na C a jeho následovníky.


ale i tak díky za radu že to je nad síly většiny z nás :) Samo ne všechno se chci naučit perfektně, šlo mi spíš o nějakej názor kam se vydat a kde brát co nejaktuálnější informace.

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Zdroje ke studiu programování
« Odpověď #3 kdy: 13. 04. 2012, 09:52:27 »
Toho motání jednotlivých příkazů dohromady se moc bát nemusíš. Nejhorší je to právě v C/C++ nebo Java/Scala, kde si musíš zvyknout na to, že místo printf máš použít std::cin . Vě většině ostatních jazycích nebývá problém.

Nejaktuálnější informace ... s těma je vždy potíž. V praxi se ne vždy používají nejaktuálnější věci (no, ehm, spíš málokdy) a co se učit kvůli nejlepšímu pracovnímu uplatnění je to snad ještě horší. Spíš se změř na to co Tě zajímá a baví než "nejvíce peněz dostávají programátoři v Cobolu, tak se naučím Cobol".

smoofy

  • *****
  • 1 029
    • Zobrazit profil
    • E-mail
Re:Zdroje ke studiu programování
« Odpověď #4 kdy: 13. 04. 2012, 10:55:53 »
Citace
A to HTML,...,... podle pracovních nabídek je o to velkej zájem takže aspoň ty základy - pokročilou úroveň bych rád zvládl ale jak už jsem psal spíš se chci zaměřit na C a jeho následovníky.

Základy HTML dneska umějí děti na ZŠ a není těžké se to naučit za cca týden i se základy PHP, kaskádových stylů etc. a taková znalost hledače multibastličů za oříšky uspokojí a tobě bohatě stačí, pokud se tomu nechceš vyloženě věnovat a chceš získat jen jakýsi "přehled". Samozřejmě nemůžeš od sebe očekávat vývoj profi webů, ale na porozumění kódu s kamarádem googlem při ruce a sem tam nějaká ta úprava určitě. S nadstandartem bez praxe nepočítej, kámoš je webař a je to dost honička být na trhu jednička stejně jako v jakémkoliv oboru. Na druhou stranu je pravda že to, že dneska dělá weby každej posunuje laťku standartu dost nízko takže to asi takovej problém zase nebude.

Co se týče výběru jazyka, tak nejsem programátor a ani jím být nechci. Dělal jsem v Pascalu, Delphi, C, Java etc. a ve všech jsem lama i když něco sbastlim ale orientovat se ve zdrojácích často dokážu bez problému tak úplně gumovej taky nejsem. Momentálně dost používám python, kterej ovšem, jako skriptovací jazyk považuji spíše za geniální kalkulačku. S perlem osobní zkušenost nemám ale lidé co znám a zejména BSD komunita se o něm vyjadřuje podobně jako o microsoftu :). Spíše si ale řekni co chceš vyvíjet a na jaké platformě a podle toho pak vybírej nástroj/jazyk ve kterém budeš dělat. Je trochu nesmysl učit se C# kdýž chceš dělat  v unix-like etc.

Každopádně dělej to a v tom co tě baví, jinak to nemá smysl. Vykašli se na všechny inzeráty typu: "Hledáme člověka co umí všechno. Značka: Motivující platové podmínky" protože ty potom motivují pouze k výměně zaměstnání. Je lepší umět pár věcí velmi dobře až výborně nežli hodně průměrně až slabě.

Co se týká zdrojů tak tady pár co mě napadne:

http://www.cprogramming.com/
http://www.w3schools.com/html/
http://www.pythonchallenge.com/


nevzdelany

Re:Zdroje ke studiu programování
« Odpověď #5 kdy: 13. 04. 2012, 13:19:04 »
Mne kdysi s C strasne pomohl/naucil clanek od pana Šalouna http://melkor.dnp.fmph.uniba.sk/~zenis/prirucky/c/obsah.htm . Tazatel ma zjevne dobre teoreticke znalosti, tak mu staci takovyto kratky uvod a pak uz to je hracka.

NoFlame

Re:Zdroje ke studiu programování
« Odpověď #6 kdy: 13. 04. 2012, 13:42:11 »
1. Nevím vůbec nic o IT studiu na ČZU. Ten kdo ví, ti bude schopen poradit konkrétněji, aby se tvé samostatné úsilí se školou lépe doplňovalo, já ti poradím jenom obecně.
2. Vůbec nevím, co teď kolem programování umíš a jak jsi své vědomosti nabyl, takže předpokládám, že tak nějak programovat umíš a máš nějaké znalosti nějakého jazyka ze střední školy, ale elektroprůmka, že to nebyla.

Velmi obecně - pročetl sis inzeráty, co je žádané? Proč ne. Ale nezapomeň na důležitou věc. V těch inzerátech se to explicitně nepíše, ale rozumí se to implicitně - firmy chtějí lidi, co umí:
1. PROGRAMOVAT a současně
2. programovat v KONKRÉTNÍM JAZYCE, ve kterém zrovna dělají.

Programovat znamená pochopit zadaný problém. Navrhnout pro ten problém řešení na úrovni algoritmů a datových struktur. A zapsat to řešení v programovacím jazyce. Programování je řemeslo, které vyžaduje nějaké nadání, nějakou vlastní píli a nějakého učitele. Tyhle věci se mohou do jisté míry vzájemně nahrazovat, ale jenom do jisté míry.

Znalost jak algoritmizovat problémy by tě snad měli naučit na škole, tohle je pro samouka dost problematická věc. Naučit se konkrétní jazyk se můžeš sám - ale pořád musíš myslet na to, že umět nějaký jazyk je jenom ČÁST tohoto řemesla. A to ta snazší část.
Proto bych ti důrazně doporučil se začít sám učit nějaký vysokoúrovňový jazyk. A čím víc nad ním budou různí "jediní správní programátoři" ohrnovat nos, tím lépe pro tebe. Takže např. Java, C# (obojí je komerčně žádáno), nebo Python (komerčně téměř žádán není, ale na výuku je výborný).
C je nízkoúrovňový jazyk, který vůbec není pro samostudium začátečníkem vhodný. A nenech se přesvědčit tím, že sem určitě pár lidí napíše, že oni to zvládli. Začít jazykem C, je výborný způsob, jak si samostudium znechutit a ztratit se v nízkoúrovňové volnosti, kterou jazyk nabízí. C tě natolik zahltí jinými problémy, že ti nezbude tolik času na to obecné algoritmické přemýšlení.
C++ vychází z C a jak už tu psali - je to nejspíš nejtěžší široce používaný jazyk. Pro tebe to bude znamenat spojení toho horšího ze světů vysoké a nízké úrovně. Na C++ na dlouho zapomeň.

Co se týká webu, tak tam neváhej HTML se uč, protože jeho znalost se bere jako samozřejmost. Pokud tě zajímá verze, tak 4.0, ale uč se z čehokoliv, co není 10 let staré. A až to budeš umět, tak k tomu přidej nějaký jazyk pro web. Klidně PHP. Ale v principu to můžeš spojit i s tím "pořádným" vyšším jazykem, co se budeš učit. S Pythonem bys tak zabil dvě mouchy jednou ranou. Web se dá programovat i v C# (ASP.NET), ale to bych viděl jako zbytečně komplikovanou věc, pokud není programování webů tvůj hlavní zájem. A programovat weby jdou i v Javě, ale tam platí totéž co pro ASP.NET, plus to nebude pro začátečníka tak snadné rozjet.
HTML s důrazem na verzi 5 začni řešit, až budeš dobře umět HMTL 4 + nějaký programovací jazyk.

smoofy

  • *****
  • 1 029
    • Zobrazit profil
    • E-mail
Re:Zdroje ke studiu programování
« Odpověď #7 kdy: 13. 04. 2012, 14:18:02 »
Já bych ještě k NoFlame doplnil že začít s vysokoúrovňovým programováním a s HTML má navíc tu výhodu, že snadno produkuje "osahatelné" věci které jsou použitelné takže se člověk snáze dokope k učení a posunová se dále ve vlastním problému než při řešení nízkoúrovňových dílčích záležitostí které potřeba vyřešit předtím než vůbec začne řešit svoje.

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Zdroje ke studiu programování
« Odpověď #8 kdy: 13. 04. 2012, 14:18:16 »
"Co se týká webu, tak tam neváhej HTML se uč, protože jeho znalost se bere jako samozřejmost."

...

to samé alespoň základy JavaScriptu. (Prosím, neplést s Javou, jedná o dva rozdílné světy a lidi si to často pletou ... na přijímacím pohovoru na Java programátora jsem dostal otázku "a umíte v Javě skriptovat? jako JavaScript?" - kdyby se neptel personalista ale někdo, kdo o tom něco ví, tak bych asi hned odešel)

smoofy

  • *****
  • 1 029
    • Zobrazit profil
    • E-mail
Re:Zdroje ke studiu programování
« Odpověď #9 kdy: 13. 04. 2012, 14:37:54 »
Ono se dá považovat skupina HTML, PHP, CSS, JavaScript asi nejběžněji MySQL za jednotnej celek, kde jedno bez druhého moc nemá smysl a alespoň základy by měl znám každý kdo v IT dělá.

S tím JavaScrptem  to plně chápu. Zrovna nedávno jsem jako neprogramátor vysvětloval člověku, co udělal webový firemní informační systém, že to je něco úplně jiného. Koukal na mně jak vyoraná vrána a nakonec jsem mu zachránil 140 euro, které se chystal vyhodit za jakousi java certifikaci, o které si myslel, že jí má v kapse, i když se nechal přesvědčit až po absolvování první přednášky kurzu běžícího na místní univerzitě.

Re:Zdroje ke studiu programování
« Odpověď #10 kdy: 13. 04. 2012, 16:29:33 »
všem moc díky za rady hlavně příspěvěk od noFlame mi dal dost,


jen nechápu proč se teda na školu učíme C a C++ a ještě nám říkaj že je tím nejlepší začít když vy mi tady radíte až vysokoúrovňový jazyky, na druhou stranu věřim tomu že máte víc zkušeností s praxe než naši učitelé.

(C sem se převážně plánoval naučit samostudiem pomocí příkladů a hotových projektů protože na škole máme opravdu jen základy protože máme nedostatek času).

na střední jsem se učil visual basic (ve VS ne for application) ale ten mě nijak nevzal. Tady jsem zatím pochytil strukturogramy, práci s algoritmy, matematickou logiku a s tím spojený převádění zadání do stylu podle kterého se dá něco napsat. Plus to C a C++.


mimochodem s matikou ani logikou nemám potíže jsem schopen hodně počítat i jen z hlavy bez pomoci papíru nebo počítače (včetně derivací, integrálů apod.)
Každopádně dám na vás a seženu si učebnice Javy, každopádně zkusim si to C++ projet a uvidim třeba mi sedne třeba ne ale je to muj vytyčenej cíl ke kterýmu se chci jednou dostat.

ještě jednou moc dík všem hodně stem i pomohli, doufám že jednou takhle taky někomu pomůžu :)

smoofy

  • *****
  • 1 029
    • Zobrazit profil
    • E-mail
Re:Zdroje ke studiu programování
« Odpověď #11 kdy: 13. 04. 2012, 17:13:37 »
Já myslím že je to spíše myšleno pro úplné začátečníky co namjí ponění o algoritmech, procedurách, funkcích, proměných, konstantách či třídách, ukazatelých a jiných věcech. Pokud už si v něčem dělal, jako že jo tak není problém dělat s čímkoliv. Jen se v jistých jazycích jisté věci vysvětlují lépe bych řekl a v jiných jsou zase téměř nepochopitelné :)
Po nás zase chtěli Javu a já nadával že chci C, asi věděli kde bude dneska trh nejvíce strádat.
Jináč s céčkem mi dost pomohlo na doporučení bývalého kolegy studium zdrojáků k unixovým aplikacím etc. člověk si to může trošku poštelovat pohrát si s tím a vydí jak fungují hotové věci a jak se vlastně tvoří. Výhodou open source je, že je open source :) takovéhohle luxusu se ti na MS platformě téměř nedostane a je to asi nejlepší škola.

NoFlame

Re:Zdroje ke studiu programování
« Odpověď #12 kdy: 13. 04. 2012, 17:21:34 »
Tak já netuším, proč se učíte C/C++, důvodů může být celá řada. Od toho, že na škole není prostor naučit vás více jazyků, tak se musí začínat hned tím produkčním. Ovšem netuším, jak má být profilovaný IT absolvent ČZU, jestli C/C++ skutečně jsou produkční jazyky pro tento typ absolventů.
C se jako první jazyk učí na mnoha elektrofakultách, protože ten jazyk je potřeba na hrátky s HW, ale to asi taky nebude případ ČZU :-) C se učí jako první jazyk na některých fakultách, co se profilují jako elitní - aby hned v prváku měli síto na ty, co nezvládnou abstrakci nějakého algoritmu a současně abstrakci pointerů. Ale to mi k ČZU taky nesedí.
Možná vás učí C/C++, protože tam není dost lidí, kteří umí něco novějšího. Nebo jsou líní předělávat osnovy, když mají něco, podle čeho jedou už 15 let :-)
Ne, fakt nevím.

Jestli se C/C++ ve škole učíte, tak ti holt nic jiného nezbývá, než se ho učit - a může být dobrý nápad se v něm samostudiem zdokonalovat. Bude ovšem otázka, jak moc budou učitelé ochotní se zabývat něčím, co jde za rámec předmětu.

A je velká otázka, jestli když C/C++ musíš, jestli je dobré tříštit síly a učit se současně C/C++ a k tomu HTML (+JS + CSS) a ještě k tomu nějaký vysokoúrovňový jazyk jako Java/C#/Python.
Asi bych se teď soustředil na C/C++ a HTML (+JS + CSS).

Kit

Re:Zdroje ke studiu programování
« Odpověď #13 kdy: 13. 04. 2012, 17:34:35 »
jen nechápu proč se teda na školu učíme C a C++ a ještě nám říkaj že je tím nejlepší začít když vy mi tady radíte až vysokoúrovňový jazyky, na druhou stranu věřim tomu že máte víc zkušeností s praxe než naši učitelé.

Jsou 2 základní přístupy k výuce programování: Od strojového kódu k vysokoúrovňovým jazykům a druhý je od vysokoúrovňových jazyků směrem ke strojovému kódu. Oba přístupy mají své výhody a nevýhody, oba mají své zastánce i odpůrce. Začínat s C++ mi připadá jako začínat zprostředka.

Vysokoúrovňové jazyky umožňují řešit úkoly velmi rychle, motivuje to k dalšímu studiu. Nejlépe asi uvedený Python. Nevýhodou tohoto přístupu je velký odstup od HW, některá řešení mohou být neúnosně pomalá, protože autor nepomyslí na fyzické možnosti počítače. Může to však být i naopak.

Pro nízkoúrovňové jazyky je obvyklá mnohem delší doba vývoje a výsledek nejistý. Očekává se rychlejší zpracování (i řádově), ale nemusí se dostavit vždy. Autor se také může utopit ve složitostech vlastní aplikace a převzetí projektu jiným programátorem bývá často problematické, ne-li nemožné.

Požadavkem doby jsou aplikace rychle vyvíjené a snadno udržovatelné. Ve vyšších jazycích se logické chyby často hledají mnohem lépe. Navíc často nabízí škálování. Nedostatek výkonu se dá snadno nahradit použitím více strojů.

riff

Re:Zdroje ke studiu programování
« Odpověď #14 kdy: 15. 04. 2012, 05:48:00 »
Citace
Rozhodl jsem se naučit se pořádně C/C++ a poté přejít na C# nebo Object C/Cocoa, ale chci umět i alespoň nadstandartně HTML, PHP a CSS)

Podle mě to bereš moc hopem. Základy sice můžeš pochytit během relativně krátké doby, ale zvládnout jazyk včetně celého ekosystému kolem(patterny, frameworky, přidružené technologie, ...) na profi úrovni trvá několik let praxe. C/C++ mi osobně do začátku nepřijde jako nejlepší volba, volil bych něco jednoduššího na pochopení. Zvlášť pokud to chceš míchat dohromady s naprosto odlišně koncipovanými jazyky jako je PHP, tak v tom za chvíli můžeš mít docela bordel. Určitě stojí za zvážení rozhodnout se mezi desktopem a webem a teprve až po zvládnutí jednoho se případně učit druhé. Je lepší ovládat jednu věc pořádně, než umět od všeho něco a mizerně.

Citace
teď ta hlavní otázka na kterou jsem zatím nikde nenašel odpověď ->  Jaké verze se mám učit?
třeba u HTML jsem nikde v požadavcích nenašel verzi, je mi jasné že 4ka pomalu končí ale 5ka ještě nemá dokončený standardy.

Pokud chceš mít jenom základní přehled, tak je to celkem jedno. Pokud se ale chceš webu věnovat na profi úrovni, tak bys měl znát HTML4, XHTML i HTML5. Začni čtyřkou a pak postupně další. V současnosti je nejpoužívanější XHTML. U CSS bys zase měl dokonale znát dvojku a po jejím zvládnutí trojku. No a jak už tady padlo, v moderních webech si moc neškrtneš bez znalosti JavaScriptu. S jmenovaným si vystačíš jako kodér - pokud bys chtěl zároveň dělat i backendy aplikací, tak spolu s PHP(nebo jiný jazyk použitelný na backendu) to chce zvládat i SQL a návrh databáze.

Citace
možná se ptám zbytečně pro nedostatek znalostí ale hodily by se mi co možná nejaktuálnější zdroje (www i knihy) ze kterých bych měl čerpat abych se neučil zastaralé věci a neškodil si tak.

Do začátku sice může pomoct nějaká dobře zpracovaná učebnice/fórum/google, ale osobně dávám přednost přímo dokumentaci, vyhneš se tak různým dezinformacím a zjistíš plno věcí, o kterých se autor ani neobtěžoval zmínit.