Programmiersprachen bewerten und vergleichen
Stella
- programmiertechnik
Hallo an alle!
Im Rahmen meiner Diplomarbeit soll ich verschiedene Programmiersprachen bewerten. Ich hab die Programmiersprachen schon mal gegliedert:
Interpretierte Scriptsprachen: Perl, PHP, Java Script, VB Script, Rexx, Python
Compilierter Maschinencode, prozedural: C, VB/VBA,Pascal, PL/SQL
Compilierter Maschienencode, objektorientiert: VB.NET, C++, Java, Delphi, Abap Object
4 GL Sprachen: SQL, C-AL, Abap
Markup Languages: HTML, XML, XML/XSL, ASP, JSP
Ist das soweit richtig??
Nach welchen Kriterien kann man diese Sprachen bewerten? (Literatur?)
Hab für die Bewertung ca. 3 Wochen Zeit.
Hoffe, ihr könnt mir irgendwie weiterhelfen.
LG
Stella
Im Rahmen meiner Diplomarbeit soll ich verschiedene Programmiersprachen bewerten. Ich hab die Programmiersprachen schon mal gegliedert:
Interpretierte Scriptsprachen: Perl, PHP, Java Script, VB Script, Rexx, Python
Compilierter Maschinencode, prozedural: C, VB/VBA,Pascal, PL/SQL
Compilierter Maschienencode, objektorientiert: VB.NET, C++, Java, Delphi, Abap Object
4 GL Sprachen: SQL, C-AL, Abap
Markup Languages: HTML, XML, XML/XSL, ASP, JSP
Ich kenne nicht alle Sprachen, aber Perl und Java fallen insofern da etwas raus, weil sie weder direkt kompiliert werden noch direkt interpretiert. Beide werden in "Bytecode", also einer Art Zwischencode, übersetzt, der dann interpretiert wird.
Und ASP und JSP sind sicher auch keine Markup Sprachen, wie sie genau funktioneren weiß ich aber auch nicht.
Und ob C++ wirklich OO ist, darüber gibt/gab es auch Diskussionen, da es lediglich eine Erweiterung von C darstellt. (Wobei meine Erfahrung damit jetzt auch schon etliche Jahre zurückliegen und ich sicher auch kein Experte auf diesem Gebiet bin)
Struppi.
Moin,
Ich kenne nicht alle Sprachen, aber Perl und Java fallen insofern da etwas raus, weil sie weder direkt kompiliert werden noch direkt interpretiert. Beide werden in "Bytecode", also einer Art Zwischencode, übersetzt, der dann interpretiert wird.
Da könntest du Javascript teilwiese auch mit einordnen. Die JS-Engine des Mozilla/Firefox beispielsweise "kompiliert" Javascript auch beim Laden einer Seite und führt dann den compilierten Code aus. Ähnlich wie bei Java wird aber auch hier beim Compilieren kein fertiger Maschinencode erzeugt, sondern auch nur ein vereinfachter Zwischencode.
Und ASP und JSP sind sicher auch keine Markup Sprachen, wie sie genau funktioneren weiß ich aber auch nicht.
Soweit ich weiß, sind beide auch interpretierte (evtl. teilcompilierte) Scriptsprachen wie PHP, Perl, etc.
Und ob C++ wirklich OO ist, darüber gibt/gab es auch Diskussionen, da es lediglich eine Erweiterung von C darstellt.
Die Diskussionen gibt es zu Recht. Denn OO ist ein Konzept, das nicht unbedingt von der Programmiersprache abhängig ist. Die Sprache muss OO-Merkmale unterstützen (und C++ tut das), aber deswegen zu sagen "C++ ist objektorientiert", wäre irreführend. Tatsächlich kann man auch in C++ überwiegend prozedural programmieren, wenn man das will; in der Praxis läuft es meistens auf eine Mischform hinaus, in der auch prozedurale Ansätze noch eine große Rolle spielen (innerhalb einzelner Methoden ja sowieso). Reine OOP nach der strengen Lehre habe ich in C++ noch nicht gesehen.
Stella, ich weiß nicht, nach welchen Kriterien _du_ diese Sprachen bewerten willst, und mit Literaturhinweisen kann ich auch nicht dienen. Aber ich würde sie primär nach ihren besonderen Merkmalen gruppieren und anhand dieser Merkmale innerhalb der Gruppen gegenüberstellen, z.B. ihre Eignung für bestimmte Aufgaben. Einen Anfang hast du ja mit deiner Kategorisierung schon gemacht.
Jetzt würde ich z.B. anführen:
* Pascal: Sehr systematisch, strenge Syntax, klar verständliche Strukturen.
Daher gut als "Lernsprache" geeignet.
* C: Sehr maschinennah, Syntax erlaubt sehr komplexe Ausdrücke, dadurch
für Einsteiger oft schwierig. Gut geeignet für Programmierung auf System-
ebene (Betriebssystem, Treiber).
---
* HTML: Dokumentbeschreibungssprache, festgelegter Sprachumfang. Kann vom
Anwender/Webdesigner nicht erweitert werden (im Gegensatz zu XHTML)
* XML: Strukturbeschreibungssprache, Standard legt nur Regeln bzgl. der
Strukturierung fest. Anwender kann nach Belieben eigene Elemente festlegen.
---
usw.
Hilft dir das schon mal weiter?
So long,
Martin
Hi Martin
* Pascal: Sehr systematisch, strenge Syntax, klar verständliche Strukturen. Daher gut als "Lernsprache" geeignet.
* C: Sehr maschinennah, Syntax erlaubt sehr komplexe Ausdrücke, dadurch für Einsteiger oft schwierig. Gut geeignet für Programmierung auf Systemebene (Betriebssystem, Treiber).
Pascal und insbesondere Delphi lassen eine hardware-nahe und systemnahe Programmierung ohne weiteres zu. Sei es über die direkte Verwendung der WinAPI's oder durch die Einbindung von Assembler in den Source Code. Der einzige Vorteil von C oder C++ gegenüber Delphi ist, daß du mit ihnen Treiber entwickeln kannst.
Ciao
Uwe
Portland, Oregon
Hallo,
Mit der Unterscheidung "objektorientiert" vs. "nicht-objekt-orientiert" tu ich mich hart.
Meine Meinung geht da in eine ähnliche wie von "Der Martin" - OO ist IMO eine Art zu programmieren.
Es gibt viele objektorientierte "Aufsätze" für prozedurale Sprachen, die das Siegel "objektorientiert" kaum verdienen (z.b. Perl), umgekehrt lassen sich viele OO-Konzepte auch in proezduralen Sprachen verwenden. In C geht die Benutzung von "structs" in Verbindung mit typedefs und Präprozessor-Anweisungen z.b. schon in eine solche Richtung.
Interessant wäre übrigens vielleicht noch "Funktionale Programmiersprachen" (z.b. LISP oder SCHEME) - sind zwar eher Exoten, aber ich find sie lustig *g*
Zur Bewertung:
Ich finde, die Artikel in Wikipedia über die verschiedenen Sprachen (den von C hab ich mir neulich mal durchgelesen) fassen recht gut Vor- und Nachteile der einzelnen Sprachen zusammen.
Ansonsten würde ich die Bewertung primär vom Anwendungsbereich abhängig machen. Keine Sprache ist ja per se generell gut oder schlecht....obwohl....kennt hier jemand noch COMAL *würg* :) ?
Viele Grüße,
Jörg
gudn tach!
Ist das soweit richtig??
ich stimme Struppi in seinen bemaengelungen zu, mit einer kleinen ausnahme bzw. einer praezisierung:
c++ wird wie java zu den oo-faehigen sprachen gezaehlt, obwohl z.b. smalltalk (womit ich mich noch nicht befasst habe) noch "objektorientierter" sein soll.
klar kann man in c++, java und delphi auch prozedural programmieren, was aber nicht heisst, dass man eben nicht auch oo programmieren koennte.
naja, bevor ich ausschweife... letztlich laeuft es daraus hinaus: eine strikte klassifizierung der / trennung zwischen den sprachen ist selten moeglich.
vielleicht waere es besser die beiden sparten "prozedural" und "oo" zu vereinigen? oder eben dazuzusagen, dass die beiden sparten nicht strikt voneinander zu trennen sind, jedoch eben die einen eher so und die anderen eher so verwendet werden?
Nach welchen Kriterien kann man diese Sprachen bewerten? (Literatur?)
Hab für die Bewertung ca. 3 Wochen Zeit.
vielleicht bekommst du durch die wikipedia noch ein paar denkanstoesse dazu. auf http://de.wikipedia.org/wiki/Programmiersprache und http://en.wikipedia.org/wiki/Programming_language werden noch weitere ideen zu klassifizierungen genannt, die auch schon zu gewissen bewertungen hinfuehren.
sollst du wirklich so allgemein wie moeglich bewerten? und wie ausfuehrlich? oder bloss im hinblick auf bestimmte kriterien (z.b. geschwindigkeit der ausfuehrung, geschwindigkeit des schreibens, naehe zum menschlichen denken, vorhandene tools/libs dafuer, verbreitung, anwendungsbezogenheit, erweiterbarkeit, ...)
sollst du nur die bisher genannten sprachen betrachten, oder ist dir die auswahl freigestellt? vielleicht nennst du auch mal den titel der arbeit und die fakultaet, damit man das besser einordnen kann.
prost
seth
Hallo,
klar kann man in c++, java und delphi auch prozedural programmieren,
In Java prozedural? Wie das denn?
MfG
Dieter
Hi Dieter,
In Java prozedural? Wie das denn?
Man kann auch Java schlecht programmieren und alles sequentiell in main reinschludern...
MfG
Hallo Danny,
ich glaube, zum OO-Programmieren gehört mehr als nur die typische "objekt.methode"-Notation. Wichtiger ist das objektorientierte Denken des Programmierers.
Gruß, Jürgen
Hallo Jürgen,
da stimme ich Dir zu.
Ich behaupte sogar, dass sich auch mit Non-OO-Sprachen vergleichbar sauber und wiederverwendbar programmieren läßt, wenn man entsprechende Module/Funktionen und Schnittstellen aufbaut und sich an gewisse Regeln hält, z.B. vorangestellte Unterstriche für "private" Funktions u. Variablennamen, usw.
MfG
gudn tach!
klar kann man in c++, java und delphi auch prozedural programmieren,
In Java prozedural? Wie das denn?
JürgenB hat es auf den punkt gebracht.
wenn man jahre lang in einer sprache wie turbo pascal, fortran oder c programmiert und dann mal in java reinschnuppert, ohne sich gross mit dem thema oop auseinanderzusetzen, der programmiert eben einfach in seinem alten stil, in seinen alten denk-strukturen.
prost
seth
Hallo Stella,
nur zwei Anmerkungen von mir:
Ich finde deine Aufteilung ungeschickt. Objektorientiertheit und Compilierbarkeit schließen sich nicht aus. Diese beiden Kriterien sind unabhängig von einander.
Du hast meine beiden Lieblingssprachen vergessen:
Fortran:
Für rechenintensive numerische Probleme die optimale Sprache, weil kein anderer Compiler so gut optimieren kann. Die "einfache" Struktur dieser Sprache hilft dabei natürlich.
LabVIEW:
Grafische Programmiersprache, hauptsächlich für Messtechnik und Prozesssteuerung geeignet. Programme werden "gezeichnet" und sehen fast wie Schaltpläne aus (Datenflussdiagramme). Mischform aus Compiler und Interpreter. Wesentlicher Unterschied zu anderen Sprachen ist, dass die Reihenfolge, in der die Befehle abgearbeitet werden, nicht von der Reihenfolge im Programm abhängt, sonder rein Datenfluss gesteuert ist.
Gruß, Jürgen
Hell-O!
Markup Languages: HTML, XML, XML/XSL, ASP, JSP
Weder ASP noch JSP sind Markup Languages. ASP ist vereinfacht das MS-proprietäre Gegenstück zur CGI-Schnittstelle, JSP ist m.E. vergleichbar mit Server Side Includes.
Siechfred
hallo Siechfred,
ASP ist vereinfacht das MS-proprietäre Gegenstück zur CGI-Schnittstelle, JSP ist m.E. vergleichbar mit Server Side Includes.
ASP ist (bzw. war einmal) auch keine Programmiersprache, sondern eher sowas wie ein Konzept. In ASP wurde zwar von Microsoft vorrangig VBScript vorgesehen, aber es sind/waren auch JSccript und/oder andere Sprachen einsetzbar. Der "Nachfolger" ist .NET - das bezeichnenderweise dann "Framework" heißt.
JSP ist mit SSI nicht vergleichbar. Eher schon, wenn auch etwas wacklig, mit PHP. JSP-"Seiten" können HTML und JAVA enthalten, also "echten" Code, was bei SSI nicht der Fall ist. SSI sind ja auch keine Sprache, sondern eben "Erweiterungen".
Grüße aus Berlin
Christoph S.
Hallo,
JSP ist mit SSI nicht vergleichbar. Eher schon, wenn auch etwas wacklig, mit PHP. JSP-"Seiten" können HTML und JAVA enthalten, also "echten" Code, was bei SSI nicht der Fall ist.
JSPs können auch speziellen Code aus Tag Libraries enthalten - so wie aspx-Seiten Web-Controls.
Das Konzept von JSP und aspx-Seiten bei ASP.NET ist vielleicht am ehesten vergleichbar, da in beiden Fällen Zwischencode erzeugt wird. Eine JSP wird dabei in ein Servlet übersetzt.
ASP und PHP sind nur in der Art und Weise ähnlich, wie Programmcode in HTML eingebettet werden kann. Und was versuchen wir ja so weit wie möglich zu vermeiden.
Ich würde dem OP raten, sich kurz mit den Konzepten der verschiedenen genannten Sprachen zu beschäftigen, da doch einige Mißverständnisse im Laufe des Threads offenbar werden.
Ciao
Hi Stella,
eine Gliederung ist gut aber nicht so einfach abgrenzbar. Die Klassifizierung würde ich vielleicht anhand eines Stammbaums machen, siehe
http://de.wikipedia.org/wiki/Bild:Stammbaum_pscprachen.jpg
in Verbindung mit Mindmap-Elementen, d.h den Sprachen bestimmte Eigenschaften (mehrfach) zuordnen, da eine Sprache sich z.B. prozedural und/oder objektorientiert programmieren läßt, was unabhängig von der Ausführung durch Compiler, Interpreter oder Zwischencode ist, usw..
MfG
Hi Stella,
Den meisten Bemerkungen zu den Klassifizierungen und Einordnungen schliesse ich mich an. Aber:
Hoffe, ihr könnt mir irgendwie weiterhelfen.
Ich würde Ruby und Phyton nicht ausser Acht lassen.
Ausserdem habe ich noch ein paar interessante Links gefunden:
Vergleich von 7 Programmiersprachen
Programmiersprachen im Vergleich
Kriterien für den Vergleich von Programmiersprachen
ciao
romy
Hallo Stella,
Du hast noch die esoterischen Progrrammiersprachen vergessen! http://de.wikipedia.org/wiki/Liste_esoterischer_Programmiersprachen
Mein besonderer Liebling ist Brainfuck...;o)
Gruss
LeKuchen
Hallo LeKuchen.
Du hast noch die esoterischen Progrrammiersprachen vergessen! http://de.wikipedia.org/wiki/Liste_esoterischer_Programmiersprachen
Mein besonderer Liebling ist Brainfuck...;o)
Oder Whitespace. Damit lassen sich immer so gut Codebeispiele posten.
Einen schönen Donnerstag noch.
Gruß, Ashura
Hallo Stella,
Markup Languages: HTML, XML, XML/XSL, ASP, JSP
XSLT(funktionale Sprache) sollte nicht fehlen:
http://de.wikipedia.org/wiki/XSL_Transformation
http://de.wikipedia.org/wiki/Extensible_Stylesheet_Language
Gruß
André
Hi Stella
IMHO fehlt Assembler in deiner Liste.
Cheers
Uwe
Portland, Oregon
Hallo
Im Rahmen meiner Diplomarbeit soll ich verschiedene Programmiersprachen bewerten. Ich hab die Programmiersprachen schon mal gegliedert:
Interpretierte Scriptsprachen: Perl, PHP, Java Script, VB Script, Rexx, Python
Compilierter Maschinencode, prozedural: C, VB/VBA,Pascal, PL/SQL
Compilierter Maschienencode, objektorientiert: VB.NET, C++, Java, Delphi, Abap Object
4 GL Sprachen: SQL, C-AL, Abap
Markup Languages: HTML, XML, XML/XSL, ASP, JSP
Was heisst schon gegliedert? Es gibt zahllose Möglichkeiten, Programmierspachen zu gliedern und du hast noch dazu eine schlechte gewählt. Von der Sicht der Programmiersprache ist es nämlich völlig egal, wie die ausgeführt werden - interpretiert oder compiliert. Zudem kommt mir deine Einteilung vor wie 'Rote Autos', 'Gelbe Autos', 'Mercedes', 'Opel', 'Lastwagen' - du vermischt Kriterien. Du ordnest zuerst nach dem Prinzip der Ausführung (interpretiert/compiliert) und dann kommen plötzlich 4 GL Sprachen und Markup Languages - dies werden ja auch irgendwie ausgeführt. Also wenn das eine Diplomarbeit werden soll...
Gruss
Michael