Fructose: překlad z Ruby do PHP
Překlad z jazyka s vyšší úrovní abstrakce do jazyka s nižší úrovní je na webu stále populárnější – cílovým jazykem bylo HTML, CSS, JavaScript, s Fructose je to i PHP5.
Buďme přesní – Fructose není překladač z Ruby; vstupní jazyk není přímo Ruby, je to jeho podmnožina. Netěšte se, že své programy v Ruby bez námahy přeložíte do PHP a spustíte „kdekoli“, zatím jde spíš o koncept než o nástroj k reálnému použití.
Smyslem Fructose (a dalších podobných překladačů) je použít jazyk s vyšší úrovní abstrakce i v prostředí, kde není implementován. Proč zrovna PHP jako cílový jazyk? Pravděpodobně proto, že je na serverech nejběžnější – počet serverů s PHP je řádově vyšší (76% vs 0.6%).
A to je problém doinštalovať na server ruby? Mne to zabralo cca 10 minút.
Ne všichni, kdo chtějí provozovat nějaký web, mají k dispozici server, kam si mohou jen tak něco doinstalovávat.
Kdysi jsem přemýšlel o takovém překladu z PHP do JS. Cílem bylo vygenerovat čistý kód. Nakonec jsem se do toho nepustil. Skončcil jsem u operátoru plus. V dynamickém PHP nemusím obecně vědět typy operandů. Pokud bych tedy převedl $x+$y na x+y, pak by to sice fungovalo pro čísla, ale už ne pro řetězce. Teda ono by to fungovalo, ale jinak…
Samozřejmě, lze tu udělat dynamické rozlišení typů, ale tady končí veškerá elegance. Nebyla to cesta, kterou bych chtěl jít.
Pravděpodobně někde tady bude taky důvod pro podporu pouze podmnožiny Ruby. Ale tudy jsem tehdy nechtěl jít. (Nepodporovat například fopen bylo akceptovatelné, ale udělat sčítání naprosto jinak už ne.)
Tady mají větší šanci statické jazyky. Tam takové problémy nejsou. Příkladem může být takový Google Web Toolkit, který v současnosti podporuje Javu. Jsou tu ale snahy sem potrovat i Scalu (ScalaGWT), byť v rané fázi.
Hm, David Majda napsal kompilátor z ruby do PHP jako svou diplomovou práci již před lety i s teorií to můžete najít na http://ruby-php.org/ takže žádnou fruktózu netřeba, cukru je i beztak dost.
Projekt, u ktereho je napsano „It is now discontinued. Partial results are available in my master thesis.“ bych asi moc pouzivat nechtel. Bez ohledu na to, jak daleko autor dosel.
někteří lidi mají asi příliš volnýho času, že vyvíjí takový hovadiny :-)