Zukunft
-
Remmbrant schrieb:
Im grunde kann man sagen, dass C++ in den nächsten 8 Jahren vollkommen vom Markt verschwinden wird und durch produktivere Sprachen ersetzt wird.
I doubt C# will ever replace C++ - these are just different tools for different types of tasks. For instance, I can barely imagine someone writing a driver in C#, and that sort of tasks
-
Hm ich könnte mir aber schon gut vorstellen, dass in den nächsten 15-20 Jahren, insbesondere C/C++ Programmierer sehr begehrt sein werden, da heutzutage ja sowieso die meisten nur noch C#/Java und Konsorten lernen. Die meisten existierenden Programme sind aber nach wie vor in C++ geschrieben, und die muss ja auch jemand warten oder migrieren, oder sonstwas...
-
Es gibt heutzutage nicht mehr die Sprache für alles, man kann aber für Neuentwicklungen sagen:
Enterprise/Business Software: Java / C#
Verteilte-Systeme: Java / C# / minimal C++
System Software: C / C++
Lowlevel: Assembler / C / C++
Numerische Berechnungen: Fortran / C / C++
Multimedia Desktop-Software: Alles
Spieleprogrammierung: Kann ich nichts zu sagen, denke aber primär C++ vielleicht auch C#Bei Legacy-Systemen kommt alles zum Einsatz...

Den größten Markt an Arbeitsplätzen stellt derzeit ganz klar der Business-Software/Enterprise/verteilte Systeme Bereich dar.
nep schrieb:
Die meisten existierenden Programme sind aber nach wie vor in C++ geschrieben, und die muss ja auch jemand warten oder migrieren, oder sonstwas...
Autsch! Ich würde eher sagen Assembler, C und COBOL.
-
mikk schrieb:
Remmbrant schrieb:
Im grunde kann man sagen, dass C++ in den nächsten 8 Jahren vollkommen vom Markt verschwinden wird und durch produktivere Sprachen ersetzt wird.
I doubt C# will ever replace C++ - these are just different tools for different types of tasks. For instance, I can barely imagine someone writing a driver in C#, and that sort of tasks
Ich kann mir vorstellen, einen Betriebssystem-Kernel in C# zu schreiben. Ist auch schon geschehen.
-
Ich kann mir nicht vorstellen, was richtig low-leveliges mit C# zu machen. Ist auch noch nie geschehen.
-
Optimizer schrieb:
Ist auch schon geschehen.
ja, zu native code compiliert und ganz unten mussten doch c und assembler dran.
tolle sache...
ich glaub' ich mach mal'n os in qbasic
-
TactX schrieb:
Ich kann mir nicht vorstellen, was richtig low-leveliges mit C# zu machen. Ist auch noch nie geschehen.
Führe doch bitte mal genau aus, was mit C# nicht möglich ist in Punkto low-level Programmierung im Vergleich mit C++.
ten schrieb:
Optimizer schrieb:
Ist auch schon geschehen.
ja, zu native code compiliert und ganz unten mussten doch c und assembler dran.
tolle sache...
ich glaub' ich mach mal'n os in qbasic
Was ist denn das für ein Aussage?
Überraschung, wenn man ein Betriebssystem schreibt benötigt man Assembler-Kenntnisse und Native Code.

Und das ist natürlich genauso, wenn man C++ verwendet. Oder hast du schon mal ein Betriebssystem gesehen, dass zu 100% in einer Hochsprache geschrieben ist? Dass irgendwo C verwendet wurde, scheint mir eine Erfindung von dir zu sein.
-
Optimizer schrieb:
TactX schrieb:
Ich kann mir nicht vorstellen, was richtig low-leveliges mit C# zu machen. Ist auch noch nie geschehen.
Führe doch bitte mal genau aus, was mit C# nicht möglich ist in Punkto low-level Programmierung im Vergleich mit C++.
Z.B. einen kleinen Microcontroller effizient programmieren. Oder halt genau die Teile die bei Singularity eben auch nicht schön in der warmen VM rennen.
-
Hi,
bei dem ganzen "Sprachenkrieg" sollte man nicht vergessen, dass das Hauptproblem in der IT heutzutage (war vllt. schon immer so) nicht ist, Code zu erstellen. Mindestens 90% der Codings ist recht einfaches Zeug, das mitnichten die Grenzen einer modernen Programmiersprache (egal welcher) ausloten...
Und: 90% der Zeit verbringt man mit Nichtprogrammieraufgaben.
Bei uns vergehen 90% der Projektzeit damit,- Mit dem Kunden zu klären, was seine Anforderungen eigentlich sind und seine konzeptionellen Schwächen auszubügeln (40%)
- Sich ein geeignetes Design auszudenken (auf Basis einer bestehenden Infrastruktur) (25%)
- geeignete Testverfahren zu definieren und durchzuführen (25%)
Das mag für "fahrende Händler ähh Programmierer" anders sein, aber in meinem beruflichen Umfeld ist das so.
Gruß,
Simon2.
P.S.: Wir haben zwar auch technische und fachliche "Architekten", die sich mehr mit reinen informatikthemen beschäftigen, aber das sind 15-20 auf 700 Programmierer.
-
Simon2 schrieb:
- Mit dem Kunden zu klären, was seine Anforderungen eigentlich sind und seine konzeptionellen Schwächen auszubügeln (40%)
- Sich ein geeignetes Design auszudenken (auf Basis einer bestehenden Infrastruktur) (25%)
- geeignete Testverfahren zu definieren und durchzuführen (25%)
Also zweiteres gehört ganz klar zur Programmierung dazu. Letzteres eigentlich auch.
-
TactX schrieb:
Simon2 schrieb:
- Mit dem Kunden zu klären, was seine Anforderungen eigentlich sind und seine konzeptionellen Schwächen auszubügeln (40%)
- Sich ein geeignetes Design auszudenken (auf Basis einer bestehenden Infrastruktur) (25%)
- geeignete Testverfahren zu definieren und durchzuführen (25%)
Also zweiteres gehört ganz klar zur Programmierung dazu. Letzteres eigentlich auch.
... wenn ich mir hier (nicht nur in diesem Thread) aber ansehe, worüber der Großteil der Diskussionen geführt wird - und was "ich-will-Programmierer-werden"-Poster fragen/denken - , habe ich den Eindruck, dass diese Themen deutlich unterrepräsentiert sind.

Gerade junge Leute, die "Programmierer" werden wollen, wissen das einfach nicht und es sollte ihnen hier IMO deutlicher gesagt werden.
Gruß,
Simon2.
-
Simon2 schrieb:
Gerade junge Leute, die "Programmierer" werden wollen, wissen das einfach nicht und es sollte ihnen hier IMO deutlicher gesagt werden.
Ist auch vollkommen richtig

-
TactX schrieb:
Optimizer schrieb:
TactX schrieb:
Ich kann mir nicht vorstellen, was richtig low-leveliges mit C# zu machen. Ist auch noch nie geschehen.
Führe doch bitte mal genau aus, was mit C# nicht möglich ist in Punkto low-level Programmierung im Vergleich mit C++.
Z.B. einen kleinen Microcontroller effizient programmieren. Oder halt genau die Teile die bei Singularity eben auch nicht schön in der warmen VM rennen.
Das hat mit VM überhaupt nichts zu tun. Vielleicht solltest du dich mal genauer über die Möglichkeiten von C# informieren. Es gibt Pointer, nicht-GC Heaps, alles was du in C++ auch hast. In C++ gibt es nix tolles lowleveliges, was es in C# nicht auch gibt. Einfach herkommen und sagen "mit C# kann man nicht effizient programmieren" ist eigentlich nicht haltbar. Wenn dir eine Laufzeitumgebung zu heavy ist, dann lass sie weg. C# ist nur ein Sprache und dass ein Betriebssystem wie Singularity nicht in einer VM läuft ist doch auch völlig klar. Der BS-Code an sich wurde natürlich zu native Code compiliert, was nichts anderes ist als was die VM ohnehin immer macht.
Und um zum Thema zurückzukommen. Die Teile von Singularity, die normalerweise in C oder C++ geschrieben worden wären, sind in C# geschrieben worden. Wo ist das Problem? Da bekommt man dann einfach zu hören "geht nicht geht nicht ist scheiße", ohne dass irgendwelche Details genannt werden. Ist doch völlig arm, findest du nicht?
-
Und das selbe gilt für Treiber. Natürlich kann man einen Treiber in C# schreiben. Und wenn ein Betriebssystem von Treibern eine bestimmte Schnittstelle erwartet, muss man sie erfüllen, dazu kann dann auch gehören, dass er als Native Code vorliegt. Alles kein Problem. C# ist nur ne Sprache. Ich muss schon sagen, mir ist eigentlich am Ende egal, wie mein Betriebssystem zustande gekommen ist und wahrscheinlich sind größte Teile von Windows Vista in C++ geschrieben. Trotzdem verwundert mich diese ohne-C-oder-C++-geht-es-nicht Ansicht stark.
-
Um es kurz zu machen gestehe ich meinen Fehler: Ich lese bei C# immer gleich C#/.NET inklusive VM, managed Code usw...
Dass das nicht korrekt ist ist mir klar. Aber eben dafür wurde C# entworfen. C# ohne VM, ohne .NET macht einfach wenig Sinn.Aber ja, mein Fehler. Mea maxima culpa.
-
heisst das ich kann mit c# programme schreiben die ohne der vm laufen?
gibts da wo dokus dazu die nicht nur akademisch interessant sind?
geht/ginge das auch mit mono?
-
Optimizer schrieb:
wenn man ein Betriebssystem schreibt benötigt man Assembler-Kenntnisse...
nicht unbedingt.
Optimizer schrieb:
Oder hast du schon mal ein Betriebssystem gesehen, dass zu 100% in einer Hochsprache geschrieben ist?
ja...
Optimizer schrieb:
Dass irgendwo C verwendet wurde, scheint mir eine Erfindung von dir zu sein.
guckst du: http://channel9.msdn.com/ShowPost.aspx?PostID=68302
(dritter kommentar)
-
ten schrieb:
Optimizer schrieb:
Oder hast du schon mal ein Betriebssystem gesehen, dass zu 100% in einer Hochsprache geschrieben ist?
ja...
Dazu gehört dann Interrupt-Behandlung, Einstellungen für den protected mode und die Sicherheitsringe, Schreiben des Dispatchers usw. das ist dir schon klar, oder? Welche Hochsprache hat Sprachmittel für solche Dinge? Ich glaube, in der untersten Schicht wirst du immer etwas Assemblercode finden, natürlich versucht man, das möglichst gering zu halten. Beispielsweise habe ich zu diesem Zweck* eine vorhandene C-Bibliothek verwendet, um mich nicht selber damit rumschlagen zu müssen. Ich würde aber darauf wetten, dass die in einer Assemblersprache geschrieben worden ist.
* EDIT: Der Zweck war nicht, ein BS zu schreiben, sondern unter DOS eigene Interrupt-Behandlungsroutinen anzumelden, was dort noch problemlos möglich war.
Optimizer schrieb:
Dass irgendwo C verwendet wurde, scheint mir eine Erfindung von dir zu sein.
guckst du: http://channel9.msdn.com/ShowPost.aspx?PostID=68302
(dritter kommentar)Ich verstehe den Satz wie folgt: Der Debugger, den Microsoft verwendet hat eine C-Schnittstelle, die erfüllt werden muss, damit sie ihr eigenes Betriebssystem debuggen können. Mir ist klar, dass sie keinen neuen Debugger entwickeln, nur um ein Forschungsprojekt voranzutreiben. Es scheint zumindest mir jetzt so, dass sie das gebraucht haben, um ihre Entwickler-Tools weiterverwenden zu können und nicht, um das Betriebssystem zu schreiben.
-
daHa schrieb:
heisst das ich kann mit c# programme schreiben die ohne der vm laufen?
gibts da wo dokus dazu die nicht nur akademisch interessant sind?
geht/ginge das auch mit mono?Es gibt NGen, ein Tool von Microsoft, dass native images erzeugt. AFAIK sind sie aber nicht grundsätzlich ohne VM lauffähig, sondern weiterhin auf das Vorhandensein der CLR angewiesen. Das ist für den Fall, dass deren Sicherheitseinstellungen geändert werden oder was zur Laufzeit hinzugelinkt wird und dient dann eher als Optimierung, damit nicht erst zur Laufzeit alles kompiliert wird.
Es gibt aber 3rd-Party Tools die völlig unabhängige Executables erzeugen. Vielleicht schreibt Microsoft auch irgendwo, was sie bei Singularity verwendet haben.
-
Optimizer schrieb:
ten schrieb:
Optimizer schrieb:
Oder hast du schon mal ein Betriebssystem gesehen, dass zu 100% in einer Hochsprache geschrieben ist?
ja...
Dazu gehört dann Interrupt-Behandlung, Einstellungen für den protected mode und die Sicherheitsringe, Schreiben des Dispatchers usw. das ist dir schon klar, oder? Welche Hochsprache hat Sprachmittel für solche Dinge? Ich glaube, in der untersten Schicht wirst du immer etwas Assemblercode finden, natürlich versucht man, das möglichst gering zu halten. Beispielsweise habe ich zu diesem Zweck* eine vorhandene C-Bibliothek verwendet, um mich nicht selber damit rumschlagen zu müssen. Ich würde aber darauf wetten, dass die in einer Assemblersprache geschrieben worden ist.
Entpsrechende Erweiterungen zum Interrupthandling beim Compiler voraussgesetzt geht da natürlich auch ganz ohne Assembler.