Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Interpretersprachen

minam / 11 Antworten / Baumansicht Nickles

Hallo Zusammen,

ich habe eine Frage zu Interpretersprachen, wie z.B. Basic, perl etca.

sind alle Interpretersprachen plattformunabhängig?

vielen Dank für eure Antworten
Mina

bei Antwort benachrichtigen
Andreas42 minam „Interpretersprachen“
Optionen

Hi!

Bein, können sie ja auch nicht, da ja bei einer echten Plattformunabhängigkeit der verwendete Interpreter für JEDE denkbare Plattform existieren müsste. (Der Interpreter ist ja auch nichts anderes als ein Programm, dass dann unter einem Betriebssystem auf der jeweiligen Hardware laufen muss.)

Bis dann
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
minam Andreas42 „Hi! Bein, können sie ja auch nicht, da ja bei einer echten...“
Optionen

Hallo Andreas,

danke für deine Antwort.
Aber ich verstehe da etwas immernoch nicht so genau:
bei Java ist es doch so das sie durch die virtuelle Maschine dem Java-Interpreter plattformunabhängig ist, wie das geht verstehe ich nicht, eben aus dem von dir benannten Grund, da der Interpreter ja auch unter einem Betriebssystem und einer Hardware laufen muss

Mein Problem ist es, dass ich den unterschied zwischen Interpreter und Compilersprachen darstellen soll und der JVM von Java.

Könnte man dann sagen dass die Interpretersprachen plattformunabhängiger sind als compilersprachen? und wenn ja warum?

lg
Mina

bei Antwort benachrichtigen
gelöscht_96523 minam „Hallo Andreas, danke für deine Antwort. Aber ich verstehe da etwas immernoch...“
Optionen

Der Unterschied zwischen Compiler- und Interpretersprachen? Ganz einfach:

Compilersprachen (C/C++ etc.) werden vor der Ausführung compiliert, also übersetzt. Der Compiler macht aus dem kompletten Quelltext vor der Ausführung ein ausführbares Programm (vereinfacht gesprochen). Das ist dann nur auf der Plattform lauffähig, für die es compiliert wurde.

Ein Interpreter hingegen führt ein Programm Zeile für Zeile aus (z.B. Basic, PHP).

Plattformunabhängig ist JAVA deshalb, weil es für (fast) jede Plattform eine Java Virtual Machine gibt. Diese führt dann den JAVA-Quelltext aus.

Grüße,
Alsion

bei Antwort benachrichtigen
minam gelöscht_96523 „Der Unterschied zwischen Compiler- und Interpretersprachen? Ganz einfach:...“
Optionen

Hallo Alison,
danke für deine Antwort.
Ich verstehe, aber leider noch nicht ganz.
Du schreibst es gibt für (fast) jede Plattform eine JVM.

Aber ist es nicht so, dass Java deshalb plattformunabhängig ist weil sie eben nicht für jede Plattform eine eigene JVM benötigt. Die JVM ist sozusagen ein Universalübersetzter?

Zum vergleich: Es gibt doch auch für jede Plattform einen eigenen C-Compiler (oder nicht?) und deshalb ist C doch plattformabhängig?

Wäre dir sehr dankbar, wenn du eventuelle Denkfehler meinerseits korrigieren könntest;-)
lg
Mina

bei Antwort benachrichtigen
d-oli minam „Hallo Alison, danke für deine Antwort. Ich verstehe, aber leider noch nicht...“
Optionen

Der Prozessor eines Computers kann nur Maschinenbefehle lesen (bestehend aus Binärcode 0/1). Programme, die nicht in Maschinensprache geschrieben sind, müssen erst in diese übersetzt werden.
Die Aufgabe des Übersetzens übernehmen eigens dafür entwickelte Programme, Interpreter oder Compiler genannt.

Interpreter
Interpreter übersetzen (interpretieren) die Programme zeilenweise. Das Programm kann deshalb zur Laufzeit geändert werden. Die Befehle werden Zeile für Zeile in Maschinensprache übersetzt und vom Prozessor ausgeführt. Bei jedem Neustart des Programms muss dieses auch wieder neu interpretiert werden. Aus diesem Grund können keine Optimierungen vorgenommen werden, und die Programme laufen langsamer ab.

Beispiele für Interpreter-Sprachen: Q-BASIC, JAVA, LOGO


Compiler
Ein Compiler übersetzt einen Programmtext vollständig in Maschinensprache und legt diesen in einer eigenständigen Programm-Datei ab. Während der Compilierung optimiert der Compiler die Programmgröße und -geschwindigkeit. Beim Neustart wird vom Prozessor direkt die Programmdatei abgearbeitet.
Dadurch laufen compilierte Programme 10 bis 20 mal schneller ab als zu interpretierende Programme.

Beispiele für Compiler-Sprachen: PASCAL, DELPHI, C++

Quelle: http://www.plauener.de/lessing/delphi/delphi01.htm

JVM
Ein ausführbares Programm läuft in dieser immer gleichen Umgebung, die durch entsprechende Software dargestellt wird; JVM-Implementationen sind z.B. in jedem vernünftigen Web-Browser enthalten und daher praktisch überall verfügbar.

Quelle: http://www.java.de/article/view/43/1/16


Zum vergleich: Es gibt doch auch für jede Plattform einen eigenen C-Compiler (oder nicht?) und deshalb ist C doch plattformabhängig?
Solange du nur die Standard C/C++ Libs oder die Boost Libs verwendest kann ein C/C++-Programm durchaus auch Plattformunabhängig sein.

Gruss, d-oli

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
d-oli Nachtrag zu: „Der Prozessor eines Computers kann nur Maschinenbefehle lesen bestehend aus...“
Optionen

... bei C/C++-Programmen muss der Source Code auf der Plattform, auf der das Programm ausgeführt werden soll, kompiliert und gelinkt werden.

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
minam d-oli „Der Prozessor eines Computers kann nur Maschinenbefehle lesen bestehend aus...“
Optionen

danke d-oli für diese ausfürliche Erklärung.
Nun hätte ich noch eine Frage:
Ich muss auch die Vorteile/ Nachteile dieser beiden Übersätzungsvorgänge beschreiben.
Als Vorteil Compiler gegenüber Interpreter:
Compiler sind schneller.


Aber welchen Vorteil hat ein Interpreter:
da dachte ich eben, Interpreter wären plattformunabhängiger?
kennt jemand einen Vorteil den ich anbringen kann?

vielen lieben dank
lg
Mina

bei Antwort benachrichtigen
d-oli minam „danke d-oli für diese ausfürliche Erklärung. Nun hätte ich noch eine Frage:...“
Optionen
Vorteil Interpreter:
Ändern/Anpassen des Programmes zu Laufzeit möglich.
Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
gelöscht_96523 minam „danke d-oli für diese ausfürliche Erklärung. Nun hätte ich noch eine Frage:...“
Optionen

*Ich* finde bei Interpreterbasierten Sprachen (Perl, PHP etc.) lassen sich Fehler oft einfacher finden. Außerdem sind Interpretersprachen leichter zu lernen. Ist aber meine persönliche Meinung, andere sehen das vielleicht anders ;)

Grüße,
Alsion

bei Antwort benachrichtigen
d-oli gelöscht_96523 „ Ich finde bei Interpreterbasierten Sprachen Perl, PHP etc. lassen sich Fehler...“
Optionen

Ich glaube hier muss noch zwischen Scriptsprachen (z.B. PHP, VBScript, JScript) und interpretierten höheren Programmiersprachen der 4. Generation (z.B. JAVA) unterschieden werden.

Bei PHP wird der Source durch den PHP-Interpreter in die entsprechende Maschinensprache ubersetzt (compilert/interpretiert).
Bei JAVA wird der Source in einen sogenannten Byte-Code übersetzt (compilert) und die VM widerum übesetzt (interpretiert) den Byte-Code in die entsprechende Maschinensprache.

Es ist richtig, das Scriptsprachen oft einfacher zu erlenen sind, doch sie haben auch begrenzte Einsatzmöglichkeiten.

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
minam d-oli „Ich glaube hier muss noch zwischen Scriptsprachen z.B. PHP, VBScript, JScript...“
Optionen

Hallo alle,

ich danke euch allen für eure Anworten.
Schönen Tag noch.
lg
Mina

bei Antwort benachrichtigen