Avatar
Pavel Nesnídal:

Zdravím,
už docela dobře umím PHP a pracuji v něm dlouho, a proto mě napadlo, že bych se naučil něco nového mimo PHP. Proto bych se rád zeptal, co mám vybrat. Chci zůstat u webu, takže mě napadl Python a Django, Ruby on Rails, ASP.NET. Máte nějaké zkušenosti? Můžete doporučit?
Díky

 
Odpovědět 9. září 19:59
Avatar
Petr Stastny
Redaktor
Avatar
Avatar
Odpovídá na Petr Stastny
Michal Haňáček:

Mohl by jsi důvody nějako rozvést?

Nahoru Odpovědět 9. září 22:22
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Odpovídá na Michal Haňáček
Pavel Nesnídal:

Pokud mysíš důvody naučit se něco nového, tak to žádné jiné důvody nemám. Programování mě prostě baví a chci se naučit něco nového. Jen nevím jaký jazyk mám vybrat a doufám, že mi někdo poradí. :)

 
Nahoru Odpovědět 10. září 15:57
Avatar
hitzoR
Člen
Avatar
hitzoR:

Pokud chceš zůstat u webů, tak bych volil nejspíš to ASP.NET. Pathon a Django jsou dneska na trhu práce už docela mrtvé a po Ruby vývojářích moc poptávka není. Pokud by ti nevadilo jít mimo web, tak jednoznačně Java, tam máš nejlepší šanci se v budoucnu uchytit (ikdyž i v ní se občas weby dělají, co sem slyšel, tak ji prý docela často používají banky a podobné instituce). A ikdyž teď na nějakou práci třeba ani nemáš pomyšlení, tak mi věř, že se ti to určitě bude v budoucnu hodit.

 
Nahoru Odpovědět  -1 10. září 16:07
Avatar
Odpovídá na Pavel Nesnídal
Josef Kuchař (Pepa489):

Nejspíše javascript, běží jak na serveru tak na clientovy a je o něj zájem ;)

Editováno 10. září 16:42
Nahoru Odpovědět  ±0 10. září 16:42
2x piš, jednou debuguj
Avatar
Odpovídá na hitzoR
Pavel Nesnídal:

Díky :) taky o ASP.NET už přemýšlím :) Pracuji jako PHP programátor a zatím vyhovuje, ale samozřejmě beru i pracovní ohledy. V Javě dělám taky, pro weby to ale nepoužívám.

 
Nahoru Odpovědět 10. září 17:01
Avatar
Odpovídá na Josef Kuchař (Pepa489)
Pavel Nesnídal:

Díky, na Node.js bych málem zapomněl :D Pracuješ v něm?

 
Nahoru Odpovědět 10. září 17:02
Avatar
Odpovídá na Pavel Nesnídal
Josef Kuchař (Pepa489):

Ale tak občas něco udělám jen tak pro zábavu, nejčastěji ve spojení se socket.io

Nahoru Odpovědět 10. září 18:47
2x piš, jednou debuguj
Avatar
Pavel Nesnídal:

Neporadil by ještě někdo?

 
Nahoru Odpovědět 12. září 18:33
Avatar
Odpovídá na Pavel Nesnídal
Petr Štechmüller:

Ahoj, za me jednoznačně javascript. Ve složení MEAN stacku:
M - MongoDB (databáze)
E - ExpressJS (web framework)
A - Angular2 (frontend framework od googlu)
N - NodeJS (server)
je to super výkonný nástroj pro tvorbu webů.

Nahoru Odpovědět  +2 12. září 19:11
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Pavel Nesnídal
patrik.valkovic:

Nevím co myslíš pod "docela dobře umím PHP". Pokud zvládáš OOP, tak bych šel na JavaScript. Zůstaneš u webů a můžeš jej v dnešní době použít prakticky na cokoliv. Pokud OOP ještě úplně nezvládáš, doporučil bych C# nebo Javu. V obou jazycích jdou psát weby, i když až se prokoušeš základy. Navíc (na rozdíl od PHP) jsou to typované jazyky.

Nahoru Odpovědět 12. září 19:19
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Pavel Nesnídal
hanpari:

Python
http://flask.pocoo.org/
http://www.sqlalchemy.org/

Fsharp
https://suave.io/
http://websharper.com/
https://fable-compiler.github.io/

Popřípadě Ruby (on Rails), Scala, Haskell, Clojure a jejich příslušné webové knihovny. Nebo také C# nebo Javu, pokud máš hbité prsty a rád píšeš.

Pokud se budeš učit programovat na dysfunkčních jazycích jako jsou php nebo javascript, spláčeš nad výdělkem.

 
Nahoru Odpovědět 14. září 21:33
Avatar
mayo505
Redaktor
Avatar
mayo505:

ja osobne by som, keď to máš na učenie, zvolil iný jazyk, nie dynamicky typovaný. Ale radšej niečo ako C#, Java trochu ťa to donúti o niečo inak rozmýšľať, lebo prasárny, ktoré sa dali robiť v PHP už zrazu nebudú také jednoduché :D Aj keď samozrejme vývoj nejakého blogu zmákneš s PHP skôr.

JavaScript je podľa mňa dobré vedieť a je to veľmi užitočný jazyk, ale mne príde hnusný. Mám rád keď má jazyk dobrú (a peknú, nie pomocou hackou) podporu OOP (minimálne takú ako PHP, v Pythone mi už chýbali nejaké veci) ale v JavaScripte sa to akosi nepodarilo.

 
Nahoru Odpovědět 14. září 22:08
Avatar
hanpari
Redaktor
Avatar
Odpovídá na mayo505
hanpari:

Nedá mi to, ale musím se zeptat. Co přesně ti v Pythonu chybělo?

 
Nahoru Odpovědět  +1 14. září 22:22
Avatar
mayo505
Redaktor
Avatar
Odpovídá na hanpari
mayo505:

privátne veci, rozhrania, abstraktné veci z toho čo ma tak napadá

viem, že pre dosiahnutie privátnej veci sa dá dať dve podtržítka ale je to škaredé a donedávna som dúfal, že už aj prekonané. Potom viem, že obľúbený argument na toto je niečo v zmysle "We're all adults here", ale je fajn môcť dať niečo privátne už len preto aby sa mi to v IDE z vonka nezobrazovalo (hlavne pre metódy)

Rozhrania sa tiež dajú poriešiť nejakou rodičovskou triedou a pri slabo typovaných jazykoch možno trochu strácajú na výhodách, ale keď som mal nejakú logiku, ktorú som chcel rôzne implementovať rôznymi triedami celkom by sa mi hodilo mať to poistené rozhraním

Implementovanie abstraktných metód pomocou vyhadzovania NotImplemented výnimok je tiež len obchádzka, potom viem, že je nejaké abc, ale tiež to nie je až také pekné

Čiže viem, že tie veci idú spraviť, ale v Jave, PHP, C# mi to príde krajšie a jednoduchšie. Na druhú stranu je ale veľa vecí, ktoré sú v Pythone lepšie čitateľné oproti spomenutým jazykom, ale mal som pocit, že sa to netýkalo ničoho spojeného s OOP

 
Nahoru Odpovědět  +1 15. září 10:46
Avatar
hanpari
Redaktor
Avatar
hanpari:

Technicky máš úplnou pravdu, pak mne napadlo, že bys mohl myslet tohle.

Trochu mi to připomíná ten starý vtip, že když člověk chce, může psát Javu v libovolném jazyce. To ale ještě neznamená, že by měl :)

Z dlouhodobého hlediska bych řekl, že je lepší se přizpůsobit Pythonu, a tím nemyslím zrovna OOP část, které je lepší se vyhnout, pokud máš na výběr.

Java a C# tohle neřeší, protože jsou hlavně OOP. Python vychází z řady jiných základů.
Ostatně, se můžeš podívat na tohle profláklé video:

https://www.youtube.com/watch?…

Dokonce i v nejnovější knize o javascriptu jsem našel větu, že OOP je překonané, a to je kriplscript jazyk, který se čím dál víc snaží předstírat, že je OOP.

Ale to je v zásadě jedno. Javascript a Php jsou špatné, ale používané programovací jazyky. Učit se je ad hoc vytváří špatné návyky a zmatené porozumění základům.

Ostatně tady je seznam jazyků, kterým by se člověk měl při učení vyhnout:
https://whydoesitsuck.com/…g-languages/

Myslím tam chybí jenom VB.NET

PS: Samozřejmě, že v nich můžeš psát a živit se jimi tak jako tak.

 
Nahoru Odpovědět 15. září 16:32
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na hanpari
patrik.valkovic:

Prosimtě co to tu meleš? Jak špatné jazyky a špatné návyky? Je na zodpovědnosti programátorů, jak program napíše. To že něco jde, přece neznamená, že se to má v tomhle případě použít!
Potom navrhovat Scalu, Haskell, Clojure někomu, kdo se učí programovat? Proboha proč? Jaké bude mít využití? Bude mu to k ničemu a až bude chtít dělat něco reálného, tak se úplně zbytečně bude prát s OOP.
Příjdeš mi jako takový ten člověk, co "objevil" funkcionální programování a teď je podle něj funkcionální programování nejlepší. Funkcionální jazyky tu byly přes OOP a z určitého důvodu se od nich opustilo. Funkce jsou dobré jen k tomu, k čemu jsou určeny: transformace dat. Ale ty data musí být v něčem uloženy, což si asi neuvědomuješ. Potřebuješ (hlavně v podnikové sféře) mít zaručenu jistou složitost hledání, vkládání atd. Jak to chceš řešit ve funkcionálním jazyce?

Nahoru Odpovědět 15. září 16:50
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Pjanus
Člen
Avatar
Odpovídá na patrik.valkovic
Pjanus:

No od funkcionálního programování se opustilo vpodstatě jenom proto že mnohonásobná rekurze byla v dřívějších dobách velmi problematická s tak omezenou pamětí s jakou museli pracovat. A nevidím žádný důvod proč se neučit funkcionální jazyk jako první, neexistuje věc která by šla napsat v OOP jazyku a nešla napsat ve funkcionálním. Ve většině případů s hezčím kratším kódem.

 
Nahoru Odpovědět 15. září 17:06
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Pjanus
patrik.valkovic:

Vše napíšeš i na Turingovem stroji, přesto zůstal pouze v teoretickém poli ;-)
Tak co nejde ve funkcionálním jazyce? Co třeba generátor náhodných čísel? Jak tohle vyřešíš, když funkce musí pro stejné vstupy vracet stejné výstupy?
EDIT: a pod pojmem "hezčí kratší kód" si nepředstavuji zrovna hromadu závorek, na které nefunguje ani IntelliSense.

Editováno 15. září 17:17
Nahoru Odpovědět 15. září 17:16
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Pjanus
Člen
Avatar
Odpovídá na patrik.valkovic
Pjanus:

Uznávám že IDE co se týče funkcionálních jazyků mírně zaostávají (zvláště na Windows). A uznávám že to je minimálně z části validní argument, proč s takovým jazykem nezačínat. Ale co se týče první otázky samozřejmě že to lze vyřešit dokonce několika způsoby, ale nejjednodušší je pomocí tzv. monádu, díky tomuto konceptu je možné ve funkcionálním jazyce dělat i věci které do jisté míry používají stavy bez jejich negativních efektů. A pod pojmem hezčí kód mám na mysli kód, který je na první pohled jednoduší na pochopení. Upřímně jediný argument proti učení funkcionálních jazyků začátečníky bych viděl menší materiálová základna pro učení.

 
Nahoru Odpovědět 15. září 17:43
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Pjanus
patrik.valkovic:

Protože je funkce samostatna jednotka a ještě k tomu na prvním místě, potom ani není prostředek, jak napovídat, a skutečně si v hlavě držet všechny vestavěné a ještě vlastni funkce není možné.
Co se týče negativních efektů stavů, funkcionální jazyky to řeší immutable - šíleně to žere výkon. Jinak zrovna co se týče "efektivních" implementaci immutable, stejně je pod tím nějaký objekt, jem je to v jazyce skryto.
S tím, že je funkcionalni kód lepší na pochopení nesouhlasím. Upřímně jsem nedávno začal s Clojurem a pořád jsem ještě nepřišel na to, jak kód formátovat tak, aby to bylo nějakým způsobem čitelné.
Ja nedoporučuji funkcionální jazyky, protože to člověk nevyužije. Navíc se potom základy těžko přeučují.

Nahoru Odpovědět 15. září 18:04
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Pjanus
Člen
Avatar
Odpovídá na patrik.valkovic
Pjanus:

Upřímně nevím jak to řeší Clojure ale já programuji v Haskellu kde mi IDE napovídá funkce. Celkově ti podle mě uniká pointa funkcionálních jazyků, nikdo netvrdí že potom co se přeloží se nepřeloží do imperativního jazyka, ale o to nejde. Hlavním cílem funkcionálního jazyka je co největší možnost abstrakce, snažit se co nejvíc odpoutat od konkrétní implementace jednotlivých funkcí a jejich optimalizace k samotnému stavění programu. Jinak máš určitě pravdu že hlavní je poptávka po OOP jazycích (což se taky pomalu mění) tudíž pokud někomu jde pouze o to si vydělat teď tak je OOP jasná volba. Ale funkcionální programování je stále na vzestupu a začínají si to uvědomovat i hlavní hráči světa IT (Facebook, Microsoft,...), podle mě je funkcionální programování budoucností programování samotného. Ale trochu jsme tím odbočili od tématu samotného hlavním důvodem mé první reakce byla ta poznámka "a z určitého důvodu se od nich opustilo" protože ta je dle mého názoru naprosto zcestná. Pokud chceš dále pokračovat v diskuzi (čemuž sem otevřen) doporučuji založit nové vlákno abychom neplnili toto příspěvky, které odbíhají od tématu.

 
Nahoru Odpovědět  +2 15. září 18:22
Avatar
hanpari
Redaktor
Avatar
Odpovídá na patrik.valkovic
hanpari:
  • Prosimtě co to tu meleš? Jak špatné jazyky a špatné návyky?

Nebudu se opakovat. Pokud nevíš, o čem je řeč, doporučuji samostudium. Stačí do strejdy Googlea zadat mírně pejorativní "Why php (javascript) sucks" a najdeš řadu odkazů, a to od profesionálních programátorů. Základ Javascript a Php je slátanina. První vznikl za deset dnů, druhý zase jako soubor skriptů pro domácí stránky.

  • Je na zodpovědnosti programátorů, jak program napíše. To že něco jde, přece neznamená, že se to má v tomhle případě použít!

Opravdu? Hm, vzhledem k tomu, že jsem se nedávno díval na Javascript, rozhodně to je odvážné být v něm za cokoliv zodpovědný. To je prostě minové pole.

  • Potom navrhovat Scalu, Haskell, Clojure někomu, kdo se učí programovat?

A proč někomu navrhovat Php nebo Javascript? Ze sadismu?

- Proboha proč? Jaké bude mít využití? Bude mu to k ničemu a až bude chtít dělat něco reálného, tak se úplně zbytečně bude prát s OOP.

Kdežto PHP implementace ho vytrhne, nebo Javascript, který je prototypový a OOP pracně předstírá? Python, Scala, Fsharp, Ruby mají OOP na slušné úrovni. Uznal bych ti leda Haskell, popřípadě Clojure.

  • Příjdeš mi jako takový ten člověk, co "objevil" funkcionální programování a teď je podle něj funkcionální programování nejlepší.*

Omyl. FP je prostě všude - a pokud se snažím otvírat oči mladým a nevinným, měli by mi za to jen poděkovat. Hledět v roku 2016 na IT stránky, které propagují OOP a PHP mi přijde neuvěřitelné. Možná by ses měl na chvíli vrhnout na anglický internet, pobrat tam nějaké informace a potom mi, hm, poděkovat?

  • Funkcionální jazyky tu byly přes OOP a z určitého důvodu se od nich opustilo.*

Bože můj, Microsoft zrušil LINQ? Java 8 je mrtvá? SQL se už nepoužívá? Kdy se to hergot stalo? A PHP nepřidalo zmrvené closures a anonymní funkce?

  • Funkce jsou dobré jen k tomu, k čemu jsou určeny: transformace dat. Ale ty data musí být v něčem uloženy, což si asi neuvědomuješ.*

Není to spíš tak, že ty si neuvědomuješ, že data a funkce můžou zůstat oddělené? Vyhneš se tak řadě problémů a zjednodušíš si život.

  • Potřebuješ (hlavně v podnikové sféře) mít zaručenu jistou složitost hledání, vkládání atd. Jak to chceš řešit ve funkcionálním jazyce?**

Nechápu, v čem je podle tebe problém? V podnikové sféře potřebuješ přesně to, co ti nabízí FP jazyk. Bezpečný, stručný, srozumitelný. Tu pasáž o hledání a vkládání nechápu. Pokud máš tím druhým na mysli tzv. immutability, nuže, můžeš si počíst tady:

http://funkcionalne.cz/…e-struktury/

Soudě podle toho, na co se zatím ptáš, nevím, do jaké míry to pojmeš, ale za pokus nic nedáš.

 
Nahoru Odpovědět  +1 15. září 18:36
Avatar
hanpari
Redaktor
Avatar
Odpovídá na patrik.valkovic
hanpari:

A když už jsem se tak hezky rozepsal, musím tě ještě pochválit za ten hezký příklad s náhodnými čísly. To jsi mi tedy vyrazil meč z ruky. Musím uznat, že nevím o žádném funkcionálním jazyku, který by to dokázal.

Bohužel pro tebe neznám žádný programovací jazyk, který by to dokázal tak, jak si to zřejmě představuješ.

Najde se někdo, kdo mu vysvětlí jeho omyl? Nebo na to přijde sám? Toť otázka za padesát bodů.

Napovím, proč random funkce vrací pseudonáhodná čísla? Jakpak vznikají? Vynoří se z elektronického nekonečna?

Umím si představit, že by tak mohli fungovat kvantové počítače.

 
Nahoru Odpovědět 15. září 18:48
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na hanpari
patrik.valkovic:

No z tvé reakce usuzuju, že vůbec nemáš představu, o čem tady mluvím. Nevadí, třeba časem. Nicméně jak bylo řešeno, už odbíháme od tématu, takže to uzavírám.

Nahoru Odpovědět 15. září 18:53
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
hanpari
Redaktor
Avatar
Odpovídá na patrik.valkovic
hanpari:

No dobrá, božíčku, tak si tady alespoň nastuduj tu random funkci, ať můžeš v klidu trápit svědomí :)

A pseudorandom variable is a variable which is created by a deterministic procedure (often a computer program or subroutine) which (generally) takes random bits as input. The pseudorandom string will typically be longer than the original random string, but less random (less entropic, in the information theory sense). This can be useful for randomized algorithms.

Všimni si prosím těch náhodných bitů. To že nevíš, odkud si je ta tvá funkce bere neznamené, že tam nejsou. Už ti to docvaklo?

Editováno 15. září 19:06
 
Nahoru Odpovědět  -1 15. září 19:06
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na patrik.valkovic
Martin Dráb:

Vše napíšeš i na Turingovem stroji, přesto zůstal pouze v teoretickém poli ;-)

Jelikož má výhody (pro některou teorii), které jaksi běžné programovací jazyky nemají: je jednoduchý. Navíc se nám jej zatím ani nepodařilo vyrobit. Pro některé teoretické oblasti se zase hodí jeho "funkcionální obdoba" – částečně rekurzivní funkce (proti nim je programování na TS podle mě úplná hračka).

Co jsem mohl vidět a posoudit, tak funkcionální jazyky (mám zkušenosti trochu s Haskellem) prostě leží na daleko vyšší úrovni než ty "běžně používané", což má výhodu v tom, že neřešíš implementační detaily. Ztráty výkonu bych se zas tolik nebál, protože existuje spousta oblastí, kde není potřeba. Navíc, v jakém nefunkcionálním jazyku napíšeš quicksort na jeden řádek jen téměř doslovným překladem hlavní myšlenky algoritmu?

Co jsem měl možnost pozorovat spolužáky na MFF, tak někteří (včetně mě) měli s funkcionálem velké problémy; prostě v tom nedokázali elegantně myslet. Ale byly i opačné případy – někdo zase v OOP a podobném moc nevynikal (i samotná syntaxe byla celkem problém), ale pro funkcionál jako by se narodil (ona tam ta sytaxe moc neexistuje).

Byl by to zajímavý experiment, začít se učit jako první nějaký funkcionální jazyk. Rozhodně by to mělo blíže k teorii algoritmů.

Náhodný generátor bych neřešil. I v tom funcionálu prostě musíš nějak umět komunikovat s vnějším světem, který obsahuje i pseudonáhodný generátor.

Nahoru Odpovědět 15. září 20:21
2 + 2 = 5 for extremely large values of 2
Avatar
Filmun
Člen
Avatar
Filmun:

a

 
Nahoru Odpovědět 27. září 11:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 30 zpráv z 30.