C, C++, C# oder C.NET verwenden?
-
Hallo,
auf welche Programmiersprache soll ich mich konzentrieren, wenn ich folgendes vorhabe:
Ich möchte ein grafisch unterstütztes Warenwirtschaftsprogramm schreiben. Das Programm soll unter Windows lauffähig sein und auf eine MySQL Datenbank zugreifen. Wünschenswert wäre es natürlich mit wenigen Handgriffen auf Linux compilierbar zu sein, wenn es den Lernprozess nicht behindert.
Meine Vorkenntnisse beruhen sich auf: C64 und AVR Assembler Programmierung, C64 Basic, dann lange nichts, und nun wieder PHP 4.3 und HTML, mit dem ich eigentlich recht schnell zurecht kam.
Nun muss ich mich entscheiden auf welche Programmiersprache ich mich konzentrieren soll / erlernen soll, um das Programm zu schreiben. Bisher kene ich die Unterschiede der einzelnen Versionen nicht. Ich habe mir sagen lassen, daß Delphi dafür gut sei, jedoch die Hölle zum erlernen sei. .NET soll recht einfach sein.
Herum liegen habe ich noch eine CD von Microsoft Visual C++ 6.0, das ich vor 5 Jahren mal gekauft hatte. Die Experimente darauf beschränkten sich auf eine statische grafische Oberfläche. Für ein Warenwirtschaftssystem werde ich jedoch mehr mit Quellcode und dynamischen Oberflächen arbeiten müssen. Soll ich mit dem Programm weiterarbeiten oder ist es schon veralter bzw werde ich mit einerm anderen aktuelleren Programm schneller mehr erlernen / erreichen?
Was sind die Vorteile, Nachteile der einzelnen Versionen?
-
So, wie sich das für mich anhört, wärst du mit Java wahrscheinlich am besten bedient; das ist am einfachsten zu lernen. Weder C noch C++ lernt man über Nacht (insbesondere C++ ist ziemlich mächtig, aber auch dementsprechend komplex und schwierig zu erlernen), und mit C# haste so ziemlich jede Möglichkeit verspielt, das Ding auf Nicht-Windows-Plattformen ans Laufen zu kriegen.
Oh, und den MS Visual C++ 6.0 kannste wegschmeißen, das ist so ziemlich der schlechteste C++-Compiler, der noch erhältlich ist. Ich für meinen Teil benutze, wenn ich unter Windows code, meistens das MinGW Developer Studio. Die IDE ist vergleichbar, aber das Ding benutzt im Hintergrund einen vernünftigen Compiler; und es stellt ein paar brauchbare Bibliotheken zur Verfügung,
-
0xdeadbeef schrieb:
... und mit C# haste so ziemlich jede Möglichkeit verspielt, das Ding auf Nicht-Windows-Plattformen ans Laufen zu kriegen.
...
und was ist mit Mono?
-
Hallo Soltek,
erst einmal herzlich willkommen hier im Forum.
Das MS Visual C++ 6.0 ist eine reine Visual C++- Entwicklungsumgebung.
Die heutige Version, zum Beispiel "Microsoft Visual Studio .NET 2003" umfasst die native Sprache Visual C++ und alle neuen Sprachen, die mit DotNet entstanden sind. Du kannst dir das neue Studio auch selbst anschauen. Es gibt Beta-Versionen zum Download bei MS. Dort kannst du die gewünschte Version für die gewünschte Sprache auswählen. Das "Microsoft Visual Studio .NET 2003" umfasst alle Sprachen, die auf der .NET-Runtime ausgeführt werden kann. Dort musst du dich nicht zu einer Sprache entscheiden.
Wenn du nicht die MS-Version möchtest, kannst du auch die Freeware-Version #develop benutzen. Ist für den Einstieg gut brauchbar.Wenn man berücksichtigt, das die MFC von MS nicht mehr wirklich gefördert wird, solltest du dich für eine neuere Version entscheiden und dann DotNet benutzen oder auf Java umsteigen.
Beide (java und dotnet) sind sehr ähnlich. Keines ist leichter oder schwerer. Beide funktionieren prinzipell gleich. Letzendlich ist das eine Geschmacks- und Richtungsfrage.Soll ich mit dem Programm weiterarbeiten oder ist es schon veralter bzw werde ich mit einerm anderen aktuelleren Programm schneller mehr erlernen / erreichen
das Programm ist schon zu veraltet. Ich kann dir nicht empfehlen damit weiter zu arbeiten. Wenn du schon ein wenig in die MFC-IDE reingeschuppert hast, fällt dir die Umstellung zu .NET leicht. Lad dir doch einfach mal die Beta oder die #develop runter, und schau es dir an.
Der Vollständigkeitshalber:
Java solltest du dir dann auch gleich mal anschauen. Da ist Eclipse eine vielgenannte Freeware-IDE.
Weitere Informationen zu Java findest du auf der Homepage oder bei google.Bevor du dich für ein Kauf einer IDE entscheidest, solltest du die Freeware bzw. Betaversionen getestet haben (.NET und Java). Dann kannst du kaufen gehen.
Tutorials zu den jeweiligen Sprachen findest zu genug im Internet.
Es gibt auch viele .NET vs. Java- Seiten im Internet. schau da doch ein wenig rein. Bedenke aber, dass keine Seite objektiv ist.
-
Danke schon mal an alle freundlichen Antworten.
Also steht die Wahl zwischen .NET und Java. Ich habe mal etwa sim Netz recherchiert und festgestellt, daß .NET deutlich performanter sei als Java. Das scheint für ein Warenwirtschaftsprogramm, das von der Anzahl der Anwender unbegrenzt sein soll, schon sinnvoller.
Hat jemand schon mit Mono einen .NET source compiliert / Erfahrungen gesammelt?
-
Mono ist zwar ne nette Idee, aber da .NET bei der GUI auf Windows.Forms zurückgreift, die Mono nicht implementiert / nicht implementieren darf, ist die Plattformunabhängigkeit von .NET...wie drückt man das freundlich aus...stark eingeschränkt.
-
Soltek schrieb:
Danke schon mal an alle freundlichen Antworten.
Also steht die Wahl zwischen .NET und Java. Ich habe mal etwa sim Netz recherchiert und festgestellt, daß .NET deutlich performanter sei als Java. Das scheint für ein Warenwirtschaftsprogramm, das von der Anzahl der Anwender unbegrenzt sein soll, schon sinnvoller.
Hat jemand schon mit Mono einen .NET source compiliert / Erfahrungen gesammelt?
Es gibt bisher keinen unumstrittenen Benchmark, der einem von beiden eine höhere Performance bescheinigt hätte.
Prinzipiell hat die Java-Runtime im Moment die höhere Optimierungsfähigkeit, da sie dynamisch optimiert, während die CLR Methoden nur beim ersten Aufruf kompiliert.
Dafür starten .Net Programme aufgrund des Native Caches schneller und die Standardlib ist wohl meistens von MS besser implementiert, da eh nur für Windows.Außerdem sehe ich in der Sprache C# das höhere Optimierungspotenzial, da Methoden nicht standardmäßig virtuell sind und manchmal (selten) man mit structs ordentlich was rausholen kann. Ich bin tatsächlich vor kurzem in die Verlegenheit gekommen, mit meinem Point-struct gegenüber meiner vorherigen Point-class einen deutlichen Vorteil zu ergattern.
Außerdem gibt es noch so Späße wie mehrdimensionale Arrays.Andererseits scheinen mir die GC-Implementierungen von Sun wiederum ausgereifter zu sein, zumindest die Pause-Zeiten sind bei mir meistens geringer (bei Gen0 weniger als 1ms), wenn auch dafür öfter.
Ich kann im Moment für mich nicht entscheiden, was ich performanter finden soll, ich glaube, zur Zeit kann es niemand.
btw. wenn ich mir diese Aussage erlauben darf: Für dich dürfte das jetzt noch keine Rolle spielen.
-
Auf die Gefahr hin das du jetzt noch viel mehr verwirrt wirst gebe ich auch meinen Senf dazu. Ich halte Delphi nicht unbedingt für eine tolle Sprache, aber mir hat es den Einstieg zu C++ sehr erleichtert und ich denke es ist schnell zu lernen und ich nutze es ab und zu immernoch.
Für Datenbankanwendung kann ich dir das empfehlen http://sourceforge.net/projects/directsql
Damit ist es total easy, hier ist noch ein Tut dafür http://www.delphi-source.de/tutorials/mysqldirect/
Es scheint so als willst du möglichst bald loslegen, also meine Meinung: ein tut für Delphi lesen und dann los.
-
Halöle,
da dein Warenwirtschaftsprogramm später schnell und auf mehreren Systemen laufen soll würde ich persönlich zu C++ tendieren. Hier würde ich dann mit QT oder WxWidgets arbeiten, da du hiermit die möglichkeit hast das ganze auch auf Linux laufen zu lassen. IMHO ist C++ auch schneller wie Java oder C#. Der einzigste Nachteil ist wie oben schon gesagt das man ne weile länger braucht um dies zu erlernen was sich aber meiner Meinung nach auf alle Fälle lohnt...
-
Hi,
Optimizer schrieb:
Ich bin tatsächlich vor kurzem in die Verlegenheit gekommen, mit meinem Point-struct gegenüber meiner vorherigen Point-class einen deutlichen Vorteil zu ergattern.
das gehört zwar nicht zum Thema, aber könntest Du das bitte etwas näher erklären - was für ein Vorteil in welcher Situation ...?
-
Ich habe viele lokale Points, weil ich z.B. in einer Schleife per Funktion lauter Points erzeuge. Jedesmal dafür ein Objekt auf dem Heap zu erzeugen, obwohl es nur 16Byte hat, wäre ziemlich krass.
Außerdem hat jedes Objekt eine Position, die durch ein Point-Objekt repräsentiert wird. Die Wegfindung nutzt sehr viele Knoten, die auch alle eine Position auf der Karte haben. Alles zusammen würde das eine sehr enorme Menge Referenzen ergeben, denen der GC ständig folgen muss.
Meine Tests haben gezeigt, dass insbesondere die Wegfindung vorerst sehr unter den class-Points gelitten hat.
Das ist aber kein Grund, gleich fanatisch zu werden. In diesem Fall hat es nur einfach Sinn gemacht, weil es einfach nur ein int x und ein int y mit ein paar Methoden war.Und so ganz nebenbei macht es für mein Point hier eh mehr Sinn, Wertesemantik zu haben. Ich hatte ständig sachen wie
Point x = new Point(y); oder x.set(y);
Valuetypes haben manchmal einfach ihren Sinn, aber das merkt man dann schon. Grundsätzlich würde ich immer erstmal von ner Klasse ausgehen.