[ANFÄNGER] C# - Projekt zum Start der Programmierung

Es gibt 153 Antworten in diesem Thema. Der letzte Beitrag () ist von AtomiX.

    *Hau* :P
    ​Für den Einstieg würde ich wirklich ne Konsole bevorzugen, wegen den vorher genannten Gründen. Allerdings hat EDR natürlich Recht, ein GUI ist deutlich motivierender als ein schnödes CUI. Wenn es allerdings an der Deklaration einer Variable scheitern würde, dann wäre ne GUI erstmal enorm viel was man nicht versteht. Man wird komplett ins kalte Wasser gestoßen. Direkt ne partielle Klasse da, die erbt auch noch von einer mysteriösen Form. Da steht sogar schon ein Konstruktor der eine vererbte Methode aufruft. Doppelklickt man jetzt auch noch aufn Button wird noch ne Methode mit komischen Parametern eingefügt die von Irgendwas aufgerufen wird, wenn ich den Button drücke. Nur mal als Beispiel. In einer Konsole ist erstmal nur Main() und das wird vom System aufgerufen, fertig. Man muss sich ja keine Monate mitter Konsole beschäftigen, sondern nur soweit bis das Fundament sitzt.
    Hi
    ich bin der Ansicht, dass C# nicht so kompliziert ist, als dass es allzu lang dauert, da wirklich durchzusteigen, wenn man es auf die richtige Art und Weise lernt. Es ist halt schwer, abzuschätzen, was die Dos und Don'ts sind, mit denen man konfrontiert wird, insbesondere bei Windows Forms. Was man hier im Forum ständig antrifft, sind solche Sachen, wie ListBox.Items.Add oder dergleichen, die restlos ersetzt werden sollten durch Datenbindung.
    WPF ist wesentlich mächtiger, was Customization angeht, d.h. du hast weitaus mehr Möglichkeiten, Steuerelemente elegant zu verwalten, aber solltest dich strikt an das MVVM-Pattern halten, welches du erst mal verstehen musst. Wenn du dich nicht ans MVVM-Pattern hältst, lernst du auch nicht, WPF elegant anzuwenden. Ähnlich sieht es bei Windows Forms auch aus. Es gibt ein paar Paradigmen, die dort sehr oft anzutreffen sind, wie bspw. eben das MVC (welches es in WPF nicht mehr gibt). Allerdings hast du in Windows Forms eine Uralttechnologie, die unelegant und von der Konzeption her veraltet ist.

    In Windows Forms sind Dinge vermengt, die man strikt trennen sollte: Ein Designer müsste zwangsweise programmieren können, um eine Oberfläche zu designen, die Steuerelemente sind komplett starr (d.h. du kannst z.B. nicht einfach mal schnell ein ListView umgestalten, etc.).

    Was meines Erachtens aber auch weitaus wichtiger ist, als die GUI, ist der Code, der dahinter steckt und die Architektur, die du im Programm auffährst. Ich sehe ein Programm eigentlich nur als Quintessenz dessen an, was man sich zuvor überlegt hat; der gedankliche Prozess läuft ja bereits vorher ab (Was soll das Programm können? Was setze ich wie um? Welche Möglichkeiten habe ich zur Hand? Kann ich einen Prozess elegant modellieren?). Wichtig ist, dass man das Werkzeug - Programmiersprachen, SQL, usw. - gut beherrscht und sich auskennt und dabei sind möglichst viele Technologien hilfreich.

    Insofern, als mein Fazit: Es schadet nicht, sich in Windows Forms mal ein wenig schlau zu machen, mal zu schauen, wie das mit den Events gelöst wird, usw. aber ich würde dann sagen, dass WPF zu lernen die geschicktere Wahl ist, gerade weil es keine veraltete Technologie ist und so eine riesige Zahl an Möglichkeiten bietet, für die du in Windows Forms nur zu oft Stunden an Arbeit investieren musst (du kannst aber Windows Forms auch dazu nutzen, um C# schnell zu lernen. Schwer ist es auf jeden Fall nicht... Ein Buch brauchst du auch nicht. Außerdem würde ich empfehlen, möglichst schnell auf WPF umzusteigen). Viel wichtiger finde ich, dass du die anderen modernen Technologien und Möglichkeiten kennenlernst, sobald du C# ausreichend kannst.
    Lass dich auch nicht davon abschrecken, dass du gleich zwei Dinge lernst: XAML und C#. XAML ist recht einfach und wenn man es Schritt für Schritt aufzieht, sehe ich auch keinen Grund, warum es dir Schwierigkeiten bereiten sollte. Du kannst ja auch hier im Forum nachfragen, wenn dir etwas nicht klar ist. Es macht aber für mich dennoch Sinn, dass du die Grundlagen in C# kennst (d.h. Klassen, Abstraktion, Methoden, Felder, Eigenschaften, Interfaces, Generika, Ereignisse und Delegatn, usw. einordnen und selbst programmieren kannst).

    Außerdem bin ich mir nicht sicher, ob es sinnvoll ist, ein Buch in C# zu kaufen. Ich kenne viele, die die ersten paar Kapitel - sprich: Einführung - durchgearbeitet haben und dann einfach draufhin gelernt haben, mit (leider oft schlechten) Tutorials und es dann nur als Referenz verwendet haben, um gewisse Dinge nachzuschlagen. Ich kenne das Buch übrigens nicht und kann es daher nicht beurteilen, weiß aber, dass die Fachliteratur oftmals Inhalte eher mäßig vermittelt. Rein vom Gefühl her würde ich eher Microsofts eigene Bücher lesen.

    Ach ja: Ggf. wäre es aber auf jeden Fall sinnvoll, das ganze mit einem Plan anzugehen, der den Lernprozess beschreibt. Da kann dir bestimmt auch jemand hier helfen.

    Viele Grüße
    ~blaze~

    PS: Konsolenanwendungen halte ich für eine Zumutung an meine Benutzer. Für fortgeschrittene User kann man sowas zusätzlich anbieten, aber für andere Endanwender würde ich das auf gar keinen Fall verpflichtend anbieten.
    Ok. Danke für deinen langen und ausführlichen Text.

    Du hast ja geschrieben, dass man nicht zwingend ein Buch brauch, aber wie soll man dann C# lernen? :D

    Wenn du ein YT TuT hast dann kannst du mir das gerne zukommen lassen, weil ich habe mir eins angeguckt, aber ich kann da nicht wirklich was mit anfangen,
    weil für mich ist es wichtig, dass ich weiß für was ich die Methode oder ähnliches brauch.

    Das ich nicht einfach nur hingeklatscht bekomme, ja das muss so und dann geht das.

    Weil mein Ziel ist es ja nicht nur ab zu tippen...
    Mit Freundlichen Grüßen
    AtomiX
    Viel lesen, ausprobieren und tun :)

    Wie gesagt, ein gutes Buch lesen, ist nie verkehrt. Dann an den PC und einfach machen. Fehler machen, fehler versuchen zu verstehen, aha Effekt und schon hast du was gelernt. So kann man man besten lernen, genug Theorie + Praxis und schon bist du auf einem guten Weg C# zu lernen. Das gilt im Prinzip für alles, was man lernen will, ob C#, Java und oder ganz andere Sachen wie 3DSMax, usw.

    Tun, lernen, verstehen = der beste Weg :)
    Ihr sucht Webspace für eure Projekte? Dann sagt bescheid - kostenfrei und ohne Werbung!
    Ok. Alles klar :)

    #UPDATE wie habt ihr eigentlich das Programmieren gelernt?
    Ist es ratsam das mit YT-Videos zu machen? Und das abzutippen und sich das zu verinnerlichen und probieren eigene Sachen zu schreiben?
    Und natürlich aus den ein oder anderen WIki lesen.
    Mit Freundlichen Grüßen
    AtomiX

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „AtomiX“ ()

    Programmieren gelernt habe ich, indem ich als 11-jähriges Skriptkiddie immer Viren schreiben wollte um andere Leute damit zu nerven. Das heißt soviel wie alles im Internet Copy-Pasten und froh sein, dass es irgendwie funktioniert. Ein paar Jahre später habe ich einfach angefangen das Internet nach richtigen Ressourcen zum Lernen zu durchsuchen, statt einfach nur zu Copy/Pasten, d.h viel OOP und die Basics. Ansonsten einfach nur so oft programmieren wie es geht, weil man nur so besser wird. Natürlich hat auch das Forum hier sehr geholfen.

    Edit: Natürlich wollte ich auch eine 3D-Gameengine schreiben, so wie jeder Programmieranfänger sich das wohl schon vorgestellt hat.

    Zu deiner Youtubefrage:

    Die meisten Youtubevideos sind leider furchtbar, die einzigen die ich gesehen habe und gut fand waren die von @ErfinderDesRades. Die kannst du dir angucken wenn du möchtest. Abtippen ist meiner Meinung nach das schlechteste was du tun kannst. Du verschwendest nur deine Zeit, wenn du nicht lernst die Konzepte an sich zu verstehen. Deshalb wird dir hier auf dem Forum kaum jemand Copy/Paste Code zur Verfügung stellen, da du etwas LERNEN sollst. Fang an mit Schleifen, If/else etc und anschließend versuch dich an OOP, Delegaten etc. Es gibt so viele Ressourcen im Internet, meiner Erfahrung nach sind die besten auf Englisch.

    Ok.
    Danke für deine Antwort.

    Hast du den "Resourcen" wo ich nachlesen könnte speziell für C#?
    Außer das Forum ? :D

    Sowas wie bei PHP
    php.net/
    Wo ich nur ein paar Funktionen/Methoden, Klassen usw. finden kann ?
    Und das es schön übersichtlich ist, weil das würde mir das schon vereinfachen :D
    Mit Freundlichen Grüßen
    AtomiX
    Ok.
    Ich danke dir ;)

    Also jetzt habe ich sogesehen meine "Ressourcen" wo ich zusagen mir Sachen beibringen kann oder nachlesen kann.

    ABER wie fange ich jetzt am besten an, ein beliebiges Projekt zu starten?
    Weil das Problem ist, welches ich habe: Den "Startschuss" zu finden.

    Deshalb meine Frage an euch, was würdet ihr mir empfehlen zu Coden, was für Einsteiger gut ist?
    Weil ich will ja ein Ziel haben ;)
    Mit Freundlichen Grüßen
    AtomiX
    Erstmal verweise ich dich hierauf: [Sammelthread] Programmieren, aber was? (Programmideen)
    Es kommt darauf an, an welcher Grundlage du gerade arbeitest.

    Beispiel:
    Du lernst gerade etwas über die Math-Klasse. Da bietet sich doch ein Taschenrechner an. Da kannst du Math-Funktionen benutzen, lernst Operatoren wie % (modulo) kennen etc.

    Anderes Beispiel:
    Eine zufällige Zahl wird generiert und der Nutzer muss sie erraten. Er erhält eine Meldung wenn die Zahl zu groß/klein/richtig ist. Da lernst du: if/else/switch, while/for, die Random-Klasse etc.

    Wenn diese Basics sitzen, dann könntest du ein Projekt mit OOP starten. Ein Tic-Tac-Toe würde sich anbieten, oder Conways Game of Life (mein Favorit :) )

    TheVBTutorialsVB schrieb:

    Anderes Beispiel:
    Eine zufällige Zahl wird generiert und der Nutzer muss sie erraten. Er erhält eine Meldung wenn die Zahl zu groß/klein/richtig ist. Da lernst du: if/else/switch, while/for, die Random-Klasse etc.


    Kann es sein das das in jeder Programmiersprache immer das erste ist?
    Weil genau damit habe ich auch bei PHP angefangen :D
    Mit Freundlichen Grüßen
    AtomiX
    merkst du, wie du dich im Kreis drehst?
    Weil deine Frage - post#70!! - ist bereits in post#2 hinreichend beantwortet.
    Aber du willst immer mehr Antworten und Antworten und Antworten.

    Und natürlich wird dir das keinen Deut nützen.
    Es wird dir sogar schaden, deine Kreisel-Fragerei, hier im Forum.
    Jdfs. bei mir bist du inzwischen als Troll abgestempelt.

    Aber trotzdem findich, sollten wir alle da unbedingt weiter mitmachen, beim Antworten-Karrussell - weil die 100-post-Marke scheint in erreichbarer Nähe.

    Ich finde auch, Marcus Gräfe sollte da einen Sonder-Preis für ausloben - oder was meint Ihr? 8o

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Ich weiß das es beantwortet wurde.

    Weil ich finde es irgendwie lustig, dass man am meisten mit diesen Zahlenraten anfängt, was auch überhaupt nicht verkehrt meiner Meinung ist.

    Also ich habe erstmal keine Frage mehr ;)
    Mit Freundlichen Grüßen
    AtomiX
    Wie ich Programmieren gelernt habe:
    1. Ich habe angefangen Programmieren zu lernen und bin nicht drum rum geeiert
    2. Ein C# Buch gekauft
    3. Besagtes Buch durch gearbeitet (nicht nur lesen und abtippen)
    4. Kleine Testprojekte zu dem Themen im Buch erstellt (for Schleife, Array, wo deklariere ich was Methoden usw.)
    5. Hier im Forum, in anderen Foren, in der MSDN und mit google einzelne Themen Recherchiert
    6. Und immer wieder Testprojekte erstellt und Kleinigkeiten ausprobiert bis ich verstanden habe, was wann und warum passiert
    7. Keine YouTube Tutorials angeschaut

    Wer ein Paradebeispiel sucht, für Leute die mit Büchern programmieren gelernt haben, das wäre dann ich ;)
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    @ErfinderDesRades

    Ich wusste nichtmal, dass die Frage beantwortet wurde, habe bei Post 30 den Überblick verloren ^^

    @AtomiX

    Allerdings hat er Recht, du musst langsam echt mal anfangen, sonst hast du bald so viele Antworten, dass du gar nichts lernst.

    Ja, aber ich denke mal ich werde das so ähnlich wie Mo machen, einfach Anfang und so nach dem Motto "Learning by Doing"
    Nachlesen, Buch kaufen, dass lesen testen herumspielen, selbst was finden und mit einbeziehen.

    Nebenbei Testprojekte machen wo ich alles ein wenig testen kann.
    Mit Freundlichen Grüßen
    AtomiX
    Ich würde vorschlagen, dass du dir einen Plan machst, wie es für dich angenehm ist, zu lernen. Da können dir auch die Leute hier im Forum Infos liefern zu den Themen, die du dir unbedingt anschauen solltest und ggf. Anregungen oder Tipps geben, wie du es dir am besten beibringst.
    Eine mögliche Vorgehensweise wäre vielleicht:

    - Stichpunktartig eine Liste über die Dinge aufstellen, die man lernen möchte
    - Eine Beschreibung durchlesen und zu den Stichpunkten was schreiben, was es knapp zusammenfasst, muss auch nicht allzu detailliert sein
    - Die Stichpunkte weiter unterteilen, bis ich glaube, es in sinnvolle Fragmente zerlegt zu haben und den zweiten Schritt dafür wiederholen
    - Abhängigkeiten feststellen und damit die Reihenfolge herausarbeiten, die mir am sinnvollsten erscheint (Mit Abhängig meine ich z.B. Vererbung basiert auf Klassen ==> erst mal Klassen ansehen)
    - Ein kleines Projekt beginnen und dort nach-und-nach die obigen Punkte herausarbeiten und dabei weiter nachforschen mit z.B. folgenden Fragen im Hinterkopf: Warum ist das so? Kann man das anders lösen? Geht es eleganter? Wenn das so geht, geht dann ... auch?
    - Immer wieder kurz festhalten, was man gelernt hat (z.B. nach einer Stunde und am Ende des Projekts) (wobei ich nur grob zusammenfassen würde, was ich gelernt habe, also z.B. nicht die Methodennamen)
    - Wichtige Gedanken/Konventionen/"Gesetze", die man nicht vergessen darf in einer Liste zusammenfassen
    - Vokabeln separat herausschreiben (z.B. was "Polymorphie" bedeutet) und die Definition dazuschreiben

    Auch Sprechweisen sind nicht an allen Stellen unwichtig, wenn man in der Branche arbeitet, wobei man das an der Universität genauer nimmt, als im Arbeitsleben. Dort sollte man aber dennoch in der Lage sein, sich zu verständigen.

    Wichtig ist, dass man immer aus verlässlichen Quellen lernt. Es kursiert so viel Quatsch im Internet. Es gibt sehr viele Leute, die ihre Unwissenheit in schöne Worte kleiden und damit andere aufs Glatteis führen, oftmals ohne es selbst zu wissen.
    Youtube halte ich übrigens nur bedingt für eine gute Quelle: Gut sind idR. vertrauenswürdige Quellen (Microsoft, usw.). Allerdings gleich eine Vorwarnung: Microsoft hat selbst auch nicht immer ganz so gute Videos, hatte auch schon ein paar Flops geschickt bekommen.

    Edit: Übrigens streube ich mich auch deswegen häufig gegen Bücher. Das, was mir eigentlich wichtig ist (Architekturmuster, Dos/Don'ts, Konventionen, usw.) fehlt oftmals vollständig - auch bei guten Büchern ist mir das bereits passiert - und im Internet kann ich mir wesentlich schneller die Ressourcen heraussuchen. Außerdem lerne ich halt zumeist nach Plan, d.h. ich mache mir zu jedem Thema noch kurz Gedanken, wie es wohl am besten zu lernen wäre.

    Viele Grüße
    ~blaze~

    PS: Eine Frage ist nicht immer dadurch beantwortet, dass eine Person ihre Meinung kundtut, sondern oftmals ist es für den Threadersteller ausgesprochen wichtig, verschiedene Meinungen auszuwerten und für sich die schlüssigste/sinnvollste Kombination zu wählen. Es gibt kein Patentrezept für die perfekte Lernstrategie, die für jede Person gleich aussieht. Jeder lernt anders.
    Wenn man es ernsthaft angehen will, geht das nur mit einem strukturierten und sinnvoll aufgebauten Lernplan (wie @~blaze~ bereits geschrieben hat). Daher auch meine Empfehlung zum Buch. Dort wird mit Datentypen Angefangen und baut dann nach und nach auf die behandelten Themen auf. Wenn man diesen Plan bereits hat, brauchts kein Buch. Nur woher diesen Plan nehmen?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mrMo“ ()

    Naja, ich lerne halt aber auch schlecht mit den Lernplänen anderer, muss ich dazu sagen. Ich tue mir wesentlich leichter, wenn ich mir die Sachen selbst vorbereite, habe ich gemerkt. Kann natürlich aber auch sein, dass ich bei dem Thema nur schlechte Bücher verwendet habe, aber wirklich zu etwas geführt hatte das damals nicht. Aber ich hatte damals auch genug Zeit, es mir so beizubringen, wie ich es gemacht hatte: Learning by doing. Ist halt im Nachhinein ein riesiger Zeitaufwand mit relativ unausgegorenem Resultat gewesen.

    Viele Grüße
    ~blaze~