Erlernen der Programmierkunst



  • Hi,

    hmm... das kann natürlich sein, ich habe auch A* schon implementiert, aber habe den, auch die Theorie, nicht als besonders schwer empfunden. OK, vielleicht lag's auch an dem Tutorial, das ihn recht gut erklärt hat.

    ChrisM

    PS: Trotzdem finde ich Physik interessanter 🙂



  • Kann mich jemand mal aufklären was A* bedeutet.

    Also beim lernen ist sicherlich die Diskussion mit gleich interesierten Leuten am wichtigsten, aber ob das jetzt im Studium oder im Forum passiert ist doch erstmal egal. Nur wahrscheinlich ist das es im Studium intensiver ist. Man hat einfach einen anderen Draht zum gegebenüber.

    Und im Studium wird man zwangsweise auf Themen gebracht, die man aus eigenem Interesse nicht angerührt hätte. Vielleicht auch weil einem die Überschrift nix gesagt hat.

    Und selber sich was beibringen muss man wohl in beiden Fällen können. Spätestens in der Diplomarbeit hilft einem fast keiner mehr.



  • Um das auch noch mal klar zu stellen - ein Studium ist durch Bücher lesen nicht ersetzbar, das ist vielleicht falsch rüber gekommen. Das war ja auch nicht die ursprüngliche Frage, nebenbei bemerkt.

    Wenn ein aufgeweckter Kopf 4 oder 5 Jahre studiert, wird er in dieser Zeit soviele gepackte Informationen bekommen, das läßt sich kaum noch einholen. Vor allem er sich am Abend dann auch noch Gedanken über das Gehörte macht - diese Masse an Informationen und Methoden besitzt man. Will jemand als Autodidakt dagegen antreten, so hat er ein echtes Problem - diesen zeitlichen Vorsprung bei gleicher Bandbreite abzudecken? Schwer vorstellbar.

    Also, halten wir fest:

    Ein Studium ist nicht so einfach ersetzbar.

    Aber, nun kommt es:

    Ein Informatik-Studium ist keine Ausbildung in Programmierung. Das ist immer noch und immer wieder Mißverständnis Nummer 1.

    Wenn nun jemand fragt, ob man durch Bücher als Autodidakt so gut programmieren lernen kann wie ein Informatik-Student, so MUSS man diese Frage einfach bejahen.

    [Programmieren ist halt doch nur Löten auf hohem Niveau. 🤡 ]

    Interessant wird es dann bei der Frage, an welche Aufgaben man einen Autodidakten setzen kann - welche Probleme der Softwareentwicklung wird er mit seinen Programmierfähigkeiten lösen können. Und hier kommen dann rasch die Einschränkungen - zwei anschauliche Beispiele ohne Anspruch auf Vollständigkeit:

    - Wenn ich einen Elo-Ing habe, so kann ich zu dem sagen "programmiere mir einen PID-Regler in den PC, aber die Abtastzeit liegt nahe der Zeitkonstanten, also setze den korrekt mit Hilfe der z-Transformation um".

    - Wenn ich einen Informatiker habe, so sage ich zu dem "für die 3D-Koordinaten brauchen wir zunächst eine Rotation um den Schwerpunkt des Gegenstands und Du schiebst den Schwerpunkt in den Ursprung des Koordinantensystems, danach normierst Du alle Koordinaten auf das Intervall [-1,1]".

    Weiß ich jeweils was das mathematisch bedeutet, so ist die Programmierung der dahinter steckenden Funktionen trivial. Das kann ich auch meinem autodidakten Programmierer im Selbststudium hinlegen. Aber wenn ich dem gleichen Programmierer die komplette Aufgabe hinlege, wird er sicherlich an seine Grenzen geführt. Und dieses Hintergrundwissen, das hätte er gehabt, wenn er studiert hätte.

    Ich hoffe mal, ich habe mit dem Beispiel verdeutlicht was ich meinte und auch ein wenig dargestellt, wo und warum ein Studium sinnvoll ist.

    Und noch so ein Ding: im Rahmen des Software-Engineerings kann man lernen, daß ein Softwareentwickler nur 20% seiner Zeit mit der Programmierung verbringt. Auch das sollte einem ein Fingerzeig sein, was einem ein technisches Studium nützt.



  • Ich liebe immer Marc++us seine Statemens.
    Nie zu kurz gehalten, immer detailiert - einfach geil!

    Doch trotzdem, heute ist Sylvester. RAUS aus der Bude, Spass haben.

    BtW: Wollte nicht zu sehr nach OT schlagen. Nur musste mal gesagt werden, sry!



  • Hi,

    HeikoKortlang schrieb:

    Kann mich jemand mal aufklären was A* bedeutet.

    A* ist ein Wegfindungsalgorithmus.

    ChrisM



  • Wie Wegfindungsalgorithmus. Der Weg zum Projektziel oder was? (wahrscheinlich)



  • Kopfhörer 2000 schrieb:

    Statemens

    Das ist mal ein schöner Vertipper zum Jahresabschluss mit Marc++us' Staatsmännern(s).

    Sebastian: Nein, durch ein einen Irrgarten zB (A star spricht man das Ding, vielleicht hilfts beim Herrn Gugel, mal danach zu suchen?).



  • Nein, da kommt nur so ein Dreck wie:

    "Be A Star"
    Naja irgendwann find ich die Lösung...



  • Naja irgendwann find ich die Lösung...

    Hier findest du eine ganze Menge zu A*.

    Hier kannst du auch starten:

    http://en.wikipedia.org/wiki/A-star_search_algorithm

    Nach was hast du denn gesucht? Ich finde selbst mit so simplen Sachen wie "A star" algorithm oder "A star" search hilfreiche Seiten.



  • A* Pathfinding Tutorial

    ...ist nur ein Beispiel.



  • Ups. Naja damit befass ich mich erst im nächsten Jahr. 😋



  • Hi,

    seht ihr, das meinte ich. A* ist ja jetzt wirklich lächerlich einfach, um den zu verstehen, braucht man keine einzige Stunde Informatikunterricht (was ich auch noch nicht hatte).

    EDIT: dass -> das

    ChrisM



  • Hoi.

    Also ich programmiere nun auch schon einige Jahre und bin gerade am Ende meines ersten Semesters meines Informations- und Kommunikationstechnik Studiums.

    Zum einen muß ich sagen das ich bisher sehr viel über programmieren gelernt habe ohne Studiert zu haben. Zum anderen muß man sagen das man im Studium mit Themen konfrontiert sind, die sehr interessant und auf irgendeine Weise auch bestimmt hilfreich sein kann, die man aber so privat nie durchgenommen hätte.

    Und um es mal klar auszudrücken! Eine Programmiersprache zu beherrschen ist nur die halbe Miete (wenn überhaupt). Die Lösung des eigentlichen Problems ist die viel größere Kunst!
    Was nützt es mir wenn ich C++ in und auswendig kenne, aber mir keinen Algorithmus erarbeiten kann um ein bestimmtes Problem zu lösen.

    Daher ist ein Studium in Informatik alleine noch lange nicht ausreichend um ein Programmierprofi zu sein.
    Die Programmierung selbst ist ja nur das Werkzeug um eine Problemlösung in dem Computer verarbeiten zu lassen. DIe Lösung des Problems muß man sich aber erstmal überlegen. Sprich hier braucht man auch zumindest Mathematische und je nach Problem auch noch ganz andere Kenntnisse.
    Ich kann keine Bildbearbeitungssoftware schreiben, wenn ich von Farben und Farbmanipulation keine Ahnung habe...



  • ChrisM schrieb:

    A* ist ja jetzt wirklich lächerlich einfach, um den zu verstehen, braucht man keine einzige Stunde Informatikunterricht (was ich auch noch nicht hatte).

    Es geht auch garnicht darum, daß dieser Algorithmus so wahnsinnig kompliziert ist. Es geht vielmehr darum, daß dieser Algorithmus aus einer umfassenderen Theorie hervorgegangen ist, die auch für viele andere Probleme hervorragende Lösungen bietet. Solche Theorien schlagen Brücken zwischen verschiedenen Problemstellungen und darum geht es doch. Ich will mich nicht jedes mal für jedes Problem hinsetzen müssen um den passenden Algorithmus dafür zu konstruieren. Ich sehe, oha... das wird ein Graph und was suchen wir? Kürzester Weg... okay, hab ich hier schon fertig programmiert, muß nur noch angepaßt werden oder ich verwende gleich die Boost Graph Library. Aber wenn ich die Theorie nicht kenne und nicht weiß welche Probleme sie lösen kann, dann muß ich die Lösungen immer wieder neu erfinden. Und das geht auf Dauer ziemlich auf die Nerven...

    Damit ich hier jetzt nicht falsch verstanden werde: Es müssen immer wieder neue Algorithmen gefunden werden, es gibt nicht eine Theorie, die zu allem die passende Lösung liefert, aber wenn vor einem Problem stehe wo's das gibt, dann isses doch blöd das nicht auch auszunutzen.
    Theorie ist nicht nur grau und manchmal gibt es wirklich nichts praktischeres als eine gute Theorie.

    MfG Jester



  • @TeeJay und @Jester,
    Danke, ihr redet mir aus der Seele 🙂



  • Ja ich hab ja einfach gesagt wie es ist.

    Alleine einen Thread zu eröffenen um so einen Blödsinn zu diskutieren zeigt eigentlich das man sich noch nicht wirklich mit Programmieren beschäftigt hat.

    Ich bin kein Vollprofi, aber ich habe schon so ziemlich viel ausprobiert.
    Sprich ich hab mich schonmal an einem Webserver, Bildbearbeitung und vielem mehr versucht.
    Die Ergebnisse waren zwar akzeptabel, aber natürlich weit von dem entfernt, was professionell entwickelte Software bietet.

    Aber alleine wenn man sich mal damit befasst und dann merkt das man sich erstmal Protokoll, oder Algorithmen aneignen muß um sein Projekt irgendwie verwirklichen zu können, merkt man ganz schnell das Programmieren nicht einfach nur daraus besteht Code in die Machine zu hacken.

    Ein Webserver muß ja auch ein Protokoll haben mit dem er sich mit dem Browser "unterhalten" kann. So ein Protokoll muß man natürlich nicht neu erfinden, da es HTTP ja schon gibt.

    Aber wenn man sich mal überlegt was für eine Arbeit es wohl war sich ein solches Protkoll auszudenken, dann sieht man auch das man erhebliche Vorarbeit leisten muß, bevor man eigentlich anfangen kann selbst etwas zu schreiben.

    Auch wenn man gerne sagt das man das Rad nicht zweimal erfinden soll, oder doch am besten auf bestehende Bibliotheken zurückgreifen soll, verfolge ich mehr den Ansatz es zumindest selbst einmal zu versuchen, da ich persöhnlich immer ganz gerne wissen möchte was genau dahinter passiert und wie es geht.

    Wer mit VC++ arbeitet und die MFC Bibliothek benutzt, der kann ganz einfach eine Klasse benutzen um sich eine Webseite bequem mit zwei Zeilen Code aus dem Netz zu saugen.

    Das ist schön wenn man auf die Schnelle ein Programm zusammenbasteln will.

    Aber meiner Meinung nach ist das nur die halbe Miete. Für mich ist das dann mehr ein Baukastensystem aus dem ich mir ein paar große Teile herauspicke und miteinander verbinde.
    Der Lerneffekt ist dabei einfach nicht der selbe.

    Somal man (wenn man es selber neu macht) immer die gute Möglichkeit hat eigene gewünschte Funktionen zusätzlich einzubauen.

    Ich will damit jetzt nicht sagen, das jeder der MFC benutzt nicht programmieren kann, aber vielleicht sollte man sich ab und zu auch mal etwas mehr mit dem auseinandersetzen was hinter dem ganzen Code steckt.
    Dann wird auch ersichtlich das Programmieren weit mehr ist als ein paar Codezeilen einzutippen.


Anmelden zum Antworten