Stella: Programmiersprachen bewerten und vergleichen

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

  1. 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.

    1. 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

      --
      Ja, ja... E.T. wusste schon, warum er wieder nach Hause wollte.
      1. 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

  2. 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

  3. 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

    1. Hallo,

      klar kann man in c++, java und delphi auch prozedural programmieren,

      In Java prozedural? Wie das denn?

      MfG
       Dieter

      1. Hi Dieter,

        In Java prozedural? Wie das denn?

        Man kann auch Java schlecht programmieren und alles sequentiell in main reinschludern...

        MfG

        • Danny
        1. 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

          1. 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

            • Danny
      2. 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

  4. 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

  5. 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

    1. 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.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
      1. 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

  6. 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

    • Danny
  7. 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

  8. 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

    1. 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

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      mathbr:del.icio.us/ mathbr:w00t/
  9. 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é

  10. Hi Stella

    IMHO fehlt Assembler in deiner Liste.

    Cheers

    Uwe
    Portland, Oregon

  11. 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