No... Tak předně ten komentář jsem nepsal za účelem vyvolání bouřlivé diskuze na téma: Jak to vypadá s PHP.
Já osobně v PHP programuji od svých 14ti let a tedy 16 let, z toho 10 let profesionálně. Takže moje narážka na PHP nebyla mířena jako útok.
Za ty roky jsem více či méně poznal i jiné jazyky, ať už během kariéry a nebo hraním si po večerech. Majoritně Java a Python.
Je mi jasné, že to co teď napíšu nepovede ke zdárnému uzavření této debaty, která je spíše k pivu, než na fórum. Bohužel jsem nedokázal být natolik vyrovnaný, abych nepřijal hozenou rukavici.
PHP už dnes má vcelku dobrý základ. Kdo někdy viděl zdrojové kódy interpretu a to hlavně před vydáním sedmé verze, pak chápe, že PHP je venku huj, uvnitř fuj. Je to moloch, který vznikl za úplně jiným účelem, než ke kterému se používá dnes. A tím započala jeho cesta navrchol.
PHP vzniklo podobně jako MySQL. Původně vytvořeno tak aby bylo primitivní a později pod tlakem komunity vyrostlo na stejnou složitost, kterou mají jiné jazyky. Mělo se jednat o dynamický šablonovací systém, ve kterém se dají dělat obyčejné weby alespoň trochu efektivně.
V PHP stačilo a stačí relativně málo, aby v něm kdokoliv "cokoliv" udělal. Stačí Vám podmínky, include a cykly a máte statický web bez duplicit. A i proto se zažilo dogma, že PHP programátoři jsou bastlíři a lepiči kódu. Pro hnidopichy: To je asi 10 let dozadu.
Dlouho chyběly nástroje na na správu knihoven. Nejednotnost nastavení webhostingů vedla k tomu, že projekty byly nepřenositelné. Všichni jsme se báli extensions a psali si vlastní knihovny. Zde nastal boom až v nedávné době - composer, docker atd. A i samotný deploy je pro svět PHP docela nová věc a divili byste se, jak velké projekty dodnes používají FTP a ruční deploy.
Nicméně dodnes má PHP nejednotné jmenné konvence, každá funkce má jiné pořadí parametrů. Nelogické chování. Nikdy nenaimplementujete ArrayAccess tak, aby se choval naprosto identicky jako pole. Konkrétně se jedná o $a[null] = 'foo'; a $a[''] = 'foo';
Magické přetypování a díky tomu nelogické fungování jazykových konstruktů. Tyto podivnosti (a je jich mnohonásobně více) nejsou až tak známé a vedou k hnusným a špatně se odhalujícím chybám.
Ad statické typování. On to je zas jen po PHPčkovsku vyřešený problém. PHP 7 je už na světě nějaký pátek, ale opět nepoužitelné a verze 7.1 to malinko vylepší. Zatím ve stabilní verzi nelze použít null, pokud použijete type hint. Možnost vracet void, není až tak blocker, ale je to důkaz toho, že někdo nepřemýšlel.
Type hinting zatím není možný pro properties, proměnné a konstanty. My na projektu máme u poloviny metod komentář @todo hint a čekáme na novou verzi a to my si zaplať pánbůh můžeme dovolit aktualizovat prostředí jak se nám zlíbí. Ale většina chudáků na nové verze čeká do doby, kdy jsou staré a nemají prostor refaktorovat natolik, aby sílo novějších verzí využili.
A proto trvám na svém. NE, statické typování není možné, protože je tak 30%. Takže si na to můžeme jen a jen hrát. Nemůžeme ani říct, že metoda přijímá pouze pole objektů daného typu. Pole není Traversable.
Ano, četl jsem RFC, naposledy včera. Svítá na lepší časy, ale hodně si počkáme.
Mám ale obavu, že to je zas vše jen navenek. Podle mě by měli udělat to, co python. Udělat novou verzi a od základu jí udělat znovu, vyházet veškeré nesmysly a nechat tam to, co má smysl.
HHVM a hacklang je to, co bych čekal od PHP.