Welche Sprache kann C++ Konkurrenz machen?



  • @wob sagte in Welche Sprache kann C++ Konkurrenz machen?:

    @Schlangenmensch sagte in Welche Sprache kann C++ Konkurrenz machen?:

    Zwischen Pascal und C ist das nicht wirklich ein Unterschied und in C++ steht explizit da, was passiert, das ist doch das, was man von lesbarem Code erwartet, oder?

    Naja, ich fand es sehr sehr unlogisch, dass man einen Typ einklammert, um zu casten, der Pascal-Style Cast ist doch viel logischer. Es gibt ja auch in C diesen functional-style Cast, sofern es ein einfacher Typ ist (also int(float_var) geht, aber int*(float_ptr) nicht). Außerdem war ich überrascht, dass Type Casts was anderes als reinterpret_cast tun. Ich meine mich zu erinnern, dass man in Pascal nicht integer(real_var) schreiben konnte, um float nach int zu wandeln. Daher war ich sehr verwirrt, was casts in C wirklich tun. Mal scheinen sie zu reinterpreten, mal scheinen sie den Wert irgendwie sinnvoll in einen anderen Typ zu konvertieren. Das ist in C++ schön explizit mit static_cast vs reinterpret_cast.

    Functional style casts sind doof, weil schwerer zu greppen.



  • @wob sagte in Welche Sprache kann C++ Konkurrenz machen?:

    @Tyrdal sagte in Welche Sprache kann C++ Konkurrenz machen?:

    Dafür entfallen bei Pascal die bei C immer notwendigen () bei if und while.

    Eindeutiger Nachteil.

    Nö. Das ist Gewohnheitssache von dir. Ich mache viel mit Python und da brauchts diese Klammern auch nicht. Ist schön, wenn die da nicht sind und von der eigentlichen Bedingung ablenken.

    Falsch, ist schlechter editierbar. Das hat nur am Randemit Gewohnheit zu tun.



  • @john-0 sagte in Welche Sprache kann C++ Konkurrenz machen?:

    @Tyrdal sagte in Welche Sprache kann C++ Konkurrenz machen?:

    Und Python mit seiner Einrückungstoefe ist völlig Banane. Da muss ich ja beim Schreiben schon auf die Formatierung achten anstatt das einfach den Formatter machen zu lassen.

    Ich nutze nie einen Formatter bei eigenem Code, da es entscheidend für die Codequalität ist den Code gleich ordentlich zu formatieren.

    Ich muss sowieso nach Firmenrichtlinien formatieren. Warum soll ich mir diese Arbeit nicht vom Computer abnehmen lassen? Schlechter wird der Code dadurch nicht. Der Inhalt ändert sich ja nicht.



  • @Tyrdal sagte

    Functional style casts sind doof, weil schwerer zu greppen.

    Hm. Ich finde, dass Lesbarkeit vor "Grepbarkeit" geht. In welchem Fall hat man denn in Pascal nicht \bInteger\(, wenn es um einen cast nach Integer geht? (gut, im Beispiel oben hatte jemand noch ein Space drin, aber das macht der Formatierer für die Codebasis gleich und somit wäre es kein Problem, dann noch ein Space (oder ein \s*) einzufügen) - insbesondere im Vergleich zu (typ) sehe ich keinen so großen Unterschied. Klar, wenn man C++ static_cast etc. nutzt, ist das deutlich besser (das habe ich aber oben auch schon so geschrieben).

    @Tyrdal sagte in Welche Sprache kann C++ Konkurrenz machen?:

    Falsch, ist schlechter editierbar. Das hat nur am Randemit Gewohnheit zu tun.

    Huch, wieso schlechter editierbar? Das finde ich überhaupt nicht. Woran hast du hier gedacht? Keine nervigen Klammern -> schneller geschrieben, einfacher zu lesen.



  • @wob sagte in Welche Sprache kann C++ Konkurrenz machen?:

    Hm. Ich finde, dass Lesbarkeit vor "Grepbarkeit" geht.

    Ich finde Grepbarkeit gehört zur Lesbarkeit, denn ich muss oft irgendwo was suchen.

    Huch, wieso schlechter editierbar? Das finde ich überhaupt nicht. Woran hast du hier gedacht? Keine nervigen Klammern -> schneller geschrieben, einfacher zu lesen.

    Klammern machen Codeteile gut editierbar, weil man halt die Klammern al Begrenzer hat. Da muss man nicht alles von Hand ansteuern sondern kann einfach auf die Klammer springen, ein ci( und dann den Inhalt ändern. Wenn es nur ein Klammernpaar gibt muss ich nichtmal mit dem Cursor da rein. Ohne Klammern ist das doch mehr Aufwand. Genauso kann ich einfach von öffnender zu schließender Klammer springen um an den Anfang oder das Ende zu kommen. Geht ohne schwieriger. Genauso mit markieren, löschen etc. Klar, heutzutage geht vieles auch über einen LSP-Server, aber ist doch besser wenn man den nicht zwingend braucht.



  • Also wenn es rein um Produktivität geht, finde ich Dart & Flutter sehr interessant. Unterstützt Desktop-, Smartphone- und Web-Apps. Und das alles mit einer Sprache und einem Framework. Außerdem kann man auch Plattform-spezifischen Code aufrufen.



  • @Tyrdal sagte in Welche Sprache kann C++ Konkurrenz machen?:

    Ich finde Grepbarkeit gehört zur Lesbarkeit, denn ich muss oft irgendwo was suchen.

    Ist (int ) x wirklich viel besser grepbar als Integer(x)?

    Klammern machen Codeteile gut editierbar, weil man halt die Klammern al Begrenzer hat. Da muss man nicht alles von Hand ansteuern sondern kann einfach auf die Klammer springen

    Hä? Ich muss doch trotzdem auf die entsprechende Codestelle gehen, die ich ändern will? Das Ende der Bedingung ist in Python der :, das Zeilenende oder bei mehrzeiligen Bedingungen die Klammer zu (umbrechen und Klammern setzen macht black automatisch). Vielleicht arbeiten wir anders. Meistens gehe ich x-Mal in den Bedingungen hin und her, während ich darüber nachdenke, wie die Bedingung denn eigentlich sein müsste. In Klammern hin- und herzuspringen war für mich noch nie von irgendeiner Bedeutung - außer bei komplizierten Bedingungen zu gucken, wo das Klammernpaar gerade zusammengehört. Aber je komplizierter, desto eher sollte man da einen Teil der Bedingung in eine Variable rausziehen. Jedenfalls läuft es dann eher auf 1 Bedingung pro Zeile hinaus - sodass "Zeile verschieben", "Zeile löchen" viel relevanter sind als irgendwelches Klammernspringen. Aber ich will dir gar nicht absprechen, dass du das so machst. Bin nur fest überzeugt, dass das deine Gewohnheit aufgrund deiner Codebasis ist und nicht ein allgemeingültiges Ding, das Programmieren erleichtert.



  • @wob sagte in Welche Sprache kann C++ Konkurrenz machen?:

    @Tyrdal sagte in Welche Sprache kann C++ Konkurrenz machen?:

    Ich finde Grepbarkeit gehört zur Lesbarkeit, denn ich muss oft irgendwo was suchen.

    Ist (int ) x wirklich viel besser grepbar als Integer(x)?

    Gibts eigentlich sowas wie ein libclang-grep? Das wär mal ein nützliches Tool 😉 ... reines Pattern Matching läuft ja gerade bei Code ziemlich oft vor die Wand.



  • @wob sagte in Welche Sprache kann C++ Konkurrenz machen?:

    In Klammern hin- und herzuspringen war für mich noch nie von irgendeiner Bedeutung - außer bei komplizierten Bedingungen zu gucken, wo das Klammernpaar gerade zusammengehört.

    Doch, ich spring auch sehr oft zwischen Klammern, und das sogar in VS. Finde ich sehr praktisch.

    Hat aber alles irgendwie nur am Rande mit dem eigentlichen Thema zu tun.



  • @Finnegan sagte in Welche Sprache kann C++ Konkurrenz machen?:

    @wob sagte in Welche Sprache kann C++ Konkurrenz machen?:

    @Tyrdal sagte in Welche Sprache kann C++ Konkurrenz machen?:

    Ich finde Grepbarkeit gehört zur Lesbarkeit, denn ich muss oft irgendwo was suchen.

    Ist (int ) x wirklich viel besser grepbar als Integer(x)?

    Gibts eigentlich sowas wie ein libclang-grep? Das wär mal ein nützliches Tool 😉 ... reines Pattern Matching läuft ja gerade bei Code ziemlich oft vor die Wand.

    Nicht als grep, aber du kannst Teile vom AST matchen was auch zuverlässiger als regex ist. Da ist es dann nämlich egal wie der cast aussieht, das Parsen hat ja schon jemand anderes gemacht 🙂



  • @Mathuas sagte in Welche Sprache kann C++ Konkurrenz machen?:

    Ich habe schneller "begin" geschrieben, als wen ich die {} mit einem Tastengewurstel suchen muss. Das "end" wird dann meisten selbst geschrieben.

    Diese BEGIN END Orgien in Pascal empfand ich immer als abstoßend. Es mag auch daran liegen, dass ich zuerst Modula-II und dann anschließend Oberon-2 gelernt hatte, und in beiden Sprachen gibt es das nicht, und erst anschließend Kontakt zu Pascal hatte.

    Was mir persönlich fehlt ist ein Vergleich zwischen Ada, C++ und FreePascal, insbesondere mit Blick auf den Vergleich Ada und FreePascal. Was spricht für FreePascal, wenn es doch Ada gibt?



  • @john-0 sagte in Welche Sprache kann C++ Konkurrenz machen?:

    . Was spricht für FreePascal, wenn es doch Ada gibt?

    Ich habe mal nach Ada gegoogelt.

    Der Einstieg sieht recht komplex aus, so wie es aussieht, ist es ein rechtes Nischenprodukt.
    https://gcc.gnu.org/onlinedocs/gnat_ugn/Running-a-Simple-Ada-Program.html



  • @Mathuas sagte in Welche Sprache kann C++ Konkurrenz machen?:

    @john-0 sagte in Welche Sprache kann C++ Konkurrenz machen?:

    . Was spricht für FreePascal, wenn es doch Ada gibt?

    Ich habe mal nach Ada gegoogelt.

    Der Einstieg sieht recht komplex aus, so wie es aussieht, ist es ein rechtes Nischenprodukt.
    https://gcc.gnu.org/onlinedocs/gnat_ugn/Running-a-Simple-Ada-Program.html

    Ist Pascal doch heutzutage aber auch. Ada war lange Zeit in der Flugzeugindustrie beliebt, weil es da so einen SubSet gibt mit dem die Korrektheit formal bewiesen werden kann.



  • @Tyrdal sagte in Welche Sprache kann C++ Konkurrenz machen?:

    Ist Pascal doch heutzutage aber auch. Ada war lange Zeit in der Flugzeugindustrie beliebt, weil es da so einen SubSet gibt mit dem die Korrektheit formal bewiesen werden kann.

    Das mit der Flugiindustrie stimmt, aber veraltet ist Pascal überhaupt nicht, dies wird mindestens genauso gut gepflegt wie C.
    Auch die IDE (Lazarus) ist topaktuell.



  • @Mathuas sagte in Welche Sprache kann C++ Konkurrenz machen?:

    Der Einstieg sieht recht komplex aus,

    Das was Du verlinkt hast, ist nur der Compileraufruf. Was ist daran komplex?

    so wie es aussieht, ist es ein rechtes Nischenprodukt.

    Das sagt derjenige der FreePascal bewirbt.



  • Was mir auch noch aufgefallen zwischen C und Lazarus.
    Der Compiler und Linker von Lazarus sind intelligenter als die von C/C++.
    Wen einer Sourcen von Lazarus veröffentlicht, die kann man in der Regel ohne Probleme starten.
    Wen dort male eine C-Lib fehlt, wird schön angezeigt, was fehlt.

    Lade ich aber C/C++ Sachen runter, ist es immer eine Lotterie, ob man es zum laufen bringt.
    Der Compiler macht in der Regel noch gut mit.
    Aber das Programm "ld"/Linker ist nach meiner Meinung strohdumm. Der motzt bei Sachen, obwohl sie auf der Platte vorhanden sind.
    Bei Pascal habe ich ganz selten mal ein Problem mit dem Linker, der ist intelligent genug das Zeugs zusammenzusetzen.



  • @Mathuas Worüber beschwerst du dich genau? Das dein Linker nicht die richtigen Dateien findet, um die Software zu linken? Das ld zu viele Freiheitsgrade hat? Wie macht Lazarus das denn, wenn du von einer Bibliothek verschiedene Versionen an verschiedenen Stellen liegen hast?

    Wenn eine Software gestartet wird, bestimmt das OS wo nach den Abhängigkeiten gesucht wird. Bei Windows wird zuerst im selben Verzeichniss, dann in den entsprechenden OS Verzeichnissen und anschließend an der im PATH angegebenen Stellen gesucht. Wenn was fehlt bekommst du auch da die entsprechende Fehlermeldung.

    Ich könnte mir vorstellen, dass man vlt deutlich seltener dynamische Bibliotheken verwendet, sondern einfach alles statisch rein linked. Hat halt auch seine Nachteile.



  • Guten Morgen @Mathuas ,
    wenn ich mit VisualStudio C++ Sourcen kompilieren lasse und eine LIB nicht vorhanden ist, bekomme ich eine Fehlermeldung:
    LINK : fatal error LNK1104: Datei "xxx.lib" kann nicht geöffnet werden.
    Es hat schon seinen Sinn, dass das Bibliotheksverzeichnis und die Bezeichnung der Bibliotheken getrennt angegeben werde.
    Ich würde es schon etwas schwierig finden einen Fehler zu finden, wenn mein Compiler intelligent sich selbst sein passendes Zeugs zusammensetzt/zusammensucht.

    Edit: Schließe mich @Schlangenmensch an, war selbst etwas spät mit dem Abschicken.


Anmelden zum Antworten