c++ oder c#?



  • der_held schrieb:

    Was stört dich daran?

    Der Artikel ist absolut daneben.

    Attributes: das Argument, dass zuviele Moeglichkeiten sich auszudruecken schlecht sind. Was soll das? Ich will doch keine verkrueppelte Sprache.

    Garbage Collection:
    Keine Destruktoren: OK, guter Punkt. Allerdings sieht es jetzt so aus, als waere der Autor kein Java-Fan mehr...
    unsafe Code: was hat er dagegen? unsafe Code ist dazu da, dass man auch mal etwas schnell erledigen kann - ohne den .NET Ballast. Niemand muss es verwenden.

    Value Type / Reference Types:
    naja, das kann man sehen wie man will, aber:
    "There are more allocations on the heap than are strictly neccessary leading to memory fragmentation" - genau deswegen gibt es einen Garbage Collector, der diese Fragmentierung verhindert

    "Boxing and unboxing is both subtle and confusing as it can lead to a surprising interpretation of straightforward code" - ich finde Boxing ist etwas gutes, aber sicher nicht verwirrend - auch wenn man es nicht mag.

    Namespace Restrictions
    Natuerlich - das ist wohl ein Hautkritikpunkt von allen "Purely OOP Languages"

    usw. usw.

    Wenn der Autor mit C# nicht klar kommt: OK - aber seine Erklaerungen und Argumente sind mies.



  • Public Fields
    Classes can expose their fields as being public. This violates the encapsulation principle of objects.
    [...]
    Assignment Ambiguity [...]

    Das ist natürlich etwas, was ganz speziell C# betrifft. 🙄
    Gerade der Assignment-Punkt ist so lächerlich, weil C# verdammt typensicher ist, was spricht denn bitte gegen implizite Konversionen??

    Der Artikel ist Schrott. In welcher Sprache programmiert der Autor dieses Artikels bitte?



  • Optimizer schrieb:

    Public Fields
    Classes can expose their fields as being public. This violates the encapsulation principle of objects.

    Das ist natürlich etwas, was ganz speziell C# betrifft. 🙄

    Ja, weil C# Properties hat und daher public-Felder eigentlich nicht braucht. Das wurde da auch gesagt.



  • Der Artikel ist Schrott. In welcher Sprache programmiert der Autor dieses Artikels bitte?

    In seiner eigenen (ist ernst gemeint).



  • Wenn du wirklich hardwarenah sein willst, so gibt es nur diese Reihenfolge:
    1.Assembler
    2.C
    3.C++
    ... irgendwann c#



  • Bashar schrieb:

    Optimizer schrieb:

    Public Fields
    Classes can expose their fields as being public. This violates the encapsulation principle of objects.

    Das ist natürlich etwas, was ganz speziell C# betrifft. 🙄

    Ja, weil C# Properties hat und daher public-Felder eigentlich nicht braucht. Das wurde da auch gesagt.

    Schon klar, aber dass man diese Möglichkeit trotzdem hat, macht diese Sprache ja (jedenfalls nicht aus dem Grund) nicht schlechter als andere objektorientierte Sprachen. Deshalb ist das kein Grund, nicht C# zu nehmen...



  • meissa röhrich schrieb:

    Wenn du wirklich hardwarenah sein willst, so gibt es nur diese Reihenfolge:
    1.Assembler
    2.C
    3.C++
    ... irgendwann c#

    Ne, wenn du Hardwarenah programmieren willst, faellt C# weg.

    mfg
    v R



  • Naja, man kann im unsafe Mode AFAIK einiges machen (ich habs nicht ausprobiert), theoretisch soll man damit sogar einen Treiber schreiben können.
    Stellt sich natürlich die Frage, ob das Sinn macht. 🙄



  • Hat eigentlich schon jemand was mit dem Managed-Zeug gemacht? Ich hab mal gestern probiert ne Windows-Forms anwendung zu schreiben. Das hat mich aber nur wenig an C++ erinnert was ich da gesehen habe...



  • C# kommt an C und C++ bezüglich Hardwarenähe nicht heran. Daran ändert auch der "Sicherheitsschalter" unsafe Mode nichts.
    C# und VB.Net sind in diesem Punkt praktisch gleichzusetzen.



  • KAnnst du mal bitte kurz ein Beispiel in VB posten, das mit wilder Pointerarithmetik arbiete (muss keinen Sinn machen).



  • Private Sub Form_Load()
      With List1
        .AddItem "CD-ROM"
        .ItemData(.NewIndex) = ObjPtr(Image1)
        .AddItem "Disk 5,25"""
        .ItemData(.NewIndex) = ObjPtr(Image2)
        .AddItem "Disk 3,5"""
        .ItemData(.NewIndex) = ObjPtr(Image3)
        .AddItem "Harddisk"
        .ItemData(.NewIndex) = ObjPtr(Image4)
        .ListIndex = 0
      End With
    End Sub
    
    Private Sub List1_Click()
      Dim nCmd As Image
      Dim nTag As Long
    
      With List1
        nTag = Val(.Tag)
        If nTag <> 0 Then
          PtrToObject(nTag).Visible = False
        End If
        nTag = .ItemData(.ListIndex)
        PtrToObject(nTag).Visible = True
        .Tag = nTag
      End With
    End Sub
    


  • Ist das Pointerarithmetik?

    Also von C# weiss ich, dass es die Pointer im unsafe Mode genauso gibt, wie in C++. Ich frage mich allerdings wirklich, wofür man die noch brauchen könnte, außer, wenn einem wirklich was ganz extrem h4xX0rmäßiges eingefallen ist. 🙄 😉



  • Optimizer schrieb:

    Ich frage mich allerdings wirklich, wofür man die noch brauchen könnte, außer, wenn einem wirklich was ganz extrem h4xX0rmäßiges eingefallen ist. 🙄 😉

    Performance?


Anmelden zum Antworten