welche Programmiersprache wird am meisten benutzt



  • Hi,

    vielleicht wird irgendwann überall windows eingebettet sein, und wir Programmierun dann nur noch mit C#.Net 🙂



  • Und wenn C# sich bis dahin nicht drastisch weiterentwickelt hat geb ich mir die Kugel.



  • c++eus schrieb:

    vielleicht wird irgendwann überall windows eingebettet sein, und wir Programmierun dann nur noch mit C#.Net 🙂

    Ja, besonders im Realtime-Bereich ist Windows geradezu prädestiniert! 😃



  • Jester schrieb:

    c++eus schrieb:

    vielleicht wird irgendwann überall windows eingebettet sein, und wir Programmierun dann nur noch mit C#.Net 🙂

    Ja, besonders im Realtime-Bereich ist Windows geradezu prädestiniert! 😃

    Es gibt CNC-Maschinen die mit Windows als Betriebssystem arbeiten. Hochgenau und in Realtime 😉 (siehe z.B. SINUMERIK)



  • MaSTaH schrieb:

    Und wenn C# sich bis dahin nicht drastisch weiterentwickelt hat geb ich mir die Kugel.

    Jetzt übertreib aber nicht sondern informier dich über C#. Denn es ist (meiner Meinung nach) eine sehr praktische Sprache, in der viele Mängel von C++ beseitigt wurden.



  • c++eus schrieb:

    Denn es ist (meiner Meinung nach) eine sehr praktische Sprache, in der viele Mängel von C++ beseitigt wurden.

    Welche Maengel beseitigt C# denn?

    Garbage Collection? Geht aber zu kosten von Destruktoren.
    Kryptische Syntax? Ne, das ist in C# auch nicht besser.
    Fehlendes foreach? Yes, das hat es.
    Include Dateien murks? Jo, das kann C# besser - verhindert dadurch aber Tricks wie sie mit dem CPP moeglich sind.
    Bessere Library? Jo, gehoert aber weniger zu C# als zu .NET
    Komplexitaet? Naja, C# ist abgespeckt und deswegen leichter zu lernen, aber wirklich sauberer kann man in C# nicht programmieren.

    Und die Nachteile:
    Ne Menge murks von Java uebernommen, wobei C# meiner Meinung nach einige Java Probleme beseitigt, aber bei weitem nicht alle.

    Wuerde mich echt interessieren was deiner Meinung nach die Maengel von C++ sind, die C# besser macht. (Von der Library mal abgesehen, denn die ist in C++ wirklich mager)



  • Hi,

    es wurden einige Dinge eingeführt, die sehr sinnvoll sind. So wird z.B. zwischen einem int und einem bool unterschieden.
    So führt

    if(i = 1)
    {
    }
    

    zu einer Fehlermeldung.
    Auch sind die Eigenschaften sehr sinnvoll.
    Zu den Konstruktoren:
    Man kann auch Dispose() (Interface IDisposable) verwenden.
    Allerdings muss auf Seiten MS noch nachgebessert werden.
    #edit# es ist interpretiert und so (compilirete Dateien!) plattformunabhängig. Diesen Vorteil spielt es aber noch nicht aus.



  • c++eus schrieb:

    Auch sind die Eigenschaften sehr sinnvoll.

    Wo liegt denn da der Vorteil? Ich sehe da noch nichtmal eine nennenswerte Einsparung von Code. Es wird nur etwas implizit gemacht, was vorher explizit war, zum Selbstzweck praktisch. Ich kann da beim besten Willen keinen Vorteil entdeckten.



  • Hi,

    der eigentliche Zweck von Eigenschaften besteht ja darin:
    auf ein Feld zugreifen, und den Zugriff eventuell einschrenken. Wenn man z.B. eine Klasse Deklariert, die ein Gerät steuert (z.B. einen Videorekorder) und sie ein Feld

    bool zeitlupe;
    

    deklariert, dann sollte dieses Feld nur zum Lesen bereitgestellt werden. So wird das Feld nur von der Klasse intern verwendet werden. Wenn man einem Programm aber das Feld öffentlich bereitstellt, und dieses das Feld auf true setzt, dann könnte eventuell der Reorder beschädigt werden.
    In C++ wurde nun durch eine Methode auf das Feld zugegriffen. So musste der Benutzer der Klasse erst nachsehen, wie der Name der Methode ist.
    In C# ist der Zugriff nun uber den get Teil der Eigenschaft möglich. So ist der Name der Eigenschaft auch Standarisiert. Außerdem erkennt der Compiler automatisch, ob ein Lese oder Schreibzugriff erfolgt, und gibt bei einem Schreibzugriff autom. eine Fehlermeldung aus.
    Außerdem Erfolgt der Schreibzugriff so, als wenn die Variable öffentlich deklariert währe, nämlich über eine Zuweisung.



  • Ok, was macht man, wenn man auf die Idee kommt, den Zustand des Objekts anders darzustellen. Man hat dann plötzlich keine Variable "zeitlupe" mehr, sondern speichert das intern anders und würde normalerweise eine "Umrechnung" in der entsprechenden Getter/Setter-Methode machen. Wie macht man das nun bei den Eigenschaften?

    Abgesehen davon sehe ich noch immer keinen Vorteil.



  • Hi,

    in den get und set-Methoden kannst du auch anderen Code integrieren.



  • Das was du hier mit der variablen als Vorteil bezeichnest, wird in C# doch nur
    dem Interpreter überlassen, in C++ muss man das halt selber erledigen.
    Dass eine High-Level-Interpretersprache einem Arbeit abnimmt im vergleich zu
    einer low-level Sprache ist doch wohl selbstverständlich, oder?



  • Was ich nicht verstehe, warum bezeichnet Ihr C# als Interpretersprache?
    😕



  • Weil sie doch Plattformunabhängig ist, also muss es ja ein Format sein welches
    interpretiert wird bzw. geparst und das dann ausgeführt.



  • c++eus schrieb:

    in den get und set-Methoden kannst du auch anderen Code integrieren.

    Ok, ich hatte ein anderes Problem gesehen, was sich aber auch eben in Luft aufgelöst hat. ...wie peinlich! 🙄

    Trotzdem sehe ich keinen Vorteil. Ob man nun schreibt:

    blah = blahblah.getBlah();
    blahblah.setBlah(5);

    oder

    blah = blahblah.blah;
    blahblah.blah = 5;

    Der Unterschied ist absolut minimal.



  • Zu Properties:

    Ob ich nun

    foo.x
    oder
    foo.getX()
    schreibe, ist ja wohl egal.

    Ich sehe in Properties eher einen Nachteil. Wenn ich sehe
    ah, String.length existiert, dann weiss ich nicht, ob ich String.length nur lesen, oder auch setzen darf. Da sind getter und setter IMHO besser.

    Zu Destruktoren:
    Dispose() wird zwar aufgerufen, aber (wenn ich mich nicht irre) erst vom GC, oder?
    Somit sind es keine Destruktoren in C++ Sinne.

    Zu bool:
    Ich schreibe aber gerne:
    if(i)
    um auszudruecken, dass i einen Wert haben muss/gueltig sein muss. Wobei i jetzt auch ein int sein kann, bei dem 0 ein ungueltiger Wert ist.

    Und da habe ich C++ lieber, da warnt er mich bei
    if(i=1)
    und fragt mich, ob ich da wirklich eine Zuweisung meine.



  • SirLant schrieb:

    Weil sie doch Plattformunabhängig ist, also muss es ja ein Format sein welches
    interpretiert wird bzw. geparst und das dann ausgeführt.

    So funktioniert die Ausführung von Java- oder C#-Programmen aber nicht.



  • Shade Of Mine schrieb:

    Und da habe ich C++ lieber, da warnt er mich bei
    if(i=1) und fragt mich, ob ich da wirklich eine Zuweisung meine.

    Verstehe ich nicht. Hier warnt er dich, bei Java ist das zum Beispiel garnicht erlaubt. Da sagt dir der Compiler also auch, dass da was falsch ist.



  • Wie funktioniert C# und Java dann?



  • Marc++us schrieb:

    SirLant schrieb:

    Weil sie doch Plattformunabhängig ist, also muss es ja ein Format sein welches
    interpretiert wird bzw. geparst und das dann ausgeführt.

    So funktioniert die Ausführung von Java- oder C#-Programmen aber nicht.

    Wie würdest du Java und C# bezeichnen? "P-Code-Language"?


Anmelden zum Antworten