Linux: Welche Programmiersprache

Don_2020

Lt. Commander
Registriert
Aug. 2019
Beiträge
1.938
Ich möchte unter Linux Programmieren (GUI-Anwendungen mit Datenbanken Anbindung (mariadb)). Entwickelt wird unter Linux. Die Programme sollen aber auch unter Windows laufen.
Angeschaut habe ich mir bisher Python, Tkinter, C++, qt5/6 und aktuelle Lazarus. Lazarus gefällt mir sehr gut, da ich recht schnell eine Anwendung lauffähig herstellen kann. Bei C++ muss man viele Details beachten. Das Debuggen kostet viel Zeit.

Was ist mit C#? Kann man das auch effektiv unter Linux nutzen oder ist man wieder auf einer Microsoft-Insel?
 
C# hat keine native Unterstützung für Linux GUI Anwendungen. Es gib Avalonia, aber ich kann nichts darüber sagen wie gut das funktioniert. Wenn man keine GUI braucht funktioniert modernes C# (.NET Core oder .NET5+) einwandfrei auf Linux.

Generell sind viele Anwendungen heute einfach Webanwendungen, damit umgeht man dieses Problem. Wenn man Webtechnologien für Desktopanwendungen nehmen will kann man das z.B. mit Electron machen. Aber wenn du eine GUI für eine Datenbank schreibst, dann ist eine pure Webanwendung fast immer die richtige Wahl. Du willst ja sehr wahrscheinlich nur eine DB haben und mehrere Leute die darauf zugreifen?
 
  • Gefällt mir
Reaktionen: ILoveShooter132 und TomH22
Es sollen mehre Leute darauf zugreifen. Ein Server mit MariaDB und phpmyadmin ist vorhanden.
Die Softwaretools müssen alle OpenSource sein. Das ist ein Freizeitprojekt und ich kann keine teure Entwicklungsumgebung finanzieren.
Deshalb Linux und mariadb.
 
Muss es eine native GUI sein?
Ich werfe einfach mal Containerisierung mit Anwendung(en) in C# und GUI in WasAuchImmer (Angular, React) in den Raum.
Nativ unter Linux ist C# für das was Du möchtest nicht möglich. Ich hatte mal ein paar Anwendungen nativ unter Linux kompiliert mittels BFlat (https://flattened.net/). Funktioniert super, wenn Du weitestgehend auf Dependencies verzichtest.
Grundsätzlich funktioniert C#-kompilierter Kram unter Linux, jedoch immer nur mit einer Runtime oder SDK
 
Don_2020 schrieb:
Die Softwaretools müssen alle OpenSource sein. Das ist ein Freizeitprojekt und ich kann keine teure Entwicklungsumgebung finanzieren.
Deshalb Linux und mariadb.
für OpenSource sind fast alle Tools gratis.
Auch unter Windows/Mac/...
Es gibt sogar eine Gratis Version von Microsoft SQL (also nicht das ich die Version verwenden würde, aber als Beispiel)
 
Don_2020 schrieb:
Lazarus gefällt mir sehr gut, da ich recht schnell eine Anwendung lauffähig herstellen kann. Bei C++ muss man viele Details beachten. Das Debuggen kostet viel Zeit.
Auch wenn ich persönlich Pascal mag (es war meine erste höhere Programmiersprache, aber das ist schon sehr lange her…), ist es heute doch eine Nische, und Lazarus erst recht. Wenn es nur um den Spaß am programmieren geht, nimm das was Dir am meisten Spaß macht, dann ist auch Lazarus ok. Aber wenn Du in eine professionellere Richtung gehen willst, dann ist es der falsche Weg. Grundsätzlich sind Object Pascal und C++ von ihrer grundsätzlichen Auslegung (statistisch typisiert, objektorientiert, manuelle Speicherverwaltung) ähnlich, auch ähnlich anfällig für Fehler wie Buffer Overflows und „use after free“. Dass Du anfangs in C++ unproduktiver als in Pascal bist, liegt an der steileren Lernkurve und der sehr „kompakten“ Syntax von C++. Auch die intensive Nutzung von templates/generics sowie die komplexe Library helfen nicht. Langfristig ist aber C++ ähnlich produktiv wie Pascal.

Tipp: Nutze für die Lernkurve intensiv ChatGPT, damit geht der Einstieg wirklich schneller als mit Google/Stackoverflow, etc.

Dalek schrieb:
Generell sind viele Anwendungen heute einfach Webanwendungen, damit umgeht man dieses Problem.
Genau, klassische Desktop GUIs kommen zunehmend aus der Mode. Das kann man ein wenig bedauern, weil die WebGUIs mehr Ressourcen verbrauchen, und auch programmiertechnisch nicht immer das Gelbe vom Ei sind, aber ich würde auch nichts anderes mehr machen. Cross-Platform Probleme sind weitestgehend irrelevant, man kann bei Bedarf auch eine Smartphone/Tablet App draus machen, es im Browser laufen lassen, usw.

Desktop GUI eigentlich nur, wenn der Resourcenverbrauch wichtig ist.

Nachteil: Man bewegt sich im JavaScript/Typescript Umfeld, für compute intensive Anwendungen muss man extra Aufwand treiben, für z.B. ein C++ Backend.
 
  • Gefällt mir
Reaktionen: floTTes
Don_2020 schrieb:
Es sollen mehre Leute darauf zugreifen. Ein Server mit MariaDB und phpmyadmin ist vorhanden.
Dann absolut eine Webanwendung. Wenn du schon C# kannst geht das damit recht einfach mit einem ASP.NET Core Backend und entweder Razor/Blazor wenn du in C# bleiben willst oder als SPA mit einem Javascript Frontend.

Generell hat jede Programmiersprache heute vernünftige Tools um Webanwendungen zu erstellen. Nimm also einfach die Sprache die du sowieso schon kannst.

Gretzki schrieb:
Grundsätzlich funktioniert C#-kompilierter Kram unter Linux, jedoch immer nur mit einer Runtime oder SDK
Modernes .NET braucht nicht immer eine Runtime, man kann recht einfach auch self-contained Executables erstellen.
 
  • Gefällt mir
Reaktionen: dewa, aragorn92 und TomH22
Don_2020 schrieb:
Es sollen mehre Leute darauf zugreifen. Ein Server mit MariaDB und phpmyadmin ist vorhanden.
Dann ist eigentlich Webanwendung dad Mittel der Wahl, entweder im Browser oder Electron - oder eben Beides. Das wäre Stand der Technik. Business Logik ggf. auf dem Server (d.h. das Frontend macht keine SQL Queries sondern ruft REST Interfaces). Das Backend geht am schnellsten und einfachsten mit node.js. Aber es gibt auch viele andere Möglichkeiten, wie etwa Go. Auch C# unter Linux mit .NET Core ist dann kein Problem.
Durch diese Trennung lässt sich die Anwendung auch besser testen, usw.
 
Don_2020 schrieb:
Ich möchte unter Linux Programmieren (GUI-Anwendungen mit Datenbanken Anbindung (mariadb)). Entwickelt wird unter Linux. Die Programme sollen aber auch unter Windows laufen.
Angeschaut habe ich mir bisher Python, Tkinter, C++, qt5/6 und aktuelle Lazarus. Lazarus gefällt mir sehr gut, da ich recht schnell eine Anwendung lauffähig herstellen kann.

Bei Deinen Anforderungen habe ich auch zuerst an Lazarus/Delphi gedacht.

Was ist mit C#? Kann man das auch effektiv unter Linux nutzen oder ist man wieder auf einer Microsoft-Insel?

C# ist von Microsoft fuer Microsoft gemacht worden. Wenn Du keinen wichtigen Grund hast, das verwenden zu wollen, wuerde ich das nicht in Betracht ziehen. Und wenn Du einen hast, dann ist immer noch die Frage, ob die Nachteile unter Linux nicht die Gruende aufwiegen.

Was Du vielleicht noch anschauen solltest: JavaScript, evtl. node.js, mit dem Browser als GUI.
 
  • Gefällt mir
Reaktionen: Pummeluff
Rust und Tauri ist auch noch ein Blick wert. Für Tauri gibt es auch ein SQL Plugin, somit könnte man fast alles in JS/TS umsetzten, ohne viel in Rust machen zu müssen.
 
  • Gefällt mir
Reaktionen: Pummeluff
Früher habe ich mit MS-Office Makros programmiert. Damit kann ich das meiste abdecken. Leider funktionieren die Makros nur bis zum Umstieg auf die nächste/übernächste Office-Version.
Außerdem läuft der ganze Office-Makro-Kram nicht unter Linux. LibreOffice wäre eine Alternative, aber das muss wie bei MS-Office lokal installiert werden. Vielfach werden Markro-Anwendungen durch Admins gesperrt.

Lazarus ist im Prinzip Free Pascal und weitgehend mit Delphi kompatibel. Leider habe ich den Eindruck, das das in eine Sackgasse führt.

C# muss nicht sein.

Die Programmiersprache ist mir eigentlich egal. Ich will schnell ans Ziel kommen.
Python und tkinter sind ja ganz nett, aber um eine Seite zu erstellen ist viel Handarbeit nötig.

Ich werde mir mal Electron anschauen. Installiere das ganze mal unter MX-Linux.
 
Mich persönlich kannst du mit Electron-Anwendungen jagen. Meistens absolut furchtbar.


Wenn du etwas Aufwand betreiben willst: Qt Creator anschauen. Das ist eine OSS-Entwicklungsumgebung für Linux, Windows, Mac, die sich auf Qt als platformübergreifendes GUI-Toolkit konzentriert und direkt Werkzeuge zum Erstellen der Oberfläche anbietet. Qt kannst du ja prinzipiell auch mit Python zusammen nutzen - der Standard ist aber halt C++.
 
  • Gefällt mir
Reaktionen: samuelclemens
Wenn dir Python gefällt und du auf eine Weblösung gehen willst guck dir Flask mit SQLAlchemy an. Der Aufwand um da was lauffähiges zu bekommen ist imho sehr gering. Vor allem wenns um eine reines crud geht.
Wenn du dich nicht auch noch mit jscript befassen willst kannst du dir auch mal htmx angucken. Für viele Kleinigkeiten reicht das auch und ist recht einfach.
 
Java, kann alles und bei Bedarf ist eine GUI auch kein Problem und schnell erstellt.
 
Habe gerade ein Electron Toutorial durchgearbeitet. Das erste Fenster war schnell erstellt.
Nur die GUI sieht sehr verbesserungswürdig aus. Ich mag konventionelle GUI Design. Diese abgerundeten riesigen Buttons sind nicht meine Welt.

Gibt es einen Weg um gewöhnliche Button zu bekommen? So auf die schnelle habe ich nichts gefunden.
 
Zuletzt bearbeitet:
Ich werf mal Dart+Flutter in den Ring, dafür gibt es auch MySQL-/Maria-DB Pakete.
Und es läuft auf allen möglichen Plattformen + ist relativ einfach.
 
  • Gefällt mir
Reaktionen: madmax2010
Dart+Flutter scheinen das gleiche zu können wie Electron.
Die Buttons sehen bei beiden Systemen schrecklich aus.

Kann man das Design der Buttons irgendwie ändern?
 
Zurück
Oben