Um was wirklich gut zu können, muss man es von Grund auf verstehen



  • Die wirklich guten C++ Programmierer haben z.B. auch Ahnung von Assembler. Oder jemand der sich gut mit 3D Graphikprogrammierung auskennt, hat shcon nen Rasterizer geschrieben usw.
    Leute die dagegen nur Bibliotheken verwenden und nicht wissen was im Hintergurnd passiert, verwenden diese meistens nicht so effizient.



  • ^^das ist was dran.
    🙂



  • theo reh ticker schrieb:

    Die wirklich guten C++ Programmierer haben z.B. auch Ahnung von Assembler. Oder jemand der sich gut mit 3D Graphikprogrammierung auskennt, hat shcon nen Rasterizer geschrieben usw.
    Leute die dagegen nur Bibliotheken verwenden und nicht wissen was im Hintergurnd passiert, verwenden diese meistens nicht so effizient.

    Weitgehend ja. Aber nicht wirklich. So hatte ich zum Beispiel Bäume sehr gut verstanden, bevor ich den ersten selber implementiert hatte. Es muß nicht sein, daß man es echt selber schon gebaut hat, es reicht, zu wissen, was innendrin ist. Ich denke auch, daß es reicht, sich gedanklich gut damit zu beschäftigen, was im Rasterizer drinnen ist. Auch mit den Bibliotheken, nehmen wir mal std::queue, mal kurz reinschauen und sehen, daß die Jungs da eine Liste von Speicherseiten basteln und schauen, wie der op[] geht, jetzt kann man sehr genau abwägen, wann vector, wann queue, wann list.
    Oder um sauber in C++/CLI zu programmieren, muß man Ahnung von der WinAPI haben, da reicht es aber beinahe schon, das Tutorial von Erhard Henkes zu lesen, ohne mitzuprogrammieren. Programmieren mit den .net-Bibliotheken, aber immer wissen, daß (noch) alles Wrapper um die WinAPI sind.
    Schlechte Doku zu System::Windows::Forms::MessageBox::Show/ System::Windows::Forms::MessageBoxIcon? Kein Problem, ist ja nur ein Wrapper um google MSDN MessageBox.

    Um wirklich gut zu programmieren, muß man ein Grundverständnis der Mathematik haben.
    Um wirklich gut zu programmieren, muß man ein Grundverständnis von Lisp haben.
    Um wirklich gut zu programmieren, muß man älter als 14 sein.
    Um wirklich gut zu programmieren, muß man in seiner Jugend stinkend faul gewesen sein.
    Um wirklich gut zu programmieren, darf man kein Dokmatist sein.



  • Wie und wann weiss man denn, dass man gut programmiert/programmieren kann?



  • Wenn andere einen nicht mehr anschreien mit "rtfm!"



  • abc.w schrieb:

    Wie und wann weiss man denn, dass man gut programmiert/programmieren kann?

    Wenn man diese Frage stellt, noch nicht. 😉 😃



  • volkard schrieb:

    Um wirklich gut zu programmieren, muß man ein Grundverständnis der Mathematik haben.
    Um wirklich gut zu programmieren, muß man ein Grundverständnis von Lisp haben.
    Um wirklich gut zu programmieren, muß man älter als 14 sein.
    Um wirklich gut zu programmieren, muß man in seiner Jugend stinkend faul gewesen sein.
    Um wirklich gut zu programmieren, darf man kein Dokmatist sein.

    muss man alle bedingungen erfüllen, oder reicht mehr als die hälfte?
    🙂



  • abc.w schrieb:

    Wie und wann weiss man denn, dass man gut programmiert/programmieren kann?

    Gar nicht. Das merken vielleicht die anderen.
    Warum gar nicht? Weil ich viele kenne, die den letzten Mist zusammenstümpern und sich für den Größten Coder aller Zeiten halten. Und weil ich mich für ziemlich gut halte, aber Leute kenne, die schneller und präziser programmieren, die ich für viel besser als mich halte, die aber selber denken, sie seien selber voll schlecht.



  • volkard schrieb:

    Um wirklich gut zu programmieren, muß man ein Grundverständnis der Mathematik haben.
    Um wirklich gut zu programmieren, muß man ein Grundverständnis von Lisp haben.
    Um wirklich gut zu programmieren, muß man älter als 14 sein.
    Um wirklich gut zu programmieren, muß man in seiner Jugend stinkend faul gewesen sein.
    Um wirklich gut zu programmieren, darf man kein Dokmatist sein.

    Programmiergerüchte - reloaded? 😕



  • ;fricky schrieb:

    volkard schrieb:

    Um wirklich gut zu programmieren, muß man ein Grundverständnis der Mathematik haben.
    Um wirklich gut zu programmieren, muß man ein Grundverständnis von Lisp haben.
    Um wirklich gut zu programmieren, muß man älter als 14 sein.
    Um wirklich gut zu programmieren, muß man in seiner Jugend stinkend faul gewesen sein.
    Um wirklich gut zu programmieren, darf man kein Dokmatist sein.

    muss man alle bedingungen erfüllen, oder reicht mehr als die hälfte?
    🙂

    Es reicht selbstverständlich aus, wenn Du in Deiner Jugend stinkend faul warst, älter als 14 Jahre bist und kein Dogmatiker bist. 😋



  • ;fricky schrieb:

    volkard schrieb:

    Um wirklich gut zu programmieren, muß man ein Grundverständnis der Mathematik haben.
    Um wirklich gut zu programmieren, muß man ein Grundverständnis von Lisp haben.
    Um wirklich gut zu programmieren, muß man älter als 14 sein.
    Um wirklich gut zu programmieren, muß man in seiner Jugend stinkend faul gewesen sein.
    Um wirklich gut zu programmieren, darf man kein Dokmatist sein.

    muss man alle bedingungen erfüllen, oder reicht mehr als die hälfte?
    🙂

    Alle. Also mußt Du noch ein Lisp-Tutorial lesen. Der Rest geht ja.
    Ich sehe mit Freude, daß sich Dein "C ist immer besser"-Dogmatismus langsam auflöst, daß Du zwar aus alter Gewohnheit noch weiter Bashing betreibst, aber keine bittere Verachtung gegenüber Andersdenkenden mehr aus meinem Bildschirm tropfen muß.



  • Gregor schrieb:

    Es reicht selbstverständlich aus, wenn Du in Deiner Jugend stinkend faul warst, älter als 14 Jahre bist und kein Dogmatiker bist

    danke, dann darf ich mich jetzt, mit recht, 'toller programmierer' nennen.

    volkard schrieb:

    Also mußt Du noch ein Lisp-Tutorial lesen.

    damit ich endlich 'metazirkuläre programmierung' zu schätzen weiss?

    volkard schrieb:

    Ich sehe mit Freude, daß sich Dein "C ist immer besser"-Dogmatismus langsam auflöst...

    frechheit, das hab' ich nie erzählt. ich sag' immer nur dass C (trotz seines hohen alters) für viele aufgaben sehr gut zu gebrauchen ist, für andere dinge ist es wiederum nicht so toll. ausserdem ist lisp ja sogar noch älter.
    🙂



  • ;fricky schrieb:

    volkard schrieb:

    Also mußt Du noch ein Lisp-Tutorial lesen.

    damit ich endlich 'metazirkuläre programmierung' zu schätzen weiss?

    Du meinst die 'metazirkuläre programmierung', die nur 301 Treffer in Google hat? Nee. Die ist mir total egal. Ich meine, daß man mal so richtig mit Rekursion rumgespielt hat (Prolog und einige andere Sprachen würden auch gehen). Und daß man mal was mächtiges und syntaktisch brutal einfaches gesehen hat (Smalltalk und einige andere Sprachen würden auch gehen), denn die Basic- und C-Sprachen, die wir immer verwenden, verführen einen dazu, zu denken, man müsse Probleme immer nur dadurch lösen, indem man ein neues Features dranschaubt. Ich erspare Dir, wiki C++0x und php manual zu verlinken und Salz in die Wunden zu streuen, das kann ich selber. 😃



  • theo reh ticker schrieb:

    Die wirklich guten C++ Programmierer haben z.B. auch Ahnung von Assembler. Oder jemand der sich gut mit 3D Graphikprogrammierung auskennt, hat shcon nen Rasterizer geschrieben usw.
    Leute die dagegen nur Bibliotheken verwenden und nicht wissen was im Hintergurnd passiert, verwenden diese meistens nicht so effizient.

    Wie überall gibt es auch hier noch ein mächtig breites graues Band zwischen Schwarz und Weiss.

    Grundsätzlich: nein, man muss nicht immer überall verstanden haben, was hinter der Bühne vor sich geht, um irgendwas wirklich gut anwenden zu können.
    Es hilft aber ungemein wenn man versteht wie Dinge "ganz unten" funktionieren. Oder wenigstens eine grobe Vorstellung davon hat.

    Ich weiss z.B. auch nicht *ganz genau* was der SQL Server alles für Stream-Operatoren hat, wie diese implementiert sind, wie der Query-Optimizer arbeitet etc. Ich habe aber eine ziemlich gute Vorstellung, und das hilft mir enorm, schnelles SQL zu schreiben.

    Das ist aber nur die eine Seite, die "low-level" Seite, die du angesprochen hast (Assembler & Rasterizer sind beide "ganz unten").

    Genauso wichtig ist es IMO die "high level" Seite gut zu verstehen. Wenn du zwar alles "ganz unten" verstehst, aber keinen Tau von Design-Patterns oder Software-Architektur hast, dann wirst du genauso ganz schreckliche Programme schreiben. Vermutlich schrecklichere, als jmd. der von "ganz unten" keinen Tau hat, aber ein guter Software-Designer ist.



  • volkard schrieb:

    Ich meine, daß man mal so richtig mit Rekursion rumgespielt hat (Prolog und einige andere Sprachen würden auch gehen).

    du meinst funktionale sprachen, die aus rekursionen sowieso schleifen machen, nur man merkt nix davon? naja, aber bei echten rekursionen (d.h. auf realen rechnern, wie wir sie kennen) haste immer das problem des variablen stackbedarfs, daher versuche ich immer rekursion zu vermeiden (in C und ähnlichen sprachen). aber prolog ist schon interessant, nicht wegen rekursionen, sondern weil es mit formaler logik umgehen kann.

    volkard schrieb:

    ...denn die Basic- und C-Sprachen, die wir immer verwenden, verführen einen dazu, zu denken, man müsse Probleme immer nur dadurch lösen, indem man ein neues Features dranschaubt.

    das ist bei C ja eher nicht der fall, in Java auch kaum. von BASIC gibts natürlich die fiesesten dialekte, aber ich finde so'n olles zeilennummern-goto-BASIC à la C64 und gwbasic eigentlich am besten von allen BASICs.

    volkard schrieb:

    Ich erspare Dir, wiki C++0x und php manual zu verlinken und Salz in die Wunden zu streuen, das kann ich selber.

    ist schon ok. C++ bashing lassen wir hier mal weg. dazu wird in anderen threads noch genug gelegenheit sein.
    🙂



  • ;fricky schrieb:

    du meinst funktionale sprachen, die aus rekursionen sowieso schleifen machen, nur man merkt nix davon? naja, aber bei echten rekursionen (d.h. auf realen rechnern, wie wir sie kennen) haste immer das problem des variablen stackbedarfs, daher versuche ich immer rekursion zu vermeiden (in C und ähnlichen sprachen).

    Klaro. Man meidet Rekursion. Aber manchmal kann der rekursive Ansatz helfen, ein Problem zu echt total kapieren, das man mit dem Schleifenansatz nicht durchschaut. Code, der aus nichtdurchschauten Problemen entsteht, ist gelegentlich häßlich gefrickelt und doppelt so lang und langsam noch dazu. Daß nach dem Kapieren und der rekursiven Darstellung jeder fricky und jeder volkard sofort schaut, ob die rekursive Darstellung nicht mit ein paar trivialen Umstellungen in eine Schleife verzaubert werden kann, ist auch klaro.

    ;fricky schrieb:

    volkard schrieb:

    ...denn die Basic- und C-Sprachen, die wir immer verwenden, verführen einen dazu, zu denken, man müsse Probleme immer nur dadurch lösen, indem man ein neues Features dranschaubt.

    das ist bei C ja eher nicht der fall, in Java auch kaum. von BASIC gibts natürlich die fiesesten dialekte, aber ich finde so'n olles zeilennummern-goto-BASIC à la C64 und gwbasic eigentlich am besten von allen BASICs.

    Naja, C ist schon verdammt kompliziert.
    Viele keywords. http://tigcc.ticalc.org/doc/keywords.html
    Für Lisp bin ich anscheinend zu dumm, um eine solche Liste zu finden.
    Smalltalk http://www.joegrossberg.com/archives/001704.html
    Mit Basic-Sprachen meinte ich zum Beispiel PHP, wo jeder Kack, jede noch so nebensächliche Bibliotheksfunktion in die Sprachdefinition geht, wo bei Bedarf eine Mini-Sache dazugefrickelt wird, aber auch ein wenig Java, wo string-literale Objects sind. Übrigens finde ich Basics wie qbasic am besten, zwar noch quasi Basic V2.0, aber zusätzlich gibt es funktionen und lokale Variablen. Ohne lokale Variablen war das schon ein Graus.

    ;fricky schrieb:

    volkard schrieb:

    Ich erspare Dir, wiki C++0x und php manual zu verlinken und Salz in die Wunden zu streuen, das kann ich selber.

    ist schon ok. C++ bashing lassen wir hier mal weg. dazu wird in anderen threads noch genug gelegenheit sein.
    🙂

    Sollte meine Vorwegnahme funktioniert haben? Würdest Du auch, wenn ich eine Dauervorwegnahme bringe, nämlich "C++ ist Mist" in meiner Signature aufnehme, aufs C++-Bashing ganz verzichten?



  • volkard schrieb:

    Würdest Du auch, wenn ich eine Dauervorwegnahme bringe, nämlich "C++ ist Mist" in meiner Signature aufnehme, aufs C++-Bashing ganz verzichten?

    Bietest Du mir diesen Handel auch an? 😋



  • Ich glaube, wir müssen hier mal mit dem Basic-Bashing anfangen, diese Lobhudelei ist ja nicht zum Ertragen. Und ich dachte das 80er-Revival wäre überstanden ...



  • volkard schrieb:

    Für Lisp ... eine solche Liste zu finden.

    absatz: Minimaler Funktionsumfang für Lisp
    --> http://de.wikipedia.org/wiki/Lisp

    volkard schrieb:

    Würdest Du auch, wenn ich eine Dauervorwegnahme bringe, nämlich "C++ ist Mist" in meiner Signature aufnehme, aufs C++-Bashing ganz verzichten?

    das machen wir so. und wenn du mich einmal beim bashen erwischst, darfst du es wieder rausnehmen.
    🙂



  • das machen wir so. und wenn du mich einmal beim bashen erwischst, darfst du es wieder rausnehmen.

    Das halte ich für einen üblen Deal. Du musst schon von deiner Seite auch etwas anbieten. Bspw. ein abgeschnittener Finger oder die intensive Beschäftigung mit C# bei Vergehen gegen die Auflagen.

    MfG SideWinder (jetzt neu: Mit Lisp im Gepäck)


Anmelden zum Antworten