Kompatibel ?



  • @RBS2 sagte in Kompatibel ?:

    Java war einer der ersten Versuche, die C++-Misere in den Griff zu bekommen.

    ist nicht alles irgendwie ein versuch, irgendeine misere in den griff zu bekommen?

    Inzwischen sind viele andere Sprachen und Konzepte entstanden.

    ja siehe oben. am ende musst du zig programmiersprachen lernen und kannst aber nicht eine einzige vernünftig anwenden.
    wenn du z.b. nur C (oder C++) in den grundzügen lernst, dann machst du am anfang natürlich viele fehler. aber spätestens nach 10 jahren hast du die meisten fehler gemacht (und hoffentlich aus ihnen gelernt) und bist quasi der "pro". wenn du jetzt aber C lernst, und dann C++, weil da dieser und jener fehler aus C nicht auftreten kann, und dann java, weil da dieser und jener fehler aus C++ wieder nicht auftreten kann, und dann wieder irgendwas anderes, und dann noch was usw. usf. dann wirst du einfach niemals so supergeil sein, wie jemand der jahrzehntelange erfahrung in einer einzigen programmiersprache aufweisen kann.

    Auch Java ist nicht mehr ganz so clean wie es einst mal war. Das Feature-Creep, das bei C++ zur Normalität gehört, hat auch die Java-Community in seinen Bann gerissen.

    ja das ist halt das, was der markt haben will.



  • @Swordfish sagte in Kompatibel ?:

    Wer die Ironie nicht gefunden hat, darf sie trotzdem behalten.

    Die war nicht zu überlesen. 😎


  • Gesperrt

    @Mechanics sagte in Kompatibel ?:

    Wo sind da irgendwelche Beispiele aus C, was hast du für Bespiele für eine weniger fehleranfällige Lösung gebracht, und wo sind hier irgendwelche Argumente.

    Der argumentative Kern des Ganzen ist, dass der C-Coder nur dynamische Speicherverwaltung verwendet wo es absolut nötig ist. Der C++-Mensch darüber aber meistens nicht nachdenkt, weil seine Sprache ihm die Entscheidung abnimmt. Der viel gepriesene std::string zum Beispiel. C++-Leutchen sind es gewohnt, lauter Blackboxes zusammenzustöpseln, während der C-User jedes Bit beim Vornamen kennt. Beides hat Vor- und Nachteile. Jedoch wird der C++-Mensch oft mit einer übermäßigen Abstraktion konfrontiert, die nur durch seine Sprache kommt. Siehe hier den realloc-Thread im C++-Forum.


  • Gesperrt

    @Wade1234 sagte in Kompatibel ?:

    ja siehe oben. am ende musst du zig programmiersprachen lernen und kannst aber nicht eine einzige vernünftig anwenden.
    wenn du z.b. nur C (oder C++) in den grundzügen lernst, dann machst du am anfang natürlich viele fehler. aber spätestens nach 10 jahren hast du die meisten fehler gemacht (und hoffentlich aus ihnen gelernt) und bist quasi der "pro". wenn du jetzt aber C lernst, und dann C++, weil da dieser und jener fehler aus C nicht auftreten kann, und dann java, weil da dieser und jener fehler aus C++ wieder nicht auftreten kann, und dann wieder irgendwas anderes, und dann noch was usw. usf. dann wirst du einfach niemals so supergeil sein, wie jemand der jahrzehntelange erfahrung in einer einzigen programmiersprache aufweisen kann.

    Stimmt, doch einige Sprachen sind scheinbar nur dazu da, um den persönlichen Nerd-Level zu steigern. Zum Beispiel diese hier: https://www.tutorialspoint.com/scala/scala_overview.htm



  • @RBS2
    naja soweit ich weiß gehört die entwicklung von programmiersprachen zum bereich der theoretischen informatik und da es in der wirtschaft nicht auf "grips" oder "tolle ideen", sondern auf zertifikate ankommt, machen einige leute damit ihren doktor (oder den phd) und am ende kommt dann sowas dabei raus.


  • Gesperrt

    @Wade1234 sagte in Kompatibel ?:

    @RBS2
    naja soweit ich weiß gehört die entwicklung von programmiersprachen zum bereich der theoretischen informatik und da es in der wirtschaft nicht auf "grips" oder "tolle ideen", sondern auf zertifikate ankommt, machen einige leute damit ihren doktor (oder den phd) und am ende kommt dann sowas dabei raus.

    Forschung ist ja auch wichtig. Ich finde es nur falsch, ein akademisches Relikt wie Scala sofort als praxistauglich anzupreisen. Aber ist leider so, dass viele Institute auf Fördergelder und Sponsoren angewiesen sind. So muss der Wissenschaftler trommeln, sonst steht er im nächsten Jahr auf der Straße.

    Ganz beliebt ist es ja, seit einiger Zeit, komplizierte Algorithmen in eine einzige Anweisung zu packen. Das nennt sich "funktionale Programmierung", ein uraltes Konzept, aber jede Sprache die was auf sich hält, muss das irgendwie anbieten.



  • also ich weiß aus meinem bekanntenkreis, dass es vor einiger zeit (15 jahre oder so) üblich war, fundamente von einfamilienhäusern nicht mehr mit massiver stahlbewehrung zu erstellen, sondern im prinzip dünne stahldrähte in den beton zu mischen. wie sich herausgestellt hat, war das wohl ein riesengroßer fehler, weil die fundamente brüchig wurden.

    jetzt kannst du dir sicherlich ausmalen, was da mit dem haus los ist, wenn das fundament brüchig wird, aber weil es neu und billiger war und alles, was modern und günstiger ist, ja automatisch genommen wird, obwohl "alte" techniken ja schon zeit hatten, sich zu bewähren, haben die leute das wohl wie blöde gekauft und gucken jetzt oder in ein paar jahren ziemlich doof aus der wäsche. 😀

    naja und genauso ist das ja auch mit allem anderen: es muss lediglich die 6 monate gewährleistung überleben und neu und trendy sein und schon kaufen es alle. wenn du was hinterfragst, bist du ein arroganter spinner, der sich wichtig machen will, und naja so ist das halt. 😂



  • @RBS2: Du verwechselst Lambda-Ausdrücke (bzw. das Lambda-Kalkül) mit Funktionaler Programmierung per se. Nur weil funktionale Programmierung darauf beruht, heißt es ja nicht, daß nicht auch andere (z.B. imperative) Sprachen dies unterstützen dürfen.

    Aber ich verstehe nicht, was du dagegen hast - aber auch deine anderen "Argumente" hier im Thread nicht...


  • Gesperrt

    @Th69 sagte in Kompatibel ?:

    Du verwechselst Lambda-Ausdrücke (bzw. das Lambda-Kalkül) mit Funktionaler Programmierung per se. Nur weil funktionale Programmierung darauf beruht, heißt es ja nicht, daß nicht auch andere (z.B. imperative) Sprachen dies unterstützen dürfen.

    Das ist am allerwenigsten eine Frage des "Dürfens", sondern eher der Hygiene. Für C gilt "Spirit of C":

    Trust the programmer.
    Don't prevent the programmer from doing what needs to be done.
    Keep the language small and simple.
    Provide only one way to do an operation.
    Make it fast, even if it is not guaranteed to be portable. 
    

    Vor allem die Punkte 3 und 4.
    Wer das ignorieren will, mag gern C um funktionale Features erweitern. Wer weiß, was der liebe Bjarne aus C gebastelt hätte, hätte ihn damals funktionale Programmierung mehr beeindruckt als OOP?



  • @RBS2 sagte in Kompatibel ?:

    Das ist am allerwenigsten eine Frage des "Dürfens", sondern eher der Hygiene.

    Ach so. Es geht bloß um Ideologie. Dann passts ja.

    @RBS2 sagte in Kompatibel ?:

    Wer weiß, was der liebe Bjarne aus C gebastelt hätte, hätte ihn damals funktionale Programmierung mehr beeindruckt als OOP?

    C++ war von Beginn an als Multiparadigmensprache ausgelegt. Du Horst.


  • Gesperrt

    @Swordfish sagte in Kompatibel ?:

    C++ war von Beginn an als Multiparadigmensprache ausgelegt.

    C++ war von Beginn an "C mit Klassen".



  • @RBS2 sagte in Kompatibel ?:

    @Swordfish sagte in Kompatibel ?:

    C++ war von Beginn an als Multiparadigmensprache ausgelegt.

    C++ war von Beginn an "C mit Klassen".

    Nur weil wir alle mal so angefangen habe, ist das noch kein Hinweis auf Sinnhaftigkeit.
    C mit Klassen ist Bullshit und wer es praktiziert und noch daran glaubt, ist auf dem Holzweg.
    Gerade die Standards seit C++11 bieten jede Menge neue nützliche Dinge, die jeden Ungläubigen überzeugen sollten 😉



  • @RBS2 sagte in Kompatibel ?:

    C++ war von Beginn an "C mit Klassen".

    C with Classes != C++.

    Stroustrup:

    The resulting [new] language was at first still called C with Classes but after a polite request from management it was given the name C84. The reason for the naming was that people had taken to calling C with Classes ‘‘new C,’’ and then C. This last abbreviation led to C being called ‘‘plain C,’’ ‘‘straight C,’’ and ‘‘old C.’’ The name C84 was used only for a few months, partly because it was ugly and institutional, partly because there would still be confusion if people dropped the ‘84.’ I asked for ideas for a new name and picked C++ because it was short, had nice interpretations, and wasn’t of the form ‘‘adjective C.’’


    The significance of this paper [Stroustrup86] is that it is the first exposition of the set of techniques that C++ was aiming to provide support for. All previous presentations, to avoid dishonesty and hype, had been restricted to describe what features were already implemented and in use. The ‘‘whatis paper’’ defined the set of problems I thought a language supporting data abstraction and object−oriented programming ought to solve and gave examples of language features needed.

    The result was a re−affirmation of the importance of the ‘‘multi−paradigm’’ nature of C++


    Since 1987 or so, the focus of development the C++ language and its associated programming styles have been the use of templates, static polymorphism, generic programming, and multiparadigm programming.


  • Gesperrt

    @It0101 sagte in Kompatibel ?:

    Gerade die Standards seit C++11 bieten jede Menge neue nützliche Dinge, die jeden Ungläubigen überzeugen sollten

    Überzeugen, wovon? Dass man eine Programmiersprache beliebig aufblähen kann? Das hat doch bestimmt keiner angezweifelt.



  • @RBS2 Ich hoffe dann, du schreibst nur K&R C oder maximal C89. Die nachfolgenden Standards haben C doch bloß aufgebläht.


  • Gesperrt

    @Swordfish sagte in Kompatibel ?:

    Ich hoffe dann, du schreibst nur K&R C oder maximal C89. Die nachfolgenden Standards haben C doch bloß aufgebläht.

    Mitnichten; der Spirit of C wurde nie außer Acht gelassen.



  • @RBS2 sagte in Kompatibel ?:

    Mitnichten; der Spirit of C wurde nie außer Acht gelassen.

    @RBS2 sagte in Kompatibel ?:

    Trust the programmer.

    Bounds-Checking interface in C99

    @RBS2 sagte in Kompatibel ?:

    Provide only one way to do an operation.

    • Return aus main()
    • exit()
    • quick_exit()

    ... und jetzt Troll dich.


  • Gesperrt

    @Swordfish sagte in Kompatibel ?:

    Bounds-Checking interface in C99

    ... ist optional.

    quick_exit()

    Ein exit() ohne Cleanup ist neu. Ist aber auch nichts, was die Sprache unnötig aufbläht.



  • @RBS2 sagte in Kompatibel ?:

    Ist aber auch nichts, was die Sprache unnötig aufbläht.

    Genauso sind Lambdas nichts, das C++ **unnötig** (also unnütz, redundant) aufblähen. Aber das geht ja anscheinend nicht in deine Birne.


  • Gesperrt

    @Swordfish sagte in Kompatibel ?:

    Genauso sind Lambdas nichts, das C++ unnötig (also unnütz, redundant) aufblähen.

    Sie passen nicht ins Konzept von C, das eigentlich eine portable Assemblersprache ist. C setzt sowas wie eine Von-Neumann-Architektur voraus. Dafür ist der imperative Ansatz besser. Lamdas sind gut in Umgebungen hoher Nebenläufigkeit, also z.B. bei FPGA, CPLDs und sowas.


Anmelden zum Antworten