PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ein paar Begriffe...


Seb2
2004-01-14, 15:25:35
Hi, kann mir vielleicht mal jemand erklären, was ein "Compiler" und was ein "Interpreter" ist?

Danke

ethrandil
2004-01-14, 15:29:09
Also, das ist relativ einfach.

Ein 'compiler' ist ein Programm, das Quelltexte 'übersetzt'. Z.B. macht er aus C-Code Maschinencode.

Ein Interpreter ist ein eigenes Programm, das einen Quelltext durchgeht und tut was da drin steht (z.B. ein PHP-Script).
Der Code wird aber nicht übersetzt!

Eth

Seb2
2004-01-14, 15:37:27
bezieht sich der Compiler denn auch auf html?
also: wenn ich jetzt z.B ne Website in Html schreibe, wäre der internet Explorer doch ein compiler, weil er mir diesen Quelltext übersetzt, bzw. sichtbar macht, oder???

Kant
2004-01-14, 15:53:24
Original geschrieben von Seb2
bezieht sich der Compiler denn auch auf html?
also: wenn ich jetzt z.B ne Website in Html schreibe, wäre der internet Explorer doch ein compiler, weil er mir diesen Quelltext übersetzt, bzw. sichtbar macht, oder???
Nein, ein Browser interpretiert das html.
Compilieren wäre zb das umwandeln von dem html-source in eine Grafik(die die html-seite so darstellt, wie sie im browser zu sehen ist). Diese Grafik kannst du dann auch betrachten, ohne eine Programm zu haben, das html beherrscht.

ethrandil
2004-01-14, 15:54:53
Imho nein.

Ich würde eher sagen der Interpretiert den HTML-Code.
Allerdings habe ich mich in dem bezug noch nicht damit auseinander gesetze.
Der Internetexplorer jedoch arbeitet ja intern immernoch auf HTML. Außerdem ist HTML nur ein 'Dateiformat', und keine programmiersprache *gg*.
Und der ganze Javascriptkrams wird auch interpretiert! Der wird nicht in Maschinencode übersetzt.

Beispiele für Compiler:
gcc, javac, ...
Beispiele für Interpreter:
perl, php, java, ...

Seb2
2004-01-14, 16:03:46
kennt ihr vielleicht ne gute seite, wo ich das auch nochmal nachlesen kann?
Nicht, dass das von euch unverständlich war, aber irgendwie würd ich das nochmal selbst lesen, damit ich das besser verfassen kann (für meine HA)

Lokadamus
2004-01-14, 16:14:00
mmm...

Compiler übersetzen einmal den Sourcecode (C/C++, Visual Basic, Delphi usw), Interpreter gehen den Sourcecode jedesmal von neuem durch (HTML, PHP usw.), sprich, es wird jedesmal neu übersetzt ...

Kant
2004-01-14, 16:17:26
Original geschrieben von Seb2
kennt ihr vielleicht ne gute seite, wo ich das auch nochmal nachlesen kann?
Nicht, dass das von euch unverständlich war, aber irgendwie würd ich das nochmal selbst lesen, damit ich das besser verfassen kann (für meine HA)
Nun, zumindest die Definitionen :
http://www.net-lexikon.de/Compiler.html
http://www.net-lexikon.de/Interpreter.html

micki
2004-01-14, 16:17:51
der hauptunterschied ist:

compiler übersetzen sourcen in eine hardware sprache
interpreten interpretieren sourcen in software

natürlich kann man da die grenzen verschwimmen lassen. aber das ist eigentlich der unterschied. früher wurde z.b. java immer interpretiert, obwohl es vorher compiliert wurde. das lag daran, dass es keine hardware gab die das compilierte dann direckt ausführen konnte. heute compiiert man das compilierte nochmal für das jeweilige system und braucht keinen interpreten.

MfG
micki

Seb2
2004-01-14, 16:55:11
Danke für eure Hilfe!

govou
2004-01-14, 20:04:02
MMhhh...hinzufügen könnte man noch den Präprozessor. Der geht vorm kompilieren den Source durch und fügt z.B. die Header Dateien ein oder ersetzt die "#define Konstanten".
MfG, Mr.B

HellHorse
2004-01-14, 20:19:35
Original geschrieben von micki
...
natürlich kann man da die grenzen verschwimmen lassen. aber das ist eigentlich der unterschied. früher wurde z.b. java immer interpretiert, obwohl es vorher compiliert wurde. das lag daran, dass es keine hardware gab die das compilierte dann direckt ausführen konnte. heute compiiert man das compilierte nochmal für das jeweilige system und braucht keinen interpreten.
...

Nicht wirklich, javac und jikes übersetzen nur in Java Bytecode und das ist gut so.
Manche JVM's z.B. die von Sun übersetzten zur Ausführungszeit einen Teil des gerade gebrauchten Codes in nativen Code. Es ist jedoch nicht so, dass alles in nativen Code kompiliert würde.
Daneben enthalten manche Java Klassen bestriebssystemabhängigen C(++) Code. z.B all die AWT-Komponenten. Dieser wird vorher in Maschinencode für die jeweilige Plattform kompiliert.
Dieses Verhalten ist nicht speziell für Java, es gibt es auch bei anderen Sprachen wie Smalltalk oder Self.

Falls du Java in nativen Code übersetzten willst, brauchst du gjc.

killermaster
2004-01-15, 04:53:02
interpretesprache:
alle script sprachen, visual basic zum teil,vba,

compiler:
c++/c,phyton

zwidder:
java

micki
2004-01-15, 08:36:24
Original geschrieben von HellHorse
Nicht wirklich, javac und jikes übersetzen nur in Java Bytecode und das ist gut so.
Manche JVM's z.B. die von Sun übersetzten zur Ausführungszeit einen Teil des gerade gebrauchten Codes in nativen Code. Es ist jedoch nicht so, dass alles in nativen Code kompiliert würde.
Daneben enthalten manche Java Klassen bestriebssystemabhängigen C(++) Code. z.B all die AWT-Komponenten. Dieser wird vorher in Maschinencode für die jeweilige Plattform kompiliert.
Dieses Verhalten ist nicht speziell für Java, es gibt es auch bei anderen Sprachen wie Smalltalk oder Self.

Falls du Java in nativen Code übersetzten willst, brauchst du gjc.

dass es vorher in einen maschinencode übersetzt wird den keine hardware direckt nutzen kann (java byte code) hab ich auch genannt, aber heutzutage wird in nativen code übersetzt mittels JIT compiler.

info bei: http://wwws.sun.com/software/solaris/jit/

MfG
micki

HellHorse
2004-01-15, 13:01:58
Original geschrieben von micki
dass es vorher in einen maschinencode übersetzt wird den keine hardware direckt nutzen kann (java byte code) hab ich auch genannt, aber heutzutage wird in nativen code übersetzt mittels JIT compiler.

info bei: http://wwws.sun.com/software/solaris/jit/

MfG
micki
Ja, falls einer da ist. Die Blackdown JVM hat IIRC von sich aus keinen auch die IA64 JVM von Sun hatte lange keinen.
Das Problem beim jit'en ist, da es zur Laufzeit passiert muss der Vorgang selbst kürzer sein als das Interpretieren des Codes.

micki
2004-01-15, 19:01:25
das problem tritt ein einziges mal auf, danach sollte man von nem kleinen bytecode das kompilat vorliegen haben (soweit ich informiert bin)

MfG
micki

Xmas
2004-01-15, 19:08:26
Original geschrieben von rapmaster
compiler:
[...] phyton

:|
Es gibt zwar py2exe, und Python generiert auch teilweise optimierten Zwischencode (.pyo), aber dennoch ist es ganz eindeutig eine Interpretersprache (http://www.python.org/doc/Summary.html).

killermaster
2004-01-16, 07:27:13
sry hab mich vertan.
ich meinte tcl

http://sourceforge.net/projects/amsn/

mfg