Entwickler-Ecke

Off Topic - .NET lohnt sich das?


Nano-Ware - Mo 02.04.12 13:51
Titel: .NET lohnt sich das?
Hey,

ichstehe derzeit vor einer Entscheidung und zwar geht es um den Wechsel von Delphi/C++ zu C#. Dass man den Code dort einfach mit Decompilern auslesen kann ist mir klar und auch wie man sich dagegen schützt. Wie .NET ansich im Einfachen funktioniert weis ich auch. Es geht um etwas ganz anderes:

Ich habe noch nie besonders große Projekte erstellt und bin deswegen auf eure Erfahrungen angewiesen. Es geht grundsätzlich um die Geschwindigkeit der Anwendungen (Grafik, Dateizugriff, Rechnen, ...), bei der ich mir doch sehr unsicher bin. Ich habe gehört, dass größere Projekte in .NET eine halbe Ewigkeit starten, weil diese ja er nocheinmal compilert werden. 5 Sekunden mehr ist noch erträglich, wenn das Ganze allerdings noch länger braucht lohnt sich das nicht. Die Frage generell ist einfach, wie groß der Unterschied bei der Geschwindigkeit zwischen nativ und .NET ist, denn wenn der zu groß ist lohnt sich der Umstieg keines Wegs, auch wenn ich mich an die vielfalt der Funktionen und dem einfachen Handhaben schon gewöhnen könnte. (:

Danke für eure Antworten!


Nersgatt - Mo 02.04.12 14:15

Stellt sich halt die Frage, was Du Dir von einem Wechsel für Vorteile versprichst?


Nano-Ware - Mo 02.04.12 14:22

Ich habe für deutlich mehr Themengebiete Funktionen und muss nicht mit 100 verschiedenen Texttypen arbeiten. Außerdem ist .NET durch Mono beispielsweise ja auch relativ platformunabhängig. Ich habe mit Delphi nichteinmal das Auflisten aller Laufwerke geschafft..


Cäptin Pommes - Mo 02.04.12 14:29

ich glaube man kann auch sehr umfangreiche Projekte gut mit C# und .NET realisieren ... man kann schließlich auch hochwertige 3d games damit entwickeln ect.
sicherlich hat man irgentwo einbußen aber ich glaube das verhältniss stimmt :)


Nersgatt - Mo 02.04.12 14:43

user profile iconNano-Ware hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe mit Delphi nichteinmal das Auflisten aller Laufwerke geschafft..


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  s : String;
begin

  for s in TDirectory.GetLogicalDrives do
    ShowMessage(s);

end;

Wirklich einfacher gehts nicht, oder? :nixweiss:
(Wobei ich dazusagen muss, dass das so erst ab Delphi 2010 funktioniert, glaub ich)


Nano-Ware - Mo 02.04.12 14:49

Natoll erstmal danke. Im Internet habe ich nur Funktionen gefunden, die nullterminierte Strings zurückgeben mit denen man dann erstmal arbeiten muss. Ich sehe langsam keinen Vorteil mehr an .NET, denn plattformunabhängigkeit kommt ja bestimmt in den nächsten Delphiversionen. Vielen Dank für eure Beratung!


Christian S. - Mo 02.04.12 15:06

Also erst einmal wird bei .NET nicht beim Start das gesamte Programm kompiliert, sondern es werden nach und nach die Teile des Programms von Zwischencode übersetzt, die gebraucht werden. Und das wird auch nur ein Mal gemacht und das Ergebnis gecached.

Du hast eine umfangreiche und gut strukturierte Klassenbibliothek, Du musst nur sehr selten irgendwelche anderen Bibliotheken dazu holen. Du hast Konzepte, die Dir das Leben leichter machen und nur langsam in Delphi Einzug halten (z.B. Bindings, vektorbasierte Benutzeroberflächen (WPF), Funktionen zur einfachen Parallelilisierung, LINQ, ...). Du kannst Code für den Desktop schreiben und ihn mit Silverlight als Web-Anwendung wieder verwenden oder auch auf einem Windows Phone laufen lassen. Und das alles mit einem String, der schon immer Unicode war und deswegen keinen Ärger macht ;-)

Wenn die Auflistung von Laufwerken Dein einziger Grund war, Dir .NET anzugucken, dann hast Du tatsächlich keinen Grund mehr, weiter zu schauen. Wenn Dein Programm noch mehr können soll, ist es vielleicht mal eine gute Gelegenheit, reinzuschnuppern ;-)

Ach ja, erwähnte ich, dass Du mit Visual C# Express oder SharpDevelop zwei kostenlose IDEs haben kannst?


mats74 - Mo 02.04.12 15:09

Ich habe eigentlich alle internen Programme mit .Net gelöst und bin nie an die Leistungsgrenzen der Performance gekommen.
Mein Hauptprogramm beinhaltet z.B. Kalkulationsprozesse von grossen Bauprojekten, Verwaltung von komplexen Stücklisten, Lagerverwaltungsprozessen, grafische Darstellungen von CNC-gesteuerten Abläufen, Schnittstellen zu anderen Softwarebauteilen und vieles mehr.
Ich denke, das grösste Performanceproblem sitzt meist vor der Tastatur (ich will natürlich niemandem zu nahe treten).
Die grundlegende Sache der Perfomance liegt meist in der Optimierung des Codes.


Nano-Ware - Mo 02.04.12 15:27

Könnt ihr eventuell einfach mal grundlegende Vorteile bzw Nachteile gegenüberstellen?


Christian S. - Mo 02.04.12 15:29

user profile iconNano-Ware hat folgendes geschrieben Zum zitierten Posting springen:
Könnt ihr eventuell einfach mal grundlegende Vorteile bzw Nachteile gegenüberstellen?
Nein, welches die bessere Lösung ist, kommt auf die Anwendung an, die Du schreiben willst. Für jede Aufgabe gibt es das richtige Werkzeug :-)


Nano-Ware - Mo 02.04.12 15:31

Okay dann anders gefragt:

- Seriennummer aus USB auslesen und damit arbeiten?
- Verwaltung von Personengruppen
- Spiel

Welches Themengebiet zu welcher Programmiersprache? :D


Cäptin Pommes - Mo 02.04.12 15:37

zweitens und drittens gehn auf jedenfall mit C# / .Net / XNA (fürs spiel)

erstens geht bestimmt auch, wüsste aber jetzt auch nich wie :D


Nano-Ware - Mo 02.04.12 15:39

Gehen tun alle drei sowohl in Delphi als auch in C# nur was ist besser geeignet?


Ralf Jansen - Mo 02.04.12 16:21

Deine Anforderungen sind immer noch viel zu pauschal um da zu unterscheiden. Sich von jemanden anderen sagen zu lassen was für einen selbst besser geeignet ist (ja das ist eine individuelle Kategorie keine absolute) halte ich sowieso für sinnfrei. Probier es aus. Und zwar länger als ein paar Tage und länger als bis zu deiner Feststellung das es anders funktioniert als Delphi.


mats74 - Mo 02.04.12 16:30

... das ist definitv der einzige Weg, wie Du es herausfindest (probieren, probieren ... und dann nach deinen Kriterien entscheiden).
Meistens liegt es an deinen Vorlieben zu einer Programmiersprache und nicht an diesen sehr weit entwickelten Programmierstrukturen.