´Arndt: Vorteile .NET

Hallo,
welche Vorteile habe ich, wenn ich in .net programmiere. Ok mir ist es schon klar, .net ist die völlig neue MS-Technologie.
Aber ein .NET Programm ist doch langsamer als ein z.B. mit VB6 entwickeltes Programm, da doch der Quellcode erst compiliert werden muß.

Das ganze ist eine Glaubensfrage, das ist mir klar.

Für mich ist das ganze ähnlich der Verbesserungen zur Objektorientierten Progrmamierung seinerzeit in Turbo Pascal 6.0. Trozdem konnte man seine Projekte auch ohne Objektorientierte Programmierung fertigstellen.

Ok Visual C## scheint mir eine sehr leistungsfähige Programmiersprache zu sein.

Aber wozu noch eine Programmiersprache?

Es ist doch wahnsinn, was man heutzutage in der IT können muß. Wer Administration unter Windows und Linux und Programmieren beherrscht ist ein Genie.
Ansonsten kann man programmieren mit C++,C##,VB mit .net und ohne .net, java. Alleine im Internet...
Früher hat es ausgereicht html zu können und man konnte viel verdienen. Heute mysql, php, perl, html, css, etc, etc.

  1. Hi,

    welche Vorteile habe ich, wenn ich in .net programmiere.

    Zu dieser Frage gibt es im Internet wahrscheinlich genug Quellen. Siehe z.B. Microsoft-Seiten. ;-)

    Aber ein .NET Programm ist doch langsamer als ein z.B. mit VB6 entwickeltes Programm, da doch der Quellcode erst compiliert werden muß.

    Ja, ja, aber *wenn* es erstmal kompiliert ist, dann muss es nicht grundsätzlich langsamer als native Programme. Bildhaft gesprochen müssen sich .NET-Programme erstmal warmlaufen. Manche argumentieren auch, dass .NET-Programme sogar schneller sein können, weil der JIT-Compiler sein Wissen über die genaue Hardware und Systemauslastung in die Optimierungen einbeziehen kann. Andererseits gibt es Bestrebungen, ähnliche Vorgehensweisen auch für native Compiler nutzbar zu machen, siehe z.B. LLVM.
    Was VB6 angeht, ich bin zwar kein Fachmann, aber ist da nicht auch ein Interpreter im Spiel?

    Gruß
    Def

    1. Hi Def,

      Was VB6 angeht, ..., aber ist da nicht auch ein Interpreter im Spiel?

      jain,
      zur Entwicklungsumgebung gehoert so etwas wie ein Interpreter,
      d.h. man kann seinen Code zu jeder Sekunde mit [F5] laufen lassen.
      Erst ganz am Ende wird eine EXE erstellt, die auch auf anderen PC's
      lauffaehig ist, wenn die universelle Laufzeit-Bibliothek existiert.

      Das mit .net funktioniert (rein IMHO) in etwa so:
      Du hast ein Haeuschen am Waldrand und Deinem Hund haengt sehr an Dir,
      trotzdem rennt er manchmal in den Wald, was Dir gar nicht gefaellt.
      Deshalb verpasst Du ihm ein wunderschoenes, glitzerndes Laufseil und
      kannst nicht verstehen, warum das Tier depressiv wird, es hat doch alles.

      Gruss Norbert

      1. Hallo Norbert,

        Erst ganz am Ende wird [bei VB6] eine EXE erstellt, die auch auf anderen PC's
        lauffaehig ist, wenn die universelle Laufzeit-Bibliothek existiert.

        O.K., danke für die Erklärung. Sind in dieser EXE-Datei denn CPU-Anweisungen gespeichert oder Anweisungen für einen Interpreter, der in der EXE-Datei enthalten ist? Ich meine, vor langer Zeit mal gelesen zu haben, dass letzeres der Fall ist, oder zumindest eine Mischung aus beidem. Kann aber auch völlig falsch sein - deshalb fragte ich ja. ;-)

        Deine etwas blumige Beschreibung mit dem Hund und dem Wald und so konnte ich nicht nachvollziehen, also hoffe ich mal, dass das nicht so wichtig war. ;-)

        Gruß
        Def

        1. Hallo,

          Sind in dieser EXE-Datei denn CPU-Anweisungen gespeichert oder Anweisungen für einen Interpreter, der in der EXE-Datei enthalten ist? Ich meine, vor langer Zeit mal gelesen zu haben, dass letzeres der Fall ist, oder zumindest eine Mischung aus beidem.

          k.A.
          vermutlich letzteres, denn ohne die Laufzeit-Bibliothek geht es nicht.

          Deine etwas blumige Beschreibung mit dem Hund und dem Wald und so konnte ich nicht nachvollziehen, also hoffe ich mal, dass das nicht so wichtig war. ;-)

          riiichtig,
          wenn ich meinen LapTop von vor 20 Jahren und meine neueste Workstation vergleiche, finde ich zuwenig Unterschiede, als dass ich begeistert waere. Und schon deshalb glaube ich, dass es bei den Neuerungen in erster Linie um unser Geld und nur am Rande um wirkliche Verbesserungen geht. Wir werden verarscht, wie der Hund an der schoenen neuen und bunten Leine.
          Manchmal muss ich das einfach loswerden - sorry ... ;-)

          Gruss und Dank
          Norbert

  2. Hallo Arndt,

    einer der entscheidenden Vorteile von .NET sind die Bibliotheken. Unabhaengig von der zugrude liegenden Sprache. Gerade in der Windows-Welt ist .NET sehr zu empfehlen. Operationen, wie das Kontaktieren von Exchange, Windows-Prozessen oder Services, sind sehr leicht zu implementieren. Des weiteren ist C# - vergiss bitte VB - eine sehr maechtige und umfangreiche Sprache. Gerade die Neuerungen bezgl. C# 3.0 - wie zB Extension Methods, Lambda Expressions, Linq, Anonymous Types, etc. sind sehr praktisch und Vereinfachen zB die Datenzugriffsschicht - wie auch vieles anderes - enorm.

    Was ASP anbelangt, so ist das meiner Meinung nach Geschmackssache. Die von Haus aus mitgelieferten Controls sind m.M.n. eher provisorisch, als dass man sie fuer hoehere Anspruche ohne weiteres verwenden kann. (An dieser Stelle darf der Verweis auf DevExpress nicht fehlen).

    Es ist doch wahnsinn, was man heutzutage in der IT können muß.

    Man muss nicht alles koennen. Ganz im Gegenteil - spezialisier dich auf ein paar Sachen und du stehst meist besser da als ein Ich-hab-bereits-mit-allem-mal-zu-tun-gehabt Typ.
    Auf der anderen Seite, wenn wir jetzt mal uebers Web sprechen, sind

    mysql, php, perl, html, css, etc,

    ja relativer Standard, mit denen jeder schon mal das eine oder andere Projekt ins Leben gerufen hat.
    Praktisch ist es sicherlich, zu diesen Sprachen noch die eine oder andere Hochsprache zu kennen. Sei es Java, C++ oder C#.

    Gruss,
    Thes

  3. Hallo,

    du weisst eigentlich recht wenig ...

    welche Vorteile habe ich, wenn ich in .net programmiere. Ok mir ist es schon klar, .net ist die völlig neue MS-Technologie.

    Microsofts .Net Framework gibt es seit ungefähr 2001/2002, damals in Version 1.0. Danach kam Version 1.1. Mit der Einführun von Visual Studio 2005 und SQL Server 2005 Ende 2005 bzw. Anfang 2006 gab es die Version 2.0 mit vielen interessanten Neuerungen (Generics, Transaktionen, eigenen Iteratoren). In Vorbereitung zu Vista wurden ua. WCF (Windows Communication Foundation) für verteilte Systeme, WPF (Windows Presentation Foundation) für Grafik/Gui-Programmierung und WF (Workflow Foundation) für die Abbildung von Workflows in .Net Code eingeführt, als Version 3.0 vom .Net Framework. Es basiert aber auf der Codebasis von .Net 2.0 und bringt einfach nur ein paar neue Libraries mit. Mit Visual Studio 2008, also dem was jetzt demnächst offiziell eingeführt wird gibt es wieder einige sprachliche Neuerungen. Die Versionsnummer ist dann 3.5.

    Also nicht wirklich das allerallerneueste.

    Aber ein .NET Programm ist doch langsamer als ein z.B. mit VB6 entwickeltes Programm, da doch der Quellcode erst compiliert werden muß.

    .Net Programme liegen in der Zwischensprache IL von Microsoft vor und werden dann kurz vor der Ausführung nochmal optimiert in den jeweiligen Maschinencode übersetzt. (Das kann man auch selbst veranlassen.)

    Grundsätzlich ist .net um einige Potenzen schneller als VB6 oder gar VB6-Script Code. Aber natürlich kann man mittels miserabler Programmierung auch Code erzeugen, der langsamer ist als VB6. ;)

    Das ganze ist eine Glaubensfrage, das ist mir klar.

    Was bringt dich denn zu diesert Klarheit?

    Ok Visual C## scheint mir eine sehr leistungsfähige Programmiersprache zu sein.

    C# (ein # reicht) ist eine an Java/C++ angelehnte Syntax um Code für das .net Framework zu schreiben. Es ist letztendlich genauso leistungsfähig wie VB.Net. Die Syntax allein hat nicht viel mit Leistungsfähigkeit zu tun, denn am Ende ist sowieso alles IL. Gut C# hat einige sprachliche Vorteile gegenüber VB.Net. Das kannst du im Internet vielerorts nachlesen.

    Aber wozu noch eine Programmiersprache?

    Weil sich jemand (Hejlsberg oder so) gedacht hat, es bräuchte eine dafür, da ihm C++ und VB konzeptionell vielleicht nicht so gefallen haben. Mittlerweile kannst du mit Delphi, Python, J#, F# usw .net Code erzeugen. Gegenfrage: Warum gibt es soviele verschiedene Linux-Distributionen?

    Ansonsten kann man programmieren mit C++,C##,VB mit .net und ohne .net, java. Alleine im Internet...
    Früher hat es ausgereicht html zu können und man konnte viel verdienen. Heute mysql, php, perl, html, css, etc, etc.

    Die Evolution schreitet halt auf allen Gebieten voran.

    Wolltest du jetzt eigentlich konkret irgendwas sagen oder fragen?

    Ciao, Frank

    1. Hallo Frank,

      Die Evolution schreitet halt auf allen Gebieten voran.

      richtig,
      und irgendetwas wird in 100 Jahren ueberlebt haben, nur was?

      Es waere doch gut, wenn man heute schon wuesste, was das sein koennte.
      Okay, es steht fest, dass M$ selbst dafuer sorgt, dass es .NET nicht ist.
      Es gibt Gesetze fuer AG's, und in denen kommt kein Kunde vor ... ;)

      Gruss Norbert

    2. Hallo!

      Gut C# hat einige sprachliche Vorteile gegenüber VB.Net. Das kannst du im Internet vielerorts nachlesen.

      Kannst du mir sagen wo? Ich habe bei Google nur folgendes gefunden: http://www.microsoft.com/germany/msdn/library/net/visualstudio/UndVBNETHatDochEinenSinn.mspx. Und da wird VB.Net in den Himmel gehoben.

      Mich würde das interessieren, weil ich in meiner Ausbildung auch viel mit VB.Net machen werde.

      ciao, Lukas

      --
      Nach einem Korrspondentenbericht der New York Times aus der umkämpften Stadt, wurden zur „Ausschaltung eines einzigen feindlichen Scharfschützen mehrere 500-Pfund-Bomben, 35 Artilleriegranaten des Kalibers 255, zehn Schüsse aus der Abrams-Panzerkanone sowie 30 000 Patronen leichter Munition benötigt”. „Die Gebäude waren daraufhin Ruinen”, schreibt die New York Times, „aber der Scharfschütze schoss weiter...”
      1. Hi,

        zb.

        • Anonyme Methoden
        • Iteratoren
        • Komplett statische Klassen

        die fielen mir auf Anhieb ein und sind unter anderem hier im MSDN von Juval Lowy etwas näher erläutert.

        Ich z.b. arbeite oft mit den ersten 2 Sachen, das kann aber subjektiv jeder für sich entscheiden und mit sich selbst ausmachen.

        VB.Net hat auch ein paar Vorteile gegenüber C#, zb optionale Parameter, Select case, das with Schlüsselwort ... oder z.b. das durchaus sehr handliche "My" Objekt. :)

        HTH, Ciao, Frank

        1. Hallo!

          zb.

          • Anonyme Methoden
          • Iteratoren
          • Komplett statische Klassen

          VB.Net hat auch ein paar Vorteile gegenüber C#, zb optionale Parameter, Select case, das with Schlüsselwort ... oder z.b. das durchaus sehr handliche "My" Objekt. :)

          Also ist es relativ ausgewogen. Danke schön.

          ciao, Lukas

          --
          Nach einem Korrspondentenbericht der New York Times aus der umkämpften Stadt, wurden zur „Ausschaltung eines einzigen feindlichen Scharfschützen mehrere 500-Pfund-Bomben, 35 Artilleriegranaten des Kalibers 255, zehn Schüsse aus der Abrams-Panzerkanone sowie 30 000 Patronen leichter Munition benötigt”. „Die Gebäude waren daraufhin Ruinen”, schreibt die New York Times, „aber der Scharfschütze schoss weiter...”
  4. Moin,

    Aber wozu noch eine Programmiersprache?

    Es ist doch wahnsinn, was man heutzutage in der IT können muß. Wer Administration unter Windows und Linux und Programmieren beherrscht ist ein Genie.

    IT ist eine weites Feld. Nicht jeder kann alles können. Man sollte sich die Grundlagen aneignen, die gleich bleiben. Wenn man diese Grundlagen drauf hat, kann man sich schnell in neue Gebiete einarbeiten.

    Ansonsten kann man programmieren mit C++,C##,VB mit .net und ohne .net, java. Alleine im Internet...

    Viele Sprachen haben eine ähnliche Syntax und bauen auf ähnlichen Konzepten auf. Wenn man das Prinzipien hinter den Programmiersprachen verstanden hat, sollte man sich schnell in neue Sprachen einarbeiten können.

    Gruß

    Stareagle

  5. Hallo ´Arndt,

    welche Vorteile habe ich, wenn ich in .net programmiere. Ok mir ist es schon klar, .net ist die völlig neue MS-Technologie.

    Ja und eine für MS strategisch ziemlich wichtige. Das wird wohl bedeuten, dass Du mit .Net ziemlich schnell ziemlich viel weniger Ärger haben wirst, als mit dem älteren Zeug, weil sie es dann nicht mehr groß pflegen ;-)

    Aber ein .NET Programm ist doch langsamer als ein z.B. mit VB6 entwickeltes Programm, da doch der Quellcode erst compiliert werden muß.

    Die erste Frage bei diesem Argument lautet immer: Ist das bei Deinen Anwendungen irgendwie relevant?
    Wenn Du Windows-Applikationen schreibst, ist es das wahrscheinlich nicht.

    Für mich ist das ganze ähnlich der Verbesserungen zur Objektorientierten Progrmamierung seinerzeit in Turbo Pascal 6.0. Trozdem konnte man seine Projekte auch ohne Objektorientierte Programmierung fertigstellen.

    Klar, aber kann man sie auch zu den gleichen Kosten und in der gleichen Zeit fertig stellen, wie jemand, der objektorientiert vorgeht und das auch beherrscht? In einer Sprache mit automatischer Speicherverwaltung wie es die .Net-Sprachen sind entwickelt sich nochmal ein gutes Stück effektiver und flexibler. Das sind oft sehr viel wichtigere Faktoren.

    Was die Performance von VMs angeht, folgende Artikel ganz interessant:
    < http://www.ibm.com/developerworks/java/library/j-jtp09275.html>
    < http://java.sun.com/products/hotspot/whitepaper.html#3>

    Gerade bei objektorientierten, dynamischen Sprachen wie Java oder C# greifen Optimierungen herkömmlicher Compiler nicht oder nicht so gut.
    Beispielswiese findet normalerweise kein Inlinig (Einfügen des Codes einer Methode in eine andere) bei polymorphen Methoden statt, weil der Compiler nicht weiß, welche Methode tatsächlich zur Laufzeit aufgerufen wird.
    Bei dynamischem Laden von Klassen zur Laufzeit ist zur Übersetzungszeit u.U. noch nicht mal der Code der Methode bekannt, die dann ausgeführt wird.
    JIT-Compiler können das aber tun, da sie eben wissen, welche Methode (meistens) aufgerufen wird. Und gerade bei stark objektorientierten Programmen ist Inlining sehr wichtig, da die einzelnen Methoden oft recht kurz sind, und so wenig lokale Optimierungsmöglichkeiten bieten.

    Früher hat es ausgereicht html zu können und man konnte viel verdienen.

    Das hat wohl noch nie gestimmt ;-)
    Man konnte während der Boom-Phase wahrscheinlich mehr damit verdienen, als man es heute kann. Aber selbst damals hat das jämmerlichste .com-Unternehmen schon mehr gebraucht als HTML.

    Grüße

    Daniel