Was versteht ihr darunter wenn eine Programmiersprache elegant ist?
-
Was versteht ihr darunter wenn eine Programmiersprache elegant ist?
-
Wenn die Syntax nicht kryptisch und verständlich ist, Die Sprache keine unnötigen Konstrukte hat und generell das arbeiten erleichtert und der Code nicht bis in die unendlichkeit verschachtelt werden muss usw.
Also auch ein wichtiger Faktor: Übersichtlichkeit.
-
Wenn die Syntax einem nicht dauernd im Weg steht.
-
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 ScherzC? 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.