Es gibt keine scharfe Abgrenzung zwischen "Skriptsprache" und "dynamisch typisierter Programmiersprache". PHP, Python, Perl werden durchaus Skriptsprachen genannt.
Kommt halt auf die Sichtweise an. Python oder Perl kann man für Skripte benutzen, aber auch zur Entwicklung konventioneller Software. Traditionell sind es Skriptsprachen aber die moderne Sichtweise ist es sie als Skriptsprachen zu bezeichnen...
Merke: Module compiliert CPython nur einmal, cached danach den Bytecode in ".pyc" Dateien. Für Hauptprogramme wird kein .pyc angelegt, ginge aber auch.
Wenn Du nur Bytecode hast und Python eine VM hat, wo ist der Unterschied zu Java, ausser in der Syntax? Auch Java übersetzt .java Dateien in .class und führt die dann in einer VM aus.
Für mich macht nicht die Existenz eines Compilers den Unterschied aus. Der Unterschied ist in der Kompression der Sprachelemente und der Dynamischen Typisierung, aber in jedem Fall in der Möglichkeit Module für sich alleine stehend zu übersetzen.
Also für mich ist eine Skriptsprache eine Sprache, die in andere Software (nicht Bibliotheken) eingebettet ist, welche mit einer anderen Sprache programmiert wurde. Die Skriptsprache steuert den groben Ablauf, für alles andere wäre sie ev. zu langsam.
Du meinst: http://en.wikipedia.org/wiki/Glue_language und da heisst es "normalerweise eine Skriptsprache.
Denn Java hat "JNI" (Java Native Interface), eine Anbindung an native Sprachen, weil es für manches zu langsam war. Folglich wäre Java eine Skriptsprache, weil es als Gluelanguage eingesetzt wird?
Logischerweise ist die Überlappung gigantisch gross, aber ich meine "Recht" /TM/ zu haben.
Was ist der Unterschied von Java und Python, beantworte die Frage, und Du kommst darauf, dass sie technisch vom Design sehr ähnlich sind, bis auf einen Unterschied, den ich nannte.
Ich schließe mich dem an! Man hätte viel klarer abgrenzen müssen, wie Script-Sprache im Kontext dieser Umfrage definiert wird.
Stellt das eine Sprache dar, die eine Erweiterung eines bestehenden Programms ermöglicht? Genau das würde ich als Scriptsprache bezeichnen.
Das ganze an einem Compiler festzumachen, der direkt Code für eine spezielle Architektur erzeugt halte ich für eine veraltete Ansicht. Im Zeitalter von JITs ist das keine wirklich aussagekräftige Einteilung mehr; außerdem gibt es ja auch beim Compilieren in einen anderen Byte-Code Übersetzungsarbeit.
Vielleicht sollte man eher eine Einteilung in "Vollsprache" und "Spartensprache" (dafür gibts ja den Ausdruck DSL) in Anlehnung an die Einteilung bei Fernsehsendern vornehmen. Wobei bei den DSL ja dann der Anwendungsbereich eine Rolle spielt...
Vielleicht sollte man daher direkt vom Anwendungsbereich ausgehen und die Umfrage zu verschiedenen Anwendungsbereichen stellen; also etwa: Welche Sprache nutzen Sie für Administrative Aufgaben? Welche für persönliche Automatisierungsaufgaben? Welche für Stand-Alone Applikationen?
Na, Scriptsprache ist im Kontext dieser Umfrage so definiert, dass die die aufgelistet sind dazu gehören...
Na toll... definiere ich bin draußen oder so.
Welche Länder finden Sie toll:
1 - Amerika 2 - Deutschland 3 - Die EU 4 - Apfelkuchen
Das ist zwar überspitzt und überzeichnet, aber genau so sinnvoll wäre diese hier. Natürlich kann ich eine Menge über eine Auswahl definieren, aber es der Abstimmende kann im Kontext schwerlich entscheiden, wenn der Zusammenhang zwischen den Werten und dem Urspungsbegriff nicht stimmig sind.
Zudem ist die Aussage des Ergebnisses ziemlich wenig ausdrucksstark.
a) Ein Werkzeug für alles, egal wie tauglich. b) Mehrere Werkzeuge, die vermeintlich angepasst sind.
Ich tendiere zu a) kann es aber (noch) nicht durchhalten. So schreibe ich Shell-Skripte, weil Python das (noch?) nicht einfach genug macht, andere Prozesse schnell mal zu automatisieren.
Und ich nutze noch eine besonders streng typisierende Sprache (Ada), weil ich in Python noch keinen Compiler habe, der dem nahe kommt. Das ändert sich ja vielleicht mal.
Und ich nutze noch eine besonders streng typisierende Sprache (Ada), weil ich in Python noch keinen Compiler habe, der dem nahe kommt. Das ändert sich ja vielleicht mal.
Python ist doch streng typisiert! Es ist im Gegensatz zu Ada eben dynamisch; somit (und wegen des allg. Objektmodells) kann man dafür eben keinen so effizienten Compiler schreiben. Wobei ich bei Ada den Fokus ja doch eher auf der Beweisbarkeit und Korrektheit sehen würde...
hast ja Recht, dynamisch und sehr konsequent darin, dass wirklich alles ein Objekt ist, Module, Klassen, Literale, alles einfach. Und dann aber auch darauf ausgelegt, dass die Typen dann keine Grenzen darstellen, sondern in einander übergehen, so dass es egal ist, ob bei "a in b", was b eigentlich wirklich ist.
Der meiste Code, weiss deshalb garnicht, welche Typen genau er bearbeitet, sondern nutzt nur Interfaces. Ich habe gerne mal "readable" oder "iterable". Das empfinde ich als nicht streng typisiert, zumal "interfaces" anders als z.B. in Java nicht gut überprüfbar sind.
Bei Ada verwende ich dagegen inkompatible Integer (z.B. new Integer range 1..8), die sich gerade dadurch auszeichnen, dass sie nicht verwechselt werden können. Anders als bei C++ kann man nicht char *, 0L, char, short, int, etc. alle miteinander verwechseln, ohne selbst zu casten.
Ich weiss nicht, wie man diesen Aspekt einer Sprache nennt, ich schreibe daher "besonders streng", bin aber für Vorschläge offen.
PHP und Python sind definitiv keine Skriptsprachen. Perl ebenso.
Bescheuerte Umfrage...
Es gibt keine scharfe Abgrenzung zwischen "Skriptsprache" und "dynamisch typisierter Programmiersprache". PHP, Python, Perl werden durchaus Skriptsprachen genannt.
Dann weisst du sogar mehr, als die Entwickler...
Von der PHP-Startseite (direkt oben links):
PHP is a widely-used general-purpose scripting language...
Kommt halt auf die Sichtweise an. Python oder Perl kann man für Skripte benutzen, aber auch zur Entwicklung konventioneller Software. Traditionell sind es Skriptsprachen aber die moderne Sichtweise ist es sie als Skriptsprachen zu bezeichnen...
Mit JavaScript kannst du auch konventionelle Software entwickeln.
Bei JavaScript ists halt dasselbe in grün, erst Skriptsprache für HTML, jetzt werden damit Webapps gebaut...
Noe, das passt schon so. Bei den drei Sprachen werden die Programme zur Laufzeit interpretiert, damit gehören sie zu den Skripsprachen.
echo 'print "hallo"' >test.py
python -m py_compile test.py
rm test.py
python test.pyc
Merke: Module compiliert CPython nur einmal, cached danach den Bytecode in ".pyc" Dateien. Für Hauptprogramme wird kein .pyc angelegt, ginge aber auch.
Wenn Du nur Bytecode hast und Python eine VM hat, wo ist der Unterschied zu Java, ausser in der Syntax? Auch Java übersetzt .java Dateien in .class und führt die dann in einer VM aus.
Für mich macht nicht die Existenz eines Compilers den Unterschied aus. Der Unterschied ist in der Kompression der Sprachelemente und der Dynamischen Typisierung, aber in jedem Fall in der Möglichkeit Module für sich alleine stehend zu übersetzen.
Sonst wäre Java eine Skriptsprache.
Gruss,
Kay
Also für mich ist eine Skriptsprache eine Sprache, die in andere Software (nicht Bibliotheken) eingebettet ist, welche mit einer anderen Sprache programmiert wurde. Die Skriptsprache steuert den groben Ablauf, für alles andere wäre sie ev. zu langsam.
Hallo Du,
Du meinst: http://en.wikipedia.org/wiki/Glue_language und da heisst es "normalerweise eine Skriptsprache.
Denn Java hat "JNI" (Java Native Interface), eine Anbindung an native Sprachen, weil es für manches zu langsam war. Folglich wäre Java eine Skriptsprache, weil es als Gluelanguage eingesetzt wird?
Logischerweise ist die Überlappung gigantisch gross, aber ich meine "Recht" /TM/ zu haben.
Was ist der Unterschied von Java und Python, beantworte die Frage, und Du kommst darauf, dass sie technisch vom Design sehr ähnlich sind, bis auf einen Unterschied, den ich nannte.
Gruss,
Kay
Klingt schlüssig. Zumal Java mit Codeinjection und was-weiß-ich nicht wenig Schlüsselwörter hat.
Also für Codeinjection hat Java keine Extra-Schlüsselwörter...
Oh. Ach ja..
Normales Basic (zB QBasic) wird üblicherweise auch zur Laufzeit interpretiert und ist trotzdem keine Skriptsprache....
Hm, wieso eigentlich nicht? Es gab mal Visual Basic Script, dass die gleiche Syntax hatte.
Kann es sein, dass BASIC (meine erste Programmiersprache) einfach nur zu alt ist? Oder dass es keine Modularisierung hat (weiss nicht), oder warum?
Gruss,
Kay
Ich schließe mich dem an! Man hätte viel klarer abgrenzen müssen, wie Script-Sprache im Kontext dieser Umfrage definiert wird.
Stellt das eine Sprache dar, die eine Erweiterung eines bestehenden Programms ermöglicht? Genau das würde ich als Scriptsprache bezeichnen.
Das ganze an einem Compiler festzumachen, der direkt Code für eine spezielle Architektur erzeugt halte ich für eine veraltete Ansicht. Im Zeitalter von JITs ist das keine wirklich aussagekräftige Einteilung mehr; außerdem gibt es ja auch beim Compilieren in einen anderen Byte-Code Übersetzungsarbeit.
Vielleicht sollte man eher eine Einteilung in "Vollsprache" und "Spartensprache" (dafür gibts ja den Ausdruck DSL) in Anlehnung an die Einteilung bei Fernsehsendern vornehmen. Wobei bei den DSL ja dann der Anwendungsbereich eine Rolle spielt...
Vielleicht sollte man daher direkt vom Anwendungsbereich ausgehen und die Umfrage zu verschiedenen Anwendungsbereichen stellen; also etwa:
Welche Sprache nutzen Sie für Administrative Aufgaben? Welche für persönliche Automatisierungsaufgaben? Welche für Stand-Alone Applikationen?
So in dieser Art etwa.
Na, Scriptsprache ist im Kontext dieser Umfrage so definiert, dass die die aufgelistet sind dazu gehören...
Na toll... definiere ich bin draußen oder so.
Welche Länder finden Sie toll:
1 - Amerika
2 - Deutschland
3 - Die EU
4 - Apfelkuchen
Das ist zwar überspitzt und überzeichnet, aber genau so sinnvoll wäre diese hier. Natürlich kann ich eine Menge über eine Auswahl definieren, aber es der Abstimmende kann im Kontext schwerlich entscheiden, wenn der Zusammenhang zwischen den Werten und dem Urspungsbegriff nicht stimmig sind.
Zudem ist die Aussage des Ergebnisses ziemlich wenig ausdrucksstark.
Da gibt es 2 Klassen von Entwicklern:
a) Ein Werkzeug für alles, egal wie tauglich.
b) Mehrere Werkzeuge, die vermeintlich angepasst sind.
Ich tendiere zu a) kann es aber (noch) nicht durchhalten. So schreibe ich Shell-Skripte, weil Python das (noch?) nicht einfach genug macht, andere Prozesse schnell mal zu automatisieren.
Und ich nutze noch eine besonders streng typisierende Sprache (Ada), weil ich in Python noch keinen Compiler habe, der dem nahe kommt. Das ändert sich ja vielleicht mal.
Gruss,
Kay
Python ist doch streng typisiert! Es ist im Gegensatz zu Ada eben dynamisch; somit (und wegen des allg. Objektmodells) kann man dafür eben keinen so effizienten Compiler schreiben. Wobei ich bei Ada den Fokus ja doch eher auf der Beweisbarkeit und Korrektheit sehen würde...
Hallo Du,
hast ja Recht, dynamisch und sehr konsequent darin, dass wirklich alles ein Objekt ist, Module, Klassen, Literale, alles einfach. Und dann aber auch darauf ausgelegt, dass die Typen dann keine Grenzen darstellen, sondern in einander übergehen, so dass es egal ist, ob bei "a in b", was b eigentlich wirklich ist.
Der meiste Code, weiss deshalb garnicht, welche Typen genau er bearbeitet, sondern nutzt nur Interfaces. Ich habe gerne mal "readable" oder "iterable". Das empfinde ich als nicht streng typisiert, zumal "interfaces" anders als z.B. in Java nicht gut überprüfbar sind.
Bei Ada verwende ich dagegen inkompatible Integer (z.B. new Integer range 1..8), die sich gerade dadurch auszeichnen, dass sie nicht verwechselt werden können. Anders als bei C++ kann man nicht char *, 0L, char, short, int, etc. alle miteinander verwechseln, ohne selbst zu casten.
Ich weiss nicht, wie man diesen Aspekt einer Sprache nennt, ich schreibe daher "besonders streng", bin aber für Vorschläge offen.
Gruss,
Kay