Zum Inhalt springen

Tipps zum Progammier-Einstieg (FIAE)


yamr6

Empfohlene Beiträge

Hallo Leute,

ich bin gerade dabei mit C# das Programmieren von Grund auf zu erlernen.

Hier eine kurze Vorgeschichte zu mir:

Ich hab mich während meiner Schulzeit schon ein wenig mit Programmieren beschäftigt, aber im Prinzip nur ganz banale Grundlagen. Hinzukommt, dass das Ganze schon länger her ist, da ich zwischendurch 5 Semester Wirtschaftsing. studiert habe und da schlichtweg keine Zeit dafür hatte. Jetzt beginne ich im September eine Ausbildung als FIAE und mache bei meinem Ausbildungsbetrieb bis dahin schon ein Praktikum.

Hier soll ich anhand des Buches O'Reilly - C' Von Kopf bis Fuß das Programmieren lernen. Dazu habe ich mir privat noch Rheinwerk - Schrödinger programmiert C# geholt.

Der Inhalt ist dabei ansich kein Problem, ich habe jedoch das Problem, dass ich es nicht anwenden kann.

Bei Übungsaufgaben weiß ich nie was ich machen muss, aber wenn ich dann in den Lösungen spicke, ergibt das alles einen Sinn.

Jetzt habe ich schon in anderen Threads und in anderen Foren gelesen, dass das Denken mit der Zeit kommt und das alles nur Übungssache ist.

Habt ihr trotzdem weitere Tipps, die mir das Objektorientierte Denken schneller beibringen (Internetseiten, Tutorials, etc.)?

Danke schonmal :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jetzt habe ich schon in anderen Threads und in anderen Foren gelesen, dass das Denken mit der Zeit kommt und das alles nur Übungssache ist.
So ist es auch. Wenn du schon zwei Bücher hast, dann lohnt es sich nicht, noch weitere zu lesen, bis du nicht in den Grundlagen firm bist. Programmieren ist ein Handwerk - das lernt man durch machen.

Beliebte Übungsaufgaben sind bspw. Taschenrechner oder Todo-Listen. Da kann man verschiedene Techniken anwenden und sich ausprobieren. Ansonsten halte ich ein Buch in Bezug auf C# als das Must-Read und das ist dieses hier: C# in Depth von Jon Skeet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Spontan fallen mir diese recht informativen Playlists hier ein: https://www.youtube.com/user/derekbanas/playlists

Ansonten gilt wirklich Übung macht den Meister und die Zeit bringt die Erfahrung. Daher würde dazu raten, dass Du dir irgendein kleines Projekt suchst, an welchem du WIRKLICHES Interesse hast und dich daran austobst. Es muss ja nicht unbedingt die x-tausendste Adressverwaltung sein. Du wirst dann schnell bei der Suche nach irgendwelchen Lösungsansätzen andere sehr interessante Dinge sehen, welche Du ebenfalls miteinbringen kannst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde nicht noch mehr Bücher zur Sprache an sich lesen.

Stattdessen empfehle ich dir folgende Bücher in der Reihenfolge:

  1. Kent Beck - Implementation Patterns
  2. Steve McConnell - Code Complete
  3. Hunt/Thomas - The Pragmatic Programmer. From Journeyman to Master

Wenn du das ganze mit kleineren und größeren echten(!) Programmieraufgaben verbindest müßtest du bald Fortschritte machen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Antworten :)

Den Windows Taschenrechner nachzubauen hatte ich mir schon vorgenommen, werde mir aber auf jeden Fall die anderen Dinge ansehen.

Das Hauptproblem aktuell ist, dass ich mir wahrscheinlich zu viel Druck mache. Ich will es schnell lernen und gehe dementsprechend zu schnell durch die Kapitel, um zu zeigen, dass ich gut bin. Bzw gebe ich persönlich nicht gerne zu, dass ich etwas nicht kann bzw noch zeit brauche. Deswegen habe ich auch 5 Semester studiert und nicht schon vorher aufgehört :upps

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Hauptproblem aktuell ist, dass ich mir wahrscheinlich zu viel Druck mache. Ich will es schnell lernen und gehe dementsprechend zu schnell durch die Kapitel, um zu zeigen, dass ich gut bin. Bzw gebe ich persönlich nicht gerne zu, dass ich etwas nicht kann

Ich kenne es von mir selbst als ich vor 10 Jahren angefangen habe programmieren zu lernen, dass man Kapitel anfängt wie Prosa zu lesen. Beim durchlesen klingt das auch alles einleuchtend, bei den Übungsaufgaben ist es dann allerdings doch nicht mehr so klar gewesen. Ich habe dann angefangen mir andere Bücher zu kaufen, habe teilweise sogar die Sprachen gewechselt. Das hat natürlich überhaupt nichts gebracht.

Es gibt zweierlei Dinge. Das eine ist das "logische Denken" - das lernt man nur durch die unmittelbare Umsetzung von Aufgaben, dass andere sind die Sprachkonstrukte und die Theorie - die sind Voraussetzung dafür um überhaupt etwas zu machen und die lernt man überwiegend durchs lernen. Ich kann dir daher nur empfehlen, dir mehr Zeit zu nehmen: Fass die Kapitel zusammen und überprüfe selbst, ob du alles wirklich verstanden hast. Presch nicht in der Woche 5 Kapitel durch. Du musst du die Sachen verinnerlichen, das geht aber defintiv nicht mit "drüber lesen" und anschließender Bearbeitung der Übungsaufgaben. Ich weiß das ist schwierig, weil man sich ja immer vor Augen hält "ich muss es schnell können", aber es hat schon seinen Grund, warum man für die Grundlagen und OOP an der Uni mindestens ein ganzes Jahr braucht, bevor man die Sachen übergreifend und selbstverständlich anwenden kann. Das geht nicht von heute auf morgen.

Ich wünsche viel Erfolg :) !

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Inhalt ist dabei ansich kein Problem, ich habe jedoch das Problem, dass ich es nicht anwenden kann.

Bei Übungsaufgaben weiß ich nie was ich machen muss, aber wenn ich dann in den Lösungen spicke, ergibt das alles einen Sinn.

Du wirst lachen, aber ähnliches habe ich schon mit Studenten erlebt, die entweder Bachelorant oder sogar schon Bachelor sind. Man hat den Leuten einen bunten Strauß Wissen mit auf den Weg gegeben und entlässt sie in die Welt, in der Hoffnung, es werden schon irgendwie gute Programmierer sein. Das Ergebnis ist wie so immer im Leben: gemischt. Manchen fällt es leicht, das Erlernte umzusetzen, manchen eben nicht.

Das erste Hindernis, womit man zu kämpfen hat, noch bevor man überhaupt zum eingentlichen Programmieren kommt, ist die Syntax. Und gerade bei statisch typisierten Sprachen wie C#, Java, etc. muss man ersteinmal lernen, die ganzen Ungetüme zu parsen:

Da begegnet einem auch schon mal sowas:


NHibernateSessionFactoryRepository
[/php]

Wer schon geübt ist, PascalCase zu lesen, der hüpft von Versalie zu Versalie (»NHi..Ses..Fac..Repo=>Irgendwass mit Repository, NHibernate, Sessiongedöns ahja«).

Dann gibt es da noch die generischen Datentypen [b]List<T>[/b], oder die Erweiterung: [b]Dictionary<Integer, List<Irgendwas>>[/b].

Das nächst komplexere Problem sind die ganzen Datentypen; vorallem die abstrakten Datentypen (ADT) wie Dictionary, List, Queues etc. pp.

Womit eigentlich kaum jemand Probleme haben dürfte, sind Schleifen und Kontrollflussanweisungen wie for, foreach, while, if etc.

Das heißt, kann man die Syntax aus dem ff (lesen) und kennt seine Datentypen, hat man meist den Kopf frei, tatsächlich zu programmieren. Man kann sich mit dem eigentlichen, dem entwickeln von Algorithmen und dem Design seines Codes beschäftigen.

Parallel dazu werden Dir auch verschiedene Arten von Fehlerquellen begegnen: Am Anfang Deiner Karriere wirst Du mehr mit Syntax und Typproblemen zu kämpfen haben. Als nächstes wirst Du mit falschen oder schlecht gewählten Datentypen konfrontiert werden (nicht jeder Datentyp eignet sich auch für jedes Problem); und später dann mit falsch gewählten Algortihmen.

Wobei es natürlich sein kann, dass auch alles auf einmal kommt: Zuerst hat man eine Menge an Syntaxfehlern, stellt dann fest, der Datentyp und der Algorithmus sind ebenfalls Schrott. Also [i]restart[/i].

Jetzt habe ich schon in anderen Threads und in anderen Foren gelesen, dass das Denken mit der Zeit kommt und das alles nur Übungssache ist.

Übungs- oder eben Gewöhnungssache. Wenn man sich durch 40-Zeichen Typbezeichnung nicht mehr aus der Ruhe bringen läßt und weiß, was der Unterschied zwischen einer [i]List[/i] und einer [i]LinkedList[/i] ist, ist ein entscheidender Schritt gemacht.

Viel Zeit solltest Du auf das Erlernen der ADT verwenden.

Viele Algorithmen stehen und fallen mit dem gewählten Datentyp.

Habt ihr trotzdem weitere Tipps, die mir das Objektorientierte Denken schneller beibringen

Wichtig sind ersteinmal die anderen Sachen. OOP würde ich als solches ersteinmal hintanstellen.

Dein Code sollte ersteinmal lauffähig sein. Verschönern kannst Du das immer noch. Abgesehen davon, dass OOP reichlich komplex ist und selbst "Profis" schreiben eher Prozedural-C#-Irgendwas-mit-Klassen; was auch nicht "schlimm" ist, nur eben nicht objektorientiert ;)

»Make it work. Make it right. Make it fast«

([i]Kent Beck[/i])

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vll. solltest Du Dir erst einmal darüber klarwerden, dass das Programmieren erlernen und das Erlernen einer Programmiersprache unterschiedlich ist.

Ersteres legt den Grundstein für das Verständnis für logische Zusammenhänge, während das zweite lediglich die Übersetzungsarbeit in eine Sprache bzw. einen Sprachdialekt ist.

U.U. liegt hier genau das Problem, wenn Du aufgrund der Aufgabenstellung den Sachverhalt nicht einordnen kannst. Die Antwort dann zu sehen und (vermeintlich) zu verstehen, zeigt, dass Dir eben das Problem nicht verständlch ist.

Hier ist wohl eher zu Beginn ein Einlesen in das sprachenunabhängige Programmieren sinnvoller.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eure Antworten beruhigen mich schonmal, ich denke wirklich ich bin es falsch angegangen. Gerade gehe ich den Stoff noch einmal von Vorne durch und halte mich dabei an eure Vorschläge.

Für andere Anfänger, die mitlesen und ähnliche Probleme haben: Überlegt bei den Übungsaufgabenwirklich selber und seht nicht zu schnell in den Lösungen nach, das habe ich am Anfang flasch gemacht weswegen ich jetzt in dieser Lage bin.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vll. solltest Du Dir erst einmal darüber klarwerden, dass das Programmieren erlernen und das Erlernen einer Programmiersprache unterschiedlich ist.

Ersteres legt den Grundstein für das Verständnis für logische Zusammenhänge, während das zweite lediglich die Übersetzungsarbeit in eine Sprache bzw. einen Sprachdialekt ist.

U.U. liegt hier genau das Problem, wenn Du aufgrund der Aufgabenstellung den Sachverhalt nicht einordnen kannst. Die Antwort dann zu sehen und (vermeintlich) zu verstehen, zeigt, dass Dir eben das Problem nicht verständlch ist.

Hier ist wohl eher zu Beginn ein Einlesen in das sprachenunabhängige Programmieren sinnvoller.

Dies musst ich auch als Javatutor im ersten und zweiten Semester feststellen. Den meisten Studenten viel es nicht schwer eine Logik in Programmcode umzuwandeln. Das größte Problem war es, aus einer Textaufgabe Logik zu generieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@WYIFISI

@T3D

Ich habe diese Aussage schon sehr häufig gelesen, kann mir momentan aber nicht so richtig vorstellen, wie man es komplett ohne eine konkrete Sprache lernt.

Wir würdest du einem absoluten Anfängern raten, programmieren zu lernen?

Ablaufpläne/Bäume/Graphen zeichnen? Pseudocode? Mit Programme a lá Robot Karol anfangen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe versucht meinen Mitstudenten beizubringen wie man aus der Aufgabe ein PAP erstellt (soetwas wurde im Studium nämlich komplett vernachlässigt). Anschliessend kann man das in die Programmiersprache seiner Wahl umsetzen. Ich rate anfangs komplett davon ab irgendwelche GUI programmierungen zu machen, das lenkt von dem wesentlichen einfach nur ab.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kaffeekanne, Kaffeebohnen, Kaffeemühle, Kaffeefilter, Filtertüten, Löffel, Wasserkocher (Kessel), Wasserhahn.

Zeichne ein PAP(Programmablaufplan), das den Prozess des Kaffeekochens abbildet. Desto präziser, desto besser. Denke an Iterationen und vermeide Mengenangaben(fülle den Wasserkocher mit 3/4 Liter Wasser ist nicht erlaubt). Biddeschön.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich bin jetzt zwar FISI, aber auf der Arbeit habe ich auch schon ein wenig programmiert. Auch mein Abschlussprojekt war eine selbstgeschriebene Automatisierung. Kam bei den Prüfern überraschend gut an.^^

Jedenfalls kann ich dir auch sagen, Übung macht den Meister. Ich hatte den Luxus, dass ich einen "Privatlehrer" hatte (Ein Kollege hatte sich extra Zeit genommen mir die fortgeschrittenen Methoden beizubringen). Die Basics kann man allerdings auch genauso gut alleine lernen.

Unter Basics würde ich jetzt erst die einfache Syntax verstehen. Also von IF-Clauses und Zähl-, kopfgesteuerten- und fußgesteuertenschleifen bis hin zu Klassen, Vererbung, Polymorphie, Datenkapselung...

Das habe ich übrigens in meiner Freizeit geübt, indem ich kleine Spiele programmiert habe. Jetzt denk bitte nicht an einen Ego-Shooter ö.Ä., ich meine wirklich kleine Spiele. Sowas wie TicTacToe oder 4-Gewinnt (2-Spieler, keine KI^^) ohne grafische Oberfläche, sondern rein ASCII. Um die Basics zu lernen fand ich das wunderbar. :D

Ich habe noch ein "CPP-Praktikum" hier liegen. Falls du also an der Sprache Interesse hast, kann ich dir das gerne mal schicken.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...