Hallo
wir diskutieren gerade in der Arbeit, mit welcher Software wir zukünftig
PC-Steuerungen programmieren wollen. Aktuell wird C# und der Borland C++
Builder verwendet. Wer programmiert Messsoftware/ Steuerungen in
Microsoft C++/C# (2010) und kann Vor- und Nachteile von Visual C++
(.net) und C# nennen ? (Es steht auch nur genanntes zur Diskussion, also
kein HP VEE oder LabView oder Konsorten :-) )
Gruß
Gerhard
Gerhard schrieb:> Wer programmiert Messsoftware/ Steuerungen in> Microsoft C++/C# (2010) und kann Vor- und Nachteile von Visual C++> (.net) und C# nenne ?
Ich mach' sowas in C#.
Das Borland kenn' ich nicht. Aber verglichen mit der letzten .Net-freien
Version in Visual Studio 6.0 ist C++.Net einfach eine Krücke.
Ich denke, daß Microsoft das auch nur noch solange pflegt, bis die
letzten MFC-Programmierer in Rente gegangen sind.
DIE .Net-Sprache ist m.E. eindeutig C#.
mfg.
Das ist eine interessante Fragestellung.
Ich habe ebenfalls mit technischer PC-Software zu tun, die im
Dauerbetrieb funktionieren muß. Bisher bin ich dabei sehr konservativ
und verwende nur natives C++/MFC und sehr gut ausgeteste Bibliotheken.
Erste Erfahrungen mit VC10 für kleinere Teilprojekte sind bisher
vielversprechend, aber ich bin bezüglich des UI noch unentschlossen.
Bitte schreibe doch mal über eure Erfahrung mit C# und .net in einer
technischen Umgebung, insbesondere über den 24/7-Einsatz.
24/7 schrieb:> Das ist eine interessante Fragestellung.>> Ich habe ebenfalls mit technischer PC-Software zu tun, die im> Dauerbetrieb funktionieren muß. Bisher bin ich dabei sehr konservativ> und verwende nur natives C++/MFC und sehr gut ausgeteste Bibliotheken.
99% genauso bei uns
Für Programmteile, bei denen es auf Performance ankommt, wird
es auch noch lange so bleiben. Da die MFC nur ein dünner Wrapper
um die Winapi ist, gibt es auch keine Geheimnisse oder
unerklärlichen Phänomene denen man nicht Herr werden könnte.
...auch wenn die MFC seit mindestens 10 Jahren schon totgesagt wurde.
Solange man keine Teletubbi-Schickimickifrontend braucht, spricht
auch dabei nichts gegen die MFC.
My 2 cent
Ich weiß nicht, ob man marktführende Produkte in dieser Fragestellung
einfach so kategorisch (ideologisch?!?) ausschließen sollte. Auch halte
ich z.B. Diagramme oder Anzeigen, die während der Messung auf einfache
Art und Weise den aktuellen Zustand visualisieren nicht für
"Teletubbi-Schickimickifrontend". Mag ja mächtig wichtig erscheinen,
alles in möglichst kryptographischer Art in einer Shell darzustellen. Ob
dies jedoch einer professionellen Prüfstandssoftware (um die es hier
jawohl geht) gerecht wird, sollte jeder für sich selbst entscheiden. [Um
den Wind aus den Segeln zu nehmen: Ja, ich bin auch in der Lage in einer
Shell zu arbeiten!]
Aber zum Thema: Wenn ihr tatsächlich für eine der beiden Sprachen
entscheiden müsst, würde ich sagen, nehmt dass, das für eure eingesetzte
Hardware die bessere Treiberunterstützung DLLs Programmierbeispiele
bietet. Und das wäre bei unseren Produkten eher C++.
Hi,
wir benutzen ebenfalls VS2010 mit C# und auch noch den "guten" alten
C++-Builder 5. Mit beiden Entwicklungsumgebungen arbeiten wir jetzt
schon recht lange, so dass ich mir mal ein Urteil erlaube:
C++-Builder: Eigentlich ein gutes Konzept. Ich mag die VCL, da sie
leicht zu verstehen ist und viele wichtige und sinnvolle Windowselemente
kapselt und auch einheitlich darstellt. Leider hat es Borland geschafft,
durch nicht vorhandenen Service und wirklich haarsträubender Fehler im
Compiler und in der IDE den Großteil seiner Kunden zu vergraulen. Gerade
bei großen Projekten stößt der C++-Builder schnell an seine Grenzen und
man programmiert um bestimmte Fehler herum. Für heutige Verhältnisse
kann man aber kleine kompakte Programme erstellen, die auch auf älterer
Hardware ohne Probleme läuft. Für meine privaten kleineren
Softwareprojekte benutze ich den Builder immer noch, denn man kommt
damit schnell zum Ziel. Was von diesen Aussagen für die neueren
Versionen noch gilt kann ich nicht sagen, wir sind aus bestimmten
Gründen (kaputte Internationalisierungstools in Version 6) bei dieser
Version geblieben.
VS2010: Machst Du .NET, dann nimm um Himmels Willen auch C#. C++ mit den
.NET-Erweiterungen ist wirklich eine Krücke und kommt bei uns nur in
managed/unmanaged-Wrapper-Dlls zum Einsatz. Hat man sich mit C# erst
einmal angefreundet, dann bietet es eine Fülle von neuen Möglichkeiten
(z.B. Reflection, LINQ), die Probleme auf recht elegante Weise mit wenig
Code lösen lassen. Auch die Unterstützung durch die IDE ist hervorragend
und macht nach kurzer Zeit richtig Spaß.
Kennt man die Borland-VCL, dann kommt man auch schnell mit WinForms
zurecht.
Möchte man WPF benutzen, dann steht man erst einmal wie der Ochs vorm
Scheunentor, denn die Lernkurve ist wirklich extrem steil und viele
bekannte Konzepte und Vorgehensweisen nützen einem hier nichts mehr.
Verabschieden kann man sich z.B. von einem visuellen Editor zur
Dialogerzeugung. Den gibt es zwar unter WPF auch noch, nur funktioniert
Klickie-Klackie dort konzeptbedingt einfach nicht. Also schreibt man
seine Dialoge direkt in XAML und das muss man erst einmal erlernen und
verstehen. Die Möglichkeiten sind dann allerdings fast unbegrenzt und
die Oberflächenlogik läßt sich zum Großteil implizit in XAML beschreiben
und man muss sich in der Applikation nicht mehr darum kümmern.
Mit heutigen Rechnern sehe ich auch bei den aufwendigen WPF-Oberflächen
keine Performanceprobleme.
Bei der Ansteuerung von spezieller Hardware kann es dagegen schon etwas
aufwändiger werden, vor allem dann, wenn mit C-Frameworks der Hersteller
interagiert werden muss. Wir haben in solchen Fällen .NET-C++-Wrapper
benutzt, um von der managed- zur unmanaged-Welt zu gelangen. In
einfachen Fällen mögen aber auch ein paar P-Invoke-Funktionen reichen.
Mein Fazit: Ich würde C#.NET benutzen, da die Sprache und die IDE tolle
Möglichkeiten bietet. Was man für die Oberfläche nimmt muss jeder selbst
entscheiden, hier mögen auch Kundenwünsche ausschlaggebend sein.
Gruß,
Oliver
Hallo
danke für die Posts. Ich habe ja gehofft, dass VC++ als Empfehlung
rauskommt. Bisher habe ich nur mit dem C++ Builder gearbeitet, und da
kann nach herzenslust alte Traditionen wie globale Variablen usw genutzt
werden, was aber bei C# nicht geht (oder doch?). Alte Vorlieben wirft
man ungern über Bord. Muss ich mich also doch noch mal mit C#
beschäftigen.
Gruß
Gerhard
Gerhard schrieb:> Hallo>> danke für die Posts. Ich habe ja gehofft, dass VC++ als Empfehlung> rauskommt. Bisher habe ich nur mit dem C++ Builder gearbeitet, und da> kann nach herzenslust alte Traditionen wie globale Variablen usw genutzt> werden, was aber bei C# nicht geht (oder doch?).
Wie in C++ auch. Klasse mit öffentlichen, statischen Methoden, Membern
oder Eigenschaften
> Alte Vorlieben wirft> man ungern über Bord. Muss ich mich also doch noch mal mit C#> beschäftigen.
Zum einen ist, wie schon erwähnt wurde, der Übergang von VCL zu WinForms
bzw. dem .NET-Framework relativ "weich" (man sieht deutlich die
Handschrift von Anders Hejlsberg (TP, VCL, C#, .NET)), andererseits ist
das Framework wesentlich umfangreicher d.h. die Eingewöhnung in C# 2)
dürfte, je nach Vorkenntnissen/Motivation nur einen Bruchteil der Zeit
ausmachen den man braucht, um das gesamte Framework zu überblicken und
voll nutzen zu können.
Wenn man sich auf WinForms "beschränkt" 1), kann man mit C# und .NET
auch portable Sachen entwickeln.
> Gruß> Gerhard
1) http://www.mono-project.com/Compatibility
"Everything in .NET 4.0 except WPF, EntityFramework and WF, limited
WCF."
2) Preview der neueren Funktionen u.a. CaaS und den guten alten Read
Evaluate Print Loop
http://msdn.microsoft.com/en-us/roslyn