.NET Programme nur von Hobbycodern?

mediumX schrieb:
Warum ist denn z.B. der nagelneue Google Chrome nicht in .NET gemacht?
Das könnte daran liegen, das Google und MS konkurrenten sind.
Und im .NET Framework gibt es Features die es in noch keinem Anderen Framework gibt.
Also wird es in zukunft wohl mehr Anwendungen in C#/.Net geben.
 
AMD/ATI benutzen doch .net für das Control Panel und Overdrive?

Bei enigen Arten von Programmen macht .net oder auch Java vom Prinzip her keinen Sinn, nämlich bei Systemprogramme (Betriebssystem, Treiber, andere hardwarenahe Software),
bei Programmen die großen Nutzen aus den CPU-Erweiterungen wie z.B. SSE ziehen (Encoder und Filter für Video/Audio/Bilder). Da ist der Unterschied zwischen generiertem Code und handgeschriebenem Assemblercode noch riesig. Außerdem ist man stark an das Framework gebunden, d.h. was das Framework nicht hergibt, geht auch nicht.

Da die Frameworks und im speziellen deren Bibliotheken mittlerweile sehr Umfangreich sind, reichen sie aber für viele Probleme bereits aus. Sowohl .net, als auch Java sind eher dafür gedacht die Entwicklungszeit und die Fehlerrate zu reduzieren. Allerdings geht das auch auf Kosten der Performance, denn solange der Code korrekt ist, sind viele dieser zusätzlich Überprüfungen überflüssig.

Der Vorteil von .net gegenüber Java ist die wesentlich bessere Integration in Windows. Der große Nachteil dagegen ist die mangelhafte Unterstützung anderer Plattformen. Mono ist ganz ok, aber ich denke nicht, dass irgendeine Firma zurzeit Mono als Plattform benutzen würde.
 
Es gibt auch schon 3 Betriebssysteme in C# ;) Natürlich nicht so weit entwickelt wie Windows etc aber es ist möglich.
 
.NET Programme nur von Hobbycodern das würde ich so nicht behaupten.
In unserer Abteilung wird zwar noch in C++/MFC entwickelt. Aber das ist eher so aus der Historie gewachsen. Die Software geht mittlerweile ins achte Jahr. Und da ist es nicht mehr so einfach schnell mal alles umzustellen. ;)

Aber es wird auch für eine erst vor kurzem neu hinzugekommene Komponente C# verwendet.
Und unsere Software kennt hier im Forum (fast) keiner. Die wird auch Professionell eingesetzt.
 
Backslash schrieb:
Es gibt auch schon 3 Betriebssysteme in C# ;) Natürlich nicht so weit entwickelt wie Windows etc aber es ist möglich.

Du wirst kein Betriebssystem komplett in C# oder einer anderen .net Sprache schreiben können, solange du das ganze nicht zu nativem Code compilieren kannst. Die Systeme, von d enen ich bisher gehört habe, benutzen alle eine C/Assembler-"Unterlage", auf der dann eine VM läuft, auf der dann der Rest laufen kann. Das ist praktisch ein normaler Mikrokern, dem man eine VM implantiert. Die Frage ist halt, welchen Sinn das macht, denn für alle Low-Level Funktionen brauchst du C/Assembler-Code, der Schnittstellen bereitstellt, die das Framework dann benutzen kann. Viele höhere Betriebssystemfunktionen könnte man natürlich in der VM laufen lassen, allerdings hat man den gleichen Effekt, wenn man direkt ein Mikrokern-Betriebssystem nehmen würde, nur dass man bei diesem wesentlich flexibler ist.
 
Nun, Singularity ist laut Wikipedia komplett in Sing# geschrieben, auch der Kernel.
Zwar nicht direkt C# aber quasi eine Variante und komplett managed.

/edit: ok, es sind ca 90% + ein bisschen Assembler/C++ für den Garbage Collector und so ;)

Aber egal.. ich wollte damit nur sagen, dass C# auch für Hardwarenahe Entwicklung bzw performancelastige Anwendungen geeignet sein kann.
 
Zuletzt bearbeitet:
Singularity benutzt einen experimentellen Compiler, der Sing# in nativen Code kompiliert.
Bis ich das gelesen habe, war ich recht überrascht über Singularity, aber so ist das nun wirklich
nichts besonderes mehr.

Und mit .NET hat die Geschichte nun mal absolut gar nichts zu tun.

€: "Nichts besonderes" ist hier auf die Tatsache bezogen, dass es zum größten Teil in
Sing# (C# erweiterung) geschrieben ist. In anderen Punkten ist Singularity sehr
besonders und mit anderen Betriebssystemen wenig zu vergleichen.
 
Zuletzt bearbeitet:
Ich hab mir mal den genannten Wikieintrag angeschaut. Auf den ersten Blick scheint das ein relativ "normales" Mikrokern-Betriebssystem zu sein. Die Beschreibung des Mikrokerns erinnert mich an den L4-Kern, auf dessen Basis ich als Praktikum mal ein Betriebssystem entwickelt habe. Hauptunterschied ist wohl, dass sie noch eine Klassenbibliothek mit in den Mikrokern eingebaut haben und dass sie eine recht exotische Sprache benutzen.
 
@Limit: Is jetzt ein bisschen OT, aber mich würde interessieren bei welcher Ausbildung in welchem Jahr man als Praktikum ein BS entwickeln muss? Welche Anforderungen musste das erfüllen?(Nur so aus Interesse)
 
tXX schrieb:
@Limit: Is jetzt ein bisschen OT, aber mich würde interessieren bei welcher Ausbildung in welchem Jahr man als Praktikum ein BS entwickeln muss? Welche Anforderungen musste das erfüllen?(Nur so aus Interesse)

Das Praktikum haben ich im 7. Semester meines Informatikstudiums in Karlsruhe gemacht. Angeboten wird es für alle Informatikstudenten im Hauptdiplom, wobei die meisten es wegen des Umfangs meiden.

Gegeben war der L4-Mikrokern, der IPCs, einen primitiven Round-Robin-Scheduler und einen extrem einfachen Speichermanager bereitstellt (mehr als physischen Speicher rausgeben kann der nicht). Außerdem haben wir noch IDL4 benutzt, ein an CORBA angelehntes Tool, das Stubcode für die IPC-Kommunikation erzeugt hat.

Da es ein Mikrokern ist, wird alles übrige im Userspace implementiert und zwar als einzelne Server (-> Multiserver-Betriebssystem).

Zu entwickeln waren folgende Server:
  • Nameserver: kümmert sich um Namensauflösung, damit sich die einzelnen Server finden können
  • Taskserver: Übernimmt das erzeugen und zerstören von Tasks und Threads, weißt ihnen Adressräume und Stack zu und sorgt für die korrekte Parameterübergabe. Dazu kommen noch Adressraumauflösung und ein bisschen Statistik
  • Memory-Manager: Der wohl umfangreichste Teil. Er hat sich gleich beim Start den gesamten physischen Speicher vom Kern geholt und damit die ganze virtuelle Speicherverwaltung implementiert inkl. Page-/Frametables, Pagefaultbehandlung, Memory-Mapping usw.
  • Disk-/Fileserver: Implementiert ein einfaches Dateisystem (Das war bei uns eine Ramdisk mit FAT-ähnlichem Dateiystem, da uns die Zeit ausging)
  • Device-Server: Kümmert sich um alle Hardware außer CPU/RAM. Dort müssten sich z.B. alle Gerätetreiber einklinken. Er bekommt beim Starten alle I/O-Ports/Speicher. In unserem Fall musste er sich nur um Keyboard und Textausgabe kümmern.
  • Consolen-Server: stellt bash-ähnliche Konsolen zur Verfügung. Natürlich stark vereinfacht. Mehr als History, Scrollen und Konsolenwechsel konnte er nicht. Dazu noch ein paar kleinere Befehle (ls, touch, rm, cat, echo).

Das hört sich jetzt vielleicht nach viel an, war es auch, aber durchaus in 2-3 Monaten schaffbar. Eine Gruppe vom Vorjahr hat sogar mal Teile der libc portiert und das Betriebssystem zum Teil Posix-kompatibel gemacht. Als Demo lief dann sogar SuperTux darauf ;)

Hier ein Link zu der Seite der dazugehörigen Vorlesung. Dort sind auch ein paar der entstandenen Betriebssysteme verlinkt.
SDI Vorlesungsseite
 
Zuletzt bearbeitet:
Naja, ich werde weiterhin auf Delphi setzen.
Dort kann man wunderbaren nativen Code compilieren, der sogar sehr schön Wine kompatibel ist (in 99% der Fälle läufts damit auf Linux).

Desweiteren ist die VCL viel effizienter und ausgereifter als die .NET Klassen! Es gibt mittlerweile Komponenten für jeden Mist!

Du brauchst einen Telnetserver in deinem Programm? Klick, fertig, mit allen ansteuerbaren Events und simpel erweiterbar!
Du brauchst einen Proxyserver? Kein Problem?
Mailserver? DirectX? Verschlüsselung? Alles mit ein paar Zeilen Code machbar!

Und wer es noch performancemässig bis aufs letzte optimiert haben will, der kann auch den C++ Builder hernehmen, der hat das gleiche UI wie Delphi, aber halt die Speed von C++
 
mediumX schrieb:
Desweiteren ist die VCL viel effizienter und ausgereifter als die .NET Klassen!

Das stimmt nicht. Die VCL ist seit Jahren nicht mehr aktuell und voller Bugs. Die Bugtracker sind voll mit Bugs die seit Jahren nicht gefixed werden. In den 90er war Delphi und die VCL das Beste vom Besten, aber heute nicht mehr
 
MagicAndre1981 schrieb:
überflüssiges Zitat entfernt *klick*

Also ich arbeite jetzt schon mehere Jahre damit und mir sind keine großen Bugs aufgefallen.
Und wer behauptet Microsoft-Produkte seien fehlerfrei(er)..naja :lol:

Am besten mal selbst probieren anstatt Propaganda zu zitieren :)
 
Zuletzt bearbeitet von einem Moderator:
Es gibt auch professionelle, propietäre Software, die mit .NET erstellt wurden, z.B. TOAD von Quest Software, ein Tool zum Administrieren und Entwickeln von Oracle-Datenbanken.
 
Was aber auffällt ist, dass ein ein richtiger "Blockbuster" noch fehlt. So etwas wie Photoshop oder Office. Mein Eindruck ist eher, dass es bei kleineren Projekten oder bei Spezialsoftware.

Bei ersterem vermute ich, dass viele Programmierer einfach einmal ausprobieren wollen, wie gut das ganze funktioniert. Man wird sicher keinen "Koloss" wie Photoshop oder Office direkt auf einer doch recht neuen Plattform entwickeln. Das hat nicht nur etwas mit der Wiederverwendbarkeit von vorhandenem Code zu tun, sondern auch damit, dass es noch kaum Praxiserfahrung bei solch großen Projekten gibt.

Bei Spezialsoftware sind die Entwicklungskosten, die Entwicklungszeit und die Wartbarkeit im Verhältnis zu Performance und Funktionalität wesentlich wichtiger als bei Standardsoftware. Wenn z.B. ein Programm nur für einen Kunden geschrieben wird, ist es für den Kunden meist billiger in bessere Hardware zu investieren als die Programmierer solange zu bezahlen, bis sie das Programm soweit optimiert haben, dass diese Hardware überflüssig wird. Mal davon abgesehen, dass es mittlerweile so ist, dass die Leistung der Hardware in vielen Fällen sowieso mehr als ausreichend ist.
 
Ich denke das Photosshop in C++ programmiert wurde, da mit es auch auf dem Mac und Linux Systemen läuft und es damals noch kein C# gab. Photoshop ist ja jetzt auch schon 20 Jahre alt.

Und man könnte genau so fragen was es für "Mammutprojekte" in Java gibt, was ja eigentlich immer als direkter Konkurent für Java genannt wird. Mir fällt da spontan nur Zend IDE ein.
 
eclipse :) eine der größten (wenn nicht die beste) IDE und das nicht nur für Java

um den gesamten umfang auch nur ansatzweise zu erkennen, muss man das aber min. 2 jahre professionell genutzt haben.
 
Mit Eclipse habe ich nie wirklich gearbeitet ;) und dachte es ist in C++ geschrieben.
Und das sind beides IDEs. Die sind vom Umfang her noch nicht so aufwendig wie ein Grafikprogramm.

Grüße

krizzel
 
Zurück
Oben