haha, takze ty napises kompilator na eval v perlu... takze funkce, ktera bude generovat nejakou funkci ci uzaver bude zkompilovana... no tak to si teda borec
:-)))))))0
pro zacatek zkus tohle (to jsem zvedav ;) :
while (<>) {eval $_;};
intepretovanost jazyka je jeho vlastnosti, o tom neni sporu, ale co se tyka Javy, ta se skutecne nyni neintepretuje. 'intepret' javy preklada do strojoveho kodu a diky tomu, ze je java nizkourovnovy jazyk (napr. nema zadny eval), tak neumoznuje takova kouzla jako perl nebo scheme
perl sice ma JIT kompilator, ovsem NECO INTERPRETUJE a neco PREKLADA, eval je jeho soucast a nabizi super veci
ondrej tady predhodil, zda si autor neco nemysli a na tom vzikl tehnle flamewar, pritom ta jeho poznamka byla uplne zcesty, autor skutecne psal o uzivatelskem rozhrani a o zadne intepretaci
standartizovane RTTI v C++ je uplne na h***o, neprenositelne a nenabizi ani 20% toho, co RTTI v jave. v jave muzes extrahovat metody, provadet bezpecne pretypovani apod. v C++ tohle vsechno neni - muzes si ovsem neco z toho udelat sam
trosku jste se spatne pochopili :-))))))) jeden mele o koze a druhy o voze, heheh, kazdopadne Eclipse je super, Java taky, Perl je nejlepsi...
Ahoj, jsem rad ze mi taky chladne nerikas "Vazeny pane" :-)
a rad to s tebou prodiskutuju.
> takze ty napises kompilator na eval v perlu...
> takze funkce, ktera bude generovat nejakou
> funkci ci uzaver bude zkompilovana...
Nerozumim co jsi chtel rict, proste soucasti VM (JIT) Perlu
by byl i prekladac Perl -> bytecode, pricemz VM by ten bytecode
prelozila do strojaku, stejne jako jine metody.
Nevim jak v Jave, ale v .NET muzes vytvaret bytekod (MSIL) za chodu
programu a tento kod se nasledne kompiluje do strojaku.
> pro zacatek zkus tohle (to jsem zvedav ;) :
> while (<>) {eval $_;};
Zkusil bych to rad, jenze Perl skoro vubec neznam, zkus mi
cesky vysvetlit co to dela a odpovim ti.
> diky tomu, ze je java nizkourovnovy jazyk
> (napr. nema zadny eval), tak neumoznuje takova kouzla
> jako perl nebo scheme
Java nema eval zabudovany, ale teoreticky muzes mit kompilator
Java -> bytecode ve forme classy, pristupny tvemu programu.
Tomu predas text Javy, on ho prevede
na bytecode a ulozi na disk jako class.
(Mozna to neni potreba a muzes tu classu vytvorit nak jenom v pameti,
nevim jestli to Java umoznuje, ale na tom nezalezi.)
No a pak proste tu vytvorenou class normalne nahrajes do pameti,
JITne se to a bezi ve strojaku.
Muzes namitnout ze je to prilis tezkopadne a proces generovani pomaly, ale:
1) Pouha neefektivnost neznamena principialni nemoznost.
2) Pokud je rychlost provadeni toho evalu dulezita, muze se to sakra vyplatit.
Nejlepsi je prelozit jen evaly vyznamne z hlediska rychlosti.
3) Muzes si vymyslet hypotetickou VM kde se s touto funkci pocita
a je resena mnohem efektivneji.
(off-topic: Java ze je nizkourovnovy jazyk ?)
> perl sice ma JIT kompilator, ovsem NECO INTERPRETUJE
> a neco PREKLADA, eval je jeho soucast a nabizi super veci
Z cehoz ale nejde usoudit ze neni mozne vytvorit jinou implementaci
VM Perlu prekladajich uplne vsechno, at uz je to efektivni nebo ne.
> autor skutecne psal o uzivatelskem rozhrani
> a o zadne intepretaci
Jak jsem rek, slovo "interpretace" se v textu primo nevyskytovalo,
ale ja text pochopil tak, ze UI je pomale kvuli interpretaci bytecodu.
(Kdyz jsem videl pojmy jako "jazyk systemu").
A nebyl jsem sam.
> standartizovane RTTI v C++ je uplne na h***o,
> neprenositelne a nenabizi ani 20% toho, co RTTI v jave.
> v jave muzes extrahovat metody, provadet bezpecne pretypovani
> apod. v C++ tohle vsechno neni - muzes si ovsem neco z toho
> udelat sam
Mozna, ale to ma byt argument pro tvrzeni ze se jazyky deli
na interpretovane a prekladane, nebo to rikas jen tak mimo hlavni
diskusi ?
Jinak schopnost extrahovat metody (jestli chapu co tim myslis) neni
zalezitosti RTTI, jako spis reflexivity. Navic v C++ prece
bezpecne pretypovavat z predka na potomka muzes, ne ? Ale to nesouvisi
s tematem.
Podle me pojmy jako "intepretovany jazyk" vznikly jako zjednodusene
oznaceni jazyku, ke kterym existuji jen interprety a ne kompilery
nebo runtimy schopne kompilovat za chodu.