?
Hi,
wenn interressiers schon ob man in einer Sprache alles weiß? Und spätestens wenn man wirklich alles weiß kommt die nächste Sprachrevision und die Sprache entwickelt sich weiter. So ist nun mal das Leben.
Man arbeitet ja nicht um Compiler glücklich zu machen, sondern um eine Augabe zu lösen. und da hat immer noch die Regel, die mir mein allererster Programmierlehrer mal beigebracht hat gültigkeit:
"Die Kunst besteht im Weglassen!"
Wo ist der Unterschied, ob ich nur mit ein paar Möglichkeiten der Sprache arbeite oder die komplette Sprachensau auf meine Auzfgabe loslasse.
Ein Programm ist ein Konstrukt, das eine bestimmte Aufgabe zu erfüllen hat. Sein Wert wird daran gemessen, wie gut es diese Aufgabe erfüllt. Also muß es vor allem korrekt und zuverlässsig sein.
Selbst die von vielen so beschworene Performance und Ressourcenschonung ist in vielen Bereichen für die Katz (das Programme trotzdem ein vernünftiges Zeitverhalten aufweisen sollten ist natürlich klar).
Was kostet denn heute noch Speicherplatz oder Rechnergeschwindigkeit oder Arbeitsspeicher. Für Programme, die auf einer Vielzahl von Computern laufen sind das sicher noch Argumente, aber für Programme, die nur für einen eng begrenzten Aufgabenkreis geschrieben sind sitzt die teuerste Ressource eindeutig 30 cm vor dem Rechner. Also muß vor allem mit dieser Ressource sparsam umgegangen werden.
Wichtig ist doch vor allem, daß man das Programm in vernünftigem Zeitrahmen hinbekommt, daß man auch am Ende der Programmierung noch jedes Detail des Programms versteht, daß es so formuliert ist, daß man selbst es auch nach 10 Jahren noch überblickt und problemlos warten kann und das es so geschrieben ist, daß auch andere es warten und weiterentwickeln können (manchmal eher kontraproduktiv für die EIGENE Zukunft).
Vor allem IMMER davon ausgehen, daß das Programm einem noch in 10 bis 15 Jahren nachschleichen wird. NIEMALS Worten wie "nur mal schnell" glauben. Was nur mal schnell gemacht werden soll wird oft ganz schnell liebgewonnen und soll dann erweitert werden. Wenns dannn wirklich nur mal schnell zusammengerödelt ist kommt der dicke Brocken anschließend.
Also versuchen, das Programm in viele kleine Aufgaben zu zergliedern und diese in Blackboxen packen, die man dann ohne zu überlegen zu einem großen zusammensetzen kann und wo man von jeder mit einem Satz sagen kann was sie macht. Was darunter im konkreten zu verstehen ist spielt nicht den Leierkasten, das richtet sich nach den konkreten Aufgaben. Es macht keinen Sinn unbedingt um jeden Preis alles mit generischer Programmierung oder Klassenhierarchien und Vererbung lösen zu wollen. Aber wenn ich eine Aufgabe habe die danach ruft, dann muß ich es eben nehmen. 'Das heist aber nicht, daß es für die nächste Aufgabe auch wieder sinnvoll ist.
Wichtiger als die 100%ige Beherrschung einer Programmiersprache ist doch auf jeden Fall die klare Überblickung der Aufgabe. da kann man sich nicht auf die "Inhaltszulieferer" verlassen, sondern muß das Problem selber mit durchdenken und bevor überhaupt die erste Quelltextzeile geschrieben wird, muß man so viel wie möglich Einfluss darauf nehmen, daß die Aufgabe erst mal richtig formuliert wird und nicht das Pferd vom falschen Ende aus aufgezäumt wird. Wer, wenn nicht wir soll das sonst machen, den "Inhaltszulieferern" fehlt doch vielfach die ausreichende Fähigkeit strukturiert und logisch zu denken. Die sehen NUR ihren fachlichen Hintergrund und schließen daraus auf Zusammenhänge. Wir müssen dann mit dem Wissen aus BEIDEN Ecken dafür sorgen, daß da beides zusammenkommt.
Viel wichtiger als die allseitige Beherrschung der Programmiersprache ist doch die Fähigkeit, eine Aufgabe logisch zu gliedern und zu sehen was zusammengehört und was nicht. Also erst mal die Gesamtaufgabe nehmen und versuchen mit 3-10 Begriffen/Sätzen sagen was zu machen ist. Dann jeden von den Begriffen nehmen und wieder mit 3-10 Begriffen sagen was zu machen ist. Versuchen eine Sache in verstänliche Teile gliedern, von denen ich mir auf anhieb was drunter vorstellen kann was sie machen. Wenn man das bis zur eigentlichen Funktionsweise gemacht hat, so daß man das ganze als "menschlicher Interpreter" danach abarbeiten kann ist meistens die Formulierung für Herrn Compiler die kleinste Übung. Aber solange ich mir über das wie nicht völlig im klaren bin, ist es sinnlos zu hoffen, daß mir der Quelltext schon beweisen wird, daß es geht.
Gruß Mümmel