prechod z PHP na jazyk hack rubrika: Programování: PHP
Nedávno som oprášil jeden starý projekt napísaný v PHP, upravil som ho tak aby bežal aj pod PHP 7.3 pod x64. PHP je už celkom použiteľný, ale stále má pár drobných nedostatkov, ktoré nechýbajú nikde inde len v PHP... napríklad generiká. Neni to nič bez čoho by sa nedalo žiť, ale lepšie sa žije s nimi ako bez nich.
Keď som googlil ako je na tom PHP s podporou generík, tak som vygooglil jazyk od facebooku s trošku neštastným názvom "hack" (neštasytný z pohľadu vyhľadávačov), ktorý je syntakticky podobný PHP, ale navyše má aj všetko čo by mal mať moderný programovací jazyk. Má aj generiká, enumy, únie a vďaka arrow ==> funkciám sa v ňom dá konečne programovať funckionálne (už žiadne capturovanie premenných zo scope cez use). Taktiež má pipe operátor, konečne aj konzistentné základné knižnice a kompiluje sa do medzikódu HHVM. Vyzerá to tak že hack vyslišal modlitby PHP programártorov a vyriešil problémy, ktoré sa autorom PHP nepodarilo doriešiť za posledných 25 rokov.
Zvažujem že staré projekty ktoré sú v PHP by som preportoval na Hack-lang. Ale mám pár otázok ku kompatibilte:
-
Dal by sa zobrať starý PHP projekt a po pár úpravách spustiť pod hackom? Keď som videl ukážky kódu, tak to vo mne vyvolalo dojem že tie nové vlastnosti pridávajú tak aby sa zachovala kompatibilita s PHP7.
-
budú mi fungovať extensions z PHP aj v hacku?
-
vo svojom projekte používam aj knižnice tretích strán napr Tracy, Latte, alebo NotORM viem že tieto knižnice používajú aj niektoré exotické vlastnosti PHP (npríklad reflexia) budú fungovať aj v hacku?
- Bude mi hack fungovať pod Windows Server 2012? A bude mi fungovať aj cez docker? Nechcem si server zaserinkať nejakým cygwinom.
HHVM 3.30 je poslední verze, která podporuje kompatibilitu s PHP (https://hhvm.com/blog/2018/12/17/hhvm-3.30.html).
Generika jsou moc fajn. Třeba na kolekce se hodí jak nic jiného. Na phpCE 2018 Rasmus vysvětloval, proč je není jednoduché implementovat. A snad to nedomotám... jde o runtime. V runtime by se musel při předání proměnné pokaždé kontrolovat typ generika a to má nezanedbatelný vliv na výkon. V Hacku se to proto nedělá, takže generika tam jsou jen syntactic sugar. Navíc, nejsou generika jako generika a i v Hacku jsou myslím také jen na půl. Podpora v IDE také chybí. Bez generik ala Hack se dá obejít, jen je to víc psaní.
- Starý projekt v pohodě přepíšeš. Většinou stačí
<?php
vyměnit za<?hh
- Extensions z PHP fungovat nebudou, je to kompletně jiný ekosystém.
- Nette projekty do nějaké verze s Hackem poběží, ale 12.7.2017 jsem podporu odebral z Testeru protože: to komplikovalo kód; nikdo to nepoužíval; nefixovali BUGy v HHVM, které jsem jim nareportoval
Hack byl boom, ale IMHO je po něm.
Pro zobrazení všech 3 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře