Autor Beitrag
Raiden5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 25



BeitragVerfasst: Mo 24.09.07 16:33 
Moin Moin liebe Programmierfreunde

Ich habe mal ein Paar Allgemeine Fragen:

1) Was sind die Vor- bzw. Nachteile von C# gegenüber anderen Programmiersprachen ?

2) Was sind die Besonderheiten von c# ?

Viele nette Grüße

Raiden5

Moderiert von user profile iconTino: Titel angepasst.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mo 24.09.07 16:37 
Es gibt doch relativ viele andere Programmiersprachen.
Vielleicht kannst Du etwas genauer sagen, worauf Du hinaus willst. Das erleichtert die Diskussion.
Raiden5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 25



BeitragVerfasst: Mo 24.09.07 17:09 
Ja was sollte mich dazu bewegen ein Programm eher in C# zu schreiben als in Java, C oder C++ ?
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 24.09.07 17:41 
C++ ist knapp 30 Jahre alt, das sollte eigentlich ALLES sagen. Es hat sicher noch seine Berechtigungen, aber nicht mehr im Bereich Desktopanwendungen.
Java hat erst einmal sehr viele Ähnlichkeiten zu .Net, ist aber wohl eher im Web als auf dem Desktop zu Hause. Wird manchmal als zu akademisch und praxisfern bezeichnet, dazu kann ich aber nichts sagen.
r2c2
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 324
Erhaltene Danke: 2

Linux

BeitragVerfasst: Mo 24.09.07 17:55 
C# <--> C
Schlecht zu vergleichen. C ist schonmal nicht Objektorientiert. ==> der Unterschied zwischen C und C# ist in etwa der zwischen einem Fahrrad und einem Flugzeug. Du fliegst mit dem Flugzeug nicht zum Bäcker Brötchen kaufen und fährst auch nicht mit dem Fahrrad nach Australien...

C# <--> C++
C# ist IMHO deutlich schöner. Das "Sharp" soll AFAIK auch sowas wie "entschärft" bedeuten. Also die ganzen Fallstricke(naja, die meisten), wie Mehrfachvererbung, die vielen vielen Pointer, etc. fallen weg. Man kann mit C++ und QT oder GTK+ effektiv plattformunabhängig programmieren(wobei zumindest QT auch an einigen Stellen etwas "merkwürdig" ist). Das ist wohl so der Hauptvorteil, den ich sehe. C# hingegen ist auf Windows und Mono(Linux) beschränkt, wobei Mono logischerweise mit der Implementierung hinterher hinkt ==> SWF is AFAIK nicht vollständig implementiert. Wies mit .NEt 3.0 und 3.5 aussieht weiß ich auch nicht, aber ich schätze da fehlt auch ne Menge...
Demgegenüber bietet C# das gesammte .NET-Framework mit einer riesigen, sauber gegliedeten objektorientierten Funktionsbibliothek, der Möglichkeit sprachunabhängig zu programmieren, der Möglichkeit kolossal einfach mit DLLs(Assemblies) zu hantieren, etc.

C# <--> Java
Kann ich nicht sooo viel sagen. Hab zwar vor einiger Zeit mal n Java-Tutorial durchgearbeitet, das wars dann aber auch. Das was mir so einfällt: IMHO gibts in Java gar keien Pointer und keine Referenzparameter udn keine Callbacks/delegates ==> keine Events(stattdessen Observer-Pattern(die Implmentierung heißt glaub ich EventListener)). Java ist aber auch deutlich plattformunabhängiger ==> es gibt sehr viele VMs
Ansonsten war Java mehr oder weniger das Vorbild von C#. Bei C# hat man dann aber auch gleich auf diverse Kinderkrankheiten und restriktionen verzichtet, dies bei Java gab/gibt.

Also ich kann C# nur empfehlen. Chrome ist vllt. noch etwas schöner, aber da hab ich noch keine Zeit gefunden mir das anzugucken...

mfg

Christian

_________________
Kaum macht man's richtig, schon klappts!
Raiden5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 25



BeitragVerfasst: Di 25.09.07 09:43 
Ich danke zunächst mal für die Auflösung meiner ersten Frage ;-)

Wie siehts denn mit den Besonderheiten aus ?

Weiß da jemand was ?!

Wäre sehr nett.
Greenberet
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: Di 25.09.07 14:31 
user profile iconr2c2 hat folgendes geschrieben:
C# <--> C
C ist schonmal nicht Objektorientiert

sowas tut weh^^
Man kann in C auch Objektorientiert programmieren( allerdings ohne Vererbung).
Objekt = struct
methoden = funktionen wo der erste parameter ein Pointer auf das Objekt ist

Falls jetzt jemand kommt und meint: "Aber da is ja alles public, da gibts keine private felder etc..."
Zu dem kann man nur eins sagen -> Solang ich in einer Programmiersprache Pointer habe gibts sowas wie private nicht

Das bringt mich auf Irrtum Nr:2
In C# gibt es Pointer. Schau mal in der MSDN unter dem keyword "unsafe" nach.

nochein paar sachen warum C# besser ist als Java^^
In C# ist Pperator überladen möglich-> Java kennt sowas nicht, außer bei dem '+' für strings
In C# kann man eigene elementare Datentypen ( structs ) erstellen -> java hat sowas nicht (Außer BuildIn)
In C# gibt es Referenzparameter -> In Java müsste man dafür "Boxing" verwenden.
Java Prinzip: "Write Once, Run Anywhere" funktioniert nicht immer. Z.B: wird die RS232 Schnittstelle unter Windows nicht mehr unterstützt -> Suchen der Libraries von 3t Anbietern oder selbst schreiben.

Sonst kann ich dir nur Zustimmen.

Besonderheiten an C#:
C# ist mehr oder weniger ein MIX aus versch. Programmiersprachen.
Z.B. gibt es seit 3.0? Anonyme Datentypen( ähnlich PHP ), und man kann jetzt bei Collections "select statements" wie in SQL absetzen.

Man kann vorhandene Klassen erweitern.
z.b. der String Klasse eine Methode CountWords hinzufügen die man dan problemlos über "test 1 2 3".CountWords() aufrufen kann.

Momentan fällt mir nicht mehr ein als ohnehin schon gesagt wurde.
r2c2
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 324
Erhaltene Danke: 2

Linux

BeitragVerfasst: Di 25.09.07 15:00 
user profile iconGreenberet hat folgendes geschrieben:
user profile iconr2c2 hat folgendes geschrieben:
C# <--> C
C ist schonmal nicht Objektorientiert

sowas tut weh^^
Man kann in C auch Objektorientiert programmieren( allerdings ohne Vererbung).
Objekt = struct
methoden = funktionen wo der erste parameter ein Pointer auf das Objekt ist

Sry, aber mit dem Argument könnt man auch sagen, man kann mit C auch funktional programmieren, indem man per Makro alles umbiegt[1]. C ist und bleibt eine imperative/prozedurale Sprache. Dass man über alle möglichen Umwege auch irgendwie manche objektorientierten Features "nachbauen" kann, hab ich nicht bezweifelt. Die Sprache C ist aber nicht objektorientiert...

Die Wikipedia sieht das übrigens genauso wie ich:
Zitat:

C ist eine Programmiersprache, die auf fast allen Computersystemen zur Verfügung steht. Sie zählt zu den sogenannten prozeduralen Programmiersprachen.

de.wikipedia.org/wik...(Programmiersprache)


Zitat:

Das bringt mich auf Irrtum Nr:2
In C# gibt es Pointer. Schau mal in der MSDN unter dem keyword "unsafe" nach.

Ich hab nicht behauptet, dass es in C# keine Pointer mehr gibt. Ich hab nur gesagt, dass die Fallstricke, die durch die ganzen Pointer entstehen, wegfallen(im Übrigen hab ich später auch nochmal erwähnt, dass es in Java - im Gegensatz zu C# AFAIK nun wirklich gar keine Pointer gibt). Gut, ich geb zu, in dem Punkt hab ich mich undeutlich ausgedrückt. Das hätte ich anders schreiben sollen. Tatsache ist aber, dass man ähnlich wie in Delphi fast alles ohne - sichtbare - Pointer machen kann. In C++ hingegen muss man andauernd aufpassen, ob man nun ein dereferenziertes Objekt hat oder ein Pointer darauf, ob man ein Stak- oder Heap-Objekt hat, etc. C++ ohne Pointer geht nicht: Delphi, C# und Java schon...

Zitat:

Man kann vorhandene Klassen erweitern.
z.b. der String Klasse eine Methode CountWords hinzufügen die man dan problemlos über "test 1 2 3".CountWords() aufrufen kann.

Ui, das is mir neu. kenn ich bisher nur von Ruby. Muss ich mir unbedingt mal angucken. Fänd das Klasse(Im wahrsten Sinne des Wortes :lol:), wenn das ginge...

[1] //Edit: gut, ich geb zu das mit dem funktionalen wird wirklich verdammt schwer, wenn überhaupt möglich, aber darum gehts hier ja nicht...

mfg

Christian

_________________
Kaum macht man's richtig, schon klappts!


Zuletzt bearbeitet von r2c2 am Di 25.09.07 21:54, insgesamt 1-mal bearbeitet
Raiden5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 25



BeitragVerfasst: Di 25.09.07 15:01 
Vielen Dank ihr habt mir sehr geholfen !
Robert_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: Di 25.09.07 16:36 
user profile iconr2c2 hat folgendes geschrieben:
Zitat:
Man kann vorhandene Klassen erweitern.
z.b. der String Klasse eine Methode CountWords hinzufügen die man dan problemlos über "test 1 2 3".CountWords() aufrufen kann.
Ui, das is mir neu. kenn ich bisher nur von Ruby. Muss ich mir unbedingt mal angucken. Fänd das Klasse(Im wahrsten Sinne des Wortes :lol:), wenn das ginge...
Geht nicht nur in C#3.0, sondern schon heute in Chrome. ;)
ausblenden Chrome Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
type
  [Extension]
  ExtensionSample = public static class
  public
    [Extension]
    class method CountWords(instance : String) : Integer;
  end;
  
implementation

uses System.Linq;

class method ExtensionSample.CountWords(instance : String) : Integer; 
begin
  exit instance.Split([','';'' '#9])
               .Count(splitted -> not String.IsNullOrEmpty(splitted));
end;


Und dann einfach so benutzen: Console.WriteLine('Hello World.'.CountWords());

Edit: Eine Query war wohl eher ein Vorschlaghammer; Die Count-Extension für IEnumerable<T> reicht ja auch...