Ist C# so gut?
-
Wie geht das in C# eigentlich mit Callbacks? Muss ich wie in Java immer ein Interface implementieren z.B. für "ButtonListener" oder kann ich auch wie in C++ einfach Funktionen oder Methoden binden?
-
Dafür gibts in C# Delegates. Google-Treffer: http://onjava.com/pub/a/onjava/2003/05/21/delegates.html
-
C# erscheint mir schon ziemlich gut. Es gibt anonyme Funktionen, Reflection, Generics, und z.T. Typ-Inferenz.
Ich bin kein C#-Spezialist, aber diese Sprache folgt anscheinend dem Trend, dass immer mehr funktionale Features in OO-Sprachen einfließen.
Ich frage mich nur, warum man dann nicht gleich eine funktionale Sprache benutzt.
Das hat sich wohl auch MS gefragt, und F# entwickelt mit viel OCaml-"Inspiration".
F# ist eine Multi-Paradigmen-Sprache mit weniger aufwändig zu tippender Syntax, in der man so wie in C# programmieren kann, wenn man will (bis auf andere Syntax).
Man kann aber auch richtig funktionale Sachen schreiben.C# ist gut, ich finde MS sollte da weniger dran herumbasteln.
F# ist die neue Sprache, da kann gebastelt werden, ohne dass eine allzu große Code-Basis plötzlich nicht mehr kompiliert.
Ich wünsche mir persönlich, dass F# irgendwann C# ablöst, das soll aber keine Kriegs-Erklärung sein.
-
alf42red schrieb:
Ich bin kein C#-Spezialist, aber diese Sprache folgt anscheinend dem Trend, dass immer mehr funktionale Features in OO-Sprachen einfließen.
Ich frage mich nur, warum man dann nicht gleich eine funktionale Sprache benutzt.These -> Antithese -> Synthese
Imperativ/OO -> Funktional -> C#
Extreme sind meistens schlecht.
-
µ schrieb:
These -> Antithese -> Synthese
Deutschlehrermüll.
These: Horoskope funktionieren.
Antithese: Horoskope funktionieren nicht.
Synthese: ???These: 1 ist keine Primzahl.
Antithese: 1 ist eine Primzahl.
Synthese: ???µ schrieb:
Extreme sind meistens schlecht.
Wahrheit und Falschheit sind schon was Tolles.
C# finde ich fein. Aber ich sehe C# nicht als Synthese, sondern als strategische Waffe.
-
Da F# das gleiche Klassen-System wie C# implementiert, ist es nicht so extrem wie z.B. Haskell, und nicht nur funktional!
Techniken wie Currying und Pattern-matching kann man auch in C# benutzen, das ist aber syntaktisch aufwändiger.
Vielleicht ist F# wirklich nur eine vereinfachte Syntax für nützliche C#-Konzepte.Oder gibt es wirklich C#-Konzepte, die in F# grausig aussehen?
Ich kenne keine, aber so lange kenne ich C# auch noch nicht.
-
alf42red schrieb:
Da F# das gleiche Klassen-System wie C# implementiert, ist es nicht so extrem wie z.B. Haskell, und nicht nur funktional!
Techniken wie Currying und Pattern-matching kann man auch in C# benutzen, das ist aber syntaktisch aufwändiger.
Vielleicht ist F# wirklich nur eine vereinfachte Syntax für nützliche C#-Konzepte.Oder gibt es wirklich C#-Konzepte, die in F# grausig aussehen?
Ich kenne keine, aber so lange kenne ich C# auch noch nicht.Alles wird zu bit daher ist alles nur vereinfachte Syntax von binär. Es geht eigentlich auch nicht um die Syntax Schönheit, sondern eher, dass du solche Konzepte als Sprachelemente hast oder als Framework implementiert werden muss.
Sonst würde ich allgemein raten, mehr sich mit den Sachen zu beschäftigen bevor man sein Münd in irgendeine Form aufmacht. Typeinferenz ist in F# wesentlich mächtiger als in C#, sie funktioniert nicht nur lokal.
-
volkard schrieb:
...
Du gibst ganz schön viel Widerstand. Fühle mich geehrt
-
Da war doch etwas interessantes:
volkard schrieb:
sondern als strategische Waffe.
Bitte erläutern, falls andere Gründe als Java vermutet werden.
-
µ schrieb:
volkard schrieb:
...
Du gibst ganz schön viel Widerstand. Fühle mich geehrt
Nein. Der Widerstand ist nicht gegen Dich persönlich.
Er ist nur gegen Wünschelruten und Hypes.
-
Irgendwie lustig in Sachen Programmierung: Strategische Waffen und Widerstand!
Sind wir gegen wen im Krieg und wer ist unser Verbündeter im Kampf gegen das Böse?
-
Zeus schrieb:
Sonst würde ich allgemein raten, mehr sich mit den Sachen zu beschäftigen bevor man sein Münd in irgendeine Form aufmacht. Typeinferenz ist in F# wesentlich mächtiger als in C#, sie funktioniert nicht nur lokal.
Inwiefern widerspricht das seinen Aussagen?