Was ist schwerer C oder C#?

8 Antworten

C ist eine sehr frühe Sprache, entwickelt um Unix zu programmieren, also ein Betriebssystem. Damit ein geringer Befehlsatz, eher kompliziert, fast schon wie eine Makrosprache auf Assembler.

C# hingegen ist easy, sehr unterstützt, für Windows-Programmierung, viel ist vorprogrammiert, so dass man einfach z.B. nur fertiges Objekt initialisieren und aufrufen muss. C# hat natürlich seine Fallstricke, aber das mit C zu programmieren, wäre weitaus spaßfreier.

C# ist nicht wirklich schwer, man muss einiges lernen, weil es viele Konzepte enthält, aber wenn man sie kennt oder nachschlagen kann, einfach. Und man kann auf Windows dann so ziemlich alles machen.

Woher ich das weiß:eigene Erfahrung – Hobby und teilweise beruflich

Rein von der Syntax bietet C# eben viel mehr Konstrukte als C womit die Syntax in Summe ausgiebiger ist.

Zum Entwickeln von Programmen ist C# aber aufgrund der Bibliotheken etc. oft einfacher als C weil man eben nicht gleich alles wissen muss um es verwenden zu können, außerdem erlaubt die Syntax von C# oft Abkürzungen womit einige Dinge eleganter lösbar sind.

Alles in allem find ich aber keine der beiden Sprachen wirklich schwieriger als die andere. Die Syntax von C# ist ja immerhin die von C angelehnt damit ist der Einstieg in C# leicht wenn man C bereits kennt.

C# ist komplexer, als C.

Bei C musst Du viel mehr selbst machen, als in C#.

C bietet weit mehr Möglichkeiten, aber auch Fallstricke, als C#.

Woher ich das weiß:Berufserfahrung

Es kommt immer darauf an, was man persönlich unter "schwierig" versteht und an welcher Art von Projekt man arbeitet.

C ist in erster Linie eine Art vereinheitlichte Assembler-Sprache und eignet sich von daher vor Allem für sehr hardwarenahe Programmierung. C ist insofern wesentlich einfacher als C#, als man sich viel weniger Elemente behalten muss und wesentlich weniger schnell Probleme mit zufälligen Performanz-Schwankungen (durch den "Garbage Collector" von C#/.NET) bekommt.

C# ist eine High-Level-Sprache, die weitestgehend von der internen Architektur der darunterliegenden Hardware abstrahiert - es wird in eine "Zwischensprache" kompiliert, die dann erst unmittelbar vor der Ausführung für die tatsächliche Maschine fertigkompiliert wird. Auch sonst ist der Abstraktionsgrad sehr groß. Außerdem liefert das .NET-"Framework" buchstäblich Zigtausende von "Klassen" und Hunderttausende von Methoden, über die kein Mensch auch nur annähernd den Überblick haben kann. Auf der einen Seite vereinfacht das das Programmieren erheblich, auf der anderen Seite verliert man sich sehr schnell in dem wuchernden Regenwald-Dschungel von Möglichkeiten.

Beiden gemeinsam ist, dass man sehr leicht eigene Elemente entwickeln kann, die man exakt auf dieselbe Weise wie eingebaute Elemente verwenden kann.

Eine Besonderheit, über die ich regelmäßig stolpere, wenn ich zwischne C/C++ (ja, ich weiß, dass diese Sprachen ebenfalls sehr verschieden sind) einerseits und C# andererseits wechsele, ist, dass C/C++ Zeiger nicht nur kennt, sondern als nahezu allgegenwärtiges Sprachelement integriert hat, während C# (wie jede .NET-Sprache) Zeiger zwar kennt, sich dessen aber "schämt" und den Programmierer stattdessen lieber ständig über die Unterscheidung zwischen "Werttypen" und "Verweistypen" stolpern lässt. Für Anfänger ermöglichen Verweistypen (Referenztypen) zwar eine wesentlich schnellere Einarbeitung, aber wenn man Zeiger erst einmal wirklich verstanden hat (in meinem Fall direkt aus der Maschinensprachen-Programmierung), wirken Referenztypen sehr künstich und eher hemmend als fördernd.

-----

Lass dich nicht von der oberflächlich ähnlichen Syntax täuschen - es sind vom Grundsatz her verschiedene Sprachkonzepte. Ähnlich, wie Türkisch und Deutsch völlig verschiedenen Sprachfamilien entstammen, obwohl sie beide leichte Modifikationen des lateinischen Alphabets verwenden.

Woher ich das weiß:Berufserfahrung – Software-Entwickler

Mir (ich entwickle Software) fiel das Lernen von C# leichter als das Lernen von C, da ich beim Lernen von C# zumindest teilweise auf meine C-Kenntnisse zurückgreifen konnte.

C# basiert ja auf C (eigentlich noch mehr auf C++) und daher sind einige Kontrollstrukturen (for, while, do, if, etc...) fast identisch. Es wird eine Umstellung für Dich sein, aber so ganz bei Null mußt Du nicht mehr anfangen!

Woher ich das weiß:Berufserfahrung