Jaký jazyk zvolit pro začátečníka

ondra.novacisko.cz

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #60 kdy: 18. 10. 2010, 01:23:33 »
Citace
Ono samotné používání callback funkcí není čisté řešení....
Anonymní funkce se např. používají i u funkcionálních paradigmat a tam je to imho čisté. U callbacků je interface asi o něco čistší, s tím souhlasím, ale pořád definice
objektu + jeho užití je IMHO méně user friendly než anonymní objekt (proč by se jinak anonymní objekty zaváděly)?
No anonymní třídy (anonymní objekt je tedy blbost, ale myslí se tím objekt vytvoření z anonymní třídy) zavedla až Java. Obecně to nepovažuju za problém

V javě stačí přidat implementovat metodu v předkovi. V C++ navíc musím projít všechny potomky tohoto objektu které dědí zděděný interface a doplnit patřičný wrapper.
V Javě taky. Co když tu metodu nějaký předek reimplementuje?

Navíc ty potomci nemusí být ani v mém kódu (např. různé pluginy třetích stran distribuované jako zdrojový kód). 
A mohu kontrovat i tím, že pokud se ukáže úprava v předcích jako problém, vždycky tam můžete vrznout tu virtuální dědičnost (když už se vrtáte v předcích  ;) )

(interface IA, interface IB extends IA, class A implements IA, class B extends A implements IB) tak kdykoli chci použít B jako objekt typu IA, tak musím přetypovávat - což navíc v C++ vzhledem k složitosti konstrukce static_cast není příliš přehledné.
Naučte se C++. Při downcastu nemusíte přetypovávat static_castem (můžete). Překladač pouze chce vědet, zda chcete IA které bylo rozšířeno přes IB nebo jen samotné IA

Ale televize NENÍ dálkový ovladač.
Dálkový ovladač byl použit jako abstrakce rozhraní. Nebo si myslíte, že tím, že implementuje třída rozhraní říká, že třída je rozhraním? Toje taky blbina. Třída pouze implementuje rozhraní. Tudíž rozumí protokolu a lze s ní pomocí toho rozhraní komunikovat.

Ehm? Takže jeden dálkový ovladač pošle televizi signál 0001 a televize se vypne, zatímco když to ve stejné situaci pošle druhý ovladač naprosto stejný signál, tak se zvýší jas televize? Jenom proto, že druhý ovladač umí vyslat ještě i 0010? To je přeci blbina.
a)A co stavové protokoly? (rozšíření dalším rozhraní přidá další stavovost, kterou původní rozhraní neumí)
b)To že má druhý ovladač stejně barevná tlačítka a tři tlačítka navíc neznamená, že ty barevná tlačítka dělají totéž jako na prvním ovladači

V javě jdou destruktory emulovat pomocí klasických metod - jediný rozdíl oproti klasickým destruktorům pak bude v tom, že u lokálních proměnných se nebude destruktor volat automaticky. U dynamicky alokovaných je pak imho zcela jedno,
jestli volám delete object, nebo object.delete().

RAII pattern je v C++ velice oblíbený. V zásadě bych se bez něho nikam nehnul. Java RAII neumožňuje a já se prostě skoro nikam nehnu

( http://www.hackcraft.net/raii/ )

Na dynamicky alokované objekty máme chytré pointery (podle RAII) ... vůbec nepoužívám delete. Pokud už ano, tak v útrobách implementací alokátorů.


ondra.novacisko.cz

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #61 kdy: 18. 10. 2010, 01:25:39 »
V Javě taky. Co když tu metodu nějaký předek reimplementuje?
Edit: V Javě taky. Co když tu metodu nějaký potomek reimplementuje?

bubavanek

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #62 kdy: 18. 10. 2010, 10:41:58 »
Velmi vyčerpávající čtení, zatím studuji jen teoreticky. Jelikož je zde mnoho informací, kterým jsem zatím neporozuměl, zatím zkouším jen jednoduchý kravinky typu Hello World, zjišťuji co který příkaz dělá. Ale Visty mě tak trochu se*ou, když něco v C zkompiluji, tak mi to Visty odmítají spustit. Pravděpodobně mi blbě ukládají cestu.

Logik

  • *****
  • 1 049
    • Zobrazit profil
    • E-mail
Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #63 kdy: 18. 10. 2010, 12:40:30 »
bubavanek:
nic si z toho nedělej, na todle bychom si měli založit svuj thread. Nicméně pokud si dáš práci a pochopíš, o čem se píše, myslím, že Ti to k něčemu bude, ať už skončíš u C++ nebo ne.

novacisko:
Citace
V Javě taky. Co když tu metodu nějaký předek reimplementuje?....
 A mohu kontrovat i tím, že ... vždycky tam můžete vrznout tu virtuální dědičnost...
a) No tak napíšu tu reimplementaci. Přeci když přidávám novou metodu, tak vím, co má metoda dělat a kterých tříd se týká. Nemusím ale hrabat do tříd, které tuto metodu dědí a to považuji za podstatné.
Právě to, že při modifikaci třídy musím modifikovat i potomky nepovažuji za vhodnou vlastnost.

b) Např. u agilní metodiky se budu v předcích hrabat furt. Takhle skončím se všemi dědičnostmi virtuálními...

Citace
Naučte se C++. Při downcastu nemusíte přetypovávat static_castem (můžete).
Co kdybyste místo předpokládání, že je ten druhej blbej se snažil pochopit, coten druhý píše?
Kód: [Vybrat]
class IA
{
public:
virtual void a()=0;
};

class IB: public IA
{
public:
virtual void b()=0;
};

class A: public IA
{
public:
void a() {};
};

class B: public A, public IB
{
public:
void b() {};
void a() {};
a.cpp: unmodified: line 1
class IA
{
public:
virtual void a()=0;
};

class IB: public IA
{
public:
virtual void b()=0;
};

class A: public IA
{
public:
void a() {};
};

class B: public A, public IB
{
public:
void b() {};
void a() {};
B() {};
};


int main()
{
        B* b=new B();
        IA* a=b;
}
Tady (na předposlední řádce) přetypovávat musím, jinak kompilace spadne. Právě proto, že pro C++ je IA a IB jiné rozhraní, přičemž ve všech ostatních jazycích se IB bere jako rozšíření IA .
A jestli jste myslel, že můžu použít normální přetypování, tak to sice máte pravdu, ale obecně se C-like přetypování užívat v C++ programech nedoporučuje, anžto může zavléct chybu....

Citace
Dálkový ovladač byl použit jako abstrakce rozhraní.
Ale copak je ovladač rozhraní - tedy ve vašem významu (se kterým úplně nesouhlasím) tedy komunikačním protokolem?? Ovladač je entita, která vysílá povely nějakým komunikačním kanálem jiné entitě (televizi).

Citace
Nebo si myslíte, že tím, že implementuje třída rozhraní říká, že třída je rozhraním? Toje taky blbina.
IMHO není. Pokud např, objekt implementuje rozhraní ISerializible, pak ten objekt JE serializovatelný. Možná spíše bych volil "se navenek chová jako objekt typu popř. objekt mající danou vlastnost".
Pokud omezím "implementovat rozhraní" na "rozumí komunikačnímu protokolu", vede to imho právě na chyby v návrhu, protože to neodhalí složené objekty. Televize s videem rozumí jak příkazům pro televizi, tak příkazům pro video - takže při vašem přístupu je košér implementovat obě rozhraní. Jak jsem ukázal v minulém postu, pokud to ale implementuju jako objekt, tak se brzy při případných úpravách dostanu do problémů - televizi se dvěma videi tímto způsobem neimplementuji.
Pokud přijmu můj přístup, tak televize není video, video není televize a televize s videem není ani video, ani televize, ale spojení dvou objektů. Takže nechám televizi implementovat rozhraní televize, videu rozhraní videa a není žádný problém.

Proto tvrdím: implementovat rozhraní znamená konstatování, že tento objekt je nějaké povahy (např. být televizí, být serializovatelný atd...). 

Citace
a)A co stavové protokoly? (rozšíření dalším rozhraní přidá další stavovost, kterou původní rozhraní neumí)
Představte si rozhraní jako port na serveru: Jak to rozhraní pozná, že ta druhá strana, která s tím protokolem komunikuje je stavová či nestavová? Jediná možnost je, že se zašle nějaký příkaz: přepni se do rozšířeného módu. Ale pak to jde implementovat v jedné metodě a nepotřebuji různé metody podle toho kdo volá. Takto se dá koukat např. na IP protokol, kde vždy musí být uvedeno, jestli jde o TCP nebo UDP....

Anebo stavová komunikace používá jiný kanál než nestavová komunikace (např. TCP/UDP). Pak ale přeci nejde o stejné rozhraní.... TCP přeci není totéž co UDP - i když používá "stejná" čísla portů...

Citace
b)To že má druhý ovladač stejně barevná tlačítka a tři tlačítka navíc neznamená, že ty barevná tlačítka dělají totéž jako na prvním ovladači
Ale ovladač přeci není rozhraní!!! Ovladač je reálný objekt, nikoli komunikační protokol. Ty dva ovladače budou sdílet stejné vstupní rozhraní "mít tři stejná barevná tlačítka". A pokud dělá každý jinou věc, tak stisk těch tlačítek vyprovokuje komunikaci po jiném rozhraní s ovládaným objektem (nebo lépe po stejném rozhraní - obé bude infra - ale s jiným objektem a jinými kódy).

Vždyť i pokud by byl ovladač rozhraní, tak jak byste implementoval programovatellný ovladač, který umí ovládat padesát různých věcí? To kvůli jednomu objektu budete modifikovat padesát tříd a každé přidávat další rozhraní? I  když jak ta televize, tak video i HIFI věž se existencí programovatelné ovladače vůbec nezmění?  Furt půjde jen např. vypnout posláním 000, zapnout posláním 001 a přepnout program posláním 100??

Naopak pokud přijmete paradigma, že ovladač je objekt, tak prostě napíšete jeden programovatelný ovladač, který bude umět volat jedno obecné rozhraní IInfraOvladač.
Dokonce se pak může klidně stát, že jeden příkaz zapne televizy, na videu spustí nahrávání a na HIFIvěži vymění CD. A to celé zajistím, aniž bych jakýkoli přístroj modifikoval.

PS: samozřejmě, pokud programuju jednoduchou věc, často ovladač a televizi pro jednoduchost sloučím. Je to ale "berlička", měl bych si být vědiom, že to co dělám je nelegální a v případě implementace např. dvou ovladačů budu muset buďto prasit
(s omluvou: váš přístup :-)), nebo refaktorovat.
Ono v tomto případě je zas ale lepší se vykašlat na ovladač a tvářit se, jako že se ovládá přímo televize. Pokud budu potřebovat více různých ovladačů, tak vždycky mohu dopsat "mezivrstvu".

Citace
RAII pattern je v C++ velice oblíbený. V zásadě bych se bez něho nikam nehnul....
To co v javě schází je automatická destrukce (a uzavření). Souhlasím, že to někdy vadí, na druhé straně mám dva typy zdrojů: jedny je potřeba uvolňovat hned, druhé nikoli.
U prvního typu zdrojů je imho chyba spoléhat na RIAA a chytré pointery, když se mají uvolňovat co nejdříve, tak bych je měl opravdu uvolnit hned a explicitně - spoléhat na to, že tento pointer nikam neuteče není moc bezpečné - při další úpravě se situace změní a zdroj se neuzavře.
(Navíc většina chytrých pointerů používá reference counting a tedy reálně hrozí, že dojde k zacyklení a neuvolnění zdroje - ale třeba máte chytřejší implementaci chytrých pointerů?).

U druhého typu jde naopak počkat "až někdy". V tu chvíli mohu použít kombinaci pseudodestruktorů a nějakého sběrného objektu, který na konci programu zajistí uzavření všech dosud neuzavřených zdrojů. Samozřejmě to si musím napsat, ale implementace nebude složitější než chytré pointery v C++.

Takže imho RAII pattern je v javě v podstatě stejně použitelný jako v C++, jen se musí využít toho, co nabízí java a ne k tomu přistupovat jako k C++. Výsledek bude +- stejný: V C++ občas díky zacyklení nedojde k uvolnění zdroje, v javě zas dojde k uvolnění zdroje se zpožděním oproti C++.





« Poslední změna: 18. 10. 2010, 13:09:14 od Matyáš Novák »

ondra.novacisko.cz

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #64 kdy: 18. 10. 2010, 13:59:21 »
... spoustu nesmyslů...
Nezlobte se na mne, ale nemohu na to reagovat. Stačilo mi si přečíst nesmyslné vymlouvání okolo RAII, anižbyste pochopil o co jde. Stejně tak o tom ovladači, nebo o ISerializable. Proto raději končím diskuzi, bude to možná lepší. Stejně nemám čas se tím až tak podrobně zabývat.


Logik

  • *****
  • 1 049
    • Zobrazit profil
    • E-mail
Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #65 kdy: 18. 10. 2010, 17:46:44 »
Ok, píšu samé nesmysly a nic nechápu. Ovladač je rozhraní k televizi, počítač je rozhraní k internetu (takže internet implementuje počítač) a já jsem rozhraní k počítači. :-) :-) Jdu se implementovat... :-)
« Poslední změna: 18. 10. 2010, 17:50:06 od Matyáš Novák »

bubavanek

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #66 kdy: 18. 10. 2010, 17:51:52 »
Ok, píšu samé nesmysly a nic nechápu. Ovladač je rozhraní k televizi, počítač je rozhraní k internetu (takže internet implementuje počítač) a já jsem rozhraní k počítači. :-) :-) Jdu se implementovat... :-)

No tomudle jsem rozuměl:D

ondra.novacisko.cz

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #67 kdy: 18. 10. 2010, 22:10:03 »
Ok, píšu samé nesmysly a nic nechápu. Ovladač je rozhraní k televizi, počítač je rozhraní k internetu (takže internet implementuje počítač) a já jsem rozhraní k počítači. :-) :-) Jdu se implementovat... :-)

jgaunt

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #68 kdy: 26. 10. 2010, 09:37:42 »
rozhodně doporučuji začít strukturovaným jazykem - nejlépe Pascal, pak přejít na C a dále pokračovat objektově C++. Potom jakýkoliv jiný jazyk se naučit je otázka 1 měsíce.nezačínej objektovým jazykem...

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #69 kdy: 27. 10. 2010, 23:22:59 »
Osobně bych vybíral jazyk podle toho, co chcete vytvářet
pokud bude cílem vytvářet systémové záležitosti, ovladače, rychlý výpočetní software, programování mikroprocesorů a spol. šel bych cestou c a pořádně si osvojil jeho low level schopnosti, případně poté nahlédnul do assembleru
pokud budete chtít vytvářet desktopové aplikace, rozkoukal bych se v c a pak přešel na c++, javu nebo net
pokud vás zajímá převážně vývoj webových aplikací, tak bych se učil pořádně do hloubky PHP, JS, případně různé frameworky a knihovny (pozor na problém kanónu a vrabců)
pokud vás spíš zajímá různé bastlení drobných věcí na koleně, pluginů k programům a spol, nebál bych se pythonu

basic a pascal bývaly dříve téměř jasnou volbou, vzhledem k tomu, že téměř všechno dnes vychází z c syntaxe, jsou trochu zbytečnou cestou do spelé uličky

Logik

  • *****
  • 1 049
    • Zobrazit profil
    • E-mail
Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #70 kdy: 28. 10. 2010, 14:11:37 »
Citace
Osobně bych vybíral jazyk podle toho, co chcete vytvářet
To je s prominutím blbina. Důležitý je naučit se algoritmizaci, progr. myšlení atd... a
u nich je nejdůležitější "čistota" jazyka (teď tím nemyslím čistotu ve smyslu některých puristů, co prohlašujou že jen ten a ten jazyk je objektový a žádný jiný apod., jako spíš eleganci, konzistenci, dobré hlášení a odchytávání chyb, jemné vedení k čistému programování atd).

Navíc i pro lowlevel programátora má smysl se naučit funkcionální programování, stejně tak pro webovvýho vědět něco o tom, jak to funguje vevnitř, takže je dobré vyzkoušet více co nejrůznějších jazyků (alespoň jeden lowlevel (asm/C), alespoň jeden objektový (java, c#....), alespoň jeden funkcionální (javascript, scheme), pro začátek - kterým si prošel - nějakej jazyk na základní algoritmy, třeba ten packal).

Konkrétní knihovny či syntax jazyka atd. jsou vedleší, ty se naučí "každý kopyto".

Takže rozhodně např. začít se učit PHP je prostě totální blbina, protože PHP pokazí programátorský návyky, v JS bez toho, aniž by už měl nějakou praxi v jinejch jazycích a teda dokázal využít funkcionýálních a prototypovejch rysů jazyka bude s největší pravděpodobností psát bastly atd....
Rozhodně tedy si nevybírat podle toho,m co chci dělat, ale nejdřív se naučit pořádně programovat a pak se teprve specializovat. Stejně jako v každém jiném oboru.


iwtu

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #71 kdy: 31. 10. 2010, 22:42:40 »
ahoj :-)

Ak Ti mam priamo odpovedat na tvoju otazku, ze sa chces od hlbky zoznamit s jednotlivymi jazykmi, tak studuj ich prekladace a specifikacie :-)

Par slov k programovaciemu jazyku. Ak sa na to pozrieme abstraktne, programovaci jazyk je iba jazyk. Teda nejaky nastroj na zapis myslienok. Nic viac, nic menej.

Ak s programovanim uplne zacinas, potrebujes minimalne pochopit svoje myslienky, spravit deterministicky (v kazdom kroku musi byt jasne, co sa ma robit) algoritmus a zapisat ho v danom jazyku s vyuzitim strukturalneho, objektovo-orientovaneho, funkcionalneho alebo logickeho programovania. Zvladnut vsetko naraz je znacne tazke.

Ak sa zacneme bavit o znamych jazykoch, ktore su zadarmo a su univerzalne (existuju na Windows a Unix plaforme) tak padne Basic a prevazne aj C# ( i ked na linux je nejaky projekt mono).

Strukturalne programovanie: naznamejsie su Pascal a C. Osobne som zacinal s Pascalom, lebo som o inom nevedel. Pascal je jazyk, ktory nema najlepsiu syntax a okrem Delphi/Lazarus nevyuzijes znalost jeho struktury v ziadnom inom jazyku. Chce to iba trochu snahy a zvladnes v C toto iste co v Pascale. Koncept strukturalneho programovania je podstatne lahsie pochopitelny ako OOP (vela ludi si mysli, ze vie OOP, ale len si to naivne myslia. Pochopit a maximalne vyuzivat koncept OOP je silno netrivialne, k tomu existuje nespocet situacii, kde je najlepsie sa na OOP uplne vykaslat a spravit to struktularne...) Teda aby som to zrhnul, v strukturalnom programovi ak pochopis pravidla jazyka, ktore nie su narocne (ano, v C sa nemusi prasit, moze sa v nom (programatorsky) ludsky pisat) mozes viacej casu venovat logike programu. Este upozornenie, nech ti pri nom nezatvrdne mozog (boli, su a budu ludia, ktori tvrdia, ze C je najlepsi jazyk)

OOP: Najznamejsie su Java, C#, Smalltalk. V tomto koncepte sa nevyhnes pisaniu slovicok, ktorym este dlho nebudes rozumiet, lebo hold, bez triedy to nepojde a koncept triedy je netrivialny. Kto to nahodou uci, tak to uci stylom, ze tieto slovicka tu musia byt, a preco musia byt, to sa dozvete (podstatne) neskor. Mna osobne by stvalo pisat nieco, co neviem  preco.. Kedze OOP chce, ci nechce, zahrnuje v sebe aj struktularne programovanie, budes musit zapasit s myslienkou, logikou programu, moznostami jazyka, s OOP aj skryto so struktularnym konceptom, to mi pride huste...

Dalej mam vlastnu teoriu, ze mozog ma tendecniu sa ucit nove veci rad. Keby si na najskor ucil struktularne programovanie, bavilo by ta, lebo by si sa ucil nieco nove. Potom by si presiel na OOP, to by ta znova bavilo, lebo by to bolo znova nieco nove. Co ma dosledok ten, ze budes vediet oba koncepty a aj ich spravne pouzit. Tam, kde sa hodi struktularne, pouzijes strukturalny pristup, tam kde OOP, pouzijes OOP. Ludia, co poznaju OOP, tak ho pchaju doslova vsade, aj tam, kde by bol 100x lepsi strukturalny pristup a vznika neuveritelne spraseny OOP kod. Lebo nejake struktularne programovanie im pride zastarale, tak na cele vybodnu.

Jazyk C++ je niekde na rozhrani medzi OOP a strukturalnym principom. V plnej miere v nom mozes vyuzit oba koncepty. C++ moze byt aj vhodne na zaciatok, ale iba s kvalitnou literaturou urcenou uplnym zaciatocnikom. Naozaj, treba kvalitnu knihu inac je to silno kontraproduktivne, lebo C++ je najmocnnejsi a najtazsi jazyk, aky poznam. Viem, ze s dobrou knihou to ide. Dobra kniha je napriklad Rozumime C++, Myslime v C++.

Ak mas rad matematiku, nie je uplne odveci zacat s Haskellom (funkcionalne programovanie), kde programujes v matematickych funkciach (funkcia je specialny pripad relacie, relacie je podmnoznina karteskeho sucinu mnozin). Napriklad na M.I.T sa dlhe roky ucil na uvod LIPS (nieco podobne) a 3 roky dozadu ho vystriedal Python.  Haskell v komercnej sfere vyuziva naprikad SonyEricsson. Ak mas rad matematicky korektne logice formule (logicke programovanie), asi najznamejsi je Prolog.

Vravel som o spuste veci, co treba zaciatocnikovi zvladnut. Najmenej ich musi zvladnut, a zacne s Pythonom alebo nim podobnym. Svoje myslienky v nom budes moc lahko zapisovat, lebo Python ma relativne lahku strukturu + ma niektore funkcionalne vymozenosti, teda sa clovek nebude chytat za hlavu, ak neskor uvidi v bashi cyklus for. Pri Pythone nemusis riesit OOP, so zaciatku ani strukturalny postoj a ovela viac casu mozes venovat logike programu a vlastnym myslienkam.

Mne osobne pride lahsie aj ovela schodnejsie robit veci postupne ako
vsetko naraz. Po Pythone by asi bolo dobre take C, aby si uvidel, ako PC realne funguje. Ucenie C bude ovela lahsie, lebo uz nebudes riesit logiku programu (to uz budes vediet) a viac sa zameras na ten jazyk...

S tych vsetkych konceptov, co som vymenoval, si myslim, ze OOP by mal nastupit az ako posledny, uz len preto, ze je najtazsi...

Hm, mozno keby si sa ucil najprv Python a potom C, trvalo by to kratsie, ako keby si zacal rovno s C.

Este mozes chciet sa ucit programovat pre nejake programatorske sutaze. V tych jednoznacne vedie C++ kvoli STL.

Snad som poskytol na vec trochu iny pohlad...

Sviezi den :-)


 

XYCZ

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #72 kdy: 01. 11. 2010, 08:09:41 »
a okrem Delphi/Lazarus nevyuzijes znalost jeho struktury v ziadnom inom jazyku.
Ada - ale z jeho primárního účelu to nejspíš bude vyžadovat i bezpečnostní prověrku 8)

ondra.novacisko.cz

Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #73 kdy: 01. 11. 2010, 09:35:17 »
S tych vsetkych konceptov, co som vymenoval, si myslim, ze OOP by mal nastupit az ako posledny, uz len preto, ze je najtazsi...

Nechci se pouštět do dalšího flame, ale OOP bych rozhodně neodsouval. Nechat ho hned za základní entity jako cyklus, rozhodování, funkce, procedura, pole, a tyhle základaní veci... by následovala třída.

Není nic horšího, když se člověk naučí procedurálně programovat a myslet. Pak se velice špatně přeučuje do objektového programování, které je úplně jiné. Ano, platí tam ty základná věci, jako cyklus, rozhodování,funkce, procedura, ale pak se to začne dost lišit.

Ti co napíšou, že ne, tak dal bych ruku do ohně za to, že neumí OOP programovat (nebo jsou to geniové, ale kolik jich bude, že?) OOP totiž není vůbec o tom pochopit význam klíčového slova class. OOP je o něčem úplně jiném. O umění umět popsat realitu (čili reálné věci z okolí) pomocí objektů. Dokonce bych řekl, že OOP není vůbec o programování, ale o stylu myšlení.

OOP je zároveň samostatn disciplína, kterou se lze učit paralelně. Dokonce se ji lze naučit bez programovacího jazyku. Pokud je dotyčný dychtiv po teorii, pak bych jednoznačně doporučil začít jazykem UML. Je pravda, že v tom "hello world" asi nenapíšu (minimálně ne tak snadno) a velice těžko budu schánět překladač jazyka UML do nativního kódu (neexistuje, UML není programovací jazyk). Ale až se pak dostanu k běžným programovacím jazykům, budu se moci na problémy, které tam budu řešit, dívat trošku z jiné perpsektivy. Pak budu obecně tíhnout k OOP jazykům, protože mi pomohou lépe řešit mé problémy objektově, než jazyky, které OOP podporu nemají.

Logik

  • *****
  • 1 049
    • Zobrazit profil
    • E-mail
Re: Jaký jazyk zvolit pro začátečníka
« Odpověď #74 kdy: 01. 11. 2010, 11:17:18 »
Souhlas. Sice si nemyslím, že je s OOP dobré úplně začít (jednou jsem učil zoufalce, co měli mít čtvrtej rok programování a nic neuměli - OOP naprosto nezvládali - ale to zas pravda asi nebylo tim OOP :-)), ale neměl by se ani odkládat.
IMHO dobrý čas, kdy s OOP začít je okamžik, kdy člověk zvládá jednoduché algoritmy (různá třídění a podobné blbinky) a začne se snažit dávat dva (a víc) takovejch algoritmů dohromady.
Když to řeknu hodně zjednodušeně - s OOP by se mělo začít v okamžiku, kdy člověk začne pracovat se dvěma různejma entitama.... No, moc jednoduše mi to nezní, snad je pochopitelný, co tim myslim... :-)