Entwickler-Ecke

C# - Die Sprache - C# lernen


Noah - So 03.12.17 20:23
Titel: C# lernen
Hey !
Ich bin neu in diesen Forum und wollte wissen wie ich am besten C# lernen kann. Ich habe bisher noch keine Ahnung davon.


Symbroson - So 03.12.17 20:31

Also ich hab eigentlich noch nicht viel mit C# gemacht ehrlich gesagt - aber eigentlich ist es dasselbe wie mit jeder anderen Programmiersprache: ausprobieren.
Setze dir irgendein Ziel, arbeite daran und entwickle dich dadurch weiter.

Ich persönlich bin meistens in Richtung Spieleprogrammierung gegangen - da bietet sich Unity eigentlich perfekt an. Hab erst vor wenigen Tagen mit Unity bisschen rumgespielt und mit YT ein Tutorial nachprogrammiert. Dadurch bin ich zwar kein C# Pro geworden, aber es hat mir sehr geholfen in die Sprache einzusteigen und zu verstehen wie sie funktioniert.
Generell ist es immer gut, wenn man schonmal mit anderen Sprachen in Kontakt getreten ist - wie ich zB. mit C bzw C++ - C# hat da ja gewisse Ähnlichkeiten mit denen. Dann muss man nurnoch die eigenheiten der jeweiligen Sprache kennenlernen.

Um es nochmal kurzzufassen: Setze dir ein Ziel, setze es um, optimiere und Herrsche :D

Im Endeffekt wirst du eh nie sagen können "ich bin fertig." oder "ich habe die Sprache ausgelernt", weil es immer neues gibt, was du evtl noch nicht wusstest - auch weil die Programmiersprachen zT noch weiterentwickelt werden und neue Funktionen hinzukommen.
Wenn du an einem speziellen Projekt bzw. einem informatischen Problem arbeitest, kannst du immer danach im Netz suchen und schauen, wie andere das gelöst haben und versuchen, deren Denkansatz zu verstehen. Im Endeffekt geht es dann garnicht mehr darum, die Sprache zu lernen, sondern andere Denkansätze zu finden, die in der Informatik allgemeingültig sind, und das auf eine spezielle Sprache zu übertragen.

Also stelle ich dir die Frage - welche Sprache(n) kannst du schon und was hast du mit den jeweiligen Sprachen schon gemacht?

LG,
Symbroson


Palladin007 - Mo 04.12.17 02:59

Also für C# würde ich das Buch Visual C# 2012 [http://openbook.rheinwerk-verlag.de/visual_csharp_2012/] empfehlen.
Von Tutorials bin ich kein wirklicher Fan. Zumindest die, die ich anfangs gesehen habe, haben sich meist als Quatsch heraus gestellt.
Dann lieber das (kostenlose) Buch, da hast Du alles drin um später jede Art von Anwendung umsetzen zu können. Für Unity kommt dann allerdings natürlich noch einiges dazu, was die selber mit bringen.

Danach kann ich der Aussage von Symbroson nur zustimmen.
Einzige Ausnahme:

Zitat:
wie ich zB. mit C bzw C++ - C# hat da ja gewisse Ähnlichkeiten mit denen.


Das sieht nur so aus :P
Gerade der Umstieg von C oder C++ zu C# bzw. umgekehrt ist weit schwerer als man denkt.
Bei C++ muss man sooo viel mehr beachten, was man bei C# dann auch beachten will, aber schnell fest stellen muss, dass man sein ganzes Denken umstellen muss.
Umgekehrt sieht das genauso aus, C# vereinfacht sehr viel, was man bei C++ auf einmal alles selber machen muss.
Ach und beim C++ lernen muss man sowieso damit kämpfen, dass ein Fehler auch schnell mal das ganze Windows mit reißen kann :D Dagegen ist C# mit .NET zum Glück gut gegen geschützt.

Das Ergebnis sind dann so tolle Fragen in Foren, denen man schon am Code ansehen kann, dass das jemand geschrieben hat, der gerade von C++ zu C# oder umgekehrt umsteigt :D
In so einem Fall kann ich daher auch nur empfehlen, trotzdem die Grundlagen durch zu ackern. Den Teil mit der Objektorientierung kann man ja überfliegen und nach Unterschieden Ausschau halten.


Und ja, ich weiß, dass das nur ein Beispiel war :P
Ich wollte es nur mal richtig stellen, dass der Umstieg da gar nicht so einfach ist, wie man denkt.


doublecross - Mo 04.12.17 12:02

Hallo user profile iconNoah,

und :welcome: hier im Forum.

Deine Frage ist so pauschal natürlich nicht so einfach zu beantworten, da jeder ein anderer Lerntyp ist. Außerdem lernt man neue Sprachen auch ganz anders, je nachdem, wie erfahren man schon mit anderen Programmiersprachen ist.

Ich persönlich lerne neue Sprachen am besten, wenn ich 2 Ding habe 1. ein konkretes Projekt, welches ich mit Hilfe der neuen Sprache umsetze und 2. ein Buch zu dieser.

Meistens überfliege ich die Grundlagen im Buch, einmal kurz, ich Programmiere schon seit über 15 Jahren beruflich und muss mir daher nur einmal einen Überblick über die Schreibweisen der Schleifen, Kontrollstrukturen und anderen standard Mechanismen verschaffen, bevor ich mich dann dran mache das Projekt umzusetzen. Jedes mal, wenn es dann beim Programmieren Hakt, versuche ich die Lösung für mein Problem erst im Buch und nur wenn ich dort nicht fündig werde im Internet zu finden.
Mit ist zwar klar, dass ich eine Lösung meist schneller im Internet finde, mir sind aber die Themen wichtig an denen ich bei der Suche nach der Lösung im Buch noch vorbei komme, denn so gewinne ich nach und nach einen recht ordentlichen Überblick über die Eigenheiten der jeweiligen Sprache, und bekomme ein Gefühl für ihren Umfang. Fast noch wichtiger ist aber, dass mir ein Buch nicht direkt erzählt wie die Lösung aussieht, es "erklärt" mit viel mehr die Werkzeuge mit denen ich an die Lösung komme.

Bei einer Mächtigen Sprache wie C# ist aber bevor du wirklich mit dem Lernen der Sprache anfangen kannst, wichtig, dass du dir einen Überblick über das ganze verschaffst, um entscheiden zu können, in welche Richtung dein Streben gehen soll.

Wenn du ein Windows Programm entwickeln willst, hast du z. B. die Wahl zwischen Winforms oder WPF, zwei völlig unterschiedliche Technologien die Oberfläche zu gestalten. Willst du das dei Programm auch auf anderen Betriebsystemen läuft, musst du dich auf .NET Core Funktionalitäten beschränken, hast dann aber plötzlich gar keine Standartisierte Möglichkeit mehr eine Eingableoberfläche zu gestalten. Aber vielleicht möchtest du ja auch eine Web Anwendung mit ASP.NET, ein Spiel mit Unity oder eine Android App mit Xamarin entwickeln. Das sind alles Richtungen, die du mit c# gehen kannst, du wirst dich entscheiden müssen, welches deine ist, denn alles auf einmal wirst du nicht lernen können.

Auch dafür ist ein konkretes Projekt gut, an dem sich dein Lernprozess orientieren kann. Es schließt schon einmal ein paar Richtungen aus. Willst du z. B. ein Adressbuch für deinen Windows Rechner programmieren, so musst du dich weder damit beschäftigen, wie ein Webserver aufgesetzt sein muss, noch wie man tolle 3D Grafikeffekte in Unity erzeugt. Dafür wird aber die Frage interessant, wie du Datenbanken an dein Programm anbinden kannst usw.

Daher mein Tipp, überlege dir erst einmal ein Projekt, anhand dessen du lernen möchtest. Damit können wir dich wahrscheinlich in eine passende Richtung lenken. Nur wenn du völliger Programmieranfänger bist, was auch wir alle einmal waren, dann wirst du nicht drum herum kommen, dich vorher mit Grundlegenden Programmiertechniken, wie Bedingungen, Schleifen usw. zu beschäftigen.