Zukunft



  • 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.



  • TactX schrieb:

    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.

    Ich finde es witzig, dass du den Embedded Bereich anschneidest, nachdem Microsoft bereits vor einiger Zeit das .NET Micro Framework (siehe golem.de [1]) angekündigt hat, wobei ich es eher als Proof-of-Concept Projekt verstehe.

    [1]: http://www.golem.de/0609/48051.html



  • foobar aus dem Wald schrieb:

    TactX schrieb:

    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.

    Ich finde es witzig, dass du den Embedded Bereich anschneidest, nachdem Microsoft bereits vor einiger Zeit das .NET Micro Framework (siehe golem.de [1]) angekündigt hat, wobei ich es eher als Proof-of-Concept Projekt verstehe.

    [1]: http://www.golem.de/0609/48051.html

    Ich verstehe nicht ganz was du da witzig findest. Die typischen ARMs sind imho weit davon entfernt klein zu sein, "512kb bis 1 MByte" ebenso.
    Ich sehe das auch nicht unbedingt als "Proof-of-Concept". Sicher will MS schon länger in dem Markt expandieren. Aber wie gesagt, klein ist was anderes.



  • 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.

    quatsch, guckst du hier: http://www.nilsenelektronikk.no/nenesos.html



  • Du hast jetzt ein "Betriebssystem" für embedded systems ohne Interrupts gefunden und das soll jetzt was beweisen? Inwiefern steht das in Zusammenhang mit Betriebssystemen, über die wir vorhin geredet haben? Wolltest du einfach nur irgendwas sagen, damit du mir ein saloppes "Quatsch" vorwerfen kannst?

    Du kannst bei heute üblichen Desktop-Computern nicht auf Interrupt-Behandlung verzichten, die Interaktion mit I/O Geräten basiert darauf und präemptives Multitasking ebenfalls. Keiner will heute ein nicht-präemptives Multitasking auf seinem Desktop-Computer und I/O was vollständig auf Polling basiert frisst wertvolle CPU-Zeit. Das ist nur interessant bei embedded systems, wenn es vielleicht 1 oder 2 Kommunikations-Kanäle gibt.

    Also nichts, was mit dem bis jetzt besprochenen Betriebssystemen zu tun hat (ich habe immerhin von Singularity, ein Betriebssystem für Desktop-PCs geredet). Hat dein "Beitrag" jetzt irgendeinen Sinn gehabt, wenn ja erkläre ihn.


Anmelden zum Antworten