Welche Programmiersprache für Hobbyprojekt?

Lendril

Cadet 1st Year
Registriert
Aug. 2020
Beiträge
11
Guten Tag,

ich wollte für mich für den Heimgebrauch (erstmals) eine universelle Medienverwaltung programmieren. Ich hatte schon einige Software ausprobiert, die mich aber nie so wirklich zufrieden gestellt haben. Daher wollte ich mir jetzt mein eigenes Programm schreiben. Zum anderen will ich mir darüber Programmiersprachen aneignen, die später brauchen werde (HTML 5, CSS, Javascript, Java für Digital Humanities).

Die Idee des Programms, dass damit alle möglichen Formen von Medien verwaltet werden können: Bücher (auch Sachbücher), Filme, Brettspiele, CD. Das Programm soll sowohl auf dem Computer (Windows, Linux) als auch auf dem Smartphone und Tablet (Android) laufen. Dabei soll das Smartphone in erster Linie als Scanner und als mobile Datenbank für unterwegs eingesetzt werden. Als Datenbank, in denen die Medien abgespeichert und abgerufen werden, hatte ich mir MariaDB ausgeguckt.

Ich hatte bereits die ersten Schritte mit HTML 5 und CSS gemacht; ich bin aber gerade nicht sicher, ob dies insgesamt so zielführend ist. Daher wollte ich einmal in die Expertenrunde fragen, welche der oben erwähnten Sprachen für mein Projekt am besten geeignet ist. Meine Programmierkenntnisse stehen noch ganz am Anfang, in Java hatte ich kurz reingeschaut; in den letzten Wochen hatte ich mich intensiver mit HTML 5 und CSS beschäftigt.

Vielen Dank und Grüße
Lendril
 
Backend auf Java Basis mit Spring Boot in der Cloud
Als Frontend dann eine responsive WebApp auf HTML Basis, idealerweise auch in der Cloud.
Kommunikation zwischen Frontend und Backend über REST.

Das wäre in meinen Augen ein sinnvoller Ansatz um das Szenario deviceübergreifend sinnvoll umzusetzen.

Allerdings ist das für einen Anfänger schon ganz schöner Overkill, da du dich vermutlich in alles einarbeiten müsstest.


Wenn du deine Komponenten in Docker Container verpackst, kannst du das auch erstmal lokal entwickeln und testen und erst für den "produktiven" Einsatz in die Cloud heben.
 
  • Gefällt mir
Reaktionen: e_Lap, M4ttX und burglar225
Das wäre auch exakt meine Empfehlung, vor allem Spring Boot, das macht einem das Leben doch schon um einiges leichter. Erwarte trotzdem nicht, dass du innerhalb der nächstens zwei Wochen überhaupt irgendetwas brauchbares produzieren wirst. Du wirst sicherlich einige Wochen alleine für die Einarbeitung in Java und Spring benötigen. Du musst also wirklich auch die Geduld mitbringen.
Für das Frontend hast du viele Möglichkeiten, ich bin da selbst nicht so 100% in der Thematik, aber ich verwende dazu meist React. Andere (populäre) Möglichkeiten sind Angular oder vuejs.
 
Fürs Frontend böte sich ReactNative bzw ReactJS an
 
  • Gefällt mir
Reaktionen: new Account()
SaxnPaule schrieb:
Backend auf Java Basis mit Spring Boot in der Cloud
Als Frontend dann eine responsive WebApp auf HTML Basis, idealerweise auch in der Cloud.
Kommunikation zwischen Frontend und Backend über REST.
Wäre dann nicht ein TypeScript/JavaScript Backend besser geeignet, da er sich dann nicht in ein weiteres Ökosystem einarbeiten müsste?

SaxnPaule schrieb:
Wenn du deine Komponenten in Docker Container verpackst, kannst du das auch erstmal lokal entwickeln und testen und erst für den "produktiven" Einsatz in die Cloud heben.
Dazu werden keine DC benötigt.
 
  • Gefällt mir
Reaktionen: adAstra, BeBur und Toms
new Account() schrieb:
Wäre dann nicht ein TypeScript/JavaScript Backend besser geeignet, da er sich dann nicht in ein weiteres Ökosystem einarbeiten müsste?
Sehe ich jetzt nicht unbedingt so. Zum einen fand ich JS-Backends immer extrem gruselig und kompliziert zu programmieren (ist aber schon einige Jahre her und ich weiß nicht, was sich an der Front so getan hat). Zum anderen unterscheidet sich Front- und Backendentwicklung dann doch wieder so stark, dass man sich so oder so sehr stark einarbeiten muss. Letztlich unterscheidet sich nur die Programmiersprache und das ist, denke ich jedenfalls, das kleinste Problem.
 
Das ist ein recht ambitioniertes Project für einen Anfänger, ich würde da auf jeden Fall schrittweise vorgehen. Da es auf Windows, Linux und Android laufen soll bleibt eigentlich nur eine Webanwendung (ansonsten müsstest du mehrere native Anwendungen programmieren).

Meine Empfehlung wäre mit Python3 und Django zu starten. Das Django Framework nimmt dir einiges an Arbeit am Anfang ab, und der Weg zu einem Prototyp der erstmal grundsätzlich funktioniert ist viel kürzer.

Die Lösung die ich jemandem mit wesentlich mehr Erfahrung als Alternative empfehlen würde ist eine Single Page Application (SPA)in React mit z.B. C#/ASP.NET Core als Backend (da gibt es viele andere Alternativen). Der Weg bis da etwas sichtbares rauskommt ist aber deutlich länger, und die Vorteile sind recht überschaubar. SPAs sind modern momentan, aber sie sind auch komplizierter und aufwändiger zu entwickeln und die Vorteile sind es nicht immer Wert.

Die Sache mit dem Handy als Scanner könnte etwas komplizierter werden, das würde ich erst im zweiten Schritt angehen. Evtl. kann man da auch schon existierende Tools verwenden und nicht etwas eigenes programmieren.
 
- Dabei soll das Smartphone in erster Linie als Scanner und als mobile Datenbank für unterwegs eingesetzt werden.
Eine Frage dazu, in dem Szenario es auch "Offline" direkt auf dem Handy zu haben oder dann über das Internet auf die Daten zugreifen?
 
burglar225 schrieb:
Sehe ich jetzt nicht unbedingt so. Zum einen fand ich JS-Backends immer extrem gruselig und kompliziert zu programmieren (ist aber schon einige Jahre her und ich weiß nicht, was sich an der Front so getan hat)

Mit NodeJS bzw ExpressJS ist schon sehr easy zu benutzen :) Also mMn. einer der einfachsten Einstiege in die Backend-Programmierung, wenn man eine API bastelt
 
Also normalerweise ergibt sich die Programmiersprache als logische Konsequenz aus der Anforderung heraus.
Natürlich kannst du dein komplettes Front-End mit C++ basteln, aber ein Stack aus HTML, CSS und JS ist in der Regel komfortabler und besser.

Aber wie mein Vorredner schon sagt, hast du dir da echt eine große Aufgabe gesucht. Nur mal so eine Auflistung an Dingen, die mir spontan einfallen, wo du dich einarbeiten müsstest:
  • App-Entwicklung für Android, Front- und bisschen Backend
  • Zugriff auf die Kamera
  • Bearbeitung des Outputs der Kamera
  • Anbindung deiner App an dein Backend
    • Also entweder in der Cloud mit allem was da dran hängt (Anbieter, Deployment, Zugriff...)
    • Oder selbst gehostet (Server, VPN, Sicherheit(!), DynDNS, bisschen Netzwerkkram...)
  • Das eigentliche Backend deiner Applikation auf dem Server (Webapp oder nicht?)
  • APIs
  • Datenbanken und deren Anbindung und auch die Synchronisation, wie ich das verstehe willst du ja gleich zwei davon
  • Redundanz und Ausfallsicherheit (wie wichtig sind die die Daten denn?)

Das ist für einen Anfänger schon gut was zu tun und wird dich sicher über viele Wochen beschäftigen. Kommt halt darauf an, was du für ein Typ bist. Vielleicht brauchst du erstmal kleine Erfolge um dich zu motivieren, dann solltest du dir entsprechend einfachere Projekte suchen, die nur einen Teil des Tech-Stacks umsetzen und das große Projekt später angehen.
Alternativ kannst du die Komplexität reduzieren, indem du auf vorhandenes zurückgreifst. Also bspw. nimm eine fertige Scannerapp und schicke die Daten einfach manuell per Filemanager auf dein NAS, spar dir dabei die mobile DB.
 
@Toms Wie gesagt, ist schon einige Jahre her bei mir. Aber Spring Boot finde ich fürs Backend um MEILEN komfortabler. Es nimmt einem einfach so viel Arbeit ab. Auch im Vergleich mit ASP gewinnt meiner Ansicht nach Spring Boot locker.
Aber ich gebe zu, dass das auch einfach daher kommen kann, dass ich mit Spring schon wesentlich mehr gearbeitet habe.

Ergänzung: Ein Vorteil von Spring: Man findet unfassbar viel Informationen und Hilfestellungen dazu im Netz. Alleine die Dokumentation zu Spring ist schon ein Ding für sich. Es gibt einfach wirklich viele Leute, die damit arbeiten und bspw. bei Stackoverflow auch ihre Hilfe anbieten. Das ist bei anderen Frameworks in der Regel deutlich deutlich schwieriger.
 
Boot kenne ich nicht, aber der ganze Spring/Java/Tomcat Techstack ist doch hart auf Enterprise Umgebungen ausgelegt und für einen Einsteiger meiner Erfahrung nach sehr qualvoll. Dazu passt ganz gut, dass ihr dann noch mit docker nachlegt, lol :D.

Django oder Rails oder diese hippen JS-Frameworks bieten sich an für so ein Projekt. Wird aber viel Arbeit in jedem Fall.
 
@BeBur Spring Boot ist quasi Spring in einfacher. Letztlich führt es dazu, dass du dein Projekt ohne große Konfiguration umgehend in Betrieb nehmen kannst. Es wird auch kein dedizierter Tomcat gebraucht, ein Application Server ist in Spring Boot immer inkludiert. Letztlich muss man seine Datenbank konfigurieren und kann dann direkt durchstarten.
Docker braucht es dazu ganz und gar nicht. Davon würde ich auch absehen.
 
PS.: Hier hat einer als Hobbyprojekt eine kleine Lagerverwaltung gebaut: Link
Den könntest du anschreiben, kann dir auch Telegram Kontakt vermitteln bei Bedarf. Das könntest du vielleicht als Grundlage nehmen und QR-Scan Funktionalität einfach hinzufügen. Das wäre weit weniger Arbeit als ohne irgendwas zu beginnen.

burglar225 schrieb:
Spring Boot ist quasi Spring in einfacher.
Hm ja. Ich würde jetzt blind aber spontan nicht glauben, dass das einfacher ist damit als Django oder Rails.

SaxnPaule schrieb:
Richtig. Benötigt nicht. Macht es aber mMn deutlich einfacher.
Wenn man sich mit Docker auskennt, dann ist es einfacher, ja. Wenn man aber gerade sein erstes Projekt macht ist das eine komplette Katastrophne einen Layer zwischen sich und seine Applikation zu legen.
 
  • Gefällt mir
Reaktionen: burglar225
@SaxnPaule Aber nur, wenn man sich mit Docker auskennt. Ansonsten macht es alles nur noch komplizierter. Für eine Java/Spring-Entwicklung braucht man es halt auch überhaupt nicht, weil der Application Server ohnehin integriert ist.

BeBur schrieb:
Hm ja. Ich würde jetzt blind aber spontan nicht glauben, dass das einfacher ist damit als Django oder Rails.
Rails kenne ich gar nicht. Aber Django und Spring Boot bewegen sich wohl auf dem selben Level, wobei Spring Boot einen WESENTLICH größeren Funktionsumfang hat (vorgefertigte Module für alles mögliche, Security, Persistence API, usw.)
Zudem, gerade für einen Anfänger, würde ich doch auch die Dokumentation als enorm wichtig einstufen, und da ist Spring zweifellos ungeschlagen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: new Account()
Lendril schrieb:
Zum anderen will ich mir darüber Programmiersprachen aneignen, die später brauchen werde (HTML 5, CSS, Javascript, Java für Digital Humanities).
Ist eigentlich auch für dein jetziges Projekt eine brauchbare Sammlung an Technologien. HTML5/CSS sind ja keine Programmiersprachen sondern "nur" für die Darstellung im Browser, JavaScript packt da noch die Clientseitige Logik dazu und fürs Backend am Server kann man Java ganz gut nehmen. Alternativ könne man auch fürs Backend auf JavaScript setzen.
 
Der TE hat
Lendril schrieb:
in Java hatte ich kurz reingeschaut; in den letzten Wochen hatte ich mich intensiver mit HTML 5 und CSS beschäftigt.

Egal was ihr hier jetzt groß diskutiert, ob Spring, NodeJS oder Python mit Django, alles wird ihn erst einmal komplett erschlagen.
 
  • Gefällt mir
Reaktionen: new Account(), BeBur und pseudopseudonym
Fuer Cloud einfach Hetzner Cloud Verserver fuer 3euro im Monat, reicht fuer sowas perfekt.
 
Zurück
Oben