Python oder C# ?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
nostago
User
Beiträge: 6
Registriert: Sonntag 9. Januar 2022, 14:35

Hallo,
wir sind uns so unschlüssig ob wir besser zu C# wechseln sollten, scheinbar ist das erstellen von .exe Dateien über Python schon umständlicher als über C#.
Korrigiert mich wenn ich mich irre. Vom lernen finden wir (Mein Sohn und ich) Python sehr angenehm. Aber das Compilieren scheint schwierig zu sein.

Was sagt ihr als Fachleute dazu?

Vielen Dank!
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Es ist eher ungewöhnlich Python-Programme als .exe Datei auszuliefern. Genaugenommen schließt man damit auch alle Benutzer aus, die nicht Windows verwenden, sonst das Programm aber problemlos benutzen könnten.
Da wird auch nichts kompiliert. Da wird einfach nur der Python-Interpreter und dein Script + Abhängigkeiten in ein selbstentpackendes Archiv gesteckt, dass beim Start entpackt wird und dann den darin enthaltenen Interpreter mit deinem Script startet. Das ist jetzt nicht das, was ich als "Kompilieren" verstehen würde. Auch wenn am Ende in der Regel die .pyc statt der .py Dateien im den Archiv landen.
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Das schöne an Python ist, dass man sich um das Compilieren nicht kümmern muß, weil das der Pythonaufruf selbst macht. Für was wollt ihr denn eine .exe-Datei haben?
nostago
User
Beiträge: 6
Registriert: Sonntag 9. Januar 2022, 14:35

Danke für die schnellen Antworten,
wir möchten eine Sprache lernen die nicht allzu schwer ist um Windows Anwendungen zu programmieren.
Vor vielen Jahren habe ich PHP und MySQL geschrieben, aber einiges vergessen.

Die Sprache sollte nicht zu schwer zum erlernen sein, ich nenne da mal Java die ich nun wirklich nicht lernen möchte :-)

Dann sollte man also eher zu C# wechseln?
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Was heißt denn "Windows Anwendungen"?
nostago
User
Beiträge: 6
Registriert: Sonntag 9. Januar 2022, 14:35

Sirius3 hat geschrieben: Sonntag 9. Januar 2022, 17:58 Das schöne an Python ist, dass man sich um das Compilieren nicht kümmern muß, weil das der Pythonaufruf selbst macht.
Das verstehe ich nicht so ganz, gillt das auch für Windows?
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Ja*.

* (möglicherweise gibt es Implementation der Sprache, die das nicht tun, aber für das was du als "Python" kennst, gilt das nicht)
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

C# und Java sind quasi Zwillinge, separiert bei der Geburt. Oder eher nachdem MS verklagt wurde von SUN, seine Java-Technologie nicht zu pervertieren… wenn dir Java nicht zusagt, wird C# das kaum verbessern.

Die EXE-Problematik nervt, aber letztlich ist das “nur” eine Paketierungssache. Kompiliert wird da nicht wirklich was, es werden nur die byte Code Dateien genommen, statt direkt lesbarem Code. So signifikant ist das aber nicht, es ist immer noch der Python Interpreter.
nezzcarth
User
Beiträge: 1765
Registriert: Samstag 16. April 2011, 12:47

nostago hat geschrieben: Sonntag 9. Januar 2022, 18:04 wir möchten eine Sprache lernen die nicht allzu schwer ist um Windows Anwendungen zu programmieren.
Windows vermittelt einem meiner Meinung nach teilweise den Eindruck, ein "echtes Programm" sei nur etwas, das eine grafische Oberfläche hat und als Exe-Datei daher kommt. Beides ist aber nicht korrekt und als Entwickler*in sollte man sich, finde ich, von diesen Vorstellungen lösen, ansonsten wird man mit Python, aber auch anderen Technologien möglicherweise immer etwas fremdeln. Man kann auch erfolgreich Software für Windows schreiben, ohne, dass etwas kompiliert wird und eine Exe-Datei dabei herauskommt.
Benutzeravatar
noisefloor
User
Beiträge: 4196
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich finde generell das Entscheidungskriterium etwas befremdlich, dass möglichst einfach eine .EXE Datei am Ende stehen soll. Damit fallen ja alle interpretierenden Sprache inkl. Python, per so schon mal weg.

Per se kann man auch unter Windows den Code jeder interpretierenden Sprache ausführen, wenn der Interpreter bzw. die Laufzeitumgebung installiert ist. Ist bei Python ja der Fall.

Gruß, noisefloor
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wobei witzigerweise C# zwar EXE-Dateien erzeugt, und damit diesen Mythos nur EXE ist das einzig wahre aufrecht erhält, das aber letztlich gar keine echten EXE-Dateien sind. Das einzige was die *wirklich* können, ist dem Benutzer ausgeben, dass sie ohne .NET-Laufzeitumgebung nicht funktionieren. Um wirklich laufen zu können, brauchen sie das .NET-Ökosystem auf dem Rechner installiert. Also das Gegenstück zu Java's JVM-Laufzeitumgebung. Wie __deets__ schon anmerkte sind C# und Java so etwas wie Zwillinge.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
nostago
User
Beiträge: 6
Registriert: Sonntag 9. Januar 2022, 14:35

Vielen herzlichen Dank für die Zahlreichen Antworten,
ich gebe zu einiges nicht verstanden zu haben, aber auch das hat geholfen zu verstehen das ich noch am Anfang stehe und offen bleiben muss.
Es muss nicht unbedingt eine .exe am Ende stehen, aber ein Programm welches auf jedem Windows Rechner läuft. Wenn es ein Paket gibt in dem alles vorhanden ist
und läuft ohne zuvor Python runterladen zu müssen ist es absolut in Ordnung, nur wie packe ich sowas?
Parallel zu Python haben wir uns nun die ersten Videos zu C# angesehen und nur wenige Unterschiede fest gestellt, wir fahren wohl zweigleisig bis sich etwas,
wie auch immer in unseren Vordergrund stellt.

Grüße und Dank
Benutzeravatar
wlfmario
User
Beiträge: 10
Registriert: Donnerstag 28. Juni 2018, 20:04
Wohnort: 192.168.0.1

Wenn es ein Paket gibt in dem alles vorhanden ist
und läuft ohne zuvor Python runterladen zu müssen ist es absolut in Ordnung, nur wie packe ich sowas?
Evtl. hilft das etwas !

https://www.youtube.com/watch?v=U1nMigAIbH0&t=4s
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Wird .NET eigentlich standardmäßig mit Windows 10 mitgeliefert bzw kann man C# Programme einfach so auf Windows ausführen?
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@burli,

.Net benötigt eine Laufzeitumgebung.
Wenn man eine Applikation in C# schreibt und diese als fertige Applikation bereitstellen möchte, kann man entscheiden, ob diese völlig eigenständig lauffähig sein soll oder ob sie die zusätzliche Installation der Laufzeitumgebung benötigen soll. Das kann man in den Projekteinstellungen angeben. Es gibt da auch viele Einstellmöglichkeiten und Varianten.
Hier ist eine Dokumentation dazu:
https://docs.microsoft.com/en-us/dotnet/core/deploying/

Also einfache Antwort: Ja, man hat das fertige Programm, wenn es mit den richtigen Einstellungen erstellt wurde eigenständig laufen lassen.
Wird .NET eigentlich standardmäßig mit Windows 10 mitgeliefert
Nein eigentlich nicht. Aber da viele Windows Applikationen diese Laufzeitumgebung benötigen, kann es durchaus sein, dass sie bereits installiert wurde.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

rogerb hat geschrieben: Sonntag 16. Januar 2022, 12:58 Nein eigentlich nicht.
Wundert mich.

Ich weiß, dass man für C# eine Laufzeitumgebung braucht. Weil ich wenig mit Windows zu tun habe wusste ich jetzt nur nicht, ob die schon "ab Werk" mitgeliefert wird.

In dem Fall ist C# für nostago eigentlich auch keine Option, weil genau wie bei Python (oder Java) eine Laufzeitumgebung installiert sein muss.

Wenn man sicherstellen will, dass ein Programm auf jedem (Windows) Rechner läuft, ohne dass noch extra etwas installiert werden muss, muss man zu eine Sprache wie C/C++, Rust oder zur Not Pascal greifen. Aber selbst da kann es sein, dass das Programm nicht läuft, wenn nötige DLLs nicht installiert sind. Wenn man sicherstellen will, dass ein Programm garantiert läuft, braucht man einen Installer, der alles nötige installiert, was eventuell fehlen könnte. Einfach nur eine .exe reicht bei keiner Programmiersprache, um die Lauffähigkeit zu 100% sicherzustellen.

Unter Linux würde man heutzutage ein Flatpack erstellen, in dem alles enthalten ist, was ein Programm braucht.
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@burli,

Es mag sein, dass .Net standard mäßig mit ausgeliefert wird. Es ist aber kein fester Bestandteil von Windows.
Wie gesagt, es wird von vielen Windows-Applikationen benötigt. Und dürfte von daher eigentlich immer vorhanden sein.

Java und Python sind auf Windows dagegen sicher nicht per default vorhanden.
Wenn man seinen Benutzern also keine zusätzliche Installation zumuten will, ist man mit einer .Net Applikation einen Schritt voraus.
Dass man .Net Applikationen als "Standalone" bauen kann, hatte ich ja auch schon gesagt.
Man mag es nicht mögen, oder wahrhaben wollen, aber das ist nun mal eine Realität, die Microsoft so geschaffen hat.
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Das ist allerdings sowohl mit Python als auch mit Java ebenso möglich.
Also eine .exe bauen, die alles benötigte mitbringt.
Es ist nur unüblich.
Antworten