Expertensystem mit C# und .net 4.0 macht das Sinn?



  • Hallo ich möchte mit zwei bekannten Programmierern ein Expertensystem schreiben, es soll auf einem Desktop PC/Server laufen und ich würde als Programmiersprache zu Visual C# und .net4.0 tendieren, die beiden haben bisher aber alle Systeme in C++ entwickelt (was ich ebenfalls beherrsche aber c# find ich deutlich komfortabler - und wenn ich ehrlich bin einfacher, ansprechender, weniger fehleranfällig), vorwiegend für den Bereich Medizin. Sie sagen C++ ist immer noch viel schneller und nahezu alle Expertensysteme werden in C++ geschrieben (was ich nicht ganz glaube). Was sagt ihr dazu? C# oder C++???



  • witcher111 schrieb:

    Hallo ich möchte mit zwei bekannten Programmierern ein Expertensystem schreiben, es soll auf einem Desktop PC/Server laufen und ich würde als Programmiersprache zu Visual C# und .net4.0 tendieren, die beiden haben bisher aber alle Systeme in C++ entwickelt (was ich ebenfalls beherrsche aber c# find ich deutlich komfortabler - und wenn ich ehrlich bin einfacher, ansprechender, weniger fehleranfällig), vorwiegend für den Bereich Medizin. Sie sagen C++ ist immer noch viel schneller und nahezu alle Expertensysteme werden in C++ geschrieben (was ich nicht ganz glaube). Was sagt ihr dazu? C# oder C++???

    C++ ist plattformunabhängig.
    Bei C++ hast du viel mehr Möglichkeiten zu optimieren, passende Speicherallokatoren verwenden, uvm.

    C# ist eine Microsoft Sprache. Und damit macht man sich abhängig von einer amerikanischen Firma. Ich bewerte das mal nicht, jeder darf sich dazu selbst eine Meinung bilden.
    C# hat ein super Framework, man kommt also recht schnell zu GUIs, auch DB Programmierung, Webservices u.ä. lassen sich in kürzester Zeit implementieren.
    C# hat den Overhead, dass es interpretiert werden muss.

    Ich sag mal so: wenn du 2 gute C++ Entwickler im Team hast, nimm C++. Damit kannst du immer noch tolle Frameworks wie wxWidgets oder Qt verwenden, hast eine gute Performance und machst dich nicht von einer Firma abhängig.



  • Die Sprache ist eigentlich völlig egal, auch solche Überlegungen wie Performance dürften bei einem Expertensystem nicht die entscheidende Rolle spielen. Wenn man sich mit einer Sprache nicht gut auskennt oder sich dabei nicht wohl fühlt, wird es einfach nichts. Ich kann nicht einschätzen wie gut du oder deine Bekannten C++ können. Das ist das größte Problem an der Sache. Wenn man das nicht gut kann, wird man das Projekt schnell gegen die Wand fahren. Aussagen wie "was ich ebenfalls beherrsche aber c# find ich deutlich komfortabler" finde ich gefährlich. Als ich noch ein Schüler war, habe ich auch so ähnlich gedacht (nur wars bei mir damals Delphi und nicht C#). Ich konnte ein bisschen was mit C++ anfangen und dachte, ich kanns. Aber ich konnte gar nichts. Mit so einem Kenntnisstand braucht man keine größeren Projekte anfangen.



  • Willste die Engine etwa selbst proggen? 😮 😮



  • C#. Da sind wesentlich weniger Schweinereien ohne expliziten Cast erlaubt, es gibt lustige Frameworks für Sachen wie Aspect Oriented Programming etc.
    Wenn geringe Bug-Quote wichtig ist, und ich schätze dass das bei Software für den Bereich Medizin wichtig sein sollte, dann eher C# als C++.

    Bzw. sonst würden mir bei dem Thema noch Ada und Eiffel einfallen.



  • Wie kommt man bei dem Thema auf Ada und Eiffel? Prolog wäre da viel logischer



  • Weil beide Sprachen nen Schwerpunkt auf "Correctness" legen, und gute Tools dafür anbieten Fehler zu vermeiden. Was ich bei Software für den Bereich Medizin für nicht ganz unwichtig halte.



  • vfsdfdsfs schrieb:

    C# hat den Overhead, dass es interpretiert werden muss.

    Nein.

    C# wird nie interpretiert sondern immer JIT compiliert - ausgeführt wird immer native Code.
    Was auch ein Grund dafür ist dass C# Programme nicht so langsam sind wie viele meinen immer wieder behaupten zu müssen.



  • Mechanichs schrieb:

    Jo, genau!
    Eigentlich müßte man gar nix mehr dazuschreiben, ich male mal noch ein paar Blümchen drumherum.

    witcher111 schrieb:

    Hallo…

    Sehe ich das recht, daß die beiden deutlich stärker programmieren als Du, aber Du eher im administrativen Bereich rumfunken wirst? Dann zwing die doofen Codemonkeys, eigentlich Hilfsarbeiter, natürlich nach Deiner Lieblingssprache, dann habt Ihr alle Probleme schnell hinter Euch.

    witcher111 schrieb:

    Sie sagen C++ ist immer noch viel schneller

    Das dürfte hier vollkommen irrelevant sein. Gerade in der Medicin, da kann man sich doch einen doppelt so schnellen Prozessor holen und hat einen eventuellen C#-Malus schon überkompensiert. Ok, es sind Implementierungen vorstellbar, wo das nicht reicht, denke zunächst an Bloomfilter und so ganz abgefahrene Sachen, aber die macht Ihr nicht. Denke, ihr habt durch C# vielleicht 5-10% Malus. Vollkommen irrelevant. Schätze, die Korrektheit ist unglaublich wichtig. Danach die kompatibilität mit den Benutzern. Danach die Pflegbarkeit der Daten. Danach Euer Entwicklungsaufwand. Danach ganz lange nix. Danach ein paar Misthaufen. Und dann erst die Performance.

    Für C++ spricht, daß es (abgesehen von einer gewissen stets vorliegenden sportlichen Härte) total einfach und unkompliziert ist (normal sind tiefe Kopien), wenn man RAII verinnerlicht und den Code einfach halten will (nicht alles generifizieren, nicht Sprachmittel verwenden nur weil sie da sind, halt ein bißchen erwachsen programmieren). Für C# spricht, daß gerade jüngere Programmierer sich damit nur manchmal in den Fuß schießen, aber nicht in den Bauch.

    Für den Kerne des Expertensystems werdet Ihr vermutlich kein C++ brauchen, also hoppgallopp, C# passt. Die Oberfläche, alles mit Klickibunti interaktiv, das ist mit C# eine Wonne. Drucken, mit usergenerierten Masken, mächtiger als Standard-XML-Sachen? Naja, da fährt man gegen eine Wand, während es mit C++ gewohnt steinig aber nicht steiniger wird.

    Tausend weitere Aspekte spare ich mir mal aufzuschreiben, beantworten könnten wir die Sache nur, wenn wir wüßten, was Ihr drei schon so könnt und mögt (inclusive Lieblingsbücher).

    Sag den Jungs, sie sollen 3 Wochen lang mal C# wirklich ausprobieren. Und dann redet nochmal. Fürchte, das ist mehr wert als jede Ferndiagnose von uns.



  • Mal ganz davon abgesehen das man performancekritische Teile einfach in C++ implementieren und dann als Assembly in C# einbinden kann. Quasi das Beste aus beiden Welten.



  • hustbaer schrieb:

    Weil beide Sprachen nen Schwerpunkt auf "Correctness" legen, und gute Tools dafür anbieten Fehler zu vermeiden. Was ich bei Software für den Bereich Medizin für nicht ganz unwichtig halte.

    Als ob es bei einem Expertensystem im entferntesten um Leben und Tod gehen würde...



  • volkard schrieb:

    Ok, es sind Implementierungen vorstellbar, wo das nicht reicht, denke zunächst an Bloomfilter und so ganz abgefahrene Sachen, aber die macht Ihr nicht.

    Warum ist das ausgerechnet bei bloomfiltern ein problem?



  • Hardware? OS?

    Ist es überhaupt Windows oder Linux (Mono)? Oder ein anderes OS, auf dem es gar kein .Net gibt? Diese Info ist doch wichtig für eine Entscheidung.

    Ansonst ist ja auch C++ mit einer Scriptsprache (Lua oder Angel) gut kombinierbar. Für Correctness gibt es xUnit.

    Aber wenn es für die Zielplattform .Net/Mono gibt, würde ich auch C# in Betracht ziehen.



  • Jester schrieb:

    volkard schrieb:

    Ok, es sind Implementierungen vorstellbar, wo das nicht reicht, denke zunächst an Bloomfilter und so ganz abgefahrene Sachen, aber die macht Ihr nicht.

    Warum ist das ausgerechnet bei bloomfiltern ein problem?

    Da hab ich falsch gedacht.
    Außer vielleicht mit der gegen Überläufe geprüften Arithmetik und den Hash-Funktionen, das könnte lahm werden.



  • hustbaer schrieb:

    vfsdfdsfs schrieb:

    C# hat den Overhead, dass es interpretiert werden muss.

    Nein.

    C# wird nie interpretiert sondern immer JIT compiliert - ausgeführt wird immer native Code.
    Was auch ein Grund dafür ist dass C# Programme nicht so langsam sind wie viele meinen immer wieder behaupten zu müssen.

    ich glaube kaum, dass die JIT Compilierung "gratis" ist.
    C++ Code wird direkt ausgeführt, bei C#/.NET muss erstmal der Zwischencode übersetzt werden, und erst dieser kann dann ausgeführt werden. Das muss einfach einen gewissen Overhead erzeugen.



  • Was heißt du glaubst und es muss? Wen interessierts? Ich hab vier Jahre C# programmiert, und das ist auch schon wieder Jahre her, dazwischen liegen paar Hardwaregenerationen. Die Performance war damals schon völlig ausreichend, ich hab nie irgendeinen Unterschied gespürt. Die Programme haben schnell gestartet und haben flott reagiert, es gab überhaupt keine Probleme.



  • Mechanics schrieb:

    Was heißt du glaubst und es muss? Wen interessierts? Ich hab vier Jahre C# programmiert, und das ist auch schon wieder Jahre her, dazwischen liegen paar Hardwaregenerationen. Die Performance war damals schon völlig ausreichend, ich hab nie irgendeinen Unterschied gespürt. Die Programme haben schnell gestartet und haben flott reagiert, es gab überhaupt keine Probleme.

    das stimmt so nicht.

    auf embedded hardware ist das starten des .net frameworks deutlich spürbar.
    c++ hingegen startet direkt los ohne verzögerung.

    außerdem hat c# deutlich mehr checks zur laufzeit, sodass auch zur laufzeit c++ einen vorteil hat.



  • @vfsdfdsfs
    Ich hab' auch nicht behauptet dass es keinen Overhead gäbe.
    Ich hab' nur eine unwahre Behauptung von dir korrigiert.



  • nene schrieb:

    auf embedded hardware ist das starten des .net frameworks deutlich spürbar.

    Mag sein. Das wär aber schon wieder eine zusätzliche Randbedingung, die hier nicht angegeben wurde und mich daher auch nicht interessiert.



  • vfsdfdsfs schrieb:

    ich glaube kaum, dass die JIT Compilierung "gratis" ist.
    C++ Code wird direkt ausgeführt, bei C#/.NET muss erstmal der Zwischencode übersetzt werden, und erst dieser kann dann ausgeführt werden. Das muss einfach einen gewissen Overhead erzeugen.

    Ah, ein echter JIT Experte. Kannst Du denn auch die Vorteile des JIT-Compilierens aufzählen oder bashst Du hier nur mit Halbwissen etwas das Du nicht verstehst?


Anmelden zum Antworten