Soll ich mit C# oder mit C++ anfangen?



  • wird c# nicht compiled und interpretiert, halt so eine mischung aus beidem ?? bin mir zwar nicht sicher...



  • erst compiled, dann interpretiert, dann eventuell nochmal compiled. ganz schön kompliziert eigentlich... 😃



  • dann haette ich ja eigentlich mal als "krassesten" unterschied eben diesen genannt...



  • Moh schrieb:

    dann haette ich ja eigentlich mal als "krassesten" unterschied eben diesen genannt...

    nee, der krasseste unterschied ist, dass man etliche megabytes auf seiner windoofs-box installieren muss, bevor ein lächerliches 'hello, world'.NET was ausgibt 😃



  • Ok also ich fange doch nun mit C# an.
    So aber wo bekomme ich die passenden Programme her etc.?

    mfg Phill



  • Phill schrieb:

    So aber wo bekomme ich die passenden Programme her etc.?

    da: http://www.icsharpcode.net/OpenSource/SD/



  • Brauche ich irgendwelche sonstigen Programme zu diesem?
    Oder damit es läuft?

    Bei mir kommt ein Fehler: Microsoft .NET Framework 1.1 was not found on this system.
    mfg Phill



  • ja damit gehts. Was du sonst noch brauchst findest du in jedem guten C# Lehrbuch 🙂



  • Phill schrieb:

    Bei mir kommt ein Fehler: Microsoft .NET Framework 1.1 was not found on this system.

    das .NET Framework bekommst du unter downloads.microsoft.com



  • aber denk daran, dass du auch das .NET Framework SDK brauchst.



  • Also ich habe erstmal das normale Framework 1.1.
    So ein Buch werde ich erst später kaufen können nun kommt die Frage ob jmd. ein wirklich gutes Tutorial kennt was mit C# anfängt von Anfang an.
    Und das C# Sharp IDE da hab ich jetzt auch auf meinem PC 🙂

    mfg Phill





  • Also und dieses Tutorial ist wirklich gut für den Anfang?

    mfg Phill



  • Schaust einfach mal, was man so in der MSDN zu
    Eric Gunnerson (der Autor dieses Buches) findet.

    Ergebnisse

    Du darfst also mal annehmen, dass er weiß wovon er redet.

    Falls du aber meinst, dass das Buch eventuell zu kompliziert für den Anfang ist, darf ich dich beruhigen, wobei du es trotzdem mehrmals lesen solltest, vor allem
    wenn du noch nicht weiß was objektorientiert ist. Damit konfrontiert er dich in
    dem Buch relativ früh, was eventuell beim 2. oder 3. Durchgang sehr viel klarer
    wird.

    grüße,
    ein Aussenseiter



  • Wird C# eigentlich inzwischen auch mal von wem genutzt ausser zum lernen und rumspielen?
    Ich überleg auch ob ich da smal lerne, aber Microsofts vor Jahren angekündigten Träume und Ankündigungen bezüglich .net sehe ich bis heute nicht in die Tat umgesetzt... deswegen frage ich mich schon ob es sich überhaupt lohnt.



  • dreaddy schrieb:

    Wird C# eigentlich inzwischen auch mal von wem genutzt ausser zum lernen und rumspielen?

    Ich weiß nicht, ob es heute bereits so stimmt, aber z.B: würde ich mal sagen,
    dass Novell zu ner Firma für C# werden könnte, wie es imo IBM für Java ist.

    Bisher hab ich in der Tat kein kommerzielles Programm gesehen - ausser von Microsoft eben, wäre das aber
    nicht würde ich von C# die Finger lassen - das auf C# basiert. Wobei ich fast nur OpenSource verwende, und
    auch noch nicht mit einem kommerz. Java Programm zu tun hatte (wobei es die natürlich geben wird).
    Soll also nichts heißen ..

    Außerdem ist zum Beispiel die .NET 1.0 Version erst am 27. März, 2002 schienen, vorher war es nur eine
    Beta-Version (mit Sicherheit kann ich das nicht sagen, dazu programmiere ich noch nicht lang genug C#).
    Vielleicht waren die 3 Jahre also nicht lang genug für manche ihre Programme umzuschreiben.

    Aber .NET ist ja nicht nur ein Programmier-Framework sondern ein Lösungsansatz für Probleme wie DLL-Hells,
    Kopieren von Programmen nicht möglich - sondern nur dort auch installieren, etc.. Ich sag Lösungsansatz
    deswegen, weil es eben noch nicht konsequent durchgesetzt wurde, immerhin werden ja noch
    normale WinAPI-, bzw. MFC-Programme erlaubt.

    Wie einer meiner Lehrer aber bereits gesagt hat, der Abbruch von MFC, wird wohl viele Firmen abgeschreckt haben,
    die in Java solche Stimmungsschwankungen nicht befürchten. Ich sag also mal, wäre C# vor Java rausgekommen,
    sähe alles ganz anders aus, aber sowas kann man im Nachhinein immer behaupten 😉

    Ich sag mal so, verinzelt erblickt man zwar ein oder zwei Jobangebote für C# Programmierer. Aber ich seh selbst
    als eingefleischter C#-Programmierer ein, dass am zur Zeit hauptsächlich Angebote als Java-Programmierer finden
    wird. Auch die Universitäten werden wohl fest in den Händen von Java bleiben, überlegen muss man sich es also wohl
    schon.

    grüße,
    ein Script-Kiddie



  • als sprache ist c# super, das .net framework kenn ich nicht.
    hab aber mit managed directx ein bischen rumgespielt und da ist es weitaus einfacher komplexe programme zu schreiben als im normalen dx. das einzige was mich an c# stört ist das sealed-schlüsselwort.
    imho ist das direkt gegen objektorientierung. denn eins der vorteile davon ist ja, dass man klassen durch vererbung spezialisiert. und woher nehmt sich jemand dann das recht zu sagen, das diese klasse sozusagen "perfekt" ist. das hat mich bei managed dx so gestört wieso ich nicht einfach einen Mesh von M$ nehme und für meine zwecke spezialisieren kann.
    achja das andere was mich an c# stört ist die fehlende mehrfache vererbung. naja aber da streiten sich die leute ja ob mehrfachvererbung überhaupt sinnvoll ist....

    (wobei es die natürlich geben wird).

    die wird es nicht geben, es gibt jetzt schon haufenweise komerz java-programme.



  • DEvent schrieb:

    das einzige was mich an c# stört ist das sealed-schlüsselwort.
    imho ist das direkt gegen objektorientierung. denn eins der vorteile davon ist ja, dass man klassen durch vererbung spezialisiert. und woher nehmt sich jemand dann das recht zu sagen, das diese klasse sozusagen "perfekt" ist.

    In C++ geht das indem man den dtor nicht virtual macht 😉

    da man von value typen sowieso nicht ableiten sollte, weil es technisch viele probleme aufwirft, kommt es oft vor, dass du eine klasse sealst. Genauso wie du eine Methode 'sealst' in dem du sie nicht virtual machst.



  • Shade Of Mine schrieb:

    DEvent schrieb:

    das einzige was mich an c# stört ist das sealed-schlüsselwort.
    imho ist das direkt gegen objektorientierung. denn eins der vorteile davon ist ja, dass man klassen durch vererbung spezialisiert. und woher nehmt sich jemand dann das recht zu sagen, das diese klasse sozusagen "perfekt" ist.

    In C++ geht das indem man den dtor nicht virtual macht 😉

    damit kannste doch keine ableitungen verhindern wie mit 'sealed'.



  • die wird es nicht geben, es gibt jetzt schon haufenweise komerz java-programme.

    War vielleicht ungünstig ausgedrückt, aber ich bezog mich mit dieser Annahme auch auf die Gegenwart, ich kenne halt
    keine, hab aber eben schon oft davon gehört (hör immerhin nur "haufenweis", aber nicht welche, glaubs ja trotzdem,
    nur kann ich dann selbst keine auflisten).

    imho ist das direkt gegen objektorientierung. denn eins der vorteile davon ist ja, dass man klassen durch vererbung spezialisiert. und woher nehmt sich jemand dann das recht zu sagen, das diese klasse sozusagen "perfekt" ist.

    Es geht nicht darum zu sagen, die Klasse sei perfekt, sondern eventuell um "die Klasse hantiert höchst sensibel
    mit Daten und bei der kleinsten Veränderung läuft garantiert was schief".

    Ich hab jetzt grad kein passendes Beispiel zur Hand, darum repräsentiert meins jetzt nur den Sinn, nicht aber
    die Dramatik .. (ausserdem ist es natürlich relativ schwachsinnig ..)

    public interface IRunnable
    {
        // ...
    
        void Run();
        void Stop();
    }
    
    public class Thread : IRunnable
    {
        public void Run() {
            // hier werden irgendwelche Handles angefordert, es
            // wird eben mit WinAPI gearbeitet ..
    
            Console.WriteLine("Thread.Run()");
        }
    
        public void Stop() {
            // hier werden dann halt irgendwelche Handles befreit, also
            // ebenfalls wieder WinAPI ..
    
            Console.WriteLine("Thread.Stop()");
        }
    }
    
    public class PersonalThread : Thread, IRunnable
    {
        public new void Run() {
            // hier wird jetzt etwas anderes verwendet, zum Beispiel
            // lässt man, die Methode einfach asynchron ausführen
            // wie gesagt, ergibt keinen Sinn ..
    
            Console.WriteLine("PersonalThread.Run()");
        }
    
        // Stop definieren wir nicht neu, wir sind einfach dumm und
        // der Compiler schreibt es auch nicht vor ..         
    }
    
    class App 
    {
        public static void RunThread(IRunnable runnable) {
            runnable.Run();
            runnable.Stop();
        }
    
        public static void Main() {
            RunThread(new Thread());
            RunThread(new PersonalThread());
        }
    }
    

    In diesem Beispiel, kann man natürlich noch einfach die korrekte Ausführung garantieren (einfach nur Stop auch
    neu definieren), aber normalerweise sind Klassen auch ein wenig komplexer ..

    Man kann sich dann einfach als "Autor" der Klasse Thread auf nichts mehr verlassen (die Methoden sind
    nichtmal virtual deklariert). So kann man kritische Ressourcen nicht mehr auf mehrere Methoden verteilen, da
    sie vielleicht später nicht mehr zusammenarbeiten. All diese Problematik erspart man sich, wenn man eine
    Klasse versiegelt.

    Es gibt unzählige andere Beispiele (ich denke dabei zum Beispiel an einen String mit lazy evaluation), die
    schlicht und einfach ohne sealed nicht möglich sind. Selbst wenn alle Methoden nicht-virtual sind, und keine
    Interfaces implementiert werden, bleibt immer noch new mit dem man zumindest
    verdecken kann.

    Warum gibts bloß immer solche Diskussionen um sealed, die Funktionalität gabs doch in Java (final) und
    C++ (boost::sealed) auch bereits und da hat es sich doch auch bereits bewährt ..

    grüße,
    ein Aussenseiter


Anmelden zum Antworten