C# oder C++ Entscheidungsfrage, Swift Kenntnisse vorhanden

toma123

Banned
Registriert
Apr. 2020
Beiträge
100
Mein Kollege und ich haben ein kleines Problem und kommen einfach nicht auf eine Lösung.

Beruflich haben wir viel auf Windows Systemen zu tun (Win10). Dafür hat mein ehemaliger Kollege ein paar Tools mit Delphi geschrieben. Allerdings ist dieser nicht mehr im Unternehmen und daher wurde vorgeschlagen dies neu aufzulegen (ein paar neue Features sollen auch gleich integriert werden).

Der erste Vorschlag war dies in Python zu tun, allerdings ist auf den meisten Clients dies nicht installiert und somit müsste man die Runtime immer mitgeben, was allerdings aufgrund der Größe nicht gewollt ist (wird mitunter über 180 MB groß)

Das nächste wäre dies in C# zu entwickeln, allerdings mit den .Net Framework da es derzeit überall Standardmäßig mit installiert wird.

C++ wäre auch noch im Gespräch. Damit wären schnelle Tools möglich, allerdings soll es ja nicht so leicht sein zu erlernen.

Privat kann ich und mein derzeitiger Kollege "nur" Swift Programmierung, was ein Punkt für C# aufgrund der Ähnlichkeiten wäre.

Nun überlegen wir, C++ oder C# zu nehmen. Über ein paar Meinungen Eurerseits wären wir dankbar.

PS: Die kleinen Tools sollen Informationen auslesen. Ein anderes soll Mitarbeitern helfen ihre Arbeit einfacher zu erledigen, indem sie nur ein paar Daten eingeben müssen und einen passenden Link generiert bekommen.
 
C#
Ihr habt weder C++ Vorkenntnisse noch Altlasten noch spezielle C++ Abhängigkeiten - damit ist C++ raus.
 
  • Gefällt mir
Reaktionen: Dalek, Raijin, Tornhoof und eine weitere Person
Da C# deutlich einfacher als C++ ist und auch über mehr Sprachfeatures verfügt, würde ich C# verwenden. C++ verwendet man eigentlich nur, wenn der Ressourcenverbrauch so gering wie möglich bzw. die Performance so hoch wie möglich sein soll.
 
C#, definitiv!
 
Wer der bei Verstand ist würde freiwillig wenn er nicht muss C++ nehmen. Sowas von C#
 
Damit habt ihr uns bei der derzeitigen Entscheidung ganz klar geholfen, danke Euch.
 
Wenn ihr mit komplett neuen Sachen anfangt, bei C# darauf achten mit .NET Core 3 (oder im November dann .NET 5) zu starten, nicht mit dem .NET Framework 4.7. Der .NET Core Zweig wird aktiv weiterentwickelt, der alte .NET Framework Zweig wird zwar noch unterstützt, aber bekommt Neuentwicklungen nicht mehr ab.

Und wie alle anderen schon gesagt haben, C# ist in diesem Fall eindeutig die passendere Wahl.
 
Danke für den Tipp mit .NET Core 3, allerdings ist das dies ja das Problem mit der Dateigröße am Ende.

Auf den Zielsystemen ist meist nur .NET installiert und nicht gewollt das .NET Core3 nachinstalliert wird. Daher müsste man immer die Runtime mitgeben und dies lässt die Dateigröße gleich extrem ansteigen. Nur für eine Test GUI haben wir schon 160 MB gehabt.
 
Dalek schrieb:
Wenn ihr mit komplett neuen Sachen anfangt, bei C# darauf achten mit .NET Core 3 (oder im November dann .NET 5) zu starten, nicht mit dem .NET Framework 4.7.

Mit .NET Core 3.1 starten und beim .NET Framework ist 4.8 die aktuelle Version. Ansonsten korrekt.
 
toma123 schrieb:
Danke für den Tipp mit .NET Core 3, allerdings ist das dies ja das Problem mit der Dateigröße am Ende.

Auf den Zielsystemen ist meist nur .NET installiert und nicht gewollt das .NET Core3 nachinstalliert wird. Daher müsste man immer die Runtime mitgeben und dies lässt die Dateigröße gleich extrem ansteigen. Nur für eine Test GUI haben wir schon 160 MB gehabt.

Ich würde nochmal wirklich überlegen ob 160 MB ein Problem sind, Windows 10 selbst ist ja auch riesig. Es gibt da Verbesserungen in .NET 5 beim trimmen, wobei die noch ganz am Anfang sind und die aggressiveren Settings nicht so einfach zu verwenden sind.
 
toma123 schrieb:
Der erste Vorschlag war dies in Python zu tun, allerdings ist auf den meisten Clients dies nicht installiert und somit müsste man die Runtime immer mitgeben, was allerdings aufgrund der Größe nicht gewollt ist (wird mitunter über 180 MB groß)

Dass es nicht installiert ist, ist das einzige Hindernis Python zu verwenden?
Ich rate dringenst davon ab Python zu verwenden es sei denn man sucht Ersatz für Batch/Bash/Powershell-Skripte.

toma123 schrieb:
C++ wäre auch noch im Gespräch. Damit wären schnelle Tools möglich, allerdings soll es ja nicht so leicht sein zu erlernen.

Okay, also das ist stark anwendungsabhängig, aber so im Geschwindigkeitsverhältnis sind C++/C#/Python bei 1/1,5-3/150-300.
Kurz gesagt, dass du aus Geschwindigkeitsgründen auf C++ umsteigen musst von C# ist eigentlich ausgeschlossen. Wenn die Geschwindigkeit tatsächlich so wichtig wäre, dass es auf diesen Unterschied ankommt, dann hast du entsprechendes Vorwissen und damit brauchst du hier gar nicht fragen.

toma123 schrieb:
PS: Die kleinen Tools sollen Informationen auslesen. Ein anderes soll Mitarbeitern helfen ihre Arbeit einfacher zu erledigen, indem sie nur ein paar Daten eingeben müssen und einen passenden Link generiert bekommen.

Ich nehme mal an Quellcode der Software ist noch vorhanden? Bzw. die Tools sind Eigentum der Firma?
 
Okay, also vorhandener Quellcode wäre natürlich praktisch für's Portieren aber auch evtl. für das Weiterverwenden.
Für mich als Nicht-Jurist, der aber einen Juristen als Kollegen hat, fragt sich natürlich wem das Programm gehört. Evtl. kriegt man auch den Quellcode so.

Natürlich abhängig davon wie komplex die Programme sind. "Klein" kann ja alles bedeuten von Dateigröße zu Komplexität. Wenn das wirklich ganz ganz simple(!) Sachen sind, scheiß drauf.
 
ModellbahnerTT schrieb:
und es damit sein kann das Funktionen die ihr nutzt einfach bei C# rausfliegen.

In welcher Sprache mit entsprechendem Marktanteil ist das jemals passiert?

Ich kenne das bis jetzt überhaupt nur bei SourcePawn, dass man bestimmte Syntaktiken nachträglich auf neueren Compilern inkompatibel gemacht hat (die Plugins konnten aber immernoch mit älteren Compilern übersetzt werden und waren damit lauffähig).

Es ist eine ganz ganz unvorstellbar blöde Idee sowas zu tun.

Vielleicht verstehen wir ja unter "rausfliegen" etwas anderes.
 
  • Gefällt mir
Reaktionen: new Account() und Madman1209
Was denn genau? Das hatte ich ja vorher schon gefragt.
Wobei sich die Diskussion durch #17 erübrigt hat. Mich interessiert aber trotzdem was du genau meinst.
 
Natürlich sollte man sich lieber höhere Sprachen aussuchen, um schneller Ergebnisse zu erzielen. Also von daher wahrscheinlich für euch C# > C++.
Trotzdem möchte ich, da hier ja über deployment gesprochen wurde, nochmal darauf hinweisen, dass es mit C++ schon sehr bequem sein kann kleine Tools auszurollen: Statisch gelinkt hat man einfach eine Binary mit wenigen MB und diese ist automatisch auf JEDEM aktuellen Windows lauffähig. Ganz egal, ob .Net oder C++ Redstributables installiert sind oder Win frisch installiert wurde oder ähnliches.
Das ist soweit ich weiß mit keiner anderen modernen Sprache möglich.
Ich war schon öfter in der Situation, dass bei Kunden oder entfernten Projekt-Rechnern ein Tool benötigt wurde. Und nur mit ner C++.exe war ich mir sicher: "Läuft bei mir? Läuft daher auch auf dem Ziel-Rechner mit gleichem Verhalten.". Und das sogar ganz ohne installieren zu müssen. Egal, ob vom SUB-Stick, vom Netzlaufwerk oder sonstwas.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: TriggerThumb87

Ähnliche Themen

Zurück
Oben