Gibt es eigentlich eine Sprache die noch komplexer ist als C++?



  • Deutsch, Spanisch, Englisch, Tschechisch ... und so.



  • Wie wäre es mit der Skriptsprache ML ?

    Das Komplexeste was ich je gesehen sind die Datenaustauschformate DXF und STEP. Komplexer geht es meines Erachtens nimmer.



  • Bitte ein Bit schrieb:

    Wie wäre es mit der Skriptsprache ML ?

    Was ist das? Falls sie Ähnlichkeit mit der funktionalen Sprache ML hat (die keine Scriptsprache ist), ist sie wohl nicht allzu komplex.



  • C++ mag komplex sein, doch ich finde C++ dafür durchaus sinnvoll und praktisch. Einige Altlasten hätten vielleicht beseitigt (Wobei dann wieder das Problem mit den Zugriff auf C-Bibliotheken dem gegenüber steht) und einige Konstrukte hätten auch besser formuliert werden können, aber bedenke bitte das C++ eine sehr lange Geschichte (ca. 30 Jahre!) hat.

    Und davon abgesehen, ich finde Visual Basic so simpel es sein mag komplexer. Ich habe schon einige Listings von Sprachen die ich nicht gelernt habe gesehen, aber bei VB habe ich mehr Probleme zu verstehen was dort stehen könnte, als anderswo (Ich finde die Syntax und Semantik nicht wirklich gut).

    Komplex ist ein vielschichtiger Begriff...

    cu André



  • Falsch, -100 Punkte! Ein Kompiler ist ein Programm, d.h. das Programm selbst heißt Kompiler. zwischen C++ und VC++ besteht ein Unterschied: VC++ ist eingeschränkt. Ist für einfache Programme gedacht, da diese Sprache nicht so schnell abstürzt, wie C++, denn hier kann der Kompiler eibnige sachen korrigieren, was auch die Eingeschränktheit erklärt. Und ein Beweis dafür, dass VC++ kein Kompiler ist:

    Es gibt Kompiler für C++ und für VC++. und einen Kompiler für einen Kompiler gibt es meines Wissens nicht.



  • Sicher, dass du nicht Managed C++ meinst?
    Außerdem... auf welchen Post in diesem Thread war das jetzt überhaupt bezogen?



  • G4m3pr0gg3r schrieb:

    und einen Kompiler für einen Kompiler gibt es meines Wissens nicht.

    Yet Another Compiler Compiler 🤡

    Und ich denke auch, dass du C++/CLI oder C# meinst..



  • G4m3pr0gg3r schrieb:

    Falsch, -100 Punkte! Ein Kompiler ist ein Programm, d.h. das Programm selbst heißt Kompiler. zwischen C++ und VC++ besteht ein Unterschied: VC++ ist eingeschränkt. Ist für einfache Programme gedacht, da diese Sprache nicht so schnell abstürzt, wie C++, denn hier kann der Kompiler eibnige sachen korrigieren, was auch die Eingeschränktheit erklärt. Und ein Beweis dafür, dass VC++ kein Kompiler ist:

    Es gibt Kompiler für C++ und für VC++. und einen Kompiler für einen Kompiler gibt es meines Wissens nicht.

    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1452553.html#1452553

    das wird langsam langweilig



  • Badestrand schrieb:

    G4m3pr0gg3r schrieb:

    und einen Kompiler für einen Kompiler gibt es meines Wissens nicht.

    Yet Another Compiler Compiler 🤡

    Und ich denke auch, dass du C++/CLI oder C# meinst..

    Der Post ist schon ein paar Jahre alt und von "Spieleprogrammierer". Such den Thread ruhig mal raus wenn Du was zum lachen brauchst 😉 .



  • Kopieren macht einen Post nicht besser, und der Bezug zu einen Vorpost existiert nicht...

    G4m3pr0gg3r schrieb:

    zwischen C++ und VC++ besteht ein Unterschied: VC++ ist eingeschränkt.

    Falsch. C++ und VC++ machen im ersten Moment keinerlei unterschied. VC++ kann genauso für (ANSI) C++ verwendet werden. Davon abgesehen ist C++ eine Sprache, unter VC++ muss man fragen was gemeint ist:
    a) Die IDE (MSVC++ / MSVS)
    b) Der zugrundeliegende Compiler (VC++ hat ja einen [oder mehrere?] Compiler)
    c) Die C++ Umgebung => C++ Sprache
    d) Die C++ Umgebung mit managed C++ => C++ Sprache um Konstrukte ergänzt
    e) Die C++/CLI Umgebung => Eine an C++ angelehnte Sprache
    f) Oder das VC++ was ich unter den Begriff von früher kenne: C++ mit der Bibliothek MFC

    Und VC++ ist mitnichten eingeschränkt, auch wenn man lieber die Themen beim Namen nennen sollte um anderen zu signalisieren was man meint...

    cu André



  • An Bashar,

    wenn ich ehrlich bin, habe ich ML nur von den anderen immer gesehen. Und die meinten das der Haken an ML die Rekursion seie, da man alles mit Rekursion erschlagen müsse.

    Was ich hauptsächlich damit ausdrücken möchte ist, dass einige Sprachen aus der Theorie verschiedene Aspekte der Informatik zeigen und dadurch mehr oder minder komplex werden (Beispiel Prolog aus der Wissensbasierten Systemen oder auch die Sprachen zur Echzeitprogrammierung (PEARL))



  • Bitte ein Bit schrieb:

    wenn ich ehrlich bin, habe ich ML nur von den anderen immer gesehen. Und die meinten das der Haken an ML die Rekursion seie, da man alles mit Rekursion erschlagen müsse.

    Das stimmt so zwar prinzipiell, aber da muss man sich halt mal in die funktionale bzw. mathematische Denkweise reinfinden, dann passt das schon. Die Idee ist eigentlich recht simpel. In C++ gibts das in ähnlicher Form übrigens bei Template-Metaprogrammierung, das sind die gleichen Denkmuster.



  • Bashar schrieb:

    Bitte ein Bit schrieb:

    wenn ich ehrlich bin, habe ich ML nur von den anderen immer gesehen. Und die meinten das der Haken an ML die Rekursion seie, da man alles mit Rekursion erschlagen müsse.

    Das stimmt so zwar prinzipiell, aber da muss man sich halt mal in die funktionale bzw. mathematische Denkweise reinfinden, dann passt das schon. Die Idee ist eigentlich recht simpel. In C++ gibts das in ähnlicher Form übrigens bei Template-Metaprogrammierung, das sind die gleichen Denkmuster.

    Das mag sein, aber syntaktisch ist C++ sehr komplex, und bietet leider einiges Overhead. Wenn man sich die Boost-Bibliotheken z.B. mal ansieht, dann werden dort eine Menge sehr ausgefuchster Dinge gemacht, die die wenigsten C++-Programmierer verstehen (auch solche, die mit der STL arbeiten). Nicht zuletzt darf man nicht vergessen, dass viele nützliche C++-Techniken erst nach und nach entstanden sind und Syntaxelemente hierfür verwendet werden, die ursprünglich gar nicht dafür gedacht worden sind.

    Auch syntaktische Ambiguitäten machen die Sprache komplex, z.B. die Notwendigkeit von 'typename' an einigen Stellen um zwischen Typen und Members zu unterscheiden, oder die doppeldeutige Deklarationssyntax für Funktionen, die redundante Klammerpaare an einigen Stellen notwendig machen, um eine Initialisierung zu kennzeichnen.

    All diese Dinge führen dazu, dass C++ m.E. sehr wohl die komplexeste Programmiersprache ist, die es gibt. Esoterische Programmiersprachen wie Brainfuck sind von Natur aus viel weniger komplex, und auch von ML würde ich das behaupten (ohne je ML programmiert zu haben, aber ich kenne Haskell und F# und beide sind nach wissenschaftlichem Maß sehr sparsam (Parsimonie)).

    „asc“ führte sogar VB an. Das finde ich eine komische Wahl. Syntaktisch ist VB auf jeden Fall viel weniger komplex als C++. Die Sprachkonstrukte in „klassischen“ VB-Dialekten mögen zwar teilweise ein wenig komisch anmuten (z.B. sowas wie 'Open xyz For Binary As #1'). Aber das sind eben feststehende Konstrukte. Genausogut könnte man sagen, ObjC oder AppleScript seien komplex (auf letztere trifft das sogar eher zu). Auch semantisch gesehen ist VB eigentlich simpler als C++, auch wenn die .NET-Semantik teilweise recht verquer ist (weil sie einfach Inkonsistenzen enthält). Trotzdem wird es hier nie zu „Auswüchsen“ wie in C++ kommen, weil das Anwendungsgebiet einfach zu klar definiert ist. Übrigens gilt für das aktuelle VB dasselbe wie für C#. D.h. C# müsste genauso komplex sein.

    C++, durch seine enorm weite Anwendbarkeit, ist viel komplexer.



  • Hi,

    was mir auffällt ist daß hier keiner Ada aufführt. Die galt doch mal als das Monster an Sprachen, das nur auf Großrechnern implementiert werden konnte, weils von Ada bestimmungsgemäß keine Untermengen geben durfte.
    Ist hier jemand der Sich mit Ada auskennt und dazu was fundiertes sagen kann?

    Gruß Mümmel



  • Konrad Rudolph schrieb:

    All diese Dinge führen dazu, dass C++ m.E. sehr wohl die komplexeste Programmiersprache ist, die es gibt.

    Kennst du APL oder PL/I?



  • Hi,

    hab mich in der Vergangenheit mal mit PL/I beschäftigt, in vielen Dingen sicher noch komplexer als C++ aber (zumindest in der damaligen Version) nicht objektorientiert und ohne Templates.

    Gruß Mümmel



  • tfa schrieb:

    Konrad Rudolph schrieb:

    All diese Dinge führen dazu, dass C++ m.E. sehr wohl die komplexeste Programmiersprache ist, die es gibt.

    Kennst du APL oder PL/I?

    Nein, und es kann durchaus sein, dass die komplexer sind (wobei ich sagen muss, dass APL nicht komplex aussieht – kompliziert, ja. Komplex, nein). Ich bezog mich eher auf die bisher genannten Sprachen.

    Was Ada betrifft: Ada halte ich für deutlich weniger komplex als C++. Hier liegt an sich ein sehr striktes und formales Design zugrunde, sowohl in Syntax als auch Semantik.



  • tfa schrieb:

    Konrad Rudolph schrieb:

    All diese Dinge führen dazu, dass C++ m.E. sehr wohl die komplexeste Programmiersprache ist, die es gibt.

    Kennst du APL oder PL/I?

    Kennst du Monthz Pzthon?



  • ich stell mich mal ins lisp lager. beide sprachen, c++ und lisp, kann man mit dem entsprechenden hintergrundwissen in wenigen wochen so weit erlernen, dass man produktiven code erzeugen kann. wobei einem in c++ dann allerdings hauptsächlich "nur noch" best practices fehlen, fehlt einem in lisp unter garantie immer noch ein basisverständnis für die funktionsweise der sprache an sich.



  • Hi,

    wenn wir mal ganz ehrlich sind, wird C++ in sehr vielen Projekten einfach nur als C mit Klassen verstanden und angewendet. (von ein wenig STL-Nutzung mal abgesehen) Na und? Wenns die Aufgabe erfüllt ists doch OK. Die Aufgabe heißt doch meist nicht die gesamte C++Möglichkeitensau auf das Programm loszulassen, sondern in vertretbarer Zeit mit vertretbarem Aufwand das Problem so lösen, daß die Effizienz genügt und es ausreichend wartbar ist. Das ist bei der einen Aufgabe fast reiner Ansi-C-Code und im anderen vielleicht ein komplexes Template-Konstrukt.
    Wobei die entscheidenste Bedeutung der ganzen Template-Möglichkeiten vermutlich da liegt, wo mächtige Software-Werkzeuge selbst C++Code generieren. Das ist vielfach mit Templates erst möglich geworden oder wesentlich einfacher.

    Gruß Mümmel


Anmelden zum Antworten