Diskuze: Hledá se: náhrada PHP

PHP PHP Hledá se: náhrada PHP American English version English version

Avatar
Radim Sückr
Redaktor
Avatar
Radim Sückr:

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
Avatar
Kit
Redaktor
Avatar
Nahoru Odpovědět  +3 21.9.2013 20:23
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
niveses
Redaktor
Avatar
niveses:

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

Editováno 21.9.2013 20:28
 
Nahoru Odpovědět 21.9.2013 20:28
Avatar
Radim Sückr
Redaktor
Avatar
Odpovídá na niveses
Radim Sückr:

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

 
Nahoru Odpovědět 21.9.2013 20:32
Avatar
Kit
Redaktor
Avatar
Odpovídá na Radim Sückr
Kit:

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
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na niveses
Drahomír Hanák:

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
Radim Sückr
Redaktor
Avatar
Odpovídá na Kit
Radim Sückr:

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
Avatar
niveses
Redaktor
Avatar
Odpovídá na Drahomír Hanák
niveses:

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
Redaktor
Avatar
Odpovídá na Drahomír Hanák
Kit:

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

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

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  +2 21.9.2013 21:01
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Radim Sückr
David Čápka:

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  +4 21.9.2013 21:22
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Radim Sückr
Redaktor
Avatar
Radim Sückr:

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
Avatar
Kit
Redaktor
Avatar
Odpovídá na Radim Sückr
Kit:

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 Čápka
Tým ITnetwork
Avatar
David Čápka:

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

Nahoru Odpovědět  +1 28.9.2013 11:13
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Radim Sückr
Redaktor
Avatar
Odpovídá na Kit
Radim Sückr:

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
Avatar
Panda38
Redaktor
Avatar
Panda38:

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:

Č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  +1 28.9.2013 11:44
1 + 1 = 2
Avatar
Kit
Redaktor
Avatar
Odpovídá na Radim Sückr
Kit:

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
Redaktor
Avatar
Odpovídá na Panda38
Kit:

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
Radim Sückr
Redaktor
Avatar
Odpovídá na Kit
Radim Sückr:

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
Avatar
Kit
Redaktor
Avatar
Odpovídá na Radim Sückr
Kit:

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:

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
Redaktor
Avatar
Odpovídá na Benjibs
Kit:

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
Redaktor
Avatar
Odpovídá na Kit
Panda38:

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
Redaktor
Avatar
Odpovídá na Panda38
Kit:

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  +1 29.9.2013 9:43
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Panda38
David Čápka:

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  +4 29.9.2013 10:11
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
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.