Magst du die Programmiersprache C# und warum (nicht)? Wie findet man am besten einen Einstieg?

8 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

C# ist eine sehr durchdachte, dem Stand der Technik entsprechende Programmiersprache, mit der sich viel machen lässt. Es ist auch absehbar, dass C# auch in Zukuft relevant bleiben wird, weil es die Hauptsprache des .NET-Infrastruktursystems ist. Es ist viel mit C# programmiert und alle Erfahrung (etwa auch mit Java, C und C++) lehrt uns, dass eine Programmiersprache, mit der viele Programme geschrieben wurden, ihre Bedeutung über lange Zeit erhält, weil alle diese Programme so lange als irgend möglich betriebsfähig erhalten werden müssen. Erhaltung der Betriebsfähigkeit bedeutet aber die Anpassung an neu hinzukommende Anforderungen (oft "Altlastenpflege" genannt).

Es ist also mit Blick auf die Berufsausübung keine schlechte Idee, C# zu lernen und sich darüber hinaus auch mit den wichtigsten Klassen von .NET vertraut zu machen.

Ich halte es für wenig realistisch, C# in zwei Wochen zu lernen. Wenn ich mir ins Gedächtnis rufe, dass es vor mehr als 40 Jahren üblich war, für die Einarbeitung in eine so kleine Programmiersprache wie Algol 60 ein ganzes Semester (im WS also 15 Wochen) aufzuwenden und dass die Kollegen aus der Informatik sich sogar 2 Semester lang mit den Feinheiten von Algol 68 zu befassen hatten, möchte ich doch sehr gerne wissen, mit welchen innovativen Unterrichtsmethoden es heute möglich ist, eine viel umfangreichere Sprache wie C# in nur 2 Wochen zu vermitteln. Ich vermute stark, dass man sich darauf verständigt hat, es mit den allereinfachsten Grundlagen gut sein zu lassen und im Ernstfall im Trial-and-Error-Verfahren so lange zu compilieren, bis "es läuft". Das ist natürlich unbefriedigend und persönlich würde ich die vertiefte Beschäftigung mit einer dem Stand der Technik entsprechenden Programmiersprache vorziehen.

-----------------------------------------------------------------------------------------------------

Zur Frage nach einem raschen Einstieg:

Da in 2 Wochen nicht viel zu reißen ist, muss man sich für den raschen Einstieg auf sehr kleine Aufgaben beschränken. Spontan fallen mir ein:

  • Tabellieren einer rellwertigen Funktion einer reellen Variablen.
  • Lösung einer quadratischen Gleichung mit reellen Koeffizienten.
  • Programmierung eines einfachen Iterationsverfahrens (Heronverfahren oder Newton-Verfahren)
  • Progammierung eines einfachen Verfahrens für das numerische Integrieren (z.B. Trapezverfahren)

Das sind Aufgaben aus der (Schul-)Mathematik. Solche Aufgaben haben den Vorteil, wohldefiniert und sehr überschaubar zu sein. Ein funktionsfähiges Programm ist typerischerweise nicht länger als eine Seite und es ist mit bekannten Beispielaufgaben rasch zu testen.

Zur Informatik gehört eigentlich auch das Arbeiten mit Listen und ein Informatiker sollte während seiner Ausbildung mindestens einfach und doppelt verkettete Listen implementiert haben, aber das wird man in einem 2-wöchigen Crashkurs nicht unterbringen können.

Wünschenswert wäre auch, die Grundlagen der Fensterprogrammierung kennenzulernen. Das ist allerdings etwas mehr Aufwand, da hier die Einarbeitung in Elemente der .NET-Bibliothek erforderlich ist. Als einfachste Übungsaufgaben fallen mir ein:

  • Ein Dreieck in ein Grafikfenster zeichnen.
  • Einen diagonal verlaufenden Strich in ein Grafikfenster zeichnen.
  • Ein Fenster mit einem Schieberegler und einem Grafikwidget ausstatten. In das Grafikwidget wird ein diagonal verlaufender Strich gezeichnet; der Schieberegler stellt die Strichbreite ein.

Wenn ich mich in eine neue Programmiersprache einzuarbeiten hatte, habe ich immer danach gestrebt, zuallererst das Diagramm einer einfachen Funktion zu zeichnen. Das ist natürlich eine persönliche Vorliebe. Es lohnt sich aber, für die Einarbeitung in neue Sprachen irgendwelche Vorlieben zu entwicklen.

Woher ich das weiß:Berufserfahrung – Berufstätigkeit als Software-Entwickler
KathaHohenfels 
Fragesteller
 05.11.2022, 09:54

"möchte ich doch sehr gerne wissen, mit welchen innovativen Unterrichtsmethoden es heute möglich ist, eine viel umfangreichere Sprache wie C# in nur 2 Wochen zu vermitteln"

dazu gibt es gar keine Methoden. Die Vorlesung ist so aufgebaut, dass wir verschiedene "Themen" wie z.B. objektorientierte Programmierung oder Multithreading haben und dann zu dem Thema in allen 4 Programmiersprachen abwechselnd und kunterbunt gemischt Codebeispiele bekommen. Über diese "Konzepte" wie z.B. Multithreading schreiben wir dann eine Klausur. In die Vorlesung integriert ist jedoch auch das Praktikum, das ca die Hälfte der Note ausmacht, wo wir pro Programmiersprache eine Aufgabe bekommen und ab dem Zeitpunkt, wo wir die Aufgabe wissen, dann knapp 2 Wochen zur Implementierung haben.

Wie wir uns in die Programmiersprache einarbeiten und ob überhaupt oder ob wir einfach drauflosprogrammieren ohne Vorwissen, ist uns überlassen...wie es der Zeitrahmen mit all den anderen Abgaben, die wir ebenfalls haben, eben zulässt.

Vielen vielen Dank für deine Inspiration bezüglich der Aufgaben!

Wir müssen jetzt mit C# eine Aufgabe zu Bildfaltung machen. Habe es noch nicht ganz angesehen, aber das wäre die Aufgabe, die wir in 10 Tagen abzugeben haben. Dazu haben wir aber natürlich ein 10-seitiges Aufgabenblatt, in dem detailliert drinsteht, was wir zu implementieren haben.

1

Keine Ahnung, was Du unter "Grundlagen" der von Dir genannten Sprachen verstehst.

Grundlagen bedeutet für mich verstanden zu haben, wie Programmieren grundsätzlich funktioniert.

Die Basiselemente jeder Programmierersprache: Datentypen, Variablenzuweisungen, Vergleiche, Schleifen sind immer gleich. Lediglich die Syntax kann etwas differieren. Bei C-Syntax (C, C++, C#, Java, JavaScript usw.) gibt es diesbezüglich nahezu keine Unterschiede. Insofern dürfte das erlernen von C# überhaupt kein Problem darstellen.

Da Du Java kannst sollte es nichtmal Probleme hinsichtlich der zu inclutierenden (Basis)Bibliotheken geben. Da liegt der Unterschied äußerlich lediglich im Begriff using <-> include. Selbst die Namen der Bibliotheken sind weitgehend ähnlich.

Das Du so "Syntaxverschiedene" Sprachen wie Java und Python versucht hast zu erlernen , könnte ein Symptom wahlloser "Sprachenbullemie" sein ohne das "gemeinsame" erkannt zu haben.

Deshalb muss ich C# nun innerhalb von 2 Wochen können und ein Projekt dazu abgeben.

Für jemanden, der bereits Java kann sollte das überhaupt kein Problem darstellen. Abgesehen von etwas "Zucker" in den C#-Compilern und der Handhabung des Backslash , oder "boolean vs. bool, ist C#-Syntax so ähnlich, das man theoretisch Teile des Quellcodes 1 zu 1 kopieren könnte.

C# ist verglichen mit C/C++ ein Kinderspiel . Vieles was man bei den "Namensvettern" noch selbst organisieren musste erledigt der Compiler und die Laufzeitumgebung von selbst. Der Versuch gesamte .Net-Framework zu lernen wäre allerdings eine Sisyphus Aufgabe. Da sollte man sich auf die für das aktuelle Projekt nötigen Klassen und Methoden beschränken. In dieser Hinsicht "spicken" auch Profis.

Als Student sollte man die Fähigkeit besitzen derart einfache syntaktische Ähnlichkeiten zu erkennen.

nicht die größte Lust, C#...

Nenne das Kind doch beim Namen... Faulheit.

Wieso hast Du überhaupt ein Studium in dieser Richtung begonnen, wenn Dich eine winzige Variation bereits zum straucheln bringt 😅?

Im späteren Berufsleben als Programmierer bekommst Du vorgegeben in welcher Sprache ein Projekt zu erstellen ist. Da kannst Du Dich auch nicht hinterm Ohr kratzen "öhhhm...keine Lust, weiß nicht wie das geht"... Entweder Du bist Programmierer oder "tschüss".

Niemand wird Dir verübeln, wenn es für einen Pythonprogger etwas Zeit benötigt dämliche Gewohnheiten loszuwerden.

Der Wechsel zwischen Sprachen ist jedoch kein Wechsel zwischen Denkweisen. Und eine Schleife ist in allen Sprachen eine Schleife, egal ob Assembler, Pascal, C oder Brainfuck.

KathaHohenfels 
Fragesteller
 02.11.2022, 22:52

"Das Du so "Syntaxverschiedene" Sprachen wie Java und Python versucht hast zu erlernen , könnte ein Symptom wahlloser "Sprachenbullemie" sein ohne das "gemeinsame" erkannt zu haben."

Das war so von der Hochschule vorgegeben.

"Nenne das Kind doch beim Namen... Faulheit."

Nein, tatsächlich bin ich einfach überfordert. In Internetworking nutzen wir Java, in INF3 alle 2-3 Wochen eine neue Programmiersprache, in einem weiteren Modul lernen wir nun JavaScript und nutzen React.

Und zusätzlich dazu helfe ich den Erstsemestern mit C und Python.

Mir ist das aktuell bisschen zu viel. Ich habe das Gefühl, mich auf nichts richtig einlassen zu können, da dann schon das nächste um die Ecke kommt. Habe mir C# nun auch angesehen und sehe ein, dass es sehr ähnlich zu dem ist, was ich bereits gelernt habe. Dennoch habe ich kaum Zeit, mich auch nur ein paar Stunden mit einer Sache wirklich zu beschäftigen, da muss ich dann auch schon wieder umdenken und aufpassen, dass ich nichts durcheinanderbringe...

Tatsächlich möchte ich nicht in der Softwareentwicklung arbeiten, wenn ich mich dort so überfordert fühlen muss, wie ich mich aktuell fühle. Dann bin ich wohl tatsächlich nicht geeignet und sollte wohl das Studium abbrechen, da ich tatsächlich am Straucheln bin.

1
regex9  05.11.2022, 10:24
@KathaHohenfels
Mir ist das aktuell bisschen zu viel. Ich habe das Gefühl, mich auf nichts richtig einlassen zu können (...)

Das ist verständlich. Wichtig wäre bei der kurzen Zeitspanne nur, dass du dich schnell in die Grundlagen (also oberflächlich) einfindest. Eine wirkliche Einarbeitung in eine Sprache kann nur über einen längeren Zeitraum mit mehr praktischer Anwendung erfolgen. Dann merkt man auch, wo Unterschiede in Konzepten, Konventionen, Syntax und Verhalten zwischen verschiedenen Sprachen (Java, C, C#, usw.) liegen.

Im Berufsleben hast du die Möglichkeit, Jobstellen zu finden, bei denen du dich auf eine Programmiersprache fokussieren kannst. Wenn andere Programmiersprachen zusätzlich zum Einsatz kommen, solltest du zwar nicht gänzlich aufgeschmissen sein und so wie im Studium eine erste Einarbeitung innerhalb weniger Wochen schaffen, aber dennoch ist klar, dass sich danach die Arbeit noch immer nicht so schnell erledigen lässt, wie von einem Entwickler, der schon jahrelang mit dieser jeweiligen Programmiersprache arbeitet. Das Gleiche gilt für etwaige Frameworks o.ä. komplexere Technologien.

2
orochi02  23.11.2022, 11:17
@KathaHohenfels

die meisten it firmen haben eine hauptprogrammiersprache, in anderen worten würdest du nicht alle 2 wochen eine neue lernen müssen!

1

CSS und HTML sind keine Scriptsprachen sondern Auszeichnungssprachen. JavaScript, Python und PHP sind bspw. Scriptsprachen. :D

Ich denke du wirst mit C# wenig Probleme haben da es Java doch sehr ähnlich ist und auch Microsofts Antwort auf Java darstellen soll.

Am Ende wird es wohl helfen sich eine Aufgabe zu suchen, welche man in der Sprache einmal umsetzen möchte.

KathaHohenfels 
Fragesteller
 01.11.2022, 15:12

Naja, ich muss von der Hochschule aus ja jetzt sowieso was in C# programmieren und in 2 Wochen abgeben...

Was mich so ärgert ist, dass wir pro Programmiersprache nur ca 2 Wochen zum Lernen + Aufgabenbearbeitung haben. Aber naja, ich mache es einfach mal und danach werde ich sehen, wie sehr es mir weitergeholfen hat...

1
dnpdnp2  01.11.2022, 15:21
@KathaHohenfels

Wünsche dir dabei viel Erfolg! An sich bleibt die Logik ja identisch, nur Syntax und Bibliotheken sind anders. Aus meinem Berufsleben kann ich nur sagen, das es öfter mal vorkommen kann das du mitten in einem Projekt dir fremde Sprachen quer lesen können musst und ggf. auch ändern/anpassen musst. Mit Bibliotheken ganz genauso, sogar noch viel häufiger, was ich persönlich als komplizierter und schwieriger empfinde da neue Bibliotheken doch sehr viel mehr mitbringen als eine neue Sprache. :D

Wenn ich dir irgendwie wo bei helfen kann sag ruhig bescheid, sowas mach ich ganz gerne.

2
regex9  01.11.2022, 16:01
CSS und HTML sind (...) Auszeichnungssprachen.

Auszeichnungssprachen sind dazu da, Daten zu strukturieren und mit Metainformationen auszustatten, die ihre Bedeutung beschreiben / sie in einen inhaltlichen Kontext setzen. Das trifft nur für HTML zu. CSS ist eine Stylesheetsprache, die nur der visuellen Formatierung dient.

1

Ich finde das . Net-Framework sehr gut verständlich und C# auch. Bei VB wäre ich eher genervt