Co se učit za programovací jazyk?

tm

Re:Co se učit za programovací jazyk?
« Odpověď #45 kdy: 09. 08. 2014, 12:35:44 »
tajne doufam ze lidi co prispivaji do vlakna "jak dlouho se da zivit programovanim" kteri pisou, je mi 40... mi sem napisou proc C++ ktery ma presne takovy vlastnosji jaky pisete je porad jazyk v kurzu :)
To je tym, ze C++ je velmi flexibilny - na jednej strane ma dost high-level konstrukcii, aby sa v tom dali rozumne robit velke projekty, a na strane druhej je dostatocne low-level, aby sa s nim dalo ist blizko k hardwaru, ked je treba. Navyse nie je viazany na nijaku platformu, co je tiez bonus navyse.


Re:Co se učit za programovací jazyk?
« Odpověď #46 kdy: 09. 08. 2014, 12:39:43 »
ahoj, tak jsem se rozhodnul pro C++ [...] C++ je rozhodne vyzva a jak tu predemnou nekdo rekl: zivite se Linuxem? naucte se Win (zjednodusuji) a lehce chapu vyvoj v C++ jako nejaky protiklad k progrmovani v Jave, C#
Hm :( Tak to ses rozhodl pro hodně nudnou sázku na jistotu. Jasně, C++ ti zajistí, že pro tebe bude vždycky místo v nějakým kjůbiklu, voda zdarma, stravenky a tři týdny dovolené.

C++ není vůbec, ani trochu, protiklad k javě. Je to v podstatě úplně stejný jazyk, ve kterém se přemýšlí úplně stejně (když uvažuješ v rámci celého spektra všech jazyků), který ti nedá vůbec nic, než to zaručené místo v kjůbiklu. Kdyby sis aspoň vybral nějaký dynamičtější jazyk (Python, Ruby), ale C++ jako doplněk nebo dokonce "protiklad"? Ach jo...

Takže pro ostatní, kteří se chtejí opravdu naučit něco novýho, ne jenom novou syntaxi pro staré koncepty:

Erlang je vynikající volba. Naučíte se spoustu nových konceptů, spoustu nových cest, jak řešit problémy. Nejvýraznější vlastností jsou levné procesy (takže úplně cokoli, i sebemenší blbost, může člověk řešit asynchronně, což ho zase donutí myslet v "paralelizovatelném kódu"), immutabilita vyvážená persistentními datovými strukturami a extrémně jednoduchý jazyk jako takový (naučíte se za jedno odpoledne).

Na Erlangu mi nejvíc vyhovuje, jak je nastavená míra čistoty - ne tak moc, aby se z toho člověk zbláznil (některé akademické pokusné jazyky), ale na druhé straně dost na to, aby člověk psal fakt funkcionálně a neměl cukání použít mutable struktury, což pak vede ke garancím, na které se může spolíhat i překladač (to mi třeba přijde jako nevýhoda Clojure - kvůli propojení na javu prostě garance z principu padají).

Nicméně kvůli fakt značné jednoduchosti jazyka a kvůli jeho stáří má Erlang některé nedostatky a kromě toho má pár fakt opruzoidních vlastností (např. že nemůžete znovupoužít název "proměnné", kvůli velice striktní syntaxi se strašně nepohodlně dělá i drobný refaktoring typu "přidám řádek na konec funkce" atd. atd.). Tohle hodně dobře odstraňuje jazyk Elixir ( elixir-lang.org ), který je s Erlangem plně kompatibilní (oboje jsou to funkcionální jazyky, takže komptibilita je daleko větší než třeba Clojure-Java), takže cokoli se dá napsat v Erlangu, dá se úplně stejně napsat v Elixiru, včetně plné kompatibility na úrovni externích knihoven a standardní knihovny (plná podpora OTP!!!).

Elixir je mladý a doteď se hodně hýbal, takže byl docela opruz držet s vývojem krok (spousta zpětně nekompatibilních změn). Teď se ale ve velice krátké době plánuje vydání verze 1.0, která už bude garantovat stabilní API. Nebojte se, 1.0 je verze samotného Elixiru, nemá to žádný vliv na stabilitu programů jako takových, protože tu zajišťuje rock-solid Erlang VM, OTP atd.

Takže kdokoli si chce rozšířit obzory, Elixir fakt hodně doporučuju. Není to žádná akademická hračka, je to fakt rock-solid záležitost. Sám v tom programuju (pro mě) nejkritičtější věci. Zároveň s Elixirem se člověk naučí Erlang, protože ty dva jazyky jsou hodně provázané. Proto bych taky jako studijní materiál doporučil: http://learnyousomeerlang.com/ - tam se člověk naučí základní erlangovské koncepty a standardní knihovnu, což pak jenom přepíše do jiné (elixirovské) syntaxe.

Funkcionální programování nepodceňujte, je to fakt parádní záležitost - osvěžující, osvobozující, nádherná ;) Naučit se nějaký funkcionální jazyk bych doporučil i jenom proto, že člověk získá znalosti, které pak může použít i v konvenčnějších jazycích (např. takový Actor Model by měl znát fakt každý programátor, jenže C++ ani Java ho k tomu moc nepřivede...)

No a pokud by Erlang/Elixir byl na někoho moc, tak ať zkusí aspoň http://akka.io/ (tam je kvůli JVM možná i větší šance komerční využitelnosti, nevím).

perceptron

Re:Co se učit za programovací jazyk?
« Odpověď #47 kdy: 09. 08. 2014, 12:43:17 »
Citace
No a pokud by Erlang/Elixir byl na někoho moc, tak ať zkusí aspoň http://akka.io/ (tam je kvůli JVM možná i větší šance komerční využitelnosti, nevím).
akka je jadro pre kde-co, scala to ide pouzivat ako standardny model pre aktorov, scalacky webovy framework play to pouziva tiez, a videl som uz par firiem (cr/sr), co nad tym uvazuje, alebo uz to potichu zavadza

死神

  • ***
  • 159
    • Zobrazit profil
Re:Co se učit za programovací jazyk?
« Odpověď #48 kdy: 09. 08. 2014, 12:52:36 »
Přidám svou trošku do mlýna. Pokud je cílem mít zajištěný slušný příjem, pak bych doporučil, i když to může vypadat divně, COBOL. Je v něm napsáno a stále se v něm píše neskutečné množství business kódu, staří cobolisti vymírají a mladí nikde. Asi to nebude osvobozující ani osvěžující, ale zase to bude dobře zaplacený ;D

bsmk

Re:Co se učit za programovací jazyk?
« Odpověď #49 kdy: 09. 08. 2014, 12:56:06 »
Citace
No a pokud by Erlang/Elixir byl na někoho moc, tak ať zkusí aspoň http://akka.io/ (tam je kvůli JVM možná i větší šance komerční využitelnosti, nevím).
akka je jadro pre kde-co, scala to ide pouzivat ako standardny model pre aktorov, scalacky webovy framework play to pouziva tiez, a videl som uz par firiem (cr/sr), co nad tym uvazuje, alebo uz to potichu zavadza
a este doplnim ze existuje nieco ako http://www.reactive-streams.org/ pre ktore je akka-streams jednou z implementacii


Re:Co se učit za programovací jazyk?
« Odpověď #50 kdy: 09. 08. 2014, 13:01:54 »
a este doplnim ze existuje nieco ako http://www.reactive-streams.org/ pre ktore je akka-streams jednou z implementacii
Diky za odkaz, vypada to zajimave. Ukladam do Pocketu ;)

čobol

Re:Co se učit za programovací jazyk?
« Odpověď #51 kdy: 09. 08. 2014, 13:18:55 »
Přidám svou trošku do mlýna. Pokud je cílem mít zajištěný slušný příjem, pak bych doporučil, i když to může vypadat divně, COBOL. Je v něm napsáno a stále se v něm píše neskutečné množství business kódu, staří cobolisti vymírají a mladí nikde. Asi to nebude osvobozující ani osvěžující, ale zase to bude dobře zaplacený ;D

Učit se ho sám je nesmysl. Jazyk to není úplně špatný, ale prakticky dnes k ničemu. Jiná věc je, že ti to učení někdo zaplatí. Nedávno jsem nabízel, že se klidně Cobol naučím, když to zaplatí. Oni začali blekotat něco o 50k nástupu s tím, že do mě investují. Tak jsem se na ně vykašlal a šel dělat jinam. Takže rozhodně nebude problém s tím, že by mladí nebyli k dispozici. Jen o ně nikdo nestojí, tak ať si to dělají sami a nabírají třeba v domově důchodců.

tojsemja

Re:Co se učit za programovací jazyk?
« Odpověď #52 kdy: 09. 08. 2014, 13:58:58 »
Citace
a to nechci. 1) protoze je to M$ :D 2) protoze je to dalsi spolecnost...

Klasicky zaslepeny linuxacek, co bude radeji pouzivat horsi SW jen aby nemusel dat te zle deti pozirajici firme nejakou korunu. Efektivita jde do diry, prachy nebudou ale muzeme chodit po namesti s cedulkou "Nepouzivam MS produkty, prosim prispejte mi na jidlo."

+1
Predpojatost nekterych lidi nepochopim.
Ani bych se nedivil pokud by to vsechno byli ti tzv. "ajtaci", kteri delaji spatnou vizitku nasemu oboru. Pak si o nas vsichni mysli, ze sedime ve sklepe, nemyjeme se, pouze se ladujeme chipsy a jsme ti divni introverti... Svet velkych softwarovych systemu a svet jednotlivych zabednenych linuxaku je diametralne odlisny. Meli by vylezt z tech svych der a zjistit jak to chodi ve svete narocnych zakazniku, velkych penez a obrovske tymove spoluprace, kde jeden clovek sam nic poradneho nezmuze.

Prosim konkretneji: MS technologie, C#, .NET, ASP patri do skatulky vetsi business, vic penez, vetsi uplatneni? Ja netvrdim ze to tak neni. Jen se ptam! :) Do jake skatulky tedy patri Linux, open source, C++? Ano, je hloupost C++ davat do stejne krabice s Linuxem, ale nejaky poradek si v tom musim udelat. Dekuji :)

tojsemja

Re:Co se učit za programovací jazyk?
« Odpověď #53 kdy: 09. 08. 2014, 14:20:38 »
jeste pridam jednu zkusenost:

byl jsem kdysi na pohovoru v AutoContu na juniorskou pozici javisty. Matne si vybavuju ze to bylo dokonce na part time job specialne pro studenty. Dostal jsem za ukol neco v Jave za 14 dnu napsat. Venoval jsem tomu hrozne moc casu a pak na pohovu jsem mel pocit ze si z toho lehce sedli na zadek. Ale nevzali me. Mega jsem pak zjistoval proc, a zkusenejsi lidi kolem me mi rikali ze neumim C# ktery autocont taky docela pozaduje. Matne si vybavuju ze se me na pohovoru na C# ptali. Samo jsem jim odpovidal ze uvarim kafe a do pristiho pondeli to umim jako nikdo na svete ale...

Mirek Prymek: "C++ není vůbec, ani trochu, protiklad k jave" => neco jsem jednou musel v C# delat, takze dejme tomu ze z vlaku vim o co se jedna. A sjednotil jsem C# a Javu na stejnou uroven a dal do protikladu s C++ protoze: kdyz programuju v Jave (a neni to tim ze mam cca < 5 let zkusenost) mi java prijde ze se v tom dela hrozne lehce. O nic se nestaram. Zavolam new, neresim pamet. Mam vsechno co potrebuju intuitivne a po ruce. Vyvoj v Jave a potazmo C# mi prijde tak intuitivni ze se nakonec vic soustredim na to co programuju nez na jazyk. Coz mi u C++ neprijde => vychzim z jazyka C u kteryho jsem stravil docela dost casu na stredni skole... A to je ten duvod proc jakoby saham po protikladu, a doufam ze mi ten jiny pohled na svet neco prinese.

Snazne Vas panove prosim a znovu opakuji. Houno jsem v IT dokazal. Je mi 24 a proste se rozmyslim jak dal. Ne, fakt nemam naexpeno jak vetsina z vas, tak proto Vam moje komentare muzou pripadat hafo postaveny na palici. Dekuju za pochopeni :)

Re:Co se učit za programovací jazyk?
« Odpověď #54 kdy: 09. 08. 2014, 14:39:23 »
Snazne Vas panove prosim a znovu opakuji. Houno jsem v IT dokazal. Je mi 24 a proste se rozmyslim jak dal. Ne, fakt nemam naexpeno jak vetsina z vas, tak proto Vam moje komentare muzou pripadat hafo postaveny na palici. Dekuju za pochopeni :)
To je samozřejmě úplně v pohodě, nikdo (aspoň doufám) se ti přece nebude smát za to, že v určitým věku máš jenom určitý vědomosti a zkušenosti. Hele, každej z nás v pěti letech tahal kačera, na tom přece nic není! Důležitý je se vyvíjet a netáhnout za sebou kačera ještě na svatbě :)

Přestože nejsem nějakej úplně language freak a programování není moje primární zaměření, věř mi, že svět programovacích jazyků je fakt široký. A na celým tom spektru, který je k dispozici, je vzdálenost mezi Javou a C++ téměř nulová - oboje jsou to imperativní, staticky typovaný jazyky, v obojím se používá primárně OOP a to ještě stejně zpraseným způsobem (např. koncept "volání metody" místo "posílání zprávy", zbytečně přehnanej důraz na dědění a všechno kolem něj) akorát u C++ je OOP oproti javě zprasený výrazně víc. Oboje má prakticky stejnou syntaxi, která se liší tím, že u jednoho napíšeš "extends" a u druhýho dvojtečku, ale ten koncept je naprosto stejnej. Že jedno jede na VM a v druhým se musíš trochu starat o paměť, je nezajímavej detail.

Ono se to těžko vysvětluje, když jsi žádnej výrazně jinej jazyk zatím nezkusil. Proto bych ti to taky doporučoval. Pro to, abys pochytil ten rozdíl, ti stačí si s nějakým jazykem hrát den, dva. Nemusíš se ho hned ze startu vyloženě učit, pro začátek stačí trochu chytit tu jeho příchuť.

Dej jeden den tomu, že si vyzkoušíš Prolog, a uvidíš, že C++ fakt není "protiklad" javy :)

Bla

Re:Co se učit za programovací jazyk?
« Odpověď #55 kdy: 09. 08. 2014, 14:43:51 »
Protože Vaše pohledy na tuto tématiku jsou poněkud omezené, rozhodnu se Vám nabídnout i pohled z jiné strany.

Jednak učit se něco, pro co neexistuje trh/poptávka, je IMHO blbost a jen zajímavý koníček.

Tak se na to podívejme z druhé strany.

Víte, co to je móda?
Jeden rok je moderní dělat v Java, za pět let to je .NET a pak zase třeba Javascript na serveru s Node.
A pak jsou nemoderní jazyky, jako je třeba ABAP nebo Cobol.

Předpokládaná životnost tanku v boji byla typ 72 okolo čtyř minut.

Člověk se může rozhodnout, jestli bude maso do mlejnku, pěšák nebo PHPčkář.
Jestli bude tank (C#, Node) s větší hodnotou pro firmu.
No a nebo jestli bude jaderná střela ABAP+Java.

Pěšáci si mění raz dva.
Tanky se taky obměňují.
Ale jaderné střely zůstávají ve výzbroji poměrně dlouho.

Systém SAP R3 byl vydán okolo roku 1998 a dodnes na něm jede řada korporací a ještě tak 3-6 let pojede.
To je v IT nevídaná doba!

Byl jsem ve firmě, kde se PHP kodéři měnili co tři roky, Cčkaři co pět let, ale ABAPisti dostávali přidáno.

Prostě ABAP je nejsilnější kalibr.
SAP se dnes orientuje na JAVU, ale od ABAPu se pořád ještě neodešlo, takže člověk s kombinací ABAP/JAVA zběhlý ve správě SAP R4 má na příštích 20 let SOLIDNĚ zaplacenou práci zajištěnou.

To je možná pohled, který těm hloupějším z Vás nic neřekne, ale ti chytřejší se nad tím možná zamyslí a řeknou si, že je to jiný úhel pohledu a že na tom může něco být.

Re:Co se učit za programovací jazyk?
« Odpověď #56 kdy: 09. 08. 2014, 14:53:26 »
Anebo jestli seš fakt přízemněji orientovanej člověk a do žádných ani trochu dobrodružství se ti vyloženě nechce, tak zkus aspoň Go - podívej se na pár příkladů řešení typických problémů pomocí gorutin a srovnej si to s tím, jak bys ten stejnej problém řešil v javě.

Bla

Re:Co se učit za programovací jazyk?
« Odpověď #57 kdy: 09. 08. 2014, 14:57:18 »
Uvedu ještě doplnění, pokud by se mě někdo zeptal, jestli bude mít jako SAPista/ABAPista a programátor na stará kolena mezi 50-ti a 60-ti práci, řekl bych mu, ať se nebojí, protože to je část trhu, kam se nejenže moc programátorů nežene, moc jich na to nemá a lidi se tu mění jen málo často.

Samozřejmě moderní jazyky typu Node, C#, Java programátoři malých projektů, dost možná po pěti-deseti letech skončí v propadlišti dějin. Takže tam bych se bál.

A když se mě kdokoliv zeptá, jestli bude mít práci mezi 60-ti a 70-ti jako programátor, tak mu řeknu, že v lepším případě ještě stále bude programovat, možná s tím skončí i v televizi, ale někdy okolo 68-mého roku ho posraného v kanclu havrani sundají ze židle, našťouchají do rakve a ředitel nařídí vztyčit černou vlajku nad firmou. Nejsem moc zvědavý, aby mě okolo 60-ky chodili kolegové očuchávat, jestli ještě žiju.

student

Re:Co se učit za programovací jazyk?
« Odpověď #58 kdy: 09. 08. 2014, 15:04:41 »
Systém SAP R3 byl vydán okolo roku 1998 a dodnes na něm jede řada korporací a ještě tak 3-6 let pojede.
To je v IT nevídaná doba!
Java bola vydana v roku 1995. Presla sice par velkymi zmenami, ale stale je to Java.
C je tu cca od roku 1970 (ako Unix). A stale na nom ide kopa korporacii - zmena je v nedohladne.

Znamena to cele nieco, ked pises o prepustani C-ckarov po 5 rokoch?

Bla

Re:Co se učit za programovací jazyk?
« Odpověď #59 kdy: 09. 08. 2014, 15:32:56 »

Taková diskuze nemá cenu, když máš problém s porozuměním psaného textu.