Welche Programmiersprache?

3 Antworten

Ich möchte eine App programmieren (...)

Ich gehe jetzt einfach einmal davon aus, dass du von einer mobilen App redest, die später auf Android OS oder iOS laufen soll.

(...) meine app soll ähnlich wie ein onlineshop aufgebaut sein (...)

Für so eine App wirst du mehrere Systeme benötigen, die miteinander kommunizieren. Einmal ein System (Webanwendung), welches Bestellungen handhabt und Produktdaten liefert und dann die mobile App, die die grafische Oberfläche bereitstellt.

Diese Trennung hat mehrere Vorteile:

  • Du kannst die Daten/Inhalte sowie Programmlogiken leichter aktualisieren, ohne dass deine Endnutzer dafür ihre App aktualisieren müssen.
  • Die Validation und sensible Datenverarbeitung (Bestellungen) liegen außerhalb der direkten Kontrolle durch den Benutzer. Er kann die Daten nicht direkt manipulieren.

Für das Shopsystem würde ich folglich irgendein e-Commerce-System mit API / Headless CMS mit integrierten e-Commerce-Funktionalitäten einsetzen. Was da am besten zu deinen Vorstellungen passt, müsstest du selbst recherchieren. Optionen (wie Foxy.io, Medusa, Payload CMS, Strapi + Stripe, Vendure, usw.) gibt es jedenfalls genug.

Dazu solltest du noch in Erfahrung bringen, wie/wo das System gehostet wird. Manche Lösungen bieten ihre Anwendung als SaaS oder aber du musst dich selbst um ein Hosting kümmern (wofür du dann ebenso schauen musst, welche Systemanforderungen gestellt werden). Ob nun bei einem Cloud/Hosting-Anbieter (AWS, Azure, IONOS, ...) oder auf einer eigenen Maschine, wobei ich in dem Fall deutlich zu Ersterem raten würde).

(...) und eine karten funktion(ähnlich wie google maps) (...)

Auch hier würde ich auf bestehende Anwendungen (wie Leaflet, mapbox, MapTiler, OpenStreetMap, ... - oder eben Google Maps) zurückgreifen und deren Oberfläche dann in der App (und sei es via WebView) integrieren.

(...) welche Programmiersprache die beste dazu ist.... (...)

Es gibt viele gute Möglichkeiten. Eine Einordnung nach einem Superlativ werde ich daher nicht einmal versuchen.

Zum einen gibt es von Seiten der OS-Entwickler vorgegebene Technologien, die zur Entwicklung nativer Apps verwendet werden. Diese haben den Vorteil, besser für die jeweilige Plattform ausgerichtet zu sein, was sich unter anderem im Support neuer Features, dem Zusammenspiel mit anderen Systemapps, der Performance oder der UX bemerkbar machen kann.

  • Für Android OS wären das Java oder Kotlin (jeweils mit dem Android SDK). Letztere wurde 2019 als die von den Entwicklern offiziell bevorzugte Programmiersprache erkoren, womit sie Java abgelöst hat. Im direkten Vergleich zu Java gilt sie als Sprache mit moderneren Features, hat dafür allerdings eine kleinere Community und ein schmaleres Ökosystem. Unabhängig davon, für welche von beiden du dich entscheidest, kannst du das Android Studio für die Entwicklung nehmen.
  • Für iOS ist es Swift (mit dem iOS SDK). Spätestens wenn du eine iOS-App in den Apple Store bringen möchtest, benötigst du ein macOS, über welchen du die App signieren lassen kannst. Als Entwicklungsumgebung empfiehlt sich Xcode (nur auf macOS verfügbar).

Zum anderen kannst du ebenso auf Drittanbieterlösungen zurückgreifen. Diese haben zumeist den Vorteil, eine cross-platform Entwicklung anzubieten.

Eine Auswahl:

  • C# (mit dem Xamarin-Framework)
  • C++/QML (mit dem Qt-Framework)
  • Dart (mit dem Flutter-Framework)
  • JavaScript (mit React Native)
Ich habe gehört Java Script soll gut sein und flutter auch etc.? Was denkt ihr?

Vorab: Die Sprache heißt JavaScript (ohne Leerzeichen) und Flutter ist ein Framework für die Programmiersprache Dart.

Dart/Flutter und JavaScript/React Native sind meines Erachtens jeweils leicht erlernbar (zumindest im Vergleich zu den bisher genannten Technologien) und du hast den Vorteil, dass du die Anwendung im Anschluss recht leicht auf mehrere Zielsysteme (Android, iOS) portieren kannst.

Im direkten Kopf-an-Kopf bietet Flutter eine leicht bessere Performance und etwas mehr Flexibilität bei der Gestaltung der UI. Dafür findest du zu React Native (und natürlich JavaScript) einfacher Community-Support und Lernquellen. Die Palette an Packages/Bibliotheken ist bei beiden breit aufgestellt.

Wenn ihr gute Videos oder Bücher habt dann gerne sagen wäre wirklich sehr hilfreich

Die erste Anlaufstelle sollte wie immer die jeweilige Online-Dokumentation sein.

Für JavaScript kannst du in die MDN Docs schauen.

Ein paar weitere Quellen:

  • Udemy (z.B. React Native - The Practical Guide [2024] von M. Schwarzmüller; warte am besten auf einen der häufigen Preisrabatt von Udemy)
  • React Native: Der YouTube-Kanal von @mashschool
  • Flutter: Der YouTube-Kanal von @createdbykoko und der offizielle Kanal @flutterdev
  • Mehrere Artikel zu Flutter/React-Native bezogenen Themen findest du unter anderem auf Kodeco und Medium.
Ich habe gehört Java Script soll gut sein

Javascript alleine bringt dir reichlich wenig.

Ich möchte eine App programmieren

Dann solltest du damit anfangen, erst einmal zu definieren, auf welchen Geräten mit welchem Betriebssystem diese App laufen soll. Davon hängt es bei Apps nämlich ab, welche Sprachen du überhaupt einsetzen kannst.

Für IOS (Apple) wirst du dich mit Swift oder Objective-C beschäftigen dürfen. Für Android hingegen eher mit Kotlin, Java, C++ oder Ruby.
Für Windows wiederum stehen dir z.B. mit Visual Studio (als Entwicklungsumgebung) C#, Visual C++, J#, Visual Basic zur Verfügung.

Und wenn das ganze eine Webanwendung sein soll, die plattformunabhängig ist, hängt es davon ab, auf welchem Server diese Anwendung betrieben wird. Da käme dann HTML/CSS/Javascript, aber auch PHP/ASP/JSP in Betracht. (Und in dem Bereich gibt es genügend fertige Scripts, die dir Google-Maps in deine Webseite einbinden können.)


Blablacar92 
Beitragsersteller
 10.11.2024, 16:13

Vielen Dank, programmiert man eig eine App mit einer einzigen Programmiersprache oder wie?

regex9  11.11.2024, 12:38
@Blablacar92

Im besten Fall reduziert man die Palette an Technologien (also auch Programmiersprachen) auf das den Umständen entsprechende, angemessene Maß, denn so reduziert man ebenso die Komplexität des Projekts (weniger Kompetenzen sind nötig, weniger Fehlerquellen tun sich auf).

Es kann allerdings auch Sinn machen, verschiedene Technologien in ein Projekt hineinzuziehen. Java beispielsweise eignet sich sehr gut als Basis für ein komplexes e-Commerce-System (unterstützt Multithreading, ist horizontal/vertikal leicht skalierbar, hat ein stark ausgereiftes Ökosystem, etc.), wohingegen es einfacher ist, mit deklarativen Sprachen (z.B. QML, kvlang, XAML) oder Frameworks (z.B. SwiftUI, JetPack Compose) eine grafische Oberfläche zusammenzustellen.

Oft sind es (neben den eigenen Anforderungen) zudem die Zielsysteme, die Technologievorgaben stellen oder zumindest die Anwendung der eigenen Wunschtechnologie erschweren. Eine mit Swift entwickelte App bekommst du beispielsweise auf einem Windows OS nicht wirklich zum Laufen; damit ein Apache Webserver Python interpretieren kann, braucht er ein WSGI/CGI-Modul und wenn du im Browser eine andere Programmiersprache als JavaScript ausführen möchtest, brauchst du dafür einen WASM-Compiler.

Für deinen Fall sollte man mit mindestens einer bis maximal drei Programmiersprachen auskommen.

Zum einen benötigst du eine Webanwendung, die die wesentliche Geschäftslogik umsetzt und zum anderen brauchst du eine Anwendung für den Client/Anwender, die die grafische Oberfläche zur Verfügung stellt. Letztere könnte sich (bei einer mobilen oder Desktop-App) nochmal in zwei Schichten aufteilen (ViewController, Daten), bei der zwei verschiedene Programmiersprachen zum Einsatz kommen.

Wenn du eine Android App (nehme ich mal an) entwickeln willst dann geht es weniger um die Programmiersprache sondern wo du sie entwickelst. Bei Android Apps in dem fall Android Studio. Die Programmiersprache dort ist Kotlin. Java, Css und Html benutzt du eher für Softwares, Webseiten und sowaas

Woher ich das weiß:Hobby – Ich mache viel Hacking/Code Zeug

Blablacar92 
Beitragsersteller
 10.11.2024, 16:13

Dankeschön, kann ich denn bei VS Code auch eine App für Android programmieren oder brauch man Android Studio?