Ich versteh den Sinn von C-Pointern immer noch nicht. Ob ich jetzt *ptr oder gleich var nehm ist doch bums.
[geteilt] C-Diskussion
-
-
Ich versteh den Sinn von C-Pointern immer noch nicht. Ob ich jetzt *ptr oder gleich var nehm ist doch bums.Ich hasse Zeiger
-
Ich versteh den Sinn von C-Pointern immer noch nicht. Ob ich jetzt *ptr oder gleich var nehm ist doch bums.Referenzen als Alternative, um das Umkopieren größerer Datenmengen wie Strings oder fetter structs (bzw. Klassen) für Methodenaufrufe zu vermeiden, gibt es nur in C++. Allerdings ist damit auch keine Pointer-Arithmetik möglich.
-
Letztendlich ist auch fast jede Array-Implementation intern auf Pointern aufgebaut. Wenn man zB aus .net ein Array (nicht einen Wert daraus) in eine C-Funktion übergibt, kommt dort ein Pointer an, mit dem sich im verwalteten Speicher schreiben lässt. Für die alten C-Strings gabs auch erst mal keine Alternative, da war while (*ptr) { ptr++; } ne elegante Möglichkeit, alle Buchstaben abzuarbeiten
-
Ich finde C einfach nur unnötig kompliziert im Gegensatz zu andern Sprachen
Die Pointer konnte ich nie ab.
-
Ich finde C einfach nur unnötig kompliziert im Gegensatz zu andern SprachenDie Pointer konnte ich nie ab.
Ich finde C# und java weitaus besser als C.
-
C# finde ich auch deutlich angenehmer als C. Mit Java habe ich mich nie wirklich beschäftigt und kann daher dazu nichts sagen.
-
C# ist sehr an die Syntax von Java angelegt...
-
Man muss hier unterscheiden zwischen Sprache (Syntax) und ihrem Denkmodell (Semantik). Als reine Syntax-Sprache ist C eine der simpelsten Sprachen die es gibt. Nur Java ist vermutlich ähnlich simpel, während Sprachen wie C#, C++ oder JavaScript viel kompliziertere Ausdrücke erlauben.
Nur das Denkmodell von C ist halt wirklich sehr Lowlevel, und man muss mal etwas grundsätzliche Computerarchitektur verstanden haben, damit man auch versteht warum sich einfach aussehender C-Code dann doch radikal anders verhält als praktisch identischer C#/Java-Code.
Glaube die meisten Leute halten C aus den gleichen Gründen für unnötig kompliziert wie sie JavaScript für undurchdacht halten: Sie glauben, sie würden die Sprache können, weil sie sieht ja so aus wie das was man kennt. In Wirklichkeit ist das Denkmodell aber ein anderes.
-
Nur das Denkmodell von C ist halt wirklich sehr Lowlevel, und man muss mal etwas grundsätzliche Computerarchitektur verstanden haben, damit man auch versteht warum sich einfach aussehender C-Code dann doch radikal anders verhält als praktisch identischer C#/Java-Code.
Ich finde C nicht schlecht , aber manche dinger sind da so kompliziert, da bleib ich doch lieber bei moderneren Sprachen.
Das Lowlevel zeigt sich schon alleine daran, dass man in C ohne Probleme selbst Assembler schreiben kann, die wohl niedrigste Sprache.
C ist halt so eine Mischung aus High- und Lowlevel. Ich habe x mal versucht C durchzukauen, aber bin dann doch immerwieder gescheitert -
Come get some
-
C# und Java haben doch jede Menge zeug das C nicht hat... allein bis man den ganzen OOP-foo wirklich verstanden hat braucht man doch Jahre.
-
C# und Java haben doch jede Menge zeug das C nicht hat... allein bis man den ganzen OOP-foo wirklich verstanden hat braucht man doch Jahre.Die Semantik von C ist wesentlich einfacher, ja.
Aber Java ist trotzdem von Semantik und Syntax eine der (sehr) leichten OOP-Sprachen, die sehr leicht zu erlernen sind.
Liegt vermutlich daran, das Java (im Vergleich zu anderen Sprachen) relativ wenig Schlüsselwörter und Anwendungsfälle für "spezielle Lösungen" hat und somit der Code - in dieser These [1] - auch leichter verständlich ist.
1: Mir ist klar das Java damit auch natürlich teilweise code intensive Lösungen benötigt, die in anderen Sprachen leichter zu realisieren sind.
-
C# und Java haben doch jede Menge zeug das C nicht hat... allein bis man den ganzen OOP-foo wirklich verstanden hat braucht man doch Jahre.OOP finde ich weitaus innovativer als nicht objektorientiert. Und um das zu verstehen braucht man auch nicht lange.
Grundsätzlich könnte man in Java C# oder etc. auch nicht objektorientiert programmieren, halt dann mit static und so.
Als ob Vererbung, Objekte und Polymorphie so schwer sind? -
ja logisch ist C# innovativer als eine Sprache, die schon über 40 Jahre auf dem Buckel hat
so schwer zu verstehen sind pointer und malloc ja auch nicht -
C ist halt so eine Mischung aus High- und Lowlevel.
Exakt. C ist portables Assembler ohne den Boilerplate. Es macht daher auch nur dort Sinn, wo man sonst auf Assembler zurückgreifen müsste: Betriebsystemprogrammierung, Hardwareprogrammierung, und teilweise High-Performance-Computing.Es gibt gute Gründe warum jede jüngere Programmiersprache inzwischen Referenzen und Garbage Collection anbietet, weil man sich da bei den meisten Programmierproblemen auch nicht nicht drum kümmern will. Garbage Collection ist bei Hardwareprogrammierung dann aber wieder ein Hindernis.
-
Aber Java ist trotzdem von Semantik und Syntax eine der (sehr) leichten OOP-Sprachen, die sehr leicht zu erlernen sind.Nö. Java ist ein einziger Clusterfuck. Eiffel wäre ne einfach zu lernende OOP-Sprache. Was muss man denn alles kapieren bis man in Java "Hello World" versteht?
- Klassen
- Objekte
- Methoden
- Felder (out von System)
- Dot-notation für Felder und Methoden (System.out.println)
- Typen (void, String)
- Arrays (String[] args)
- Statische Methoden
- public/private respektive Unterschied zwischen Interface/ImplementationDagegen C:
- Typen
- Funktionen
- Rückgabewerte
- Pointer
- Includes -
Nicht fürs "Hallo Welt", aber als essentieller Teil der Sprache darf man bei C Makros nicht vergessen.
-
so schwer zu verstehen sind pointer und malloc ja auch nichtFür Personen, die sich nicht dafür interessieren wie der "Background" aussieht kann das durchaus erstmal eine Überwindung sein, da bspw. Java ja zumeist keine Systemnahen Implementierungen beibringt.
Wenn man vom Umstieg von Java als C nicht bedenkt, das man damit auch einen Paradigmenwechsel in kauf nehmen muss, kann die "Denkbarriere" dort schon relativ hoch sein.
-
Für Personen, die sich nicht dafür interessieren wie der "Background" aussieht kann das durchaus erstmal eine Überwindung sein, da bspw. Java ja zumeist keine Systemnahen Implementierungen beibringt.sicherlich ist es nicht trivial, aber ohne jegliches vorwissen objektorientierung komplett zu durchsteigen passiert auch nicht einfach mal so zwischen tür und angel
darauf bezog sich mein vergleich -
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!