#1 SimonFx
Takovych dotazu je na netu strasne moc, vzdy to zalezi co v tom chces delat.
Pokud chces programovat weby, nezvolis C++ nebo jeste hur C. Tedy do doby, nez potrebujes neco s obrovskou propustnosti, nizkymi latencemi a minimem vypadku.
Pokud nemas k dispozici vlastni server, tak vlastne nezvolis ani Javu, C#, CGI (tj. libovolny programovaci jazyk). Ale zato ma vetsina webhostingu PHP.
Ve zkratce:
- PHP je dostupne snad u vsech webhostingu. Je ale pomale, pokud pouzijes nejaky framework, tak vygenerovani stranky muze zabrat i sekundy.
- Java neni dostupna jen tak. Bud nejaky specializovany webhosting, nebo vlastni server. U vlastniho serveru je pak dulezite mit sakra moc ramky a aspon 4jadra. Jakmile zacne cistka Garbage Collectoru, tak to defaultne zablokuje jedno jadro jak nic. Klidne i na dlouhe sekundy. Mozna na nejaky okynka a uzivatelske rozhrani (ale opet, jak zasahne GC, tak to hodne zprijemni uzivatelsky komfort, kdyz se program najednou na kdo vi jak dlouho zasekne.
- C je spis na nizkourovnove programovani, jednocipy, ovladace, ... Je v tom uplnej horor osetrovat veskery mozny chybovy stavy a udrzet prehled, co se ma ci nema kdy zrusit ci uvolnit. Urcite nema smysl ucit se C, abys presel pak na C++. Kdyz se ho naucis predem, tak pak budes v C++ psat sileny paskvily (takzvany ceckoviny).
- C++ je take velice nizkourovnovy, napriklad Arduina se programuji v C++. Je to taky casta volba pro programovani her, aplikaci, simulace, vedecke vypocty a spousty dalsich. Objektove programovani dovoluje daleko logictejsi cleneni kodu - abstrakci (no zalezi na tom, kdo v tom pise). A jedna z naprosto nejdulezitejsich vychytavek je tam RAII paradigma. Ve zkratce, kdyz vytvoris nejaky lokalni objekt, tak kdyz program opusti scope (mimo rozsah platnosti toho objektu - kdyz uz se k nemu neda dostat), tak se zarucene zavola destruktor. V konstruktoru se tedy nejaky zdroj (pamet, soubor, socket, .......) zabere a v destruktoru uvolni. To je vec, ktera mi v C neuveritelne chybi. Ani moc dalsich jazyku to nema. Java ve verzi 7 zavadela neco podobneho (try with resources), ale na C++ to furt nema.
- python je zase divnej. Zadnej jazyk se mu moc nepodoba, tezko se prejde na neco jineho. Nicmene se na muj vkus pouziva az prilis casto :D
- Perl je taky docela vrazednej, ale da se naucit. Jen jak s nim clovek par let nedelal, tak uz se vzpomina strasne tezko. A delat v nem s UTF8, to je teprve spravnej horor - alespon par let nazpet (jako CGI nebo FastCGI web aplikace). Ale na commandline scripty ho pouzivam nejvice. Delat podobny veci v shellu a podobne, to by me asi odvezli s prasklou cevkou.
- no a s VB sem se napriklad nikde nesetkal (pokud jsem zrovna neco nekutil s excelem nebo podobne).
S cim zacit je taky tezke rici, ja osobne uz poslednich 8 let delam vesmes jen v C++. A sem tam odskocim k nekteremu jinemu (zasadne podle toho, co chci delat). S C++ se vetsinou strasne blbe zacina, jelikoz naprosta vetsina materialu zacina temer v prvni lekci s pointery, ceckove pole (coz jsou vlastne taky pointery) a tak. Coz jsou obvykle zrovna jedny z narocnejsich veci na pochopeni (a hlavne uhlidani). Pritom se tomu da v zacatcich pohode vyhnout.
Ale casem zjistis, ze pokud se naucis programovat, tak pak uz na jazyku tolik nezalezi. Jen ti pokazdy budou chybet vychytavky z toho predchoziho. A pak ma clovek samozrejme tendence resit veci tak, jak by to resil v predchozim jazyce. Proto, kdyz nejakej Java programator zkusi napsat neco v C++, tak to podle toho dopada.