IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Hledá se: náhrada PHP

Aktivity
Avatar
Neaktivní uživatel:21.9.2013 20:18

Zdravím,

poslední dobou začínám být celkem frustrovaný z PHP a tak se snažím najít nějaké jazyky, se kterými se dají dobře psát webové aplikace.

Zatím mě napadá jedině Python, do Ruby se mi moc nechce, ale ve výsledku mi 100% nevyhovuje ani ten Python. Byl bych nejradši za Python se statickým typováním...

Odpovědět
21.9.2013 20:18
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:21.9.2013 20:23

Zkus PHP :)

Nahoru Odpovědět
21.9.2013 20:23
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
niveses
Tvůrce
Avatar
niveses:21.9.2013 20:28

Dart?
Zárověň i nahradí JS.

Editováno 21.9.2013 20:28
 
Nahoru Odpovědět
21.9.2013 20:28
Avatar
Odpovídá na niveses
Neaktivní uživatel:21.9.2013 20:32

Myslel jsem čistě nebo primárně back-end jazyk. Dart už používám.

Nahoru Odpovědět
21.9.2013 20:32
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:21.9.2013 20:32

A teď vážně: Pokud chceš něco staticky typovaného vhodného pro web, použij Javu.

Pokud však nemáš možnost použít webhosting s Javou, nauč se pořádně PHP, protože se v něm už dají dělat kvalitní aplikace, u kterých ti dynamické typování vadit nemusí. Zdrojový kód PHP a Javy dnes už vypadá skoro stejně.

Nahoru Odpovědět
21.9.2013 20:32
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na niveses
Drahomír Hanák:21.9.2013 20:37

Než Dart opravdu nahradí JavaScript (tj. bude možné ho použít bez kompilace do JS), bude to dost dlouho trvat (pokud se zároveň nezastaví jeho vývoj). Do té doby je ho třeba pořád ještě překládat do JS a v souvislosti s tím bych chtěl zmínit ještě TypeScript, který se do JS taky kompiluje. Takovou zaručenou (tj. odzkoušenoua použivanou ve spoustě velkých projektů) alternativou je CoffeeScript. Nakonec ani samotný JS na tom není tak špatně. Osobně bych šel právě do JS (ať už CoffeeScript, TypeScript, Dart)

Kromě klienta se dá použít i na serveru a to velice dobře. Node.JS, platforma založená na V8, je hodně pěkná.

 
Nahoru Odpovědět
21.9.2013 20:37
Avatar
Odpovídá na Kit
Neaktivní uživatel:21.9.2013 20:38

Na Javu jsem už koukal, ale ta ve mně spolu s ASP.NET budí dojem obrovského nástroje, který se hodí na velké aplikace. Stejně to u té Javy ale nakonec nejspíš skončí.

To statické typování není nezbytně nutné, ale bylo by to jenom plus. Možná se ale ještě detailněji podívám na Dart, jestli by ten k tomu nešel nějak využít, protože u něj mi to typování přijde naprosto geniální.

Editováno 21.9.2013 20:39
Nahoru Odpovědět
21.9.2013 20:38
Neaktivní uživatelský účet
Avatar
niveses
Tvůrce
Avatar
Odpovídá na Drahomír Hanák
niveses:21.9.2013 20:42

Já právě pokukuji po Dartu :)

On se ani Google nesnaží o náhradu JavaScriptu. Vytváří Dart vedle JS. Kompilace do JS probíhá jednoduše. Dart jako takový podporuje(nebo v blízké době) bude podporovat Chrome. O ostatních prohlížečích se zatím nemluví.

Dart je tu zatím cca rok a půl. JavaScript 18 let.

 
Nahoru Odpovědět
21.9.2013 20:42
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Drahomír Hanák
Kit:21.9.2013 20:42

jj, zkusil jsem si nasadit HTTP server Node.js. Je to zajímavé řešení.

Nahoru Odpovědět
21.9.2013 20:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na niveses
Drahomír Hanák:21.9.2013 21:01

Tak hlavní výhoda Dartu je oproti těm ostatním to, že může běžet samostatně (má vlastní VM). Nijak jsem ty technologie nechtěl hodnotit, jen jsem shrnul jak se dnes používají. Osobně se mi taky nejvíce líbí Dart.

Když to shrnu tak jsou tu IMHO 2 největší problémy při vývoji větší aplikace v JS: Jak do JS přidat typování? Jak v JS vyřešit moduly a jejich načítání?

JavaScript

  • typování: Google Closure compiler
  • moduly: Angular, Require.js, Google Closure ... (v Node.JS - module.exports)

CoffeeScript
to samé jako JS

TypeScript

  • typování: volitelné
  • moduly: podpora modulů podobně, jak budou přidány v ECMAScript 6

Dart

  • typování: volitelné
  • moduly: nativní podpora
 
Nahoru Odpovědět
21.9.2013 21:01
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:21.9.2013 21:22

Spíše PHP neumíš dost dobře na to, abys v něm kvalitní aplikace psal. Na tom jazyce v zásadě nic špatného není kromě pár starých funkcí, na které si můžeš udělat wrapper.

Nahoru Odpovědět
21.9.2013 21:22
New kid back on the block with a R.I.P
Avatar
Neaktivní uživatel:28.9.2013 10:32

Hraji si pár dní s tím Dartem na serveru a vypadá to naprosto úžasně. Pokud někoho PHP občas na štve, nebo si prostě chce zkusit něco jiného, určitě by to měl být Dart.

Nahoru Odpovědět
28.9.2013 10:32
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:28.9.2013 11:09

No jo, 156 MB v zipu. To je pěkný macek. To je snad i s frameworkem dohromady. Raději zůstanu u osvědčeného PHP a JS.

Nahoru Odpovědět
28.9.2013 11:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:28.9.2013 11:13

Poslední co web potřebuje je nestandardní programovací jazyk od Googlu :)

Nahoru Odpovědět
28.9.2013 11:13
New kid back on the block with a R.I.P
Avatar
Odpovídá na Kit
Neaktivní uživatel:28.9.2013 11:28

Jestli stahuješ Dart Editor, tak se nediv. Samotné SDK má 22MB. Ano, sice je to cca 2x tak velké, jako PHP, ale rozhodně to není 156MB. :)

Nahoru Odpovědět
28.9.2013 11:28
Neaktivní uživatelský účet
Avatar
Panda38
Tvůrce
Avatar
Panda38:28.9.2013 11:30

Python bych Ti moc nedoporučoval - po pár měsících programování v něm ho považuji za koncepční omyl a šlápnutí vedle (to je teda nápad používat tabulátory jako součást syntaxe, a dále má mnohem menší startovací kontroly než PHP, takže snáze spadne na syntaktickou chybu až za provozu).

 
Nahoru Odpovědět
28.9.2013 11:30
Avatar
Benjibs
Člen
Avatar
Odpovídá na Panda38
Benjibs:28.9.2013 11:44

Čo sa ti nepáči na tabulátoroch?
Vlastne skoro každý ich používa v kóde aj tak, nech už ide o C++, PHP, alebo Javu.
Python ťa k nim akorát núti, na čom nevidim nič zlé, zvykneš si mať pekne vyzerajúci kód :)

Editováno 28.9.2013 11:46
Nahoru Odpovědět
28.9.2013 11:44
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:28.9.2013 11:48

Pokud je Dart 2× větší než PHP, tak server utáhne poloviční počet klientů. To však nemusí vadit. Záleží na tom, zda se aplikace skutečně zjednoduší nebo je to stejné šméčko jako různé šablonovací systémy, které dělají všechno složitěji než nativní PHP.

Nahoru Odpovědět
28.9.2013 11:48
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Panda38
Kit:28.9.2013 11:54

Tabulátory se v Pythonu používat moc nemají, přesto je používám. Nemělo by se používat víc než 3-5 úrovní zanoření, aby zůstala zachována přehlednost kódu.

Dokonce i kód v Javě či PHP píšu v pseudopythonu, který mi editor pod rukama překládá na Javu nebo PHP. Je to velmi pohodlné.

Pokud ti skripty padají až za chodu, chybí ti asi jednotkové testy, které jsou u skriptovacích jazyků téměř nezbytné.

Nahoru Odpovědět
28.9.2013 11:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:28.9.2013 11:59

Moc nechápu, co přesně máš na mysli. Nějak jsi tam do toho zamotal šablony. O nich tu nikdo nemluvil a v Dartu snad ani nejsou.

Nahoru Odpovědět
28.9.2013 11:59
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:28.9.2013 12:01

Jestli má být Dart webový server, musí mít i nějaký šablonovací systém.

Nahoru Odpovědět
28.9.2013 12:01
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:28.9.2013 12:07

To asi tvorcovia nedomysleli. Komu sa chce stláčať kláves 4-8x, keď stačí 1? :D

Nahoru Odpovědět
28.9.2013 12:07
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:28.9.2013 12:11

Záleží na schopnostech editoru. Podle mne by se měl používat tabulátor (proto ho máme) a každý si ho má nastavit podle svých preferencí. Někdo 2 znaky, jiný třeba 10. Tím se zlepšuje přenositelnost zdrojáků.

Nahoru Odpovědět
28.9.2013 12:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Panda38
Tvůrce
Avatar
Odpovídá na Kit
Panda38:29.9.2013 9:25

Když je zmínka o jednotkových testech, využiju to na dotaz. Kódy Python a PHP přebírám od šéfa, který je samouk a myslím si že to používá nějak špatně, málo objektově. U skriptových jazyků (možná jen v jeho podání) mi vadí, že chybí typy proměnných. V C++ mám jasně dané, jakého typu je která proměnná (jaká třída, struktura) a tak hned vím jaké má členy a jak ji použít. Když používám jeho kódy, musím u každé proměnné nejdříve zpětně dohledat která funkce ji vrací, pak se podívat do funkce (až zjistím ve kterém zdrojáku je definovaná) jaké proměnné v té struktuře vytváří - a ty proměnné zas dohledat co obsahují, zda to jsou čísla, struktury atd. Je to neúnosně pracné a nepřehledné. Kde je chyba v použití, jak se to má dělat jinak? (Jednotkové testy u něj moc nepřicházejí v úvahu, protože má všechno provázané se vším, nejsou to uzavřené jednoduché třídy, navíc dědičnost neumí používat)

 
Nahoru Odpovědět
29.9.2013 9:25
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Panda38
Kit:29.9.2013 9:43

Jednotkové testy se dělají právě proto, aby špagetové kódy nevznikaly. Skriptovací jazyky mívají dynamické typování, ale to vůbec nemusí být na závadu. V PHP se u neprimitivních typů dá použít DI včetně interface, takže to máš i s polymofním typováním.

Psát jednotkové testy k hotovému kódu je na zbláznění. Musíš začít tím testem, což by ve tvém případě znamenalo to napsat celé znovu.

Zkus šéfa přesvědčit, aby ti dodával analýzu problému, kterou ty pak naprogramuješ. Jemu zůstane řídicí funkce a ty budeš moct programovat objektově.

Dobře napsaný kód programu zpravidla nemá řádky delší než 79 znaků, metody nejsou delší než 20 řádek a třídy nepřekračují 60 řádek. Pokud jeho kód výrazně překračuje tyto limity, je to špatně a svědčí to o chybné dekompozici úlohy.

Nahoru Odpovědět
29.9.2013 9:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Panda38
David Hartinger:29.9.2013 10:11

Dynamické typování je vhodné pouze pro dobré programátory, protože v něm jde udělat spoustu chyb. Když je program dobře napsaný, poznáš již podle názvu metody co vrací. U projektů, na kterých dělá více lidí (obvykle méně kvalitních) se používá buď TypeHinting nebo PHPDoc, IDE ti potom napovídá co kam napsat, co která metoda vrací a podobně.

Nahoru Odpovědět
29.9.2013 10:11
New kid back on the block with a R.I.P
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 27 zpráv z 27.