C# - Eine Mischung aus Java und C++?



  • Firefighter schrieb:

    Also mir fallen da Properties(gut die sind intern auch nur methoden, aber eben so gibts die nicht) ein, events,delegates sind erst spät dazu gekommen. Hmm und mehr fällt mir aktuell auch nicht ein :p

    Ich hätte Features ausschließen sollen, die nicht reiner syntaktischer Zucker sind.



  • Gut dann sagen wir eben das C# in einigen Sachen Syntaktisch besser ist. Mir fällt da noch Linq,Lambda und Extensionmethodes ein. Und alleine die sind mir ausreichend um mit .net zu entwickeln, aber lass uns bitte nicht wieder in eine Grundsatzdiskussion ausschweifen.



  • reflection is geil. weiss ned wie java das macht. appdomains sind auch c00l.



  • icarus2 schrieb:

    Nachdem ich das gelesen und mir angeschaut habe, habe ich mich gefragt, ob C# grundsätzlich eigentlich eine Mischung aus C+ und Java ist.

    Ist das so?

    Nö, würde ich nicht sagen. Eher eine Mischung aus Java und C. Wobei der C Teil sich auf den ganzen "unsafe" Kram beschränkt, der nach meiner Erfahrung kaum Verwendung findet.

    Mir wurde auch bereits gesagt, dass es sehr leicht ist C# zu lernen, wenn man Java und C++ beherrscht. Stimmt das?

    Wenn man C++ und Java beherrscht kann man ziemlich viele Sprachen relativ leicht lernen, darunter auch C#.



  • Firefighter schrieb:

    C# hat alle guten Eigenschaften von C++ (...)

    Das ist ja wohl der grösste Unfug von überhaupt.
    Die IMO grössten Stärken von C++ gibt es in C# nicht: Templates und automatische deterministische Finalisierung.
    Eine Sprache die beides nicht beherrscht hat IMO mit C++ - praktisch betrachtet - nicht viel zu tun.



  • @hustbaer. Gut ok das ist ein Argument, dafür wurden die statischen Templates durch Dynamische Generics "abgelös" und ich fand das hat C++ schon immer gefehlt.



  • Es ist doch auch völlig Wurst, Leute lasst uns Weihnachten genießen und nich shcon wieder ne Grundsatzdiskussion anfangen. Gibt Sachen die hats aus C++,C und Java, fertig ist der Lack. Wer wissen will was alles anderes ist, soll sich halt mit den Sprachen beschäftigen. Immer diese Krümelkackerei hier im Forum.



  • volkard schrieb:

    Firefighter schrieb:

    Also mir fallen da Properties(gut die sind intern auch nur methoden, aber eben so gibts die nicht) ein, events,delegates sind erst spät dazu gekommen. Hmm und mehr fällt mir aktuell auch nicht ein :p

    Ich hätte Features ausschließen sollen, die nicht reiner syntaktischer Zucker sind.

    Es ist alles nur syntaktischer Zucker. Das Problem mit C# ist, dass es zu viel Zuckerguss ist, man bekommt sehr leicht Karies.



  • Tja das kommt davon wenn man nicht fähig ist den Zucker richtig anzuwenden 😉



  • Ich wollte konkrete Sprachfeatures hören, die einem erfahrenen Programmierer was bringen. Also genau sowas wie "Linq, Lambda und Extensionmethodes" wollte ich hören und da sehe ich gar keinen Bedarf an einer Grundsatzdiskussion.



  • Ok gut, danke 🙂 Dann haben wir ja genau diese Features aufgezählt.



  • Firefighter schrieb:

    @hustbaer. Gut ok das ist ein Argument, dafür wurden die statischen Templates durch Dynamische Generics "abgelös" und ich fand das hat C++ schon immer gefehlt.

    Das was man mit Generics machen kann, deckt nur einen ziemlich kleinen Bereich dessen ab, was man mit Templates machen kann.
    Templates wurden also sicher nicht abgelöst, sondern es wurde ein - zugegebenermassen sehr willkommener - Ersatz, für einen kleinen Teil dessen geschaffen, was in C++ mit Templates gemacht werden kann.



  • volkard schrieb:

    Ich wollte konkrete Sprachfeatures hören, die einem erfahrenen Programmierer was bringen.

    Also ich zähle mich zu den erfahrenen Programmierern und mir bringen Properties etwas...



  • @hustbaer: Schöne Weihnachten noch nachträglich 😉

    Gut dann werde ich wohl nicht alle Features kennen die man mit Generics nicht machen kann, mit Templates aber. Eventuell könntest du ne kleine gegenüberstellung machen was alles machbar ist. Sicher bin ich mir das man mit Templates zur Laufzeit keine "neuen Templates" erstellen kann, was in C# ja geht. Aber mehr fällt mir auf anhieb auch nicht ein.



  • loks schrieb:

    volkard schrieb:

    Ich wollte konkrete Sprachfeatures hören, die einem erfahrenen Programmierer was bringen.

    Also ich zähle mich zu den erfahrenen Programmierern und mir bringen Properties etwas...

    Sicher, Du mußt weniger () schreiben.



  • nicht nur das

    entweder

    class Person
    {
        private int _age;
        public int GetAge()
        {
            return _age;
        }
        public void SetAge(int age)
        {
            _age = age;
        }
    }
    

    oder

    class Person
    {
        public int Age { get; set; }
    }
    

    auch die benutzung ist intuitiver

    person.Name " is " person.Age + " years old"
    

    ist einfach besser als

    person.GetName() " is " person.GetAge() + " years old"
    

    Name und Alter ist ja auch wirklich eine eigenschaft einer person

    int age = person.Age;
    person.Age = age;
    

    find ich einfach angenehmer zu lesen

    nicht zu vergessen das itialisieren ohne ctor

    var person = new Person
    {
        Name = "Achim",
        Age = 72
    };
    

    ohne properties muesste man entweder ein ctor erstellen der alle properties annimmt (und auch alle moeglichen konstellationen) oder man muss es erstellen und dann einzeln die Set*** aufrufen

    ohne properties ist schrecklich
    properties sind die eigenschaften eines objektes - so wie die farbe eines autos - und eigenschaften sind etwas welche man nicht mit "Get***" abfragen muss

    Color carColor = myCar.Color;

    (man kann zudem get und set in seiner sichtbarkeit [public, private, protected] beschraenken)

    gerade erfahrene programmierer finden die properties am sinnvollsten

    //typo



  • volkard schrieb:

    loks schrieb:

    volkard schrieb:

    Ich wollte konkrete Sprachfeatures hören, die einem erfahrenen Programmierer was bringen.

    Also ich zähle mich zu den erfahrenen Programmierern und mir bringen Properties etwas...

    Sicher, Du mußt weniger () schreiben.

    Die Syntax von Properties in C# ist aber schlecht, viel zu viel Schreibarbeit. Wieso Properties nicht einfach wie in Groovy automatisch erzeugt werden, ist mir ein Rätsel.

    Für die, die Groovy nicht kennen:
    Wenn du ein Attribut hast, kannst du direkt foo.xx = 5; schreiben. Später im Code kannst du dann eine getXx() und setXx() einfügen. Der Code bleibt foo.xx = 5; , aber nun wird die get/set Methode aufgerufen.
    http://groovy.codehaus.org/Groovy+Beans

    Ansonsten, dank diesen Properties muss man jede Methode nun großschreiben, damit man Properties von öffentlichen Attributen unterscheiden kann. Irgendwie stört mich das extrem in C#.



  • Hallo

    DEvent schrieb:

    Die Syntax von Properties in C# ist aber schlecht, viel zu viel Schreibarbeit.

    string Name {get; set;}
    

    ist dir zuviel Schreibarbeit?

    chrische



  • @chrische5:
    Geh gar nicht erst auf DEvents geschriebenes ein, der findet sowieso immer und immer wieder was, was an C# und Microsoft schlecht ist.



  • Hallo

    Ist mir schon klar, aber das ist ja nun wirklich mal kurz.

    chrische


Anmelden zum Antworten