Jazyk pro úplného začátečníka

vit

Re:Jazyk pro úplného začátečníka
« Odpověď #30 kdy: 12. 07. 2013, 16:09:57 »
gamer: K pointerům se nemusí vůbec dostat. Herout v tý učebnici pěkně popisuje porovnávání, cykly, práci se souborama, s řetězcema, ... Z toho si vezme základ. Jakym směrem se pak vydá, to už je na něm ;-) Každopádně ano - k pointerům lepší nedorazit, jakmile se s nima začne, tak učebnici odložit a zamyslet se, kudy dál.

Čo je na pointeroch také zlé? Veď je to obyčajné číslo ktoré reprezentuje adresu...


Pavouk106

  • *****
  • 2 395
    • Zobrazit profil
    • Můj blog
    • E-mail
Re:Jazyk pro úplného začátečníka
« Odpověď #31 kdy: 12. 07. 2013, 16:14:37 »
gamer: Nepotřebuje sčítat textové řetězce, potřebuje úplný základ programování. To mu učebnice od Herouta dá. Jo, bude ho to stát pár stovek, ale bude umět základ a bude se mít kam podívat, když něco zapomene (nic nezapomene, když v tom alespoň chvíli zůstane).

vit: Není na nich nic zlé, ale úplný začátečník, programováním dosud nepolíben, je nepotřebuje zvládat. Potřebuje nejdřív začít logicky přemejšlet, umět si tvořit pseudokód a na nějakých příkladech poznat, jak se to přepisuje do opravdovýho kódu.

Za mě prostě C. Až budeš mít základ, rozhodni se v klídku pro cokoliv jinýho.

gamer

Re:Jazyk pro úplného začátečníka
« Odpověď #32 kdy: 12. 07. 2013, 16:19:28 »
Čo je na pointeroch také zlé? Veď je to obyčajné číslo ktoré reprezentuje adresu...
Já proti pointerům nic nemám, ale je to low-level záležitost, se kterou bude mít každý začátečník problém. Navíc typová kontrola je v C u pointerů dost slabá (každá druhá knihovní funkce má jako argument void*, malloc vrací void*), takže se pořád něco přetypovává a překladač není schopen poznat, že je to přetypování špatně. Už jen to, že se musí explicitně přetypovat adresa při alokaci paměti je z špatný koncept a začátečníka je lepší takové věci vůbec neučit :-).

robin martinez

  • *****
  • 1 138
  • Have you hugged your toilet today?
    • Zobrazit profil
    • Null Storage
    • E-mail
Re:Jazyk pro úplného začátečníka
« Odpověď #33 kdy: 12. 07. 2013, 16:39:58 »
mně na pointerech vadila jen jedna jediná věc: v žádný učebnici nikdy nenapsali, k čemu je to vlastně v praxi dobrý. Nebo jsem třeba jen blbej a nepochopil jsem to sám. Vždycky to bylo něco jako: pointer je proměnná ukazující na určité místo v paměti. Bum. Tečka. Ale že by napsali, k čemu se to v praxi využívá nebo k čemu je to vlastně dobrý, to ne....
One machine can do the work of fifty ordinary men. No machine can do the work of one extraordinary man.

I do Linux, Hardware and spaghetti code in PHP, Python and JavaScript

Kolemjdoucí

Re:Jazyk pro úplného začátečníka
« Odpověď #34 kdy: 12. 07. 2013, 17:04:17 »
Ale že by napsali, k čemu se to v praxi využívá nebo k čemu je to vlastně dobrý, to ne....

Pointery se obecně používají na nepřímý přístup k datům. Základní příklad je tento, bez pointerů bys musel psát funkci F 3x.

Kód: [Vybrat]
int a;
int b;
int c;

void F(int * x)
{
   *x += 42;
}

F(&a);
F(&b);
F(&c);



robin martinez

  • *****
  • 1 138
  • Have you hugged your toilet today?
    • Zobrazit profil
    • Null Storage
    • E-mail
Re:Jazyk pro úplného začátečníka
« Odpověď #35 kdy: 12. 07. 2013, 17:13:44 »
to já už teď vím, nicméně takhle to nikde nepodaj.  Třeba by měli napsat (doufám, že se nepletu a je to tak správně), že se to klidně hodí když se nějaký funkci podává mrtě moc dat v paměti (megabajty? třeba v grafice?), tak aby se nemusely ty data "kopírovat", tak se použijou pointery. Tak jsem to alespoň pochopil já.
One machine can do the work of fifty ordinary men. No machine can do the work of one extraordinary man.

I do Linux, Hardware and spaghetti code in PHP, Python and JavaScript

kdosi4

  • ***
  • 136
    • Zobrazit profil
    • E-mail
Re:Jazyk pro úplného začátečníka
« Odpověď #36 kdy: 12. 07. 2013, 17:46:42 »
Ještě jednou sem napíšu.

Začni s C a jak píšou ostatní, můžeš si sehnat knížku Učebnice jazyka C od Pavla Herouta. Je celá červená, menšího formátu. Druhej díl (zelená?) nebudeš potřebovat, alespoň zatím ne (to píšu jen kdyby Ti jí v knihkupectví nutili :-) ).

Není asi nic lepšího nebo jednoduššího, jak se dostat k úplným začátkům. A znát C se Ti taky bude hodit. Jako jazyk je celkem dobře čitelnej, pochopitelnej a docela intuitivní, s tím to půjde, tím začni.

Výhodu to má i tu, že stáhneš prográmek na psaní kódu a ten v sobě má vše co je třeba, takže to nainstauješ (Další, Další, ... Dokončit) a může psát a kompilovat. Nemusíš instalovat interpreta (program, kterej bude vykonávat Tebou napsanej kód) někde zvlášť a patlat se s nastavováním atd. (to je třeba nevýhoda PHP - píše se v něm web, takže potřebuješ webovej server s PHP, což je zbytečně složitý, musel by ses učit další zbytečnosti navíc, který s programováním zrovna nesouvisí).

Vyhnul bych se na začátku objektově orientovaným věcem, takže za mě určitě ne Java, Javascript, Actionscript (flash), Ruby (on rails) a další podobný. K OOP (objektově orientované programování) dolezeš časem. Ty ale teď potřebuješ pochopit úplnej základ.

Díky moc všem za názory  :) vážím si jich.

Včera jsem začal s Javou - dostal jsem se od Hello World přes "papouška" k násobení čísel a pravda nejlehčí to nebylo, ale tyto věci již napíšu zpaměti.
Jak jsem se dnes podíval (1. příspěvek) na PHP - krása - tomu jsem rozuměl.
Jak tedy vesměs říkáte - začnu s C - jen se chci zeptat co vše potřebuji (software, Herout...) abych s tím mohl začít
Díky moc za pomoc  ;)

stepulka

Re:Jazyk pro úplného začátečníka
« Odpověď #37 kdy: 12. 07. 2013, 17:48:38 »
to já už teď vím, nicméně takhle to nikde nepodaj.  Třeba by měli napsat (doufám, že se nepletu a je to tak správně), že se to klidně hodí když se nějaký funkci podává mrtě moc dat v paměti (megabajty? třeba v grafice?), tak aby se nemusely ty data "kopírovat", tak se použijou pointery. Tak jsem to alespoň pochopil já.

Staci, kdyz si pamet predstavis jako nejaky suplik plny kartotek, ktere jsou ocislovane od 1 do 15. V kazde kartotece je ulozen 4 bytovy integer, reprezentujici nejakou hodnotu. A pointer je vlasne jen klasicka hodnota, ktera indexuje urcitou prihradku (v pameti s nahodnym pristupem to cislo muze byt treba 0x003CFD1A). To znamena, ze pointer ti rika, kam, do jake kartoteky se musis podivat a nerika ti, co v ni je. To symbolizuje, napr. v C, az operator *, ktery rika, podiv se do pameti, kam ukazuje pointer a delej upravy s daty v kartotece. Tak treba jiz lehko pochopis ukazatele na ukazatele na ukazatele na ukazatele :-) ci aritmetiku pointeru.

Tazatelovi puvodni zpravy opravdu doporucuji se vrhnout do C a VENOVAT mu (a tomu, jak funguje pamet a procesor) dostatecne velke mnozstvi casu. Pak jiz na nejaky vyssi jazyk prejde bez vetsich komplikaci.

qsx

Re:Jazyk pro úplného začátečníka
« Odpověď #38 kdy: 12. 07. 2013, 18:42:18 »
Nechápu, proč by měl dneska začínat s C. Bude se tím snad někde potom živit? Ať začne něčím vysokúrovňovým a nemusí řešit věci, které nikdy řešit třeba ani nebude. Z C rozhodně nikam rychle nepřejde.

Flasi

Re:Jazyk pro úplného začátečníka
« Odpověď #39 kdy: 12. 07. 2013, 18:48:47 »
Nedej na to, co ti tu radí. Jazyk C je VELMI ŠPATNÁ volba pro někoho, kdo je ZAČÁTEČNÍK a SAMOUK.

C je nízkoúrovňový jazyk a budeš muset:
-zvládnout pointery. Oni tady všichni machrují, jak jsou vlastně snadné a nic na tom není, ale fakt je ten, že jejich pochopení dělá problém prakticky všem začátečníkům. A fakt je ten, že v pointerech (zejména v aritmetice pointerů) dělají často chyby i zkušení programátoři
-sám pracovat s pamětí - takže budeš muset pochopit jak to funguje a se prokousat VELKÝM množstvím vlastních chyb, zejména záhadných chyb, kdy ti to většinou fungovat bude, ale občas ti to spadne a ty nebudeš vůbec tušit proč a kde může být problém. A žádný učitel za zadkem, který by se mrkl zkušeným okem, zasmál se a ukázal - zkontroluj si to tady.

Oni ti to tu radí, že je to tak pro tebe správné, že jenom když budeš chápat nízkoúrovňový přístup a práci s pamětí, že budeš opravdový programátor - a mají pravdu, že programátor, který nechce zůstat na povrchu, to potřebuje.
Ale v tuhle chvíli vůbec není jisté, jestli z tebe takový programátor bude, jestli to opravdu někdy bydeš potřebovat. Když začneš vysokoúrovňovým jazykem, tak můžeš začít tím, že budeš opravdu zapisovat své agloritmy - a né počítat bajty a bity. Ve vysokoúrovňovém jazyce rychle uvidíš nějaký použitelný výsledek - a to tě bude motivovat dál. V Czabředneš do problémů a s velkou pravděpodobností budeš znechucen - a není jisté, jestli se na to v tom znechucení nevykašleš.
I když dneska začneš vysokoúrovňovým jazykem, tak časem vždycky můžeš začít "znova" od nízké úrovně - od ASM, nebo C a pochopit, jak to programování funguje na druhé straně.

Začal jsi Javou - proč ne, to rozhodně není špatná volba (i když jsou IMHO lepší, jak jsem psal výše). Přišlo ti to těžké? Tak pozor - java je ze začátku velmi lehká. Co je těžké, je začít objektově myslet, ale i bez toho se můžeš v javě někam dostat a objektové myšlení pochopit později (udělalo to tak MNOHO programátorů). Jestli jsi měl první den v Javě nějaké problémy, tak se céčku fakt vyhni.

Pak jsi zkusil PHP - no psal jsi, že chceš psát desktopové aplikace pod windows, takže tady je PHP fakt mimo. PHP může být ze začátku opravdu hodně jednoduché - bylo totiž navrženo jako jazyk pro neprogramátory. Jenže časem se zcela nekoncepčně vyvíjelo různými (proti)směry. Ty jako začátečník a samouk budeš mít mnoho problémů s tím, abys nezačal "prasit". A jazyk tím, jak je navržen a jak je psána jeho základní knihovna a další knihovny tě mohou vést spíše k čistémů kódu, nebo spíš k prasení. A PHP tě bohužel k čistémů kódu nepovede. PHP jakkoliv je kritizováno, tak je pro začátečníka a samouka pořád lepší volba, než C.

Mimochodem by bylo dobré, kdybys nám napsal, kolik ti je, jaké máš vzdělání a jestli máš nějaké další programátorské plány (např. IT škola).


Flasi

Re:Jazyk pro úplného začátečníka
« Odpověď #40 kdy: 12. 07. 2013, 19:06:43 »
Staci, kdyz si pamet predstavis jako nejaky suplik plny kartotek, ktere jsou ocislovane od 1 do 15. V kazde kartotece je ulozen 4 bytovy integer, reprezentujici nejakou hodnotu. A pointer je vlasne jen klasicka hodnota, ktera indexuje urcitou prihradku (v pameti s nahodnym pristupem to cislo muze byt treba 0x003CFD1A). To znamena, ze pointer ti rika, kam, do jake kartoteky se musis podivat a nerika ti, co v ni je. To symbolizuje, napr. v C, az operator *, ktery rika, podiv se do pameti, kam ukazuje pointer a delej upravy s daty v kartotece. Tak treba jiz lehko pochopis ukazatele na ukazatele na ukazatele na ukazatele :-) ci aritmetiku pointeru.


4bytový integer, hodnota indexuje přihrádku, třeba 0x003CFD1A. Lepší příklad, proč by začátečník NEMĚL začínat jazykem C, by jen tak někdo nevymyslel. Díky za něj.

stepulka

Re:Jazyk pro úplného začátečníka
« Odpověď #41 kdy: 12. 07. 2013, 19:35:16 »
Staci, kdyz si pamet predstavis jako nejaky suplik plny kartotek, ktere jsou ocislovane od 1 do 15. V kazde kartotece je ulozen 4 bytovy integer, reprezentujici nejakou hodnotu. A pointer je vlasne jen klasicka hodnota, ktera indexuje urcitou prihradku (v pameti s nahodnym pristupem to cislo muze byt treba 0x003CFD1A). To znamena, ze pointer ti rika, kam, do jake kartoteky se musis podivat a nerika ti, co v ni je. To symbolizuje, napr. v C, az operator *, ktery rika, podiv se do pameti, kam ukazuje pointer a delej upravy s daty v kartotece. Tak treba jiz lehko pochopis ukazatele na ukazatele na ukazatele na ukazatele :-) ci aritmetiku pointeru.


4bytový integer, hodnota indexuje přihrádku, třeba 0x003CFD1A. Lepší příklad, proč by začátečník NEMĚL začínat jazykem C, by jen tak někdo nevymyslel. Díky za něj.

Bude to boj,  to nerikam, ale alespon z nej nebude blbec (a prosim zadny flame). Co se tyka toho uceni, tak sem hodim jenom tento odkaz http://mj.ucw.cz/papers/proglang.html (sice se to tyka vyuky...). Ja jsem osobne taky zacinal (samouk) s C (K&R kniha ;-)) a byl to boj, ale dalo mi to mnoho.

K C a assembleru jako vyuce programovani se v dnesni dobe vraceji take univerzity a vedi proc. Programator neni jen clovek, co dokaze volat nejake funkce ci metody a pouzivat frameworky. Ale musi taky vedet, jak jeho toustovac funguje, jak nastavit 15 bit v promenne X apod, jak vypada datovy typ float v pameti (ptam se vas, vite to?). Svete div se, ze pak napriklad programatori nenapisou kousek procedularniho kodu, protoze umi jen OOP.

qsx

Re:Jazyk pro úplného začátečníka
« Odpověď #42 kdy: 12. 07. 2013, 19:44:58 »
To jsou běžné nesmysly. Dneska je ti k ničemu vědět, jak je float reprezentovaný, protože tě zajímá spíše řešení problému. Neříkám, že na to nemůžeš nikdy v životě narazit, ale není to úplně běžné. Hlavně ta znalosti ti k ničemu běžně není.

Blbec myslíš jako označení pro někoho, kdo neví? A nebo někoho, kdo nechápe? První není potřeba řešit a u druhého je to zase jedno.

stepulka

Re:Jazyk pro úplného začátečníka
« Odpověď #43 kdy: 12. 07. 2013, 19:59:31 »
No dobra no, at je po vasem, necham to na tazatelovi ;-).

kdosi4

  • ***
  • 136
    • Zobrazit profil
    • E-mail
Re:Jazyk pro úplného začátečníka
« Odpověď #44 kdy: 12. 07. 2013, 20:09:44 »
Tak teď jsem zmaten   :D, ale je dobře, že se tu vyvinula taková diskuse - prodiskutujeme a vybereme to pravé  ;)

Co jsem tak pojal : (prosím opravte pokud se pletu)

C - "základní" jazyk neorientovaný oběktově

Java - "vyšší" jazyk oběktově orientovaný

 - víc toho pořádně nevím

 - jakožto neznalec se zeptám - který je jednodušší ?

Já osobně se spíše přikláním k Javě, ALE vím o tom minimum - proto to nechám na Vás - případně uspořádáme anketu nebo něco  ;)

Díky za názory.