Bekijk Volledige Versie : Java vs. Python en PHP
Rene Pijlman
27/11/03, 21:45
Michiel de Roo:
>Ja, je hebt hier wel gelijk, maar Java is een echte programmeertaal,
>terwijl python en php toch meer scriptingtaaltjes zijn.
Ik vind Java een mooie taal en ik wil best aanvaarden dat Java een betere
taal zou kunnen zijn dan Python en PHP, maar het bovenstaande is daarvoor
geen argument.
Wat scripting precies betekent heb ik nooit goed begrepen, maar volgens
mij is het belangrijkste kenmerk dat er geen expliciete compileerstap is.
Van Python weet ik dat het broncode naar een soort bytecode compileert,
net als Java. PHP doet wellicht net zoiets. Er is wat dit betreft geen
relevant onderscheid met Java.
Wat is er handig aan dat je het compileercommando expliciet moet geven, in
plaats van dat het runtime systeem dat even automatisch voor je doet?
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Michiel de Roo
27/11/03, 22:00
Rene Pijlman wrote:
> Michiel de Roo:
>
>>Ja, je hebt hier wel gelijk, maar Java is een echte programmeertaal,
>>terwijl python en php toch meer scriptingtaaltjes zijn.
>
>
> Ik vind Java een mooie taal en ik wil best aanvaarden dat Java een betere
> taal zou kunnen zijn dan Python en PHP, maar het bovenstaande is daarvoor
> geen argument.
Klopt.
>
> Wat scripting precies betekent heb ik nooit goed begrepen, maar volgens
> mij is het belangrijkste kenmerk dat er geen expliciete compileerstap is.
> Van Python weet ik dat het broncode naar een soort bytecode compileert,
> net als Java. PHP doet wellicht net zoiets. Er is wat dit betreft geen
> relevant onderscheid met Java.
Scripting betekent m.i. vooral dat je voor elke uitvoer van een programma,
deze opnieuw compileert. Of dit een officiële definitie is weet ik niet,
maar het geldt iig voor alle scriptingtalen die ik ken, zoals PHP, python,
Matlab, javascript, bash en nog zo een paar.
>
> Wat is er handig aan dat je het compileercommando expliciet moet geven, in
> plaats van dat het runtime systeem dat even automatisch voor je doet?
>
Dat je niet elke keer de compiler hoeft te draaien. Dit betekent dus dat
je de compiler veel 'zwaarder' kunt maken, het doet er immers niet zoveel
toe hoe lang het compilen duurt. Bij PHP is er veel meer geoptimaliseerd
aan de compiler in het kader van het snel kunnen compileren. Dat betekent
meestal dat er dingen expliciet achterwege gelaten worden.
Michiel.
Rene Pijlman
28/11/03, 00:15
Michiel de Roo:
>Rene Pijlman:
>> Wat scripting precies betekent heb ik nooit goed begrepen, maar volgens
>> mij is het belangrijkste kenmerk dat er geen expliciete compileerstap is.
>> Van Python weet ik dat het broncode naar een soort bytecode compileert,
>> net als Java. PHP doet wellicht net zoiets. Er is wat dit betreft geen
>> relevant onderscheid met Java.
>
>Scripting betekent m.i. vooral dat je voor elke uitvoer van een programma,
>deze opnieuw compileert. Of dit een officiële definitie is weet ik niet,
>maar het geldt iig voor alle scriptingtalen die ik ken, zoals PHP, python,
>Matlab, javascript, bash en nog zo een paar.
Ik weet van Python dat dit niet klopt. Dat wordt gecompileerd naar
bytecode, net als Java.
"Internally, Python source code is always translated into a bytecode
representation, and this bytecode is then executed by the Python virtual
machine. In order to avoid the overhead of repeatedly parsing and
translating modules that rarely change, this byte code is written into a
file whose name ends in ".pyc" whenever a module is parsed. When the
corresponding .py file is changed, it is parsed and translated again and
the .pyc file is rewritten."
http://www.python.org/doc/faq/general.html
En ik begrijp dat dit bij PHP sinds versie 4 ook het geval is.
http://www.internetnews.com/dev-news/article.php/378691
Een veel wezenlijker verschil tussen Python en Java is trouwens dynamic
vs. static typing.
http://www.artima.com/weblogs/viewpost.jsp?thread=7590
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Daniel Tryba
28/11/03, 01:00
Michiel de Roo <michiel@mderoopuntnl> wrote:
>> Wat scripting precies betekent heb ik nooit goed begrepen, maar volgens
>> mij is het belangrijkste kenmerk dat er geen expliciete compileerstap is.
>> Van Python weet ik dat het broncode naar een soort bytecode compileert,
>> net als Java. PHP doet wellicht net zoiets. Er is wat dit betreft geen
>> relevant onderscheid met Java.
>
> Scripting betekent m.i. vooral dat je voor elke uitvoer van een programma,
> deze opnieuw compileert. Of dit een offici?le definitie is weet ik niet,
> maar het geldt iig voor alle scriptingtalen die ik ken, zoals PHP, python,
> Matlab, javascript, bash en nog zo een paar.
Python kan je compileren, evenzo javascript (beide zelf naar een
bytecode achtige tussenvorm (MSIL in .net)). Met PHP kan je het IIRC ook
doen (door een memory dump te trekken).
Bij Java heb je juist weer de keus om je class te JIT-en (de normale
hotspot jvm), alleen te interpreteren (java -Xint) of alle classen bij
het opstarten van de jvm te compileren (-Xbatch). Of zelfs te compileren
naar platform afhankelijke native code.
Er zijn dus genoeg uitzonderingen om een eenduidige definitie op te
stellen, het is meer een state-of-mind.
--
Daniel Tryba