Limit schrieb:
Deine Nischenmärkte (Windows, Linux, Treiber, Spiele, Photoshop, Office, Video-/Audioprogramme) machen mit Abstand den größten Teil des Marktes aus.
Das bezweifle ich einmal sehr stark. Windows und Office sind nur Teilgebiete von Microsoft. Das kennt nur jeder, weil es jeder benutzt. In der Entwicklung sind jedoch bei weitem nicht so viele Leute beschäftigt, wie man oft annimmt, zumindest in den Kernbereichen wie Windows und Office Professionell. Das Geld mit Linux wird sowieso fast nur mit dem Support gemacht. Hier wird der Marktanteil auch sehr überschätzt. Wirklich relevant ist Linux/Unix nur bei Großrechnern. Spiele gehören sowieso nur rein zur Privatschiene, mit der sich sowieso kein Geld machen lässt, da es entweder gesaugt wird oder es keiner kauft, weil es so teuer ist. Das einzige, was sich noch halbwegs verkauft ist Windows an OEM Hersteller und vielleicht noch ein paar Virenscanner.
Photoshop kennt auch jeder und es wird viel Geld damit gemacht, aber die Leute, die sich dort in der Entwicklung befinden sind auch nicht so viele.
Gewöhnung und Weiterverwendung von Code sind beides Punkte, die der Qualität des Codes zugute kommen und damit ein Vorteil für den Kunden. Natürlich ist das nur solange ein Vorteil für C/C++, solange sich .NET nicht so weit verbreitet. Andererseits muss .NET erst noch beweisen, dass es für große Projekte überhaupt geeignet ist, denn was Standardsoftware angeht, ist da noch nichts entsprechendes vorhanden und warum sollte man wechseln, wenn die Vorteile nicht deutlich größer sind als die Nachteile. Es stellt nämlich auf jeden Fall ein Risiko dar die Entwicklungsplattform zu wechseln.
95% der Programmierer sind in der Entwicklung von Individualsoftware tätig und das ist auch schon Software, die nur an 5 Kunden geht. So gesehen ist der Bereich ziemlich egal. Selbiges gilt deswegen auch für die ganzen Urheberrechtsdebatten, die eine Gefahr für die Softwarebranche darstellen. Das sind vielleicht 5%, die ständig nörgeln, das alles kopiert wird und der Rest ist froh, wenn er ein paar Lizenzen bei seiner Entwicklungsumgebung spart.
Ein großer Aufwand die Sprache zu wechseln ist es aber auf jeden Fall, da die meisten Programmierer mit Erfahrung noch C++ Programmierer sind.
zu 1. Das kannst du auch problemlos in anderen Sprache realisieren. Bei den älteren Sprachen wirst du eben nur nicht gezwungen das zu überprüfen. Wenn du es trotzdem überall haben willst, besorgst du dir eben eine entsprechende Bibliothek. Da hast du genug Auswahl.
Natürlich kannst du dir Bibliotheken besorgen bis zum geht nicht mehr. Gerade das ist ja das Problem. Ich habe mich schon oft geärgert, wenn ich irgendein altes C++ oder auch VB Programm warten konnte, wo 100 zusätzliche Controls irgendwie dazuinstalliert sind und man keine Ahnung mehr hat, wie man den Mist überhaupt noch zum Compilieren bringt. Natürlich hat da wieder keiner eine Ahnung, dass man dazu 17 dlls in sein system32 Verzeichnis kopieren muss, damit man eine .exe machen kann. War ja auch alles auf dem Rechner von meinem Vorgänger installiert. Blöd nur, dass der mittlerweile formatiert ist.
zu 3. Die Schnittstellen von .NET Bibliotheksfunktionen wird sich nicht weniger/häufiger ändern als bei anderen Bibliotheken. Aus welchen Grund sollte das denn auch so sein?
Es geht hier nicht so sehr um Bibliotheksfunktionen, die dir z.B. einen Arraylist machen, sondern um Funktionen zum Zugriff auf das Betriebssystem. Wenn es in .NET eine Funktion GetProgramDir gibt, dann kann ich mich darauf verlassen, dass das auch in zukünftigen Windows Versionen noch funktionieren wird, auch wenn es eventuell anders gelöst ist z.B. bei 64Bit-Versionen, die zwei verschiedene Directories hat und wo es 64Bit dlls gibt, die eventuell ganz anders heißen und wo anders liegen.
zu 4. Das ist kein Vorteil von .NET, sondern ein Vorteil der Benutzung von Bibliotheken und damit auf jeden beliebige Sprache übertragbar.
Der Vorteil an .NET ist jedoch, dass ich die ganzen Bibliotheken nicht einzeln irgendwo im Internet zusammensuchen muss, dabei 100 Versionen finde, die alle mehr oder weniger gut dokumentiert sind und falls es darin einmal einen Bug gibt, so habe ich einfach Pech gehabt.
Das kommt darauf an, ob die Funktionen in .NET selbst geschrieben sind, oder ob der C/C++ Code des Frameworks die Funktionalität bereitstellt. Falls es im Framework integriert ist, sind diese Funktionen zwar in etwa gleich schnell wie die von C/C++ Bibliotheken, dafür auch kein bisschen sicherer als diese.
Erstens denke ich, dass MS doch seine Arbeit so gut erledigt, dass das .NET Framework einigermaßen stabil ist, da es einfach so oft verwendet wird. Bisher habe ich noch keine gravierenden Probleme entdecken können außer dass der Text für eine Exception einmal nicht stimmt etc., im Gegensatz zu Access, wo vieles nicht so hinhaut, wie es soll und zwar sehr offensichtlich (z.B. der Mausrad Bug bei Endlosformularen). Hier sollte schon eine große Stabilität gegeben sein.
Zweitens gibt es das Problem mit Sicherheitslücken in erster Linie auf der Front zum Kunden. Da die .NET Funktionen jedoch nur von mir aufgerufen werden, ist das alles nicht so tragisch.
Bei Individualsoftware haben .NET und Java ihre Stärken. Dort sehe ich auch den Haupteinsatzzweck. Allerdings kriegen sie in der Ecke auch Konkurrenz von anderer Seite, nämlich den Skriptsprachen. Vor allem in Nicht-Windows-Umgebungen ist die Kombination aus C/C++ Bibliotheken und einer Skriptsprache wie z.B. Python garnicht einmal so selten und hat durchaus auch ihre Reize.
Die Verbreitung von Linux im Businessbereich wird von den meisten eindeutig überschätzt. Das ist für den Endanwender ziemlich uninteressant. Mindestens 80% der Software, die wir schreiben, würden unsere Kunden nicht akzeptieren, wenn sie nicht auf Windows laufen würde. Umgekehrt wüsste ich nicht, dass schon jemals ein Kunde gefordert hätte, dass unsere Software auf Linux läuft. Letztes Mal habe ich einen Kunden gehabt, der wollte wissen, wie er seine Schriftarten vom MAC auf den PC bringt, aber das war schon alles.
Auch wenn sich das jetzt sehr negativ anhören mag, denke ich trotzdem, dass Programmiersprachen wie .NET und Java durchaus ihre Daseinsberechtigung haben, vor allem bei der Individualsoftware. Allerdings finde ich auch, dass sie teilweise doch arg überschätzt werden und ihnen Vorteile angedichtet werden, die garnichts mit der Sprache selbst zu tun hat, z.B. die Sache mit den Standardbibliotheken.
Der Vorteil an .NET ist eben die riesige Bibliothek, die integriert ist. Natürlich kann man sich das auch irgendwo anders besorgen, aber das macht Arbeit und Arbeit kostet Geld, das man vom Kunden verlangen muss. Einmal abgesehen davon bin ich nicht unbedingt ein Freund davon, dass ich mir Unmengen von fremden Code in mein Projekt integriere, wo ich weder weiß von wem der stammt, noch ob er stabil ist und zukunftssicher ist. Wenn ich nicht weiter komme, dann suche ich schon nach Code aber nur nach welchem, den ich verstehen und dann selbst nachprogrammiere.
Durch den mangelnden Support von MS für andere Betriebssysteme ist auch bei .NET Anwendungen die Plattformunabhängigkeit bisher nicht gegeben. Mono ist ein interessantes Projekt, aber Software, die darauf vertraut würde ich im Augenblick noch nicht anbieten wollen.
Man muss sich immer die Frage stellen, ob man wirklich den doppelten Aufwand treiben will, damit man die letzten 2% der Anforderungen abdecken kann. Wenn ich eine Software schreibe, die eine Industrieanlage ansteuert, dann brauche ich mich nicht um Win98, WinNT, Linux etc. kümmern, wenn auf dem Rechner ein Windows XP läuft. Da ist es mir viel wichtiger, dass ich keine Probleme habe, wenn der Kunde in 3 Jahren auf Vista umsteigen will und in 5 Jahren auf ein 64Bit System inkl. Treiber für diverse Zusatzkarten und in 10 Jahren soll das Ganze wenn möglich auch noch laufen.
Mono ist eine nette Spielerei, wie vieles (nicht alles) auf nicht kommerzieller Basis, aber für den täglichen Einsatz ist es absolut nicht zu empfehlen. Schon gar nicht kann man erwarten, dass der Code, den man schreibt 1:1 verwendbar ist.