Zu perfektionistisch zum Programmieren?
-
berniebutt schrieb:
Es kommt nicht darauf an, einen "schönen" Code zu schreiben, sondern einen "sicheren" und "schnellen"!
... was aber nicht selten dasselbe ist.
Oder sein sollte, wenn die Implementationssprache so gewählt ist, daß sich das Problem gut in die Sprachmittel abbilden läßt.
-
Zum Problem wirds nur dann, wenn jemand krampfhaft versucht "schönen Code" zu schreiben, in dem Zuge das Projekt auch mehrfach umschreibt weil es noch nciht schön genug ist und am Ende nach 3 Monaten immer noch nix laufen hat obwohl die eigendliche Aufgabe in 3 Wochen hätte geschafft werden können... (Leider konkretes Beispiel aus meinem Umfeld...)
Wenn ich die Wahl habe zwischen einer häßliche Lösung die ich dafür innerhalb der Deadline fertigstellen kann und einer schönen Lösung durch die ich dann aber die Deadline verfehle...
Ich habe oft das (zugegeben subjektive) Gefühl das besonders Anfänger sich unheimlich viele Gedanken über "Schönheit" des Codes machen und darin auch irre viel Zeitaufwand investieren wogegen Profies einfach die Lösung nehmen die für die Aufgabe passt, sie implementieren und dann weiterziehen zum nächsten Problem...
-
loks schrieb:
Ich habe oft das (zugegeben subjektive) Gefühl das besonders Anfänger sich unheimlich viele Gedanken über "Schönheit" des Codes machen und darin auch irre viel Zeitaufwand investieren wogegen Profies einfach die Lösung nehmen die für die Aufgabe passt, sie implementieren und dann weiterziehen zum nächsten Problem...
Das Gefühl habe ich auch. Ist dann aber OK, wächst sich ja sozusagen raus.
-
Ich habe oft das (zugegeben subjektive) Gefühl das besonders Anfänger sich unheimlich viele Gedanken über "Schönheit" des Codes machen und darin auch irre viel Zeitaufwand investieren wogegen Profies einfach die Lösung nehmen die für die Aufgabe passt, sie implementieren und dann weiterziehen zum nächsten Problem...
Völlig falsch. Genau das Gegenteil ist der Fall!
-
lol²³² schrieb:
Ich habe oft das (zugegeben subjektive) Gefühl das besonders Anfänger sich unheimlich viele Gedanken über "Schönheit" des Codes machen und darin auch irre viel Zeitaufwand investieren wogegen Profies einfach die Lösung nehmen die für die Aufgabe passt, sie implementieren und dann weiterziehen zum nächsten Problem...
Völlig falsch. Genau das Gegenteil ist der Fall!
Genau. Oft ist es so, dass Anfängercode lediglich funktionieren soll, während bei fortgeschrittenen Programmierern viel mehr Wert auf sauberes Design gelegt wird. Dass sich das lohnt, merkt man oft erst mit genügend Erfahrung. Bei objektorientierten Problemen gehört dazu z.B. das Überlegen im Voraus, wie die Zusammenhänge zwischen Klassen aussehen sollen (beispielsweise mit UML). Sowas macht keiner, der erst gerade angefangen hat.
Natürlich gibt es auch Einsteiger, die versuchen, alles von Anfang an schön zu machen. Das ist meines Erachtens aber nicht besonders sinnvoll, weil man da kaum Kriterien für "Schönheit" bzw. "Sauberkeit" kennt, sondern diese erst mit gemachten Fehlern lernt (indem man merkt, wie hässlicher Code aussieht und welche Probleme er mit sich bringt). Oft macht man sich dadurch mehr Aufwand als nötig und kommt trotzdem keinen Schritt weiter. Das heisst natürlich nicht, dass man als Anfänger grundsätzlich keine solchen Überlegungen anstellen soll, aber viele Dinge sind einem eben gar nicht bewusst.
-
Nexus schrieb:
Oft ist es so, dass Anfängercode lediglich funktionieren soll, während bei fortgeschrittenen Programmierern viel mehr Wert auf sauberes Design gelegt wird. Dass sich das lohnt, merkt man oft erst mit genügend Erfahrung.
Stimmt, so _sollte_ es sein. Ein Anfänger sollte sich darum kümmern Grundlagen zu verstehen, Konzepte zu begreifen und die Sprache zu lernen. Die Frage, ob das denn nu schön oder häßlich is sollte in der Phase hinten anstehen.
Jedoch scheint es mir oft das Anfänger eben genau das nicht machen sondenr im Gegenteil übermässig viel Zeit mit Begriffen wie "Schönheit" und "Eleganz" verbringen ohne die zugrunde liegenden Konzepte zu begreifen.
-
Ich habe oft das (zugegeben subjektive) Gefühl das besonders Anfänger sich unheimlich viele Gedanken über "Schönheit" des Codes machen und darin auch irre viel Zeitaufwand investieren wogegen Profies einfach die Lösung nehmen die für die Aufgabe passt, sie implementieren und dann weiterziehen zum nächsten Problem...
Anfänger machen sich meistens viele Gedanken über premature Optimization.
-
Jester schrieb:
Und was sagt uns das? In welchen der Bereiche würdest Du Dich wie einordnen?
Ist Logik nur den Mathematikern vorbehalten oder darf man als Programmierer nicht gesunden Menschenverstand walten lassen? Logik spiegelt sich vor allem in Programmen als auch beim Programmieren wieder. Ich wuerde mich als Programmierer bezeichnen.
-
Dann verstehe ich Deine Aussage nicht.
Es wurde Informatik/Mathematik vorgeschlagen, aber darauf hingewiesen, dass beide zunächst mal nicht viel mit Programmieren zu tun haben. Darauf konterst Du mit "Ich programmiere taeglich mit Scheme und mittlerweile mit Haskell. Hat ganz und gar nicht mit Programmieren zu tun ... ". Und jetzt kommt raus, dass Du Dich weder in den Bereich Mathematik noch in den Bereich Informatik einordnest, sondern einfach ein Programmierer sein willst. Das ist ja vollkommen in Ordnung, aber wo ist dann der Bezug zu der Aussage über Mathematik und Informatik? Mir scheint das fehlt ein Satzanfang wie "Ich bin Informatiker und..." oder "Ich bin im Bereich angewandte Mathematik tätig und..." um einen sinnvollen Bezug herzustellen. Nach nichts anderem habe ich gefragt, Du mußt Dich also auch nicht angegriffen fühlen. Ich will Dir bestimmt nicht verbieten, Deinen gesunden Menschenverstand walten zu lassen.
-
dann wäre Mathematik u./o. theoretische Informatik für dich geeignet. Mit Programmieren hat dies aber natürlich wenig zu tun.
Die Aussage, dass Mathematik u./o. theoretische Informatik nichts mit Programmieren zu tun hat, halte ich fuer falsch. Lisp oder Scheme haben das Lambdakalkuel als Vorbild, auch Haskell als modernes Lisp arbeitet intern mit diesem. Mit ihnen wird in auch (zu wenig) in der Industrie gearbeitet. Und das Lambdakalkuel ist wohl was ziemlich theoretisches in der Informatik. Andere Konzepte sind z.B. in Prolog realisiert. Mit Anwortmengenprogrammierung werden Hubschrauber gesteuert oder Triebwerkskonfigurationen ueberprueft. Wer solll denn diese Programme schreiben?
PS: Ich bin Informatiker. Nein, ich steuere keine Hubschrauber etc.
-
Nunja, dass Programmiersprachen und anderen Informatikanwendungen Dinge aus der theoretischen Informatik zugrunde liegen finde ich wenig überraschend. Das ist (hoffentlich) in so ziemlich allen Bereichen, die sich mit Informationsverarbeitung befassen so. Programmierung setzt also immer auf die theoretischen Grundlagen auf.
Aber ob die Theorie wirklich immer so viel mit Programmierung zu tun hat? Immerhin war man in den 30er-Jahren, als das Lambda-Kalkül eingeführt wurde noch weit von Programmierung und Computern entfernt. Sicherlich kann man als Informatiker sehr programmierlastig arbeiten, im Bereich theoretische Informatik sehe ich das aber eher nicht.
-
Aber ob die Theorie wirklich immer so viel mit Programmierung zu tun hat?
In diesem Fall schon. Waehrend damals lambda-Ausdruecke mit Bleistift und Papier z.B. als Uebung aufgeschrieben wurden, so schreibe ich aehnliche Ausdruecke nun in meinen Texteditor und fuehre sie aus.
-
Mit dem kleinen aber feinen Unterschied, dass Du die Dinger aufschreibst um sie auszuführen und damit irgendein Ziel zu erreichen, während die Leute damals sie aufgeschrieben haben um theoretische Eigenschaften des Kalküls zu untersuchen. Es ist ja nicht so, dass die damals tolle Programme geschrieben haben und sich nur geärgert haben, dass noch kein Rechner dafür da ist. Die Zielsetzung und die Verwendung ist also völlig unterschiedlich. Für Dich ist es ein Werkzeug um Computer zu benutzen, für die Leute damals war es ein Werkzeug um theoretische Begriffe zu analysieren.
-
@knivil/Jester: Ihr habt Euch da in einer unnützen Diskussion verrannt, die dem Fragesteller Abituri überhaupt nichts mehr nützt!
Programmieren ist ein Ziel, alles weitere sind Werkzeuge. Nicht für alles braucht man Informatik oder Mathematik!
@Abituri: Wenn Du lange genug dabei bleibst, lernst Du allein, wie "perfektionistisch" Du sein musst. Alles weitere lernst Du auch, wenn Du es brauchst!
-
Wir sind ja schon auf Seite 4, da passiert das schon mal ...
-
berniebutt schrieb:
@knivil/Jester: Ihr habt Euch da in einer unnützen Diskussion verrannt, die dem Fragesteller Abituri überhaupt nichts mehr nützt!
Ich finde die Diskussion weder unnütz, noch habe ich mich verrannt, Herr Lehrer.
Programmieren ist ein Ziel, alles weitere sind Werkzeuge. Nicht für alles braucht man Informatik oder Mathematik!
Ich finde ich es fragwürdig "Programmieren" als Ziel zu formulieren. Zumindest wer sich beruflich mit Programmierung beschäftigt hat meist andere Ziele als "Hauptsache ich programmiere". Unsere Diskussion drehte sich übrigens mitnichten um die Frage, ob man Informatik oder Mathematik für alles braucht.
-
@Jester: Bin kein Lehrer! Habe viele Jahre mit IT mein gutes Geld verdient. Programmieren gehörte natürlich dazu. Also habe ich die Frage von Abituri voll verstanden. Mir schien, ihr wart da schon etwas daneben geraten. daddeldu
-
Hallo
Jetzt ist Lehrer wohl schon ein Schimpfwort...
chrische
-
chrische5 schrieb:
Jetzt ist Lehrer wohl schon ein Schimpfwort...
Ja.
-
Hallo
Schade. Warum eigentlich?
chrische