reklama
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ě

Jaký jazyk vybrat?

Sunshine (103)|4.5.2010 21:42
Ahoj,

uvolnilo se mi dost času, vzhledem k tomu ze jsem spjat s lůžkem na 6 týdnů a chtěl bych se přiučit novým věcem. Jelikož bych chtěl jít po střední škole na nějakou univerzitu zaměřenou na matematiku-informatiku, tak bych se chtěl začít učit už teď. Nebudu žádným nováčkem jelikož úspěšně zvládám HTML, CSS, PHP, SQL, ale tohle jsou jen takové prkotiny. Proto bych se chtěl konečně vrhnout na nějakou velkou rybu. :)

Co od Vás asi potřebuju?
- potřeboval bych začít studovat nějaký jazyk
- chtěl bych, aby to nebylo něco jen aby se neřeklo ale nějaký silný jazyk
- chtěl bych, abych to mohl využít při studiu někde na univerzitě
- chtěl bych, aby to bylo do budoucna ekonomicky výhodné

Mám asi nejvíce základů z C++ dokonce jsem si vytvořil i creaturu, která portuje na server ale to je taková jednoduchá věc. A syntaxe jsou podobný PHP.
Potom jsem ještě přemýšel o VB a C#.

Já se bojím toho C++, protože se mi zdá už celkem náročný a navic jeste nezvladam algoritmizaci. Jenže VB a C# zase nevim jestli bude tak silný jako C++ a s takovými možnostmi a jestli se do budoucna vubec vyplati.

Chtěl bych Váš názor, vaše rady. Jestlu mam zacit s necim jinym a podobne. Jenze kdybych zacal treba s Javou kvůli algoritmizaci, tak nevim jestli je to dobrý se takhle zdržovat, když se můžu učit jeden jazyk a tan za dlouhou dobu zvládat perfektně. :)
Dojigiri (1629)|4.5.2010 23:38
Já bych doporučil nejvíc právě tu Javu. Dneska se už v ní dělá hodně a rozšiřuje se čím dál víc. Je pro ní uděláno spoustu knihoven zdarma, aplikační servery (JBoss apod.) a spoustu dalších věcí, který jsou dostupný zadarmo (nelze pominout ani vcelku podařený vývojový prostředí Eclipse).

Největší výhoda oproti C++ je automatická práce s pamětí (tj. odpadá potřeba alokovat/uvolňovat paměť ... i když domrvit se to dá i v Javě taky, pokud člověk např. udržuje reference na objekty tam, kde už to není potřeba).

C#, VB apod. jsou IMHO spíš okrajový záležitosti (no, samozřejmě jak pro koho) a přenositelnost je slabší. Osobně umím řekl bych hodně dobře C++ ale v poslední době už v něm dělám fakt málo a většinu věcí už děláme v Javě. (ačkoli v osobních preferencích mám tak nějak pořád radši C++ :), jak už jsem si na některý věci v něm zvyknul)
matyyy (2527)|5.5.2010 00:00
jestli se fakt rozhodneš pro javu
vybod bych se na algoritmizaci a začal objektově ->
kniha http://knihy.pecinovsky.cz/mojj/
jestli to s programováním myslíš vážně, tak to bude lepší začátek
Logout (4018)|5.5.2010 00:33
Je otázka, co znamená zvládám php. Nicméně Javu bych moc jako začáteční jazyk nedoporučoval, spíš bych právě doporučil ono C++. Ne jako konečnou, ale jako byť trochu "hardcore" start. Protože C++ ti dá základní náhled na to, jak věci fungujou uvnitř - a zároveň načichneš k objektům a zjistíš co a k čemu jsou.
Až poznáš, co jsou to objekty, pak je dost času přejít na javu, (ale třeba i jinam např. python... javascript, ...). Nevim, možná jsem staromódní, ale imho by každej programátor - a obzvlášť ten, co vyrost na php, měl zjistit, co to znamená porovnat dva řetězce, rozdělit je, co je to tabulka virtuálních metod apod. Aby nepsal jako čuník :-)

Pokud začneš javou, tak nepochopíš, proč je tam spousta věcí řešenejch tak, bude se Ti zdát zbytečně ukecaná a restriktivní, její výhody nepoznáš na jednoduchym projektu, ale na velký věci a na hromadě užitečnejch knihoven (Hibernate, Spring).

Zároveň bych vedle toho doporučoval nějaký přičichnutí k funkcionálním jazykům, dost triků z nich ulehčej programování (a v procedurálních jazycích často chyběj, bééé :-)). Něco je naštěstí i v novym php (např. vybereš z pole prvky splňující určitý kritérium pomocí
[code]
$result=array()
foreach($pole as $prvek)
if(slozitapodminka) $result[]=$prvek;
return $result;
[/code]
nebo
[code]
return array_filter($pole, function($prvek) {return slozitapodminka});
[/code]
? :-) a to je to nejmensi.
Funkcionální jazyk je třeba i ten javascript (i když to je takovej jazyk sám pro sebe, ale sqělej, když se v něm naučíš). Ale to je jen doplněk, bez toho se dá v pohodě žít, jen Tě to naučí řešit nějaký věci jednodušejc a zároveň efektivnějc.
Dojigiri (1629)|5.5.2010 08:43
No je pravda, že přechod od C++ k Javě je mnohem jednodušší než naopak :) - C++ je o dost "těžší", a s tím, že na něm lze líp vidět určitý zákonitosti (který jsou pak platný i v Javě, akorát to tam není tolik vidět), lze jedině souhlasit ... přechod od C++ k Javě je v podstatě takový uvolnění koule z nohy vězně, na druhou stranu, spoustu věcí v Javě přímo udělat nelze (např. volání systémových API a různých nízkoúrovňových věcí) a dělá se pomocí JNI, voláním dll knihoven napsaných - voila - v C++.
xmarek (1676)|5.5.2010 10:09
Otázka co od takového studia očekáváš.
Já jsem se v minulosti chvíli učil C/C++ a pak už jsem začal dělat jen Javu. Takže pochopitelně tíhnu více k Javě. Ale co jsem tak postřehl tak tábor lidí co dělají např. C# je taky dost velký (v mnohých věcech jsou si ty jazyky svým způsobem podobné). Problémem takových jazyků je, že syntaxi člověk zvládne za pár dní, ale jak efektivně používat některé knihovny a celkově porozumnět způsobu programování ve velkých technologiích je na dýl.
Dovolím si malé srovnání. Aplikaci, kterou snadno vytvoříte pomocí HTML, CSS, JavaScriptu a PHP budete dělat pomocí technologií jako je Hibernate, Spring, JSP, CSS podstatně dýl. Java má bohužel tu smůlu (nebo spíš štěstí), že je dnes roztahaná na všechny strany a zvládnutí některých technologií je otázkou let (alespoň pro mě. :D). Ale odměnou je, že dokážete vytvořit obrovskou aplikaci, která bude mít hlavu a patu. Nevýhoda? Jenom výčet zkratek, které znám (nebo bych měl) by vydalo na pěkný článek. Java mi trochu připomíná Linux (alespoň v době mých začátků v IT). Zpočátku jsem nevěděl, která bije, ale jakmile jsem se do toho více ponořil, tak jsem uviděl ty obrovské možnosti. A myslím si, že o tom asi programování bude (a nejenom v Javě). ;)

Jen tak na okraj. Pokud se budete učit Javu, tak se začněte rovnou učit věci jako je XML (DOM, SAX, DTD, XSD atd). Protože dnes už je Java s těmito věcmi dost svázaná a znalost XML se Vám sejde i jinde.

IHMO http://knihy.pecinovsky.cz/mojj/ je špatná kniha. Nejlepší základy v Javě poskytnou knihy od Herouta (jedna kniha o AWT je už trochu mimo). Bohužel některé věci se naučíte až praxí.
Logout (4018)|5.5.2010 13:31
Právě kvůli tý hrozný roztahanosti Javy je podle mě naprosto nevhodná pro začátečníka. Ten se v tom prostě ztratí - a nebo se navykne si věci "zjednodušovat" a bude psát jako čuník.

Jinak 100pro souhlasím s praxí. Vem si C++, nebo třeba i delphi a snaž se napsat nějakou konkrétní věc. Po třech měsících práce najednou zjistíš, že takový ty naprosto otravný věci jako psaní komentářů, analýza před tím, než začnu psát apod.... Ti ve výsledku ušetřej moře času. A to jsou nezaplatitelný zkušenosti a žádná knížka Ti je nedá, protože kdo se nespálí, tak nevěří...
Sunshine (103)|5.5.2010 17:21
Co od toho očekávam, spravný dotaz. Momentálně studuji na gymnáziu (Cheb) a jak jsem psal chtěl bych další věc, s kterou bych se mohl prezentovat do budoucna (brigády, příjmací pohovor, delší praxe) mam tu jen pár věcí jako je ECDL, certifikáty ze SCIO testů, různá doporučení.
Co odčekávám od toho jazyk, chtěl bych něco kde bude spousta postupů pro řešení, aby to byl silný (jak ted, tak do budoucna) jazyk a aby měl co nejvíce možností, aby byl do budoucna finančně oceněný a dobře přenositelný.
Vím, že toho chci asi moc ale chtěl bych se zameřit na ten jeden jazyk abych ho ovládal opravdu parádně. Určitě to bude za několik let ale je dobré s tím začít co nejdřívě. :)
Je jedno jestli to budu používat na Linuxu nebo na Windowsu zvládam oba OS na asi stejné úrovni, poroto bych ocenitl tu přenositelnost. Vím, že je v tom dobrý C++ jelikož jsem s ním pracoval, když jsem spravoval herní server.

Mam tu i 2 knížky "Mistrovství v C++" a nějakou příručku co mi to nechal strýc. Ale radši píšu abych nezačal s něčím, co je zbytečné.

Takže teď se tu rozhodujeme mezi "Javou" a "C++", mně se zamlouvá C++, ale bojím se toho, že to nezvládnu. Java se tváří, že má jednoduché syntaxe, ale zase asi nebude mít tolik možností jak C++, pokud se pletu pište. :)
xmarek (1676)|5.5.2010 18:54
[quote=Sunshine;373137]Takže teď se tu rozhodujeme mezi "Javou" a "C++", mně se zamlouvá C++, ale bojím se toho, že to nezvládnu. Java se tváří, že má jednoduché syntaxe, ale zase asi nebude mít tolik možností jak C++, pokud se pletu pište. :)[/quote]Složitost syntaxe je IHMO podobná jako u spoustu ostatních jazyků. To bych neřešil, to se dá naučit velice rychle. Málo možnosti? Když nepočítám komunikaci např. s perifériemi počítače (LPT, USB...), které se řeší přes JNI, tak se dá v tomto jazyku dělat v podstatě cokoliv. I psát hry (a to nejenom ty mobilní). Co se týče jazyka C++ tak se tento jazyk přesouvá poslední dobou hlavně do svéry mobilních zařízení, driverů a podobně. Co se týče uplatnění Javy (jak uvádíte dobře finančně oceněný. :D) tak je situace dnes taková, že firmy co dělají Javu jsou z velké většiny v Praze, méně v Brně, okrajově Ostrava a ostatní města tak to už bych napočítal na prstech jedné ruky. :D Hodně firem žije Outsourcingem, takže zase Praha. :D Např. u .NETu je situace o mnoho lepší (alespoň co sleduji). Finance? Tak je to individuální.
Co se týče doporučení Javy, tak se přidávám k Logout-ovi. :thumb Dnes je Java tak roztahaná, že studium je pro začátečníka hodně zmatené a dokáže dost otrávit. Je toho opravdu hodně. Každá věc se dá dělat různým způsobem a pro začátečníka je toho fakt dost. Já dělám Javu už x let a pořád se učím nové věci a problém je, že se ty technologie pořád mění. Příkladem může být Spring, který už je v 3.x verzi a hodně věcí už je tam zase jinak. V době kdy jsem začínal tak byly IDE na přijatelné úrovni, ale dnes? Jako začátečník bych sedl z IDE jako je např. JDeveloper na prdel. A i IDE jako je Netbeans a Eclipse je úplně někde jinde. Upřímně říkám, že znovu bych se to učit nechtěl. ;) Na tvrzení, že je Java jednoduchší bych si osobně dal pozor. :D
Moje doporučení je naučit se pořádně C++, design patterny, dobré programátorské návyky (nepsát aplikace jako prase. :D) a po nějaké té zkušenosti se vrhnout na Javu. Pak jsou ty zkušenosti velmi rychle přenositelné.
Sunshine (103)|5.5.2010 19:10
Co se týče ekonomických věcí, v ČR nechci zůstat ani náhodou. ;) Hned co bude nějaká dobrá příležitost zvedám kotvy na západ přes oceán. :-) To, že je Java lehčí jsem neřekl. Jen se mi zdá, že syntaxe vypadají logičtější oproti C++. Ale to je asi jen pocit, budu věřit zkušeným. :P
xmarek (1676)|5.5.2010 20:40
Trochu OT. :) Pro případné zájemce jsem objevil (asi starší záležitost, ale pro mě nová věc. :D) zajímavý článek o programování. Trošku parodie, ale 100% pravda. Teach Yourself Programming in Ten Years od Peter-a Norvig-a.
Logout (4018)|6.5.2010 12:40
Jinak jedna věc by tady ještě měla zaznít. Programovat dobře i blbě se dá v jakymkoli jazyku a dobrýmu programátorovi je jedno v jakym dělá jazyku. Rozumějte - ne že by se např. v C# nedělalo líp než v atari basicu. Ale pokud umí člověk programovat, tak mu přechod mezi jazyky nedělá problém - jen prostě v lepším jazyku se píše o něco rychlejc, ale to je všechno.
Dokonce většina moderních jazyků nabízí tolik fíčur, že u "horšího" jazyka jen člověk si musí napsat pár svejch vlastních tříd a musí si hlídat disciplínu a některý chyby sám místo kompilátoru, ale jinak se v nich píše v podstatě stejně.

Teda pominu-li knihovny - ty samozřejmě vyžadujou čas se je naučit, a většinou (např. Java) ne malej - a u každýho jazyka jsou jiný. Ale čas učit se rozsáhlejší knihovny je teprv v okamžiku, kdy člověk už umí něco naprogramovat, jinak je stejně bude používat blbě.

Ono IMHO nejlepší je při učení jazyky střídat, tim se člověk zbaví "omezenosti" vyplývající ze syntaxe toho danýho jazyka.
xmarek (1676)|6.5.2010 13:45
[quote=Logout;373301]Jinak jedna věc by tady ještě měla zaznít. Programovat dobře i blbě se dá v jakymkoli jazyku a dobrýmu programátorovi je jedno v jakym dělá jazyku. Rozumějte - ne že by se např. v C# nedělalo líp než v atari basicu. Ale pokud umí člověk programovat, tak mu přechod mezi jazyky nedělá problém - jen prostě v lepším jazyku se píše o něco rychlejc, ale to je všechno. [/quote]Bohužel to má jedno ale. V okamžiku kdy se rozhodnete se programováním živit, tak Vám taková znalost poslouží pouze jako dobrý základ, ale to většinou zákázníka (potažmo zaměstnavatele nezajímá). Alespoň taková je moje zkušenost. :cry
Logout (4018)|7.5.2010 01:13
S tim souhlasim - časem se člověk vyprofilovat musí. Ale člověk, kterej se začne učit programování na javě, protože ta se dneska dobře prodává, se imho nakonec uplatní daleko hůř, než člověk, kterej se naučí základy na nějakym vhodnym jazyku a včas na javu přesedne.

Samozřejmě, že zaměstnavatele nejvíc zajímá praxe v danym jazyku - ale pokud člověk nechce zůstat "blbym kodérem", tak musí umět, a to se jen na jednom jazyku nenaučí.

Na druhou stranu když člověk umí všechny jazyky trochu a nic pořádně, tak taky díru do světa neudělá, to je pravda - chce to umět nějak vybalancovat...
Sunshine (103)|8.5.2010 11:06
Samozřejmě je dobrý zvládat více jazyků, ale já bych si chtěl vybrat právě nějaký, o který se budu zajímat nejvíc. Jak již bylo psáno, zaměstnavatel hledá pokaždé prográmátora pro určitý jazyk a jestli umíé ostatní jazyky, to už ho nezajímá. Podle ohlásů je spíše přikloněno k tomu C++ a k Jave přejít až postupem času, taky to tak udělam jelikož už s C++ pár zkušeností mám.
Chtěl bych Vám poděkovat, že jste mi to pomohli objasnit. :-)

Ještě bych se chtěl zeptat na nějaký prostředí. Sice to bude asi individuální, ale určitě se najde jedno nejpoužívanější. Pro těch drobností jsem používal Microsoft Visual C++ 2008 a Dev-C++, je to dobrá volba? Doporučujete něco jiného? Nemusí to být freeware. ;-)
Logout (4018)|8.5.2010 18:06
Dobrýho zaměstnavatele bude zajímat i kvalita tvojeho kódu. Takže sice neprodáš to, že umíš deset jazyků, ale prodáš to, jak díky tomu bude vypadat Tvuj kód pro Javu.

Prostředí je asi nejlepší buď visual c++, ale dost záleží na tom, co chceš psát (grafika/konzolová aplilkace)....
Dobrý je si i trošičku osahat vývoj bez prostředí (tzn. unix style vi + Make), bys zažil jak funguje překlad.
Sunshine (103)|8.5.2010 21:13
[quote=Logout;373841]Dobrýho zaměstnavatele bude zajímat i kvalita tvojeho kódu. Takže sice neprodáš to, že umíš deset jazyků, ale prodáš to, jak díky tomu bude vypadat Tvuj kód pro Javu.

Prostředí je asi nejlepší buď visual c++, ale dost záleží na tom, co chceš psát (grafika/konzolová aplilkace)....
Dobrý je si i trošičku osahat vývoj bez prostředí (tzn. unix style vi + Make), bys zažil jak funguje překlad.[/quote]

Tak ty rozjezdy stejne budou jako konzolové aplikace. Ke grafickým se budu nejspíš muset přepracovat přes ně.
Jinak s Unix/Linux mám více než velké zkušenosti, provozuju asi 40 VNT/TS serveru + hostuju WoW server a o revize, tedy kompilace jsem se staral já jenže už neni čas. :)
Ale raději bych chtěl dělat věci pro Windows. :)