Was kann C# besser als Java?



  • Was verstehst du unter "sowas wie assert"? Was macht assert hier für dich aus?



  • Gregor schrieb:

    Was verstehst du unter "sowas wie assert"? Was macht assert hier für dich aus?

    Code der nur in der Debug Version vorhanden ist (zusätzliche checks - am besten in verschiedenen stufen, so dass ich in stufe 1 nur erweiterte checks durchführe, in stufe 2 werden auch die preconditions und postconditions gecheckt und in stufe 3 gibt es zusätzlich noch invarianten checks). Weiters habe ich gerne Debugausgaben (auch in verschiedenen Stufen) - und das löse ich immer gerne zur Compiletime auf. Denn ich will keinen deadcode in meiner binary haben.



  • Klar gibt es assert. Wenn die VM mit ausgeschaltetem assert gestartet wird, wird das assert vom JIT-Compiler nicht beachtet -> du hast auch keinen toten code in den binaries (die sowieso nur im RAM existieren).
    Deshalb sollte die debug-Variable IMHO auch kein Problem sein.



  • Optimizer schrieb:

    Klar gibt es assert.

    Darf ich mich zitieren:

    Und ja: ich weiss, dass es sowohl in Java als auch in PHP ein assert gibt

    Aber ich habe gerne eigene checks und debug ausgaben - dass kann assert nicht alles abdecken.

    logisch: ich kann auch ohne dem leben, aber es ist halt etwas das ich sehr praktisch finde und ich immer ein bisschen vermisse.

    wenn es doch irgendwie gehen sollte, so wie zB in C# (das ist auch nicht ideal, aber wenigstens ein ansatz) würde ich das sehr begrüßen.



  • Naja, wenn das mit dem static final stimmt (was ich nicht bezweifle), ist das eigentlich halb so wild, dass so was fehlt. IMHO.



  • Ich habe vorhin schon auf meinen ersten Beitrag in diesem Thread hingewiesen. Dort wird auf eine Seite verlinkt, die u.a. Informationen zu Java Preprozessoren bietet. Da wird schon irgendetwas dabei sein, womit man sich so ein assert bauen kann.



  • Wenn ihr Beispiele wollt, sucht einfach in google nach conditional compilation java.
    Dann findet ihr z.B. das hier
    http://www.devx.com/tips/Tip/13342

    oder das
    http://c2.com/cgi/wiki?ConditionalCompilationInJava

    Da wird auch ein Beispiel für eine selbst definierte assert Methode gegeben.



  • Wenn ich das also richtig verstanden habe werden static finals also auch zur compile - Zeit übersetzt. Da sie dann nich mehr geändert werden, können if - abfragen bei false dann wirklich komplett rausgeschmissen werden. Die Denkweise ist eben doch eine andere..

    @Gregor:

    Sind die Links von Dir schon in der Java FAQ?



  • TheBigW schrieb:

    @Gregor:

    Sind die Links von Dir schon in der Java FAQ?

    Wenn ich mal interessante Links zu Java finde, dann sind diese nach kurzer Zeit im Linkbereich von www.javacore.de zu finden. Das trifft auch auf diesen Link zu.



  • IMHO: Compile-Zeit kann hier durchaus auch bedeuten, falls des static-teil in einer anderen Klasse ist, zur JIT-Compilezeit. Die Flexibilität haben wir in Java ja. 🙂



  • Optimizer schrieb:

    IMHO: Compile-Zeit kann hier durchaus auch bedeuten, falls des static-teil in einer anderen Klasse ist, zur JIT-Compilezeit. Die Flexibilität haben wir in Java ja. 🙂

    Leider nicht. Auch wenn die static final Variable in einer anderen Klasse definiert wurde, wird die if Abfrage komplett entfernt, wenn sie false ist.
    Das kann natürlich zu unerwarteten Überraschungen führen, wenn man die Klasse mit der Variablen ändert ohne die Klasse mit der if Abfrage neu zu kompilieren.

    Das wurde so gemacht um eine bedingte Kompilierung zu ermöglichen.



  • Bei C# hast du Zugriff auf die funktionen auf alle DLLs.
    Bei Java ist das schwieriger. Bei C# macht Visual Studio alles automatisch ohne Fehler, bei Java brauchst du ein Framework was deine Dll zugreifbar macht. Dabei müssen DLL Stubs generiert werden. Problematische DLLs können nur mit einem kostenpflichtigen Dll Stub Generator zugreifbar gemacht werden, die anderen Tools funktionieren nicht.

    Zudem sind bei C# (Cross Language Compability) die kompatiblen Sprachen interoperabel. Man kann von Sprache X funktionen aus Y aufrufen und umgekehrt.

    Das geht bei dem folgenen vorher genannten nicht:

    Gregor schrieb:

    1. Ja, momentan kann man neben Java nur 189 andere Sprachen nutzen, um Java-Bytecode zu erzeugen: Programming Languages for the Java Virtual Machine

    Unter anderem kannst du damit deine Programme in Office anbinden, Office aufrufen und viele Tolle Dinge machen.

    Wenn du Jars aufrufen musst dann nimm Java.. In Java gibt es ganz viele tolle Sachen. Bei Server Programmierung kann sich Java anbieten.



  • Respekt!

    Ich glaube, das war der schlimmste Nekromantie Fall dieses Forums. Da gehört sicher eine Menge Arbeit dazu, einen 13 Jahre alten Thread zu finden.

    Und das mit dem ersten Posting 🙂
    Damit bleibst du der Nachwelt als leuchtendes Beispiel für immer erhalten.



  • und im nächsten thread wird sich dann bestimmt beschwert, dass die leute wegen jedem blödsinn einen neuen thread aufmachen, anstatt die forensuche zu verwenden und zwecks übersichtlichkeit bestehende threads zu erweitern. 😃


  • Mod

    Wade1234 schrieb:

    und im nächsten thread wird sich dann bestimmt beschwert, dass die leute wegen jedem blödsinn einen neuen thread aufmachen, anstatt die forensuche zu verwenden und zwecks übersichtlichkeit bestehende threads zu erweitern. 😃

    Suchen und Lesen ist etwas anderes als einen sieben Seiten langen Thread von 2004 auf die Frontseite zu holen, weil man noch einmal Senf dazugeben wollte, der niemanden interessieren wird.

    Ich mache hier mal zu, damit für andere Leser klar ist, dass dieser Thread nicht zu lesen ist. Wenn Diskussion über Threadnekromantierichtlinien gewünscht wird, dann möge man dies in NadrW oder der Forentechnik tun.


Anmelden zum Antworten