Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Začátky programování

Belbas (362)|24.7.2009 19:55
Zdravím
Chci se začít věnovat programování. Po prázdninách jdu do devítky, a po základce chci na elektro a nevím jestli na ZŠ nějaký programování bude tak bych se chtěl trochu předpřipravit. Vyhlídl jsem si knížku C++ bez předchozích znalostí od Jeffa Kenta.

http://www.kosmas.cz/knihy/147992/c-bez-predchozich-znalosti/

Prosím ohodnoťte tuto knihu i jazyk, případně poradtě pro začátečníka lepší.
Děkuji všem
mech13 (5526)|24.7.2009 20:02
v C++ bych rozhodne nezacinal.

na zacatek si vem obycejny C, python nebo pascal

knihy na nauceni jazyka bych doporucil od herouta.

co se zacatku tyka, tak je ti na nic umet nejaky jazyk nebo 30 jazyku, to co je podstatne je naucit se algoritmizovat - o nic jineho nejde, pokud ti to nepujde do hlavy jsi ztracen a nema cenu pokracovat, pokud to zvladnes tak ti bude uplne jedno v jakem jazyku zrovna fungujes, je to jen o syntaxi
Belbas (362)|24.7.2009 20:04
Aha ok a co říkáte na Javu, jaká je na začátky?
mech13 (5526)|24.7.2009 20:13
tou bych nezacinal uz vubec, imho na zacatek horsi nez C++

vsechno musis mit v package a tridach... na zacatek imho fakt nee...

EDIT: z tohoto pohledu je idealni python - umi vsechno a muzes delat jen to co zrovna potrebujes. do niceho te nenuti

"K význačným vlastnostem jazyka Python patří jeho jednoduchost z hlediska učení. Bývá dokonce považován za jeden z nejvhodnějších programovacích jazyků pro začátečníky."
http://cs.wikipedia.org/wiki/Python
xmarek (1676)|24.7.2009 20:18
[quote=Belbas;274159]Aha ok a co říkáte na Javu, jaká je na začátky?[/quote]Java dnes narostla do obludných rozměrů a bez jasného cíle se v ní můžete lehce utopit. Spíš bych doporučoval Delphi, tj. PASCAL. Jinak knihy Herouta (Java) jsou velmi dobré na učení, i když kniha http://knihy.abz.cz/prodej/java-graficke-uzivatelske-prostredi-a-cestina-1 už je mimo mísu a kniha http://knihy.abz.cz/prodej/java-a-xml-pro-javu-5-i-6 je dobrý doplněk pro lidi co už o XML něco vědí.

Dopl.: http://knihy.abz.cz/obchod/autor-herout-pavel-herout Nejsem si, ale vědom toho, že by Herout publikoval jiné knihy než v C a Javě.
Belbas (362)|24.7.2009 20:29
[quote=xmarek;274163]Java dnes narostla do obludných rozměrů a bez jasného cíle se v ní můžete lehce utopit. Spíš bych doporučoval Delphi, tj. PASCAL. Jinak knihy Herouta (Java) jsou velmi dobré na učení, i když kniha http://knihy.abz.cz/prodej/java-graficke-uzivatelske-prostredi-a-cestina-1 už je mimo mísu a kniha http://knihy.abz.cz/prodej/java-a-xml-pro-javu-5-i-6 je dobrý doplněk pro lidi co už o XML něco vědí.[/quote]

OK děkuji takže Python nebo Pascal. Jen jsem se chtěl zeptat, zatím jsem od pana herouta viděl jen knihy o Javě pokud píše i o jiných jazycích, dali by jste sem prosím odkaz ?
mech13 (5526)|24.7.2009 20:33
do zacatku dulezita otazka: jak jsi na tom s anglictinou?
Belbas (362)|24.7.2009 20:37
No do loňského roku jsem měli blbou učitelku která nás nic nenaučila, ale tento rok jsem dostali lepší a angličtina mně začala docela bavit. Jinak se často dívám na filmy v angličtině s ČR titulkama, plynule ještě nemluvím...
xmarek (1676)|24.7.2009 20:42
Osobně si myslím, že pokud má nějaké základy tak technickou angličtinu, která je zapotřebí, se slovníkem hravě zvládne. ;)
Belbas (362)|24.7.2009 20:56
[quote=xmarek;274175]Osobně si myslím, že pokud má nějaké základy tak technickou angličtinu, která je zapotřebí, se slovníkem hravě zvládne. ;)[/quote]

Tak co ještě nějaké návrhy na nějakou tu knížku ?
mstejska (2912)|24.7.2009 20:57
Pro čisté programování Javu, C++, C#. Pythonem bych asi nezačínal, Na začátku se musíš naučit konvence, pak algorimizovat (tj přemýšlet jak co udělat, tak abys to v daném jazyce "vysvětlil" počítači.
Tohle je můj názor.
Belbas (362)|24.7.2009 20:58
Tak jeden říká Javu, C ,C++ ne. Radši Python. Druhej přesnej opak tak co si potom má člověk vybrat ? :D
mstejska (2912)|24.7.2009 21:06
Pokud pouze jedno tak Javu. Jako vývojové prostředí eclipse a projít si javové tutorialy přímo na webu. (třeba přímo od sunu)
xmarek (1676)|24.7.2009 21:10
[quote=Belbas;274177]Tak co ještě nějaké návrhy na nějakou tu knížku ?[/quote]Odkaz na knihy od Herouta jsem již uvedl výše. Takže znovu: http://knihy.abz.cz/obchod/autor-herout-pavel-herout Už jsem taky uvedl, že si nejsem vědom toho, že by Herout napsal jinou knihu než v C a Javě. Jelikož ostatní jazyky (bohužel dělám v Javě :D) nedělám tak se v jiné literatuře neorientuji. Jinak o Javě existuje i na internetu obrovské množství knih (od Algoritmizace až po ty největší technologie (frameworky). např. http://java.sun.com/docs/books/tutorial/, ale dopředu Vás před čtením takové literatury varuji. :D

Dopl. Hlavně ne Eclipse. Ta doba, kdy bylo toto prostředí vhodné pro výuku je ta tam. To spíš Netbeans. Dostupné na http://www.netbeans.org/
mech13 (5526)|24.7.2009 21:57
a ja bych dozacatku zase poradil neco bez IDE, pekne textak a kompilovat z command line. kdyz nekdo poprve spusti IDE a nema predstavu o programovani, tak je z toho vedle a pak je zvykly ze toho IDE udela spoustu za neho a je zmateny kdyz mu IDE chybi...

javou bych rozhodne nezacinal, je docela vysokourovnova uz v zakladu a ucit se v tom zacatky...

C# ma skvele IDE (M$ visual studio), ale je taky docela vysokourovnovy

python je imho vhodny proto, ze se v nem daji snadno delat uplne zaklady, stejne tak pozdej prejit na tridy a jmene prostory. je pravda ze dava programatorovi hodne volnosti, takze muze pochytit spatne zvyky... ostatne python ma co nejvic usnadnovat praci lineho programatora...

taky do zacatku nemusi byt spatny cisty C - s kompilatorem nastavenym na pedantic a wall
optim (391)|24.7.2009 22:06
Abys to nemel tak jednoduche, tak ja rikam Pascal. Ten je primo urcenej k vyuce programovani, mel by te naucit "dobrym navykum", co se tyce psani kodu, a je to proceduralni jazyk, takze nema zadne objekty a jine veci, ktere v zacatcich nejsou potreba a jen matou. Prvni jazyk ma imho slouzit hlavne k tomu, aby jsi se naucil spravne algoritmizovat - tzn. ma byt jednoduchy a "hlidat te", aby jsi se mohl soustredit prave na tu algoritmizaci a nemusel porad resit, "proc to ku*va furt pada". To by se imho mel tykat i vyber vhodne literatury - znat syntaxi je potreba, to jiste, ale tu neni problem najit na Internetu. Kdyz uz kupovat knizku, tak nejakou, ktera te nauci zaklady programovani - co je to slozitost, vyhledavani, trideni, prohledavani (BFS, DFS), rekurze a tak.

Edit: Imho je porad dost pravdepodobne, ze na te stredni skole budou vyucovat programovani prave v Pascalu.
Zpjevy (92)|24.7.2009 22:38
chodím na gympl, už dva roky máme programování.. vyučuje se v pascalu, ale můžu říct, že za ty dva roky jsem si osvojil pouze pár příkazů, schopnost samostatného tvoření je na bodu mrazu... víceméně je to učitelem (všichni s tím mají problémy), takže radím nespoléhat na školu, pokud chce člověk umět programovat, tak se tomu musí věnovat samostatně
michal.kolesa (357)|24.7.2009 23:32
[quote=Belbas;274155]Zdravím
Chci se začít věnovat programování. Po prázdninách jdu do devítky, a po základce chci na elektro a nevím jestli na ZŠ nějaký programování bude tak bych se chtěl trochu předpřipravit. Vyhlídl jsem si knížku C++ bez předchozích znalostí od Jeffa Kenta.

http://www.kosmas.cz/knihy/147992/c-bez-predchozich-znalosti/

Prosím ohodnoťte tuto knihu i jazyk, případně poradtě pro začátečníka lepší.
Děkuji všem[/quote]

Jaké programy chceš psát ?
Nějaké "výpočtové" utility (např. http://strojarka.zde.cz) nebo hry, texťáky, ...
Belbas (362)|25.7.2009 12:54
[quote=michal.kolesa;274231]Jaké programy chceš psát ?
Nějaké "výpočtové" utility (např. http://strojarka.zde.cz) nebo hry, texťáky, ...[/quote]

Vůbec nevím prostě bych se chtěl naučit nějaký základy, v případě až příjdu na školu ať nejsem jak uplná guma.
michal.kolesa (357)|25.7.2009 13:05
jaké základy ?
Belbas (362)|25.7.2009 17:02
Nevim, jak jsem říkal s programováním mám minimální zkušenosti...
bhujanga (62)|25.7.2009 18:30
Suhlasim s uzivatelom mech13:

[quote=mech13;274196]a ja bych dozacatku zase poradil neco bez IDE, pekne textak a kompilovat z command line. kdyz nekdo poprve spusti IDE a nema predstavu o programovani, tak je z toho vedle a pak je zvykly ze toho IDE udela spoustu za neho a je zmateny kdyz mu IDE chybi...[/quote]

a suhlasim tiez s uzivatelom optim:

[quote=optim;274201]... Prvni jazyk ma imho slouzit hlavne k tomu, aby jsi se naucil spravne algoritmizovat ...[/quote]

To ze sa naucis ako postupovat pri rieseni roznych (nie len) programatorskych uloh - ze sa naucis mysliet - ti bude imho na zaciatok (!) viac platne ako perfektna znalost nejakeho programovacieho jazyka, pretoze to vyuzijes aj inde, nie len v programovani.

Priklanam sa bud k Pascal-u alebo k C-cku.

Imho neskor by bolo mozno dobre keby si sa aspon minimalne a pasivne oboznamil (precital nieco na wikipedii a pod.) s jazykom assembler, aby si mal aspon zakladnu predstavu na com to vsetko stoji.
optim (391)|25.7.2009 20:19
Imho ma IDE do zacatku obrovskou vyhodu v podobe integrovaneho debuggeru (pripadne i syntax checkeru). Sice je navyk na krokovani kodu do jiste miry spatny, ale stejne bych krokovani kazdemu zacatecnikovi doporucil pouzivat, protoze velmi zjednodusuje hledani chyb v kratkych programech a poskytuje jisty imaginarni nahled do chodu programu. Nema smysl takoveho cloveka hned "trapit" prikazovou radkou (tedy pokud mu neni vlastni - pak obvykle zna a vyuziva jeji vyhody proti GUI/TUI/atd.), protoze i tak to bude boj a mohlo by se stat, ze ho to prestane bavit a da se treba na filosofii. ;-) (to plati i pro ten assembler)
Suprak (408)|25.7.2009 22:11
Já jsem začal první s webem (PHP-Fusion), je to super na takové to první seznamování se s Pc jazykem.
mech13 (5526)|25.7.2009 22:23
PHP stoji tak trochu mimo klasicke programovaci jazyky, nevim jestli by bylo vhodnym reprezentativnim vzorkem...

Belbas: stahni si nejake live CD linuxu (treba kubuntu) nebo si to nainstaluj do virtualni masiny a muzes rovnou zacit programovat - vsechny potrebne nastroje jsou vetsinou obsazeny. pustis Kate (takovy lepsi notepad), napises zdrojak, ulozis ho a v command line to jen prelozis pomoci gcc a spustis

udelas si napr soubor muj_program.c
[code]# include

int main(void)
{
printf("Hello, World!\n");
return 0;
}[/code]

v bash se dostanes do stejneho adresare kde je soubor (prikazy dir a ls ti pomuzou) a naklepes tam
[code]gcc -std=c99 -Wall -pedantic muj_program.c -o muj_program[/code]

a pak to v bash spustis:
[code]./muj_program[/code]

tod vse. dal muzes pokracovat dle libosti. v linuxu nic vic potreba neni. pokud jsi hardcore muzes zdrojaky editovat ve vi nebo vim

imho mnohem lepsi nez se snazit rozejit prekladac na windows nebo se ucit s IDE... toto je vec, za kterou linux velmi chvalim. zacit v nem programovat je supersnadne a vic user friendly nez ve win
xmarek (1676)|25.7.2009 22:47
Myslím si, že podobným způsobem může pohodlně používat ve Windows Javu. :D Stačí si nainstalovat JDK a programovat v Notepadu (osobně jsem tak s Javou začínal). Jinak nevím co je na tom pravdy, ale kluci mi říkali, že se na průmyslovkách přechází s Delphi na C. Takže by pro něj nemuselo být od věci začít s C-ečkem.
mech13 (5526)|25.7.2009 23:11
u javy je potreba si nastavit PATH k exacum tusim... jinak java nejvodnejsi na zacatek urcite nebude...

na VUT FIT se zacina Cckem

pak jeste muze prubnout assembler:) udelat v asm okeni aplikaci je docela sranda:D

//priloha - projekt do assembleru, cte informace z instrukce cpuid... zarucuju ze to nejsou breberky
Belbas (362)|25.7.2009 23:40
Možná budu vypadat jak blbec ale vubec nevim co je :bash,GUI/TUI,Path k exacum... :D
mech13 (5526)|26.7.2009 00:04
bash je takovy lepsi command line pouzivany v linuxu. nektere prikazy jsou stejne jako v MS-DOS nebo v prikazove radce ve windows, nektere se lisi, je jich spousta navic

GUI - graphic user interface - graficke rozhrani
TUI bych tipnul na textove rozhrani

path - je retezec ve windows, ktery obsahuje jmena adresaru, ve kterych ma hledat spustitelne programy. tj kdyz si pustis cmd a napises ping, tak to funguje at si na C:\ nebo na plose. ale kdyz napises putty.exe, tak to hodi neznamy nazev... pokud pridas do PATH adresar, ve kterem je putty.exe tak budes moct tento program spoustet odkudkoli. bez toho bys musel vzdy vypsat plnou cestu k tomu programu
napr
C:\users\xxx\plocha>putty.exe -> nejede
C:\users\xxx\plocha>C:\program files\firma\putty.exe -> jede

pridas C:\program files\firma\ do PATH
C:\users\xxx\plocha>putty.exe -> funguje
optim (391)|26.7.2009 00:18
C neni pro zacatecnika vhodne, ukazi na priklade..
[code]#define LEN 10

int main(int argc, char **argv)
{
int i, a[LEN];

for(i = 0; i <= LEN; ++i)
a[ i ] = 0;

return 0;
}[/code]

Preklad (copy&paste z Mechova tutorialu) bez varovani, proc by tam nejake melo byt, ze?
No a co to dela - skonci to, spadne to, zacykli se to?
Odpoved c) je spravne - promenny se alokujou na zasobniku a promenna i "bydli" za polem a, tedy zmenou a[LEN] menim i. (tedy v mem pripade, nehodlam ale kvuli tomu zjistovat, jak moc striktni je specifikace C, co se tyce poradi alokace statickych lokalnich promennych)

Takovejhle chyb udela zacatecnik mraky a najit kazdou z nich zabere nezanedbatelne mnozstvi casu.

Edit: Ano, TUI = text user interface
michal.kolesa (357)|26.7.2009 04:00
[quote=mech13;274546]

Belbas: stahni si nejake live CD linuxu [/quote]
Myslím, že psát programy pod linux je nerentabilní, když linux má mizivé procento uživatelů, zbylých 95% má Windows.
mech13 (5526)|26.7.2009 10:45
michal.kolesa: pokud mu jde o zacatky, tak je jedno na cem to dela tezko bude zachazet za hranice std knihoven, takze kdykoli muze vzit zdrojak a prekompilovat ho na win.

ja dotaz pochopil tak, ze neumi vubec nic a chce se alespon dostat do obrazu, ne ze z neho hned zacnou litat ucetni systemy a systemovy utility ktery bude chtit prodavat. z tohoto pohledu je imho uplne jendo v cem to dela a linux mi na to prijde vhodnejsi (a to jsu zaryte windowsak, ktere na linux nadava kde muze... linux mi vzdy jel jen ve virtualni masine kvuli projektum do skoly a musim proste uznat, ze na toto je lepsi)

navic mame multiplatformni jazyky - java, php, python...
Logout (4018)|26.7.2009 11:47
Pro začátky bych doporučil oproti mechovi něco s IDE - pro dobrou algoritmizaci neni třeba hned znát jak funguje compiler, linker atd... a neznalost toho nevede ke špatnejm návykům.

Taky bych nedoporučil beztypovej jazyk - typovej jazyk vede k větší disciplíně při programování a člověk se nenaučí zhovadilosti typu trojnásobný konverze mezi typama sem a tam.

Nedoporučil bych ze začátku objektovej jazyk - pro jednoduchý věci je objektovost spíš na obtíž - objekt je v v jistym smyslu "zapouzdření" algoritmu (teď mě začnou objektový puristi mlátit po hlavě :-)) a nemá smysl stavět barák, když člověk ani neumí dát dvě cihly k sobě.

Z toho mi vyplývá, že nejlepším jazykem na naučení je zatracovanej pascal. Ovšem nesmí se u něj zůstat, ten použít jen na takový ty etudy typu napiš spoják, strom, .... Po zvládnutí tědle začátků pak imho vede cesta přes objektový jazyky (java, python), ale doplněný prostym Cčkem (popř. C++, ale ne takový to highlelev C++, kdy člověk používá jen objekty, hezky strcpy, malloc, klidně si např. implementovat vlastní string apod...), aby člověk trochu přičuch k hardwaru a zjistil, co je pro procesor jak drahý a jak se to vevnitř s těma bytama vlastně dělá. A zároveň se poučil trochu o tom linkeru, compileru atd - takže nejlíp v linuxu... (teď je ta správná chvíle :-))

No a pak časem ještě čuchnout k lispu, popř. aspoň javascriptu - ale zas ne k javascriptu pojímanýmu jako BASIC, ale k javascriptu s celou jeho výrazovou sílou (prostě funkcionální jazyky). Neřikam, že jsou the best, ale některý triky z nich se hodně hoděj i v klasickejch procedurálních/objektovejch jazycích a naučej myslet nad věcma "trochu jinak", což se dost hodí....

mech: C je taky multiplatformní :-), jen se musí znova přeložit.
mech13 (5526)|26.7.2009 12:05
[quote=Logout;274631]mech: C je taky multiplatformní :-), jen se musí znova přeložit.[/quote]

to jsem taky napsal;) "tezko bude zachazet za hranice std knihoven, takze kdykoli muze vzit zdrojak a prekompilovat ho na win"

mozna by bylo dobry zase pockat nez se ozve autor co od toho ceka, protoze mam takovy pocit, ze jsme ho odradili jeste nez zacal:D

btw na zkompilovani v gcc nepotrebuje znat jak funguje kompiler a linker... staci to jednou napsat a pak mackat sipku nahoru a entr
Belbas (362)|26.7.2009 13:03
[quote=mech13;274636]to jsem taky napsal;) "tezko bude zachazet za hranice std knihoven, takze kdykoli muze vzit zdrojak a prekompilovat ho na win"

mozna by bylo dobry zase pockat nez se ozve autor co od toho ceka, protoze mam takovy pocit, ze jsme ho odradili jeste nez zacal:D

btw na zkompilovani v gcc nepotrebuje znat jak funguje kompiler a linker... staci to jednou napsat a pak mackat sipku nahoru a entr[/quote]

Hoši moc nerozumim tomu co mi to tady vykládáte, takže to vidim tak že zajdu do knihkupectví nejdu knížku programování v pascalu+nějaká algoritmy a začnu se šprtat...
xmarek (1676)|26.7.2009 14:18
[quote=Belbas;274651]Hoši moc nerozumim tomu co mi to tady vykládáte, takže to vidim tak že zajdu do knihkupectví nejdu knížku programování v pascalu+nějaká algoritmy a začnu se šprtat...[/quote]Myslím si, že to bude asi nejrozumnější řešení. :thumb
Logout (4018)|26.7.2009 16:16
Jojo - to je myslim nejlepší cesta.
Ještě ze zkušenosti - až překonáš úplný základy, nejlíp se naučíš na vlastnim projektu. Vymysli si nějakej program, klidně blbost (třeba obligátní hru hadi) a zkus to dotáhnout do konce. Na tom se ve výsledku naučíš nejvíc. Ale zas bez bez nějakýho pevnýho základu to taky nejde, takže nejdřív tu knížku :-).

[quote]
mech13: na zkompilovani v gcc nepotrebuje znat jak funguje kompiler a linker
[/quote]
Pak ale je na tom stejně, jako s ide, jen ne tak komfortně. Ale hlavní výhoda, obzvlášť pro začátečníka, je při použití IDE snadnej debugging. Přecejenom gdb bez nějaký grafický nadstavby je takový nepříliš přítulný (i když už sem s nim taky pár věcí odladil).