Was versteht ihr darunter wenn eine Programmiersprache elegant ist?



  • möglichst wenig Befehle, so wie brainfuck oder whitespace



  • hjhkjhk schrieb:

    möglichst wenig Befehle, so wie brainfuck oder whitespace

    Hm, wenn Brainfuck noch Funktionen hätte würde ich sagen auf jeden Fall.



  • Auf eine Sprache bezogen hab ich das noch nie gehört.
    Ich kenne das im Zusammenhang mit Programmen/Code-Teilen. Ich nehme an man kann eine Sprache elegent nennen die es einem ermöglicht eleganten Code zu schreiben.

    Und was eleganter Code ist ist Ansichtssache. Für manche ist alles "elegant" was kurz ist, egal wie schwer verständlich, für andere wieder ist es "elegant" wenn es nur einfache klare Konstrukte enthält (und insgesamt nicht zu gross und unübersichtlich ist) etc.



  • Ich sehe es wie hustbaer, dass man die Eleganz nicht auf die Sprache übertragen kann. Man kann nämlich in jeder (Programmier-)Sprache etwas elegant sagen/schreiben oder halt nicht. Die Komplexität der Sprache zu beherrschen und passend einzusetzen ist die eigentliche Kunst.

    Gruß



  • hustbaer schrieb:

    Und was eleganter Code ist ist Ansichtssache. Für manche ist alles "elegant" was kurz ist, egal wie schwer verständlich, für andere wieder ist es "elegant" wenn es nur einfache klare Konstrukte enthält (und insgesamt nicht zu gross und unübersichtlich ist) etc.

    ich finde code elegant, der auf besonders einfache und/oder trickreiche weise eine bestimmte sache macht. also code, der dem durchschnittsprogger auf anhieb nie einfallen würde.
    🙂



  • @~fricky:
    Ich persönlich finde solchen Code oft grauenhaft, nämlich dann wenn er dem Durchschnitts-Programmierer nicht nur nicht einfallen würde, sondern wenn der Durchschnitts-Programmierer ihn nicht verstehen wird.

    Ich finde es elegant wenn man Programme so aufbaut dass 1) man sich viel Arbeit und Komplexität spart und 2) die verwendeten Konstrukte trotzdem einfach und übersichtlich bleiben.
    Code wo sich Mr. Durchschnitts-Programmierer beim Lesen denkt "verdammt, wieso hab ich das nicht schon immer so gemacht".

    Das beste Beispiel was mir gerade einfällt sind RAII Klassen. Oft sieht man diverse Konstrukte wo im Konstruktor einer Klasse an 2-3 Stellen (oder sogar noch mehr) ein "if (!blah) { cleanup(); throw xyz(); }" steht. Grauenhaft, fehleranfällig, unübersichtlich und schlecht zu warten.
    Mit ein paar kleinen RAII Klassen *schwupps* -> der einst unübersichtliche ctor-from-hell schrumpft auf 5 Zeilen ohne irgendwelche Spezialfälle zusammen.
    Sowas ist elegant 🙂



  • hustbaer schrieb:

    @~fricky:
    Ich persönlich finde solchen Code oft grauenhaft, nämlich dann wenn er dem Durchschnitts-Programmierer nicht nur nicht einfallen würde, sondern wenn der Durchschnitts-Programmierer ihn nicht verstehen wird.

    es versteht sich von selbst, dass über so einem code ein fetter kommentar steht, in dem erklärt wird, was da abläuft.
    🙂



  • ~fricky schrieb:

    hustbaer schrieb:

    @~fricky:
    Ich persönlich finde solchen Code oft grauenhaft, nämlich dann wenn er dem Durchschnitts-Programmierer nicht nur nicht einfallen würde, sondern wenn der Durchschnitts-Programmierer ihn nicht verstehen wird.

    es versteht sich von selbst, dass über so einem code ein fetter kommentar steht, in dem erklärt wird, was da abläuft.
    🙂

    Was das Verstehen erleichtern sollte, was gut ist. Trotzdem bevorzuge ich Code der einfach zu verstehen ist - auch ohne Kommentare. Ist halt Geschmackssache. Und jeder definiert den Level ab wo es "zu komplex" ist natürlich selbst nach seinen eigenen Vorlieben, danach was er kennt und auf Anhieb versteht wenn er es sieht, wie gut er analytisch denken kann etc.
    Soll heissen das was ich "einfach, klar und elegant" finde wird ein anderer vermutlich total hirnverbrannt kompliziert finden 🙂



  • ~fricky schrieb:

    hustbaer schrieb:

    @~fricky:
    Ich persönlich finde solchen Code oft grauenhaft, nämlich dann wenn er dem Durchschnitts-Programmierer nicht nur nicht einfallen würde, sondern wenn der Durchschnitts-Programmierer ihn nicht verstehen wird.

    es versteht sich von selbst, dass über so einem code ein fetter kommentar steht, in dem erklärt wird, was da abläuft.
    🙂

    Ich hätte mehr von dir erwartet...

    "Schlauer Code" ist nie elegant, schön oder in sonst einer Form Vorteilhaft.



  • Ich finde eine Programmiersprache elegant, wenn man komplexe Probleme in einer kurzen aber verständlichen Weise formulieren kann.



  • Von den Paar Programmiersprachen, mit denen ich in Berührung gekommen bin, Pascal, C, C++, VHDL, Assembler IA32, finde am elegantesten C.
    - wenig Redundanz, d.h nicht übermässig geschwätzig ;), einfache Sprachkonstrukte
    - von links nach rechts und von oben nach unten lesbar
    - einfache Struktur des Programms
    - unterstützt goto (nein, nein, ist nur ein Scherz 😉



  • abc.w schrieb:

    Von den Paar Programmiersprachen, mit denen ich in Berührung gekommen bin, Pascal, C, C++, VHDL, Assembler IA32, finde am elegantesten C.
    - wenig Redundanz, d.h nicht übermässig geschwätzig ;), einfache Sprachkonstrukte
    - von links nach rechts und von oben nach unten lesbar
    - einfache Struktur des Programms
    - unterstützt goto (nein, nein, ist nur ein Scherz 😉

    C? Das Klammer Monster? O.k.
    Guck dir mal LISP an.



  • ficky du n00b schrieb:

    ~fricky schrieb:

    hustbaer schrieb:

    @~fricky:
    Ich persönlich finde solchen Code oft grauenhaft, nämlich dann wenn er dem Durchschnitts-Programmierer nicht nur nicht einfallen würde, sondern wenn der Durchschnitts-Programmierer ihn nicht verstehen wird.

    es versteht sich von selbst, dass über so einem code ein fetter kommentar steht, in dem erklärt wird, was da abläuft.
    🙂

    Ich hätte mehr von dir erwartet...

    "Schlauer Code" ist nie elegant, schön oder in sonst einer Form Vorteilhaft.

    Lass fricky in Ruhe du Gestalt! 😡



  • ficky du n00b schrieb:

    "Schlauer Code" ist nie elegant, schön oder in sonst einer Form Vorteilhaft.

    naja, aber letzlich definiert jeder für sich 'eleganz' beim programmieren anders. ich finde nun mal das 'wie-was-gemacht-wird' manchmal elegant.

    rüdiger schrieb:

    Ich finde eine Programmiersprache elegant, wenn man komplexe Probleme in einer kurzen aber verständlichen Weise formulieren kann.

    nur tun sich solche sprachen oft mit einfachen dingen schwer.
    🙂



  • ~fricky schrieb:

    rüdiger schrieb:

    Ich finde eine Programmiersprache elegant, wenn man komplexe Probleme in einer kurzen aber verständlichen Weise formulieren kann.

    nur tun sich solche sprachen oft mit einfachen dingen schwer.

    Nur weil du es nicht kannst.



  • bzto schrieb:

    Nur weil du es nicht kannst.

    und weil die sprachen nicht dafür gemacht sind. z.b. kannst ja mal versuchen einen haufen bytes mit sql oder prolog in gray-code oder sowas umzuwandeln. ich will nicht sagen, dass es unmöglich ist, aber man wird sich ganz gut einen abwürgen. damit lassen sich mit solchen sprachen besser (weil elegant) mengenorientierte und logik- aufgaben lösen als z.b. mit C
    🙂



  • ~fricky schrieb:

    bzto schrieb:

    Nur weil du es nicht kannst.

    und weil die sprachen nicht dafür gemacht sind. z.b. kannst ja mal versuchen einen haufen bytes mit sql oder prolog in gray-code oder sowas umzuwandeln. ich will nicht sagen, dass es unmöglich ist, aber man wird sich ganz gut einen abwürgen. damit lassen sich mit solchen sprachen besser (weil elegant) mengenorientierte und logik- aufgaben lösen als z.b. mit C
    🙂

    Naja, hier musst du zwischen allgemeinen und speziellen Sprachen unterscheiden. Sicher können spezielle Sprachen sehr elegant für spezifische Probleme sein. Aber es gibt ja auch allgemeinere Sprachen als Prolog, die sehr elegant sind.



  • Ich finde eine Programmiersprache elegant, wenn ich einfache wie auch komplexe Probleme klar und verständlich formulieren kann. Und zwar so, dass ich keinen Kommentar dazu schreiben muss, was da eigentlich gemacht wird.

    Ein elegantes Programm ist ein Programm wo jeder Durchschnittsprogrammierer beim Lesen sagen würde, er hätte es genau so gemacht.



  • Eleganz (wikipedia):

    Ausdruck von besonderem Stil und Geschmack ...
    ästhetisches Konzept und Ideal, das an Schönheit und Grazie orientiert ist ... herausragende Gestaltung ...
    Schlichtheit, Minimalismus ...

    Erfüllt C++ diesen hohen Anspruch? Vielleicht im Bereich der STL und im Bereich der Performance. Ansonsten findet man eher Mittelmaß, Flickschusterei und hohen Tippaufwand bei C++.



  • Erhard Henkes schrieb:

    Vielleicht im Bereich der STL ...

    schau dir mal den code der stl an. von schönheit, grazie und dergleichen ziemlich weit entfernt, würde ich sagen.
    🙂


Anmelden zum Antworten