Hallo, da so allmählich wieder die dunkle kalte Jahreszeit beginnt, will ich die Abende nutzen und meine Programmierkenntnisse deutlich verbessern. Allerdings fehlt mir hierzu die richtige Herangehensweise. Ich habe schon mehrere Bücher und Tutorials zu verschieden Sprachen (Python, C/C++, Bash) gelesen und durchgearbeitet und somit auch Grundkenntnisse in diesem Thema. Python hat mich hierbei besonders angesprochen. Das Problem bei Büchern und Tutorials ist allerdings, dass die Code-Beispeile in der Regel sehr kurz gehalten sind und sich nur einem bestimmten Thema widmen. Obwohl ich meistens die Beispiele auch verstehe fällt es mir schwer, diese kleinen Beispiele in ein größeres Projekt einzufügen. Ein Beispiel: In einen Buch / Tutorial wird super erklärt was z. B. eine verkettete Liste ist und wie sie funktioniert. Allerdings sind die Codebeispiele meist so realitätsfremd, dass ich keine Ideen bekomme, wann man so etwas in einem richtigen Projekt anwenden könnte. Dies führt dann dazu, das ich mir komplizierte eigene Lösungen einfallen lasse, obwohl es in einer Sprache bereits fertige Lösungen gibt. Ich habe auch angefangen, Code von Opensource-Projekten zu lesen. Ist dies eine gute Idee? Wie habt ihr euch das Programmieren beigebracht? Was war / ist euer Antrieb hierzu?
HDA schrieb: > Ich habe auch angefangen, Code von Opensource-Projekten zu lesen. Ist > dies eine gute Idee? Imho, ist es natürlich eine gute Idee Opensource Projekte anzusehen. Wobei sicher nicht alle davon als Vorbild taugen, insbesondere viele Kleinstprojekte. Aber die entscheidende Frage ist doch, wozu lernst du Programmieren? Als Selbstzweck? Oder hast du irgendein konkretes Ziel? Egal ob es die Interesse an PC Software oder embbedded ist. Egal ob neues PC-Spiel, Hausautomation oder Staubsaugerroboter. Ich würde einfach damit anfangen in der gewünschten Richtung etwas zu programmieren. Die ersten x Versionen wirst du eher früher als später wegwerfen und neu anfangen, aber du lernst mehr über Programmieren als irgendein allgemeines Tutorial liefern kann. Und du erkennst schnell die Probleme in deinem konkreten Bereich und kannst dich dann gezielt weiterinformieren.
Früher(tm) als Student wollte ich programmieren lernen, weil ich programmieren können wollte, oder es für meine Vorlesung brauchte. Das hat nie funktioniert. Der entscheidende Schritt kam, als ich ein paar echte mit Software lösbare Probleme vor mir hatte, für die es noch keine Lösung gab. Ab da war es ein absoluter Selbstläufer. Suche Dir ein erreichbares Ziel (z. B. etwas an einem Open Source-Projekt zu ändern/fixen, was Dich schon immer genervt hat) und dann hau rein! Während man am Anfang vielleicht noch explizit nach Betätigungsfeldern dieser Art suchen muss, wirst Du irgendwann den Punkt erreichen, an dem solche Gelegenheiten an jeder Ecke lauern (und man gar keine Zeit mehr dazu findet, alles zu bearbeiten).
HDA schrieb: > In einen Buch / Tutorial wird super erklärt was z. B. eine verkettete > Liste ist und wie sie funktioniert. Na passt doch. Such dir eine Anwendung und setz sie um. Zum Beispiel ..... ein Telefonbuch. In einem Telefonbuch sind Namen mit zugehörigen Telephonnummern gespeichert. Du musst neue Namen einfügen können (möglichst an der richtigen Stelle im Alphabet), du musst jemanden rauslöschen können. Du möchtest vielleicht nach Vornamen, Nachnamen sortieren lassen. Oder auch WOhnort, wenn du den mit dazu nimmst. Du willst suchen können. Du willst drucken, auf eine Datei speichern, von Datei lesen. etc. etc. Und um die Daten zu speichern nimmst du ... eine verkettete Liste. einfach verkettet, doppelt verkettet. Nach Lust und Laune. Vielleicht auch beides um die Unterschiede zu sehen. > Wie habt ihr euch das Programmieren beigebracht? Durch Üben. Und keine Angst vor Fehlern haben. Mein erstes Sortierprogramm willst du lieber nicht sehen. Nicht gerade ein Ruhmesblatt :-) Aber: nach Tagen voll endloser Fehlersuche hat es sortiert. Und ich war stolz wie ein Pfau.
:
Bearbeitet durch User
+1 Für die ersten beiden Antworten. Ich halte es auch für am nachhaltigsten nach Lösungen für echte Probleme zu suchen. Wahrscheinlich gibt es effektiviere Methoden aber so macht es (zumindest mir) am meisten Spaß. Etwas später noch einmal auf seine Frühwerke zu schauen und zu versuchen diese mit dem aktuellen Wissen zu lösen ist übrigens oft sehr beeindruckend :) Ich habe übrigens zurzeit genau so ein Problem mit Elektronik. Vor 18 Jahren hatte ich das letzte mal einen Lötkolben in der Hand... Das würde ich jetzt gern ändern aber mit fällt beim besten Willen kein lohnendes Projekt ein. Die Arduino Einstiegs-Projekte sind zwar gut gemeint, aber leider ist das nicht mehr als malen nach Zahlen...
HDA schrieb: > Ich habe schon mehrere Bücher und Tutorials zu verschieden Sprachen > (Python, C/C++, Bash) gelesen und durchgearbeitet und somit auch > Grundkenntnisse in diesem Thema. > > Python hat mich hierbei besonders angesprochen. ;-) > Das Problem bei Büchern und Tutorials ist allerdings, dass die > Code-Beispeile in der Regel sehr kurz gehalten sind und > sich nur einem bestimmten Thema widmen. Obwohl ich meistens die > Beispiele auch verstehe fällt es mir schwer, diese kleinen > Beispiele in ein größeres Projekt einzufügen. Anhand Deiner Beschreibung fällt es mir nicht leicht, zu verstehen, was genau Du suchst. Wenn es Dir vor allem darum geht, Techniken zur Lösung häufig auftretender Probleme zu erlernen, würde ich Dir ein gutes Buch zum Thema "Design Patterns" bzw. "Entwurfsmuster" empfehlen. Wenn Du eher die Theorie besser verstehen willst, gibt es da wunderbare Bücher von Andrew S. Tanenbaum und den berühmt-berüchtigten Balzert. Wenn es Dir eher um Betriebssystemtechnik geht, sind die Bücher von W. Richard Stevens eine prima Sache. Und wenn Du wirklich alles und noch ein bisschen mehr tot schlagen willst, ist das TAOCP ("The Art of Computer Programming") von Donald E. Knuth das Maß aller Dinge. Wenn Du eher praktische Tipps suchst, möchte ich Dir -- auch wenn Du mit Windows entwickeln solltest -- das Buch "The Art of UNIX Programming" von Eric S. Raymond empfehlen, das Themen wie Modularisierung und den Entwurf von sauberen Schnittstellen behandelt. Wenn es Dir eher um die Gestaltung von Benutzeroberflächen geht, so haben viele große Softwarehersteller wie Microsoft und Apple, aber auch größere OpenSource-Projekte wie KDE sehr lesenswerte Styleguides. > Ich habe auch angefangen, Code von Opensource-Projekten zu lesen. Ist > dies eine gute Idee? Das ist eher was für jemanden, der bereits guten von schlechtem Code unterscheiden kann. > Wie habt ihr euch das Programmieren beigebracht? Lesen. Probieren. Üben. Repeat. > Was war / ist euer Antrieb hierzu? Am Anfang war das Hobby. Und dann habe ich auf den großen Sun Tzu gehört, der sagt: "Wer sein Hobby zum Beruf macht, muß niemals arbeiten". ;-)
HDA schrieb: > wohl ich meistens die Beispiele auch verstehe fällt es mir schwer, diese > kleinen > Beispiele in ein größeres Projekt einzufügen. Dafür sind diese Beispiele meistens auch haufig nicht gedacht. Sie zeigen den Nutzen eines Sprachfeatures, oder die Funktionsweise von Datenstrukturen und Algorithmen. Um diese anzuwenden benötigt man ein Problem, dieses stellt anforderungen wie z.B. Menu => hat Verschachtelte Optionen => braucht Verschachtelte Listen. Dann kann man die Vor und Nachteile von einem bekannten Datenstrukturen im Bezug auf diese Anforderungen abwägen. > Dies führt dann dazu, das ich mir komplizierte eigene Lösungen einfallen > lasse, obwohl es in einer Sprache bereits fertige Lösungen gibt. Google richtig zu benutzen ist nicht trivial. Es ist mittlerweile jedoch fast nichtmehr möglich, ein Problem zu finden, für welches noch keine Library existiert. Soetwas dann selbst zu machen bringt aber immer winiges an Erfahrungswerten.
>Suche Dir ein erreichbares Ziel
Falsch, suche Dir ein unerreichbares Ziel.
Am meisten lernst du, wenn die von dir selbst geschaffene Komplexität im
Chaos versinkt. Nachdenkst, wie du so ein Desaster das nächste mal
vermeidest.
Karl H. schrieb: > Mein erstes Sortierprogramm willst du lieber nicht sehen. Nicht gerade > ein Ruhmesblatt :-) Kenn ich. > Aber: nach Tagen voll endloser Fehlersuche hat es sortiert. Und ich war > stolz wie ein Pfau. Der Bubblesort wurde zum Troublesort :-) Sheeva P. schrieb: > Am Anfang war das Hobby. Und dann habe ich auf den großen Sun Tzu > gehört, der sagt: "Wer sein Hobby zum Beruf macht, muß niemals > arbeiten". ;-) Hmm, da denke ich manchmal, richtiger ist: Der braucht ein neues Hobby.
HDA schrieb: > Python hat mich hierbei besonders angesprochen. Python hat die Eigenschaft Dummköpfe anzuziehen und aus klugen Köpfen Dummköpfe zu machen. Aber lassen wir das ... > Ich habe auch angefangen, Code von Opensource-Projekten zu lesen. Ist > dies eine gute Idee? Ja. Es gibt sogar ein gutes Kriterium um festzustellen dass man was gelernt hat. Wenn man beginnt Fehler in dem Code zu finden oder sich sagt "Moment, das kann man doch wesentlich schneller/besser/einfacher/kürzer machen" (und es macht und man recht hatte). Dann sollte man zum nächsten besseren Sourcecode übergehen. > Wie habt ihr euch das Programmieren beigebracht? Gutes Lehrbuch. Wobei das zu meiner Zeit erst einmal die damals ziemlich guten Meter von Manuals waren, die mit Computern kamen. Dazu amerikanische Bücher über diese brandneuen Dinger namens Mikroprozessoren. Auch habe ich viele deutsche Computerzeitschriften gelesen, bis ich relativ schnell gemerkt habe, dass 99% von denen Müll waren. Einzig die c't, später zusammen mit der Schwesterzeitschrift ix, haben bei mir über Jahre überlebt. Bis ich sie dann vor ca. zwei Jahren abbestellt habe weil sie auch nur noch Müll bringen. Dazu programmieren, programmieren, programmieren. Ach ja, keine Angst vor Mathe, natürlich besonders numerischer Mathematik. Das war für mich der Einstig in ernsthafte Computerliteratur über Algorithmen, Datenstrukturen, Simulation, ... und daraus dann der Einstieg in ernsthafte Anwendungen wo mehr passiert als dass unter großem Hallo (Neudeutsch Hype) Daten vom Eingang zum Ausgang verschoben werden. Und keine Angst vor alten Sachen. Die moderne Informatik krankt daran, dass sie ihre eigene Geschichte nicht kennt, nicht erkennt, wenn sie einen Gewinner hat, alt grundsätzlich für schlecht hält, aber gleichzeitig immer wieder die gleichen alten Dinge als neue Sau durch Dorf treibt. > Was war / ist euer > Antrieb hierzu? Neugier und dass für mich sehr früh klar war, dass das die Zukunft der Elektronik sein wird. Für viele Andere meiner Generation und nachfolgender Generationen waren es Computerspiele. Allerdings reicht es nicht begeisterter Spieler zu sein oder "irgendwas mit Medien" machen zu wollen.
Jay schrieb: > ....oder "irgendwas mit Medien" machen zu wollen. Vielleicht hast Du das nur nicht richtig verstanden und der Betreffende wollte "irgendetwas mit MÄDCHEN machen" Das wäre naheliegend und vor Allem spaßiger. ;-) MfG Paul
Paul B. schrieb: > "irgendetwas mit MÄDCHEN machen" Und haben sie sich ihren Berufswunsch erfüllt und sind Frauenarzt geworden?
Jay schrieb: > Und keine Angst vor alten Sachen. Die moderne Informatik krankt daran, > dass sie ihre eigene Geschichte nicht kennt, nicht erkennt, wenn sie > einen Gewinner hat, alt grundsätzlich für schlecht hält, aber > gleichzeitig immer wieder die gleichen alten Dinge als neue Sau durch > Dorf treibt. Jepp, und alle alten Fehler gerne schlimmer wiederholt.
HDA schrieb: > Python hat mich hierbei besonders angesprochen. Kann ich verstehen. Mich auch. > Das Problem bei Büchern und Tutorials ist allerdings, dass die > Code-Beispeile in der Regel sehr kurz gehalten sind und > sich nur einem bestimmten Thema widmen. Obwohl ich meistens die > Beispiele auch verstehe fällt es mir schwer, diese kleinen > Beispiele in ein größeres Projekt einzufügen. Haben ja schon oben Leute geschrieben. Einfach hinsetzten, und ein kleines Programm schreiben, dass Dir irgendeinen Zweck erfüllt. Du solltest nicht ohne Ende nur darüber lesen ohne zu üben. Tatsächlich hilft Dir ab einem bestimmten Punkt und als Anstupps wenn Dir keine passende Lösung zu einem konkreten Problem einfällt, oft eine Suchmaschine besser weiter als ein Buch.....allerdings solltest Du irgendwie ein Gespür dafür entwickeln, die passenden Suchbegriffe einzugeben. Tipps: Mehrere Suchbegriffe, alternative Suchbegriffe. In die Ergebnisse schauen und eventuell nach Synonymen suchen. Ausserdem inspiriert das für weitere Suchen. Die klassische Metager-Suche ermöglicht eine Suche, die wissenschaftliche Quellen bevorzugt. Das erhöht die Chance, auf passendes Lehrmaterial zu stossen. Ebenso kannst Du auch PDF Dateien bevorzugen lassen. Bei Suchmaschinen, die diese Option nicht haben, hilft alls zusätzlicher Suchbegriff dann .pdf oder .ps Metager findest Du hier: https://metager.de/klassik/?nomblred Bücher vermitteln eher Grundlagen (und Inspiration). > > Ein Beispiel: > In einen Buch / Tutorial wird super erklärt was z. B. eine verkettete > Liste ist und wie sie funktioniert. > Allerdings sind die Codebeispiele meist so realitätsfremd, dass ich > keine Ideen bekomme, wann man so etwas in > einem richtigen Projekt anwenden könnte. Programmiere Dir selber ein Adressbuch, erweitere das um ein Notizbuch.... > Dies führt dann dazu, das ich mir komplizierte eigene Lösungen einfallen > lasse, obwohl es in einer Sprache bereits > fertige Lösungen gibt. Ja und? Hauptsache Du lernst dabei. Mach Dir mal ruhig ein paar Gedabken, was man an der vorhandenen fertigen Software (in bestimmten Bereichen) z.B. beim Handling, verbessern könnte. > Ich habe auch angefangen, Code von Opensource-Projekten zu lesen. Ist > dies eine gute Idee? Wenn die Brocken nicht zu dick sind, warum nicht? Aber tatsächlich solltest Du anfangen, selber zu schreiben. > Wie habt ihr euch das Programmieren beigebracht? Indem ich Angefangen habe, etwas selber zu schreiben. Damals, in den 80ern. In Basic. Auf der Uni habe ich dann (Turbo)Pascal und Fortran 90 gemacht. Irgendwann ist das, mit zwei kurzen Abstechen in PIC Assembler, aber alles im Sande verlaufen und in Vergessenheit geraten. Vor ein paar Jahren habe ich dann mal ein kleines Progrämchen für meine Freundin in Gambas (Basic) geschrieben. Dabei fiel mir dann eine Möglichkeit für ein anderes Programm auf, die ich dann auch ausprobiert habe. Weil mir Python aber mehr Freiheiten in bezug auf Plattformen bot, habe ich dann mit Python 3 angefangen, und letztlich gesehen, dass es mir besser gefällt als Gambas. > Was war / ist euer > Antrieb hierzu? Spass am Programmieren. Privater Bedarf an speziellen Programmen und Lösungen. Literaturtipps: Weniger schlecht Programmieren von Katrin Passig und Johannes Jander. http://www.amazon.de/s/ref=nb_sb_noss?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Daps&field-keywords=B00HXS2ZHS Das ist eigentlich ein Buch um das Drumherum des Programmieren. Das, was üblicherweise in Lehrbüchern zu kurz kommt. Und sehr vergnüglich geschrieben. Mit freundlichem Gruß: Bernd Wiebus alias dl1eic http://www.l02.de
:
Bearbeitet durch User
Ich würde überhaupt sagen: es ist eine Mischung aus allem. Nur programmieren ohne nach links und nach rechts zu schauen, bringt dich nicht weiter. Ich hatte bis vor 2 Jahren Code in der Wartung, der von genau so einem verbrochen wurde. Der Mann hatte 15 Jahre industrieprogrammiert. Aber sein Stil war schauderhaft - er war 14 Jahre lang auf immer demselben Level festgefahren. Auch nach so langer Zeit merkte man genau, dass er am Anfang eine Lernphase hatte und danach kam nichts mehr. Es war keine Entwicklung sichtbar. Das betrifft sowohl die Verwendung seiner Programmiersprache als auch Konzepte und Algorithmen. Das ganze war 3D-Geometrie und irgendwie machte er alles anders als der Rest der Welt. Da konnte man sich einfach nicht ordentlich reinfinden. Alles was sich schon seit Jahrzehnten im Bereich 3D Modelling soweit konsolidiert hatte, dass man es als gute Standardlösung ansehen kann ... nope. Fehlanzeige. Er schrieb nach 15 Jahren seinen Code immer noch so wie im ersten Jahr (als er noch C Neuling war. Den Umstieg auf OOP durch den Wechsel auf C++ ein paar Jahre später hat er sowieso verschlafen) Ich denke man muss * selbst programmieren. Da führt kein Weg drann vorbei. Auch wenn man gerade am Anfang Dinge kompliziert löst. Ist egal. Du hast eine Lösung gefunden und das ist das wichtigste. Denn auch den Prozess des Findens von Lösungen muss man erst mal lernen * anderer Leute Code studieren. Ideal ist es natürlich, wenn man selbst eine Lösung gefunden hat, die implementiert hat und sich dann auch noch ansieht, wie andere dieses Problem gelöst haben. Von seiner eigenen Lösung weiss man ja, wo man Probleme hatte, welche Codeteile einen lange beschäftigt haben bis sie gelaufen sind. Dann kann man nämlich auch die alternative Lösung viel besser einschätzen, indem man gezielt sich ansieht, wie sich des eigene Detailproblem dort präsentiert. Ist es dort überhaupt ein Problem, oder taucht dieses Detailproblem dort vielleicht gar nicht auf. Ich kann nur sagen: Ich hab viel davon gelernt, dass ich anderer Leute Code studiert habe. Und ich meine wirklich studiert. Einfach downloaden, compilieren und laufen lassen ist zu wenig. Man muss schon im Code stöbern. Wie ist er aufgebaut, wie sind die SChnittstellen gemacht, wie passen die Einzelteile zusammen, sind ständige Klimmzüge notwendig oder läuft der Datenfluss schon fast natürlich von einer Funktion in die andere. Der Lerneffekt kann dabei in beide Richtungen gehen. DU siehst Dinge von denen du dir denkst: ui das ist aber komplizert. Und du siehst Dinge von denen du dir denkst: wow, das ist elegant gelöst. Beides gehört dazu. * Algorithmen studieren. Da gibt es reichlich Literatur. Je nachdem wohin man sich spezialisiert. Aber zumindest Standardverfahren der allgemeinen Informatik sollte man kennen und auch schon ein paar mal (und sei es nur aus Spass an der Freude) implementiert haben * sich auch nicht dazu zu fein sein, sich zurückzulehnen und selbstkritisch zu agieren. Wenn du das Gefühl hast, das ist jetzt aber ziemlich verworrener Mist, den du da geschrieben hast ... wie könnte man das anders machen? Welche Alternativen gibt es? Ruhig auch mal ausprobieren: wo führt mich diese Alternative hin? Wie modifiziert sich das wwas ich bis jetzt habe? Kein Code ist in Stein gemeisselt, es ist erlaubt alles zu ändern. Für meine 2D Editor Engine hab ich wohl 3 oder 4 Anläufe genommen, bis ich erst mal soweit zufrieden war. Ganz zufrieden bin ich immer noch nicht damit. vielleicht mach ich noch einen Anlauf. Gerade Neulinge kleben oft viel zu sehr an den Codezeilen die sie schon haben. Es hat Stunden gedauert sie zu schreiben also sind sie tabu und werden nicht angerührt - das ist die falsche Einstellung. Es gibt nicht die eine Beschäftigung, die einen besser macht. Es ist eine Summe aus allem möglichen. Das wichtigste ist aber, dass es einem Freude macht. Ja, da gehört auch dazu, dass es einem Freude macht sich mit einem Problem rumzuquälen. Wenn du das nicht als Herausforderung siehst, deine Fähigkeiten an einem Problem zu messen, sondern nur als Qual empfindest, dann ist SW-Entwicklung nicht die richtige Beschäftigung für dich.
:
Bearbeitet durch User
Der Andere schrieb: >> Aber: nach Tagen voll endloser Fehlersuche hat es sortiert. Und ich war >> stolz wie ein Pfau. > Der Bubblesort wurde zum Troublesort :-) Wenns wenigstens ein Bubblesort gewesen wäre. Aber das war ein wildes Konglomerat aus ungelenker Feder. Was wusste ich damals schon von Standardverfahren :-) Da wurde in Arrays heftigst herumgeschoben um Platz an der Einfügestelle zu machen und an der Entnahmestelle die Lücke wieder geschlossen. Im Prinzip so wie wenn man ein Kartenblatt in der Hand sortiert: Karte raus, restliche Karten wieder zurechtrücken, suchen wo die Karte hin muss, dort die Karten auseinanderschieben und Karte rein. Und das ganze in BASIC (dem alten, dem mit den Zeilennummern) :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.