Napsat znovu interpret PHP?

vyvojar

Napsat znovu interpret PHP?
« kdy: 07. 11. 2013, 21:54:41 »
No napadl mě takový asi hodně bláznivý nápad. Ve škole jsme měli jazyky a překladače a dost mě to bavilo. V rámci předmětu jsme taky implementovali takový scriptovací jazyk, řekl bych, že to umělo tak 70% toho, co umí php (když nepočítám OOP). Hodně se nadává na php, že je pomalé, tak mě napadlo, že bych ten interpret zkusil napsat od začátku :D. Naprogramovat ten základní interpret, zatím neuvažovat třeba OOP a pak to rozvíjet dál. Nadruhou stranu je mi jasný, že už ten jazyk funguje hodně dlouho a dělá na tom určitě spousta chytrých lidí, takže ten můj nápad je asi hodně mimo realitu. Co myslíte?
« Poslední změna: 07. 11. 2013, 22:23:09 od Petr Krčmář »


Re:Naprogramovat interpret PHP od začátku?
« Odpověď #1 kdy: 07. 11. 2013, 22:22:33 »
Podľa mňa z toho nikdy nič poriadne nebude, ale ak ťa to baví, tak smelo do toho. Svojho času (v 80-tych rokoch) som si napísal interpret jazyka Forth. Bol celý v assembleri, zaberal asi 4kB. Nikdy som ho na nič nevyužil, pretože skôr ako sa mi to podarilo som prešiel na PC, ale myslím si, že ma to vtedy posunulo dopredu.

Kolemjdoucí

Re:Naprogramovat interpret PHP od začátku?
« Odpověď #2 kdy: 07. 11. 2013, 22:29:46 »
Nápad to není úplně mimo ale pohybuješ se na úrovni tisíců hodin práce, chtělo by to sehnat nějaké podobné nadšence, na jednoho je to asi příliš. Ve škole jste si jenom tak hráli, ve skutečnosti tě čeká daleká cesta.

Jakub L.

Re:Napsat znovu interpret PHP?
« Odpověď #3 kdy: 07. 11. 2013, 22:31:58 »

Jakub L.

Re:Napsat znovu interpret PHP?
« Odpověď #4 kdy: 07. 11. 2013, 22:33:14 »
Můžete se podívat třeba na Haskell: http://codeutopia.net/blog/2013/01/16/parsing-and-evaluating-php-in-haskell-part-1/

Míněno interpreter PHP napsaný v Haskellu


PANKapitanRUM

Re:Napsat znovu interpret PHP?
« Odpověď #5 kdy: 07. 11. 2013, 22:51:12 »
To vůbec není špatný nápad, ale toho OOP bych se nevzdával.
Implementovat primitivní OOP není tak těžké, jak se zdá.
A když už v tom budeš, můžeš to upravit tak, abys mohl nahradit nejen PHP, ale i JavaScript a do návrhu zavést i přímo něco Aka smarty.
Třeba se z hračky stane něco dobrého.

Re:Napsat znovu interpret PHP?
« Odpověď #6 kdy: 07. 11. 2013, 22:58:49 »
No napadl mě takový asi hodně bláznivý nápad. Ve škole jsme měli jazyky a překladače a dost mě to bavilo. V rámci předmětu jsme taky implementovali takový scriptovací jazyk, řekl bych, že to umělo tak 70% toho, co umí php (když nepočítám OOP). Hodně se nadává na php, že je pomalé, tak mě napadlo, že bych ten interpret zkusil napsat od začátku :D. Naprogramovat ten základní interpret, zatím neuvažovat třeba OOP a pak to rozvíjet dál. Nadruhou stranu je mi jasný, že už ten jazyk funguje hodně dlouho a dělá na tom určitě spousta chytrých lidí, takže ten můj nápad je asi hodně mimo realitu. Co myslíte?

radsej by si mohol napisat transpiler pre nejaky moderny jazyk, ktory by sa kompiloval do PHP.

uz ma nebavi pisat:

Kód: [Vybrat]
function foo($max)
{
    return array_filter(array_map(function($i)
    {
        return ord($i);
    }, array('a', 'b', 'c', 'd', 'e', 'f')), function($i) use($max)
    {
        return $i >= $max;
    });
}

namiesto:

Kód: [Vybrat]
let foo max =
    ['a' .. 'f']
    |> List.map int
    |> List.filter (fun i -> i >= max)

Re:Napsat znovu interpret PHP?
« Odpověď #7 kdy: 07. 11. 2013, 23:26:08 »
Bez ohledu na to, že je to velký úkol, protože je zapotřebí udržovat zpětnou kompatibilitu, která nemusí být zrovna pěkná, tak bych doporučil se podívat na LLVM.org a možná to napsat jako vrstvu mezi jazykem PHP a JIT v LLVM.

A samozřejmě ten jazyk nedělá jen základní syntaxe, a základní sada knihoven, což je už úkol na úplně jiné úrovni, pokud teda nebudete podporovat přímo nahrávání nativních PHP extensions (ale to se pak pravděpodobně dostanete tam, kde je teď PHP).

Osobně bych Vám místo psaní úplně nového interpreteru PHP doporučil vylepšit ten stávající (třeba tím, že tam tu podporu pro JIT z LLVM doprogramujete).

Lol Phirae

Re:Napsat znovu interpret PHP?
« Odpověď #8 kdy: 07. 11. 2013, 23:39:28 »

Raskal

Re:Napsat znovu interpret PHP?
« Odpověď #9 kdy: 08. 11. 2013, 01:52:53 »
http://morepypy.blogspot.cz/2012/07/hello-everyone.html
ale radeji se podivej po smzsluplnejsi praci jak lestit php ;)

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Napsat znovu interpret PHP?
« Odpověď #10 kdy: 08. 11. 2013, 07:16:05 »
Ve škole jsme měli jazyky a překladače a dost mě to bavilo.
...
Co myslíte?

Směle do toho. Zažiješ peklo, budeš nadávat, zažiješ bezesné noci, kdy Tě budou strašit noční můry, ale udělá to z Tebe lepšího developera. ;-) Na druhou stranu, moc nepočítej s produkčním nasazením. Napsat interpret/kompilátor není zadek ani u jednoduchých jazyků a ať se budeš snažit sebevíc, první verze rozhodně nebude dosahovat produkčních kvalit.

Samozřejmě, pokud Tvůj projekt bude hodně dobrý, může vzbudit zájem v některých lidech a na jeho základě může vzniknout druhá verze (počítej z kompletním přepisem ;-) ), která udělá díru do světa. Stejně tak se toho může chytnout nějaká firma a financovat vývoj.

Ale reálně ani s jednou možností moc nepočítej - je to fajne téma na bakalářku, toť asi vše.

monitor

Re:Napsat znovu interpret PHP?
« Odpověď #11 kdy: 08. 11. 2013, 08:11:25 »
Hmm, a co tak si najskor precitat o tychto veciach?

Namiesto kompilatora:
PHP virtalna "masina" od Facebooku http://en.wikipedia.org/wiki/HipHop_for_PHP (vraj chvilami az 6-9x rychlejsi ako Zend PHP interpreter)
kompilator (sice pre C#, a skor Windows, a skor 32bit, ale z Prahy!) http://en.wikipedia.org/wiki/Phalanger_(compiler)

(inak, este sa mi zda, ze tento rok som cital aj o nejakom dalsom "kompilatore" PHP, co je este rychlejsi ako ksichtoknihovy "HipHop")

a ked uz sa hrat s kompilatormi:
dufam, ze nie Lexxom a Yaccom, ale nejakym modernejsim pristupom:
ako PEG (parsing expression grammers)
napriklad OMeta: tinlizzie.org/ometa/ (je to implementovane v roznych jazykoch)
(na hranie, mozno JavaScript: http://tinlizzie.org/ometa-js/#OMeta_Tutorial)

ale, ako to uz niekto spominal, hor' sa do prace, hocico vas zlepsi ako programatora...

Hmmm

Re:Napsat znovu interpret PHP?
« Odpověď #12 kdy: 08. 11. 2013, 08:31:09 »
Tiez myslim, ze ho ucili s lexxom a yaccom  :) Aspon ja som sa pred par rokmi ucil v skole tieto veci pomocou tychto dvoch nastrojov.

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Re:Napsat znovu interpret PHP?
« Odpověď #13 kdy: 08. 11. 2013, 08:34:42 »
My jsme se ve škole dokonce učili bez těchto nástrojů. :-)

Kozzi

Re:Napsat znovu interpret PHP?
« Odpověď #14 kdy: 08. 11. 2013, 11:50:59 »
No napadl mě takový asi hodně bláznivý nápad. Ve škole jsme měli jazyky a překladače a dost mě to bavilo. V rámci předmětu jsme taky implementovali takový scriptovací jazyk, řekl bych, že to umělo tak 70% toho, co umí php (když nepočítám OOP). Hodně se nadává na php, že je pomalé, tak mě napadlo, že bych ten interpret zkusil napsat od začátku :D. Naprogramovat ten základní interpret, zatím neuvažovat třeba OOP a pak to rozvíjet dál. Nadruhou stranu je mi jasný, že už ten jazyk funguje hodně dlouho a dělá na tom určitě spousta chytrých lidí, takže ten můj nápad je asi hodně mimo realitu. Co myslíte?

Tak PHP zase tak pomale neni, jen clovek musi tento jazyk dobre znat a vedet jak jej spravne pouzivat. Pokud ale i tak narazy na vykonnostni problemy tak pak se da pouzit HipHop (Sam jsme ho testoval v praci na nasem kodu a opravdu je to docela ficak). A pokud by i tak nadale byl kod pomaly, tak uz asi pomuze jen prepsat do kompilovatelneho jazyka.

Jinak nechci te od toho odrazovat. Myslim si ze jako zajimavy projekt, na kterem se toho hodne naucis to nemusi byt uplne ztrata casu.