welche Programmiersprache wird am meisten benutzt



  • 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"?



  • SirLant schrieb:

    Wie funktioniert C# und Java dann?

    Der "Bytecode" oder "IL-Code" wird vor/bei der Ausführung teilweise oder ganz kompiliert und es wird dann der kompilierte Code, also Maschinencode ausgeführt.



  • Marc++us schrieb:

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

    Hi,

    das .Net-Framework ist doch der interpreter des IL-Code.



  • Shade Of Mine schrieb:

    Zu Properties:

    Ob ich nun

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

    [...]

    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.

    Einmal ist es egal, wie man etwas hinschreibt, dann ist es wieder nicht egal,"weil ich das so mag."

    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.

    Hä? Entweder, Du schaust dir die Definition der Klasse an, dann stellst Du fest, ob 'set{}'/'get{}' existieren, oder Du schaust Dir das nicht an und rätselst rum. Wie in C++.



  • c++eus schrieb:

    Marc++us schrieb:

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

    Hi,

    das .Net-Framework ist doch der interpreter des IL-Code.

    Der Code wird vor der Ausführung compiliert, aber erst kurz vor Ausführung während der Laufzeit. Und jede Funktion wird nur einmal compiliert, also nicht immer wieder.

    @Gregor: naja, die Bezeichnung P-Code-Language ist nicht schlecht. Es ist nicht so einfach, eigentlich passt das klassische Verständnis aus dem Alltag mit Compiler/Interpreter nicht so gut. Begrifflich versteht man Compiler und Interpreter "digital", also es gibt Compilersprachen und Interpretersprachen. Letztere führen Befehl für Befehl zur Laufzeit aus, Compiler arbeiten offline und bereiten den Assemblercode vorher vor.

    Aber der Ansatz über eine virtuelle Maschine macht es schwieriger das zu trennen, denn wenn man sich ansieht was der Unterschied zwischen einem JIT-Compiler und einem Interpreter mit Cache wäre, so gibt es natürlich Berührungspunkte... da aber bei JIT-Compiling der MSIL- (oder VM-) Code nach Assembler übersetzt wird vor der Ausführung und dann der Assemblercode komplett aufgerufen wird, kann man nicht von einem Interpreter sprechen.



  • Daniel E. schrieb:

    Hä? Entweder, Du schaust dir die Definition der Klasse an, dann stellst Du fest, ob 'set{}'/'get{}' existieren, oder Du schaust Dir das nicht an und rätselst rum. Wie in C++.

    Wieso sollte ich mir die Definition einer Klasse ansehen? Ich sehe in die Doku, oder meistens reicht mir das Intellisense vom VC++.

    Ich will zB den ausgewaehlten Index in einer Liste (GUI) auswaehlen. Also suche ich nach 'SelectedIndex' - und schwupps, ich sehe, da gibts ein property mit dem Namen - doch kann ich es jetzt nur lesen oder lesen und schreiben, etc.

    Wie gesagt, ich mag das nicht so - ich finde getter und setter besser.

    Aber ich habe auch gesagt, dass es egal ist, ob man getter und setter hat, oder Properties. Properties bringen keine Vorteile mit.

    Zu dem if:
    Ich finde es halt klarer, wenn man auch einen int als bool ansehen kann. Wenn du das anders siehst, OK - aber dann verrate mir trotzdem wo der Vorteil darin liegt int als bool zu verbieten.

    Ich habe noch keine Software geschrieben, oder es bei jemanden anders gesehen, dass ein if(i=1) ein Fehler war, der nicht in Null-Komma-Nix gefunden wurde. (und in release Versionen habe ich sowas sowieso noch nicht gesehen)



  • Ein paar Worte zu Properties.
    Properties sind in erster Stelle gedacht (IMHO) nicht um Schreib-/Lesezugriffe auf eine Klassenvariable zu steuern (dafür würde get und set vollkommen ausreichen), sondern für die Unterstützung der "visueller" Programmierung. (Und schreit jetzt nicht, dass jede IDE mit Notepad oder Vi ersätzt werden kann). Außerdem sind sie, wie man bereits erwähnt hat, um einiges bequemer bei der Benutzung.

    Man kann jetzt unendlich streiten, ob es Sinn macht, neue Sprachen zu entwickeln, oder nicht, ob einige Features gebraucht werden oder nur Ballast sind, aber hätte man seinerzeit uf diese Entwicklung verzichtet, würden wir immer noch mit Basic programmieren und es gäbe dann kein C/C++, Delphi, Java, C#, etc. und es gäbe dann auch diese Diskussion hier nicht.



  • Shade Of Mine schrieb:

    Ich habe noch keine Software geschrieben, oder es bei jemanden anders gesehen, dass ein if(i=1) ein Fehler war, der nicht in Null-Komma-Nix gefunden wurde. (und in release Versionen habe ich sowas sowieso noch nicht gesehen)

    👍 genau, es ist nur so, dass bei C# oder Java, hättest du den Fehler erst gar nicht...



  • Shade Of Mine schrieb:

    Daniel E. schrieb:

    Hä? Entweder, Du schaust dir die Definition der Klasse an, dann stellst Du fest, ob 'set{}'/'get{}' existieren, oder Du schaust Dir das nicht an und rätselst rum. Wie in C++.

    Wieso sollte ich mir die Definition einer Klasse ansehen? Ich sehe in die Doku, oder meistens reicht mir das Intellisense vom VC++.

    Und der sieht selbstverständlich nicht im Quelltext nach, sondern telefoniert mit dem Programmierer persönlich. Spaß beysaite: Wenn dieser Assistent das bei C# nicht kann, dann ist das ein Mangel von Intellisense, nicht von C#.

    Ich will zB den ausgewaehlten Index in einer Liste (GUI) auswaehlen. Also suche ich nach 'SelectedIndex' - und schwupps, ich sehe, da gibts ein property mit dem Namen - doch kann ich es jetzt nur lesen oder lesen und schreiben, etc.

    Das hängt nicht nur von der Klasse, sondern auch vom Objekt ab.

    Wie gesagt, ich mag das nicht so - ich finde getter und setter besser.

    Ich hatte dich gefragt, wieso Du es als zulässig findest, in einem Fall mit der Gleichheit von Konzepten zu argumentieren und im nächsten Punkt mit emotionalten Beziehungen daherkommst. Um weiteren Mißverständnissen vorzubeugen: "Ob ich nun [...] schreibe, ist ja wohl egal." vs "Ich schreibe aber gerne:". Eine sachliche Aussage zum Thema habe ich nicht gemacht.

    [quote}Aber ich habe auch gesagt, dass es egal ist, ob man getter und setter hat, oder Properties. Properties bringen keine Vorteile mit.[/quote]
    Richtig, im Endeffekt überflüssig. Das dürfte auf ziemlich jede Abstraktionsschicht zutreffen.

    Zu dem if:
    Ich finde es halt klarer, wenn man auch einen int als bool ansehen kann. Wenn du das anders siehst, OK - aber dann verrate mir trotzdem wo der Vorteil darin liegt int als bool zu verbieten.

    Ich habe noch keine Software geschrieben, oder es bei jemanden anders gesehen, dass ein if(i=1) ein Fehler war, der nicht in Null-Komma-Nix gefunden wurde. (und in release Versionen habe ich sowas sowieso noch nicht gesehen)

    Eventuell besteht ja ein Zusammenhang, zwischen dem, was Du schreibst und dem, was Du gelesen hast. Mit dem, was ich geschrieben habe, hat es allerdings nichts zu tun.



  • Xqgene schrieb:

    Außerdem sind sie, wie man bereits erwähnt hat, um einiges bequemer bei der Benutzung.

    Könntest du mir hier nochmal die Stelle zeigen, wo das gesagt wurde? Ich muss die überlesen haben. Ich denke, hier wurde sehr eindeutig gezeigt, dass der Unterschied absolut minimal ist.



  • Xqgene schrieb:

    Properties sind in erster Stelle gedacht (IMHO) nicht um Schreib-/Lesezugriffe auf eine Klassenvariable zu steuern (dafür würde get und set vollkommen ausreichen), sondern für die Unterstützung der "visueller" Programmierung.

    Hat C# nicht Metadaten (die bei Java erst - etwas anders - mit Java 1.5 kommen)? Metadaten sind IMHO genau die richtige Unterstützung für "visuelle Programmierung". Damit braucht man keine Properties und keine getter/setter mehr (zumindest für diesen Zweck).



  • Hehe, ehrlichgesagt verstehe ich diese Diskussion hier nicht.

    Seid froh, dass es Java, C++, Delphi, Cobol, etc gibt!
    Ich mein sicherlich gibt es Unterschiede zwischen ihnen und einige sind gut, andere sind blöde/inperformat.

    Letztendlich arbeiten alle Sprachen auf das selbe hinaus, und zwar eine abfolge von Befehlen in Maschinensprache um zu setzen.

    Ihr könnt ja gerne mal ein Lagerverwaltungsystem in Assembler implementieren.

    ...

    Es gibt Leute, die können sich tagelang darüber streiten, ob ihre Waschmaschine besser ist, weil die eine mehr Knöpfe hat (und für jede Art von Wäsche einen Satz verschiedener Knöpfe anbietet), die andere wesentlich leichter zu Bedinen ist und die nächste dir auf die Finger haut, wenn man rote mit weisser Kochwäsche zusammenschmeisst. 🙄
    Aber ich habe auch gehört, es gibt Menschen, die wandern 5km zum nächsten Fluss um dort ihre Wäsche zu waschen. 😮

    🤡


Anmelden zum Antworten