Welche Programmiersprache?
Ich bin absoluter Anfänger und habe bereits einen Beruf, möchte programmieren also nur "aus Spaß" und für private Projekte verwenden. Ich habe bereits etwas angefangen, Python zu lernen, weil ich gelesen habe es soll sehr einfach sein, wollte aber mal fragen, welche Sprache ihr empfehlt.
Es geht mir darum, mit der Sprache flexibel in Zukunft verschiedene Websites und Handy-Apps entwickeln zu können, die auch schon etwas komplexer sein können.
Es sollen beispielsweise bei meinem aktuellen Projekt auf einer Website viele tausend Fragen gespeichert werden und über ein individuelles Nutzerprofil abgerufen werden, Lernstatistiken angezeigt und verschiedene Verbindungen eingebaut werden (wie z.B. individuell wählbare Lernintervalle, Pensum, Schwierigkeiten etc.).
Außerdem weiß ich nicht mit welchem Medium ich lernen sollte. Einsteigerbuch lesen, Premium-Version einer "Programmier-Lern-Übungs-App" abonnieren und darüber lernen?
Langfristig könnte ich mir auch vorstellen, neben dem Beruf noch ein Informatik-Fernstudium zu absolvieren.
Antworten bitte in Laiensprache, da ich noch keine Ahnung von dem ganzen Thema habe.
4 Antworten
Zum python lernen empfehle ich: Tigerjython.
Oder halt unity falls du C# lernen willst
Für tigerjython: gib tigerjython auf Google ein,klick auf den ersten link und lad es dir herunter. Dann öffnest du es. Falls du Hilfe brauchst:msg me.
LG Lolmops
C# und .NET
Alternativ gibt's noch Java, ich bin kein Fan davon, aber es ist einfach und kann nicht so viel (manche sagen zu viel), wie C#. Man muss also nicht so viel lernen/verstehen, hat dafür aber auch nicht so viele Möglichkeiten.
Oder C++, das ist ziemlich schwer und sehr komplex, aber dafür ist praktisch alles möglich.
Für Web wirst Du natürlich nicht um HTML/CSS und JavaScript herum kommen, egal was Du zusätzlich lernen willst.
Und für die meisten Projekte wirst Du auch SQL brauchen, wenn Du Daten performant speichern willst, aber da gibt's meistens Frameworks (bei .NET Entity Framework Core), was das fast vollständig weg abstrahiert und automatisiert.
Technologien mit C# und .NET:
- Xamarin (veraltet, abgekündigt, aber stabil und "erprobt") für iOS-, Android- und Windows-Phone Apps
- MAUI (relativ neu, viele Kinderkrankheiten) für iOS-, Android-, Windows-Phone und Windows-Desktop-Apps
- ASP.NET Core (Microsofts Flaggschiff, das merkt man) für alles im Web
- Blazor mit ASP.NET Core für Websites
- MAUI Hybrid (MAUI mit Blazor-Frontend, aber ohne die vielen Kinderkrankheiten) für iOS-, Android-, Windows-Phone und Windows-Desktop-Apps
- Razor (quasi Vorgänger von Blazor) mit ASP.NET Core für Websites
- WPF (alt, sehr erprobt, sehr stabil, sehr flexibel) für Windows-Desktop
- WinForms (sehr alt, sehr erprobt, sehr stabil, sehr unflexibel) für Windows-Desktop
- Unity für Videospiele, ggf. noch weitere Umgebungen, dazu weiß ich nichts
- WinUI3 (neu, quasi Nachfolger von WPF?, wird von MAUI genutzt) für Windows-Desktop
Effektiv kann man damit alles machen, was man will, AUSSER sehr hardwarenahe Komponenten, da muss man auf C++ ausweichen. Man kann die C++-DLL dann aber aus C# heraus nutzen, sofern sie richtig vorbereitet wurde - was ich auch immer einem reinen C++-Projekt vorziehen würde.
Ich persönlich bin mit Blazor zufrieden, damit entwickle ich Web-Anwendungen, muss mich nicht mehr als nötig mit JavaScript herum streiten und wenn's eine Desktop-Anwendung werden soll, entwickle ich mit Blazor eben eine Desktop-Anwendung. Mit MAUI Hybrid funktioniert das auch ganz easy, leichtgewichtiger ist das Community-Projekt Photino.NET, aber das läuft derzeit nicht auf Mobile und braucht etwas Einrichtung.
Der vermutlich wesentlichste Vorteil von Blazor in dem Kontext ist, dass man die selbe Anwendung mit wenig Aufwand für Web, Mobile und Desktop anbieten kann, während der Großteil des Codes gleich bleibt. Das ist nicht ganz einfach, weil man mehrere Frameworks (min. MAUI Hybrid und ASP.NET Core mit Blazor) verheiraten muss, aber es geht und es gibt nur wenig Code, der sich unterscheidet.
Generell gibt's noch alles mögliche aus der Community, Electron, Uno, Avalonia (WPF-"Klon" für alle Plattformen), viele viele kleinere Frameworks, etc. Erstaunlich ist, dass das alles auch größtenteils homogon aufgebaut ist, man findet sich also relativ leicht zurecht.
Python [...], weil ich gelesen habe es soll sehr einfach sein
Ein Kollege arbeitet mit Python, weil er mit KI arbeitet, nach dem, was er erzählt hat, solltest Du Python nicht lernen ^^ Ja, für KI ist es quasi alternativlos, für alles andere aber nicht. Dann ist es nicht leichter zu lernen, als andere Sprachen (manche argumentieren mit der schwachen Typisierung und den fehlenden Klammern, was beides quatsch ist), dafür hat Python aber diverse Probleme (z.B. Multithreading), die dir später auf die Füße fallen. Ich weiß nicht, ob's irgendwelche Adaptionen gibt, die das besser lösen (ich kenne nur IronPython, was im Hintergrund .NET ist), aber dann muss man sich damit wieder auseinander setzen.
viele tausend Fragen
Das ist keine relevante Größenordnung, komm wieder, wenn Du ein paar Millionen Fragen speichern willst :D
fang mit HTML CSS und JS an und geh dann nach Wunsch zu Python oder GO oder Rust. aber es ist wichtig das man die grobe logic versteht.
Das thema web ist ein Spezialfall, da hier JavaScript quasi ein Monopol hat. Es ist die einzige Sprache, die regulär in einem Browser ausgeführt werden kann, um interaktive Webseiten zu entwickeln.
Eine Webapp besteht in der Regel aus zwei Komponenten, dem Frontend und dem Backend. Das Frontend ist die eigentliche Webseite, die im Browser des Besuchers geladen wird. Das Backend ist das Serverseitige System, mit dem das Frontend kommuniziert, z.B. um Daten anzurufen.
Gutefrage.net ist da ein gutes Beispiel, wenn du die Webseite aufrufst, werden natürlich nicht alle Fragen, die jemals gestellt wurden samt aller Antworten und Kommentaren geladen, sondern nur das, was du gerade brauchst. Das Frontend fragt also beim Backend bestimmte Inhalte, wie zum Beispiel alle Antworten zu dieser Frage, an, und stellt diese dar.
Beim Backend ist man deutlich freier, welche Sprachen man benutzen möchte. JavaScript mit Node.js ist hier ebenfalls eine Möglichkeit, aber weitere, gängige Sprachen für Backends sind PHP, Python, Java und Go. Aber theoretisch kann man ein Backend in fast jeder Sprache schreiben.
Für Web-Apps ist es also auf jeden Fall erstmal sinnvoll, Javascript zu lernen. Vorteil von Webapps ist natürlich, dass sie auch direkt auf allen Geräten funktionieren. Unter bestimmten Bedingungen machen native Apps (also Apps, die man direkt installiert) Sinn, aber dafür braucht man dann wieder je nach System eventuell andere Programmiersprachen und Technologien.
Prinzipiell gibt es viele Lernressourcen online, insbesondere zu Javascript, einfach, weil es so viel verwendet wird. Ein eigenes Projekt im Kopf zu haben ist sehr gut, denn dann kannst du einfach mal versuchen, das umzusetzen. Die erste Version muss ja nicht direkt brauchbar oder perfekt sein, einfach mal die groben Funktionen umzusetzen ist eine sehr gute Übung. Ein guter (Web)entwickler wird man nicht in einem Monat. Ich mache das jetzt seit etwa 5 Jahren, und habe so langsam das Gefühl, solide Grundlagen zu haben, um einsatzfähige Webapps zu programmieren, und habe trotzdem noch das Gefühl, dass es noch so viel zu lernen gibt (was aber auch irgendwo schön ist, da man immer das Gefühl hat, sich weiter zu verbessern). Es gibt aber auch quasi unendlich viele Technologien, die auf Javascript, HTML und CSS aufsetzen.
Es gibt viele kostenlose Videokurse zu Javascript, sicherlich gibt es auch kostenpflichtige Ressourcen, die gut sein können. Aber ich denke, du kannst einfach mal mit einem kostenlosen Tutorial reinstarten. Gibt ja auch manchmal Kurse, wo die ersten Videos kostenlos sind, und der Rest dann kostenpflichtig. Du musst natürlich einen Kurs/Channel finden, der für dich persönlich passt. Ich würde nur empfehlen, sicherzustellen, dass es einigermaßen aktuell ist (sollte nicht älter als 3-5 Jahre sein) und dass nicht gleich ein Arsenal an Zusatztechnologien wie React etc. ausgepackt werden. Für den Anfang würde ich immer empfehlen, erstmal Standard HTML, CSS und Javascript zu lernen, und am besten in dieser Reihenfolge, wenn du in die Webentwicklung einsteigen willst.
Es macht am meisten Sinn, sich der Reihe nach Grundlagen anzuschauen, erst HTML, dann CSS, dann JS, und dann alles zusammen zu vertiefen. Es sollte auch erwähnt werden, dass HTML und CSS keine Programmiersprachen sind, und daher an sich auch etwas "simpler" als z.B. Python oder Javascript. Es sind Sprachen, aber HTML ist eine Auszeichnungssprache und CSS eine Stylesheet-Sprache.
Kurzgefasst kann man sagen:
HTML definiert den Inhalt einer Webseite.
CSS definiert wie sie aussieht.
JS definiert wie sie funktioniert.
Bei den meisten Webseiten braucht man eben alle 3. Aber ohne zu wissen, wie der Inhalt einer Webseite aufgebaut ist, ist es schwierig zu verstehen, wie man diesen mit CSS stylen oder mit JS manipulieren kann. Du musst dich aber wie gesagt nicht erst ewig mit HTML beschäftigen und jedes Element und Detail kennen, bevor du dir die anderen Themen anschaust. Die Basics und Grundkonzepte sind das Wichtigste. Das gilt auch für CSS. CSS bietet tausende Möglichkeiten, um Webseiten schick aussehen zu lassen, damit könnte man sich ewig beschäftigen. Wichtiger ist aber auch hier, zu wissen, wie es grundsätzlich funktioniert. Denn dann kannst du besser verstehen, wie man mit Javascript z.B. das HTML verändern oder CSS-Klassen verwenden kann, um eine Webseite zu einer interaktiven Webapp zu machen.
Später gibt es noch Technologien, die diese Konzepte noch enger verknüpfen, das sind Frameworks wie Vue oder React (ich persönlich finde Vue einfacher und angenehmer als React, und würde sehr empfehlen, dir das mal anzuschauen, wenn du das Gefühl hast, HTML, CSS und JS grundsätzlich verstanden zu haben).
Vielen Dank für eure schnellen und hilfreichen Antworten. So wie ich es jetzt verstanden habe muss ich für Webseiten sowieso HTML, CSS und Javascript lernen was ich dann jetzt auch tun würde (und Python erstmal beiseite legen).
Beim Vorgehen würde ich dann erstmal ein paar Tutorials etc. anschauen und Grundlagen anlegen und parallel Stück für Stück üben. Mir ist klar, dass das ein sehr langer Weg ist, aber ich habe auch große Freude daran und freue mich drauf.
Aber würdet ihr empfehlen, die Sprachen parallel oder nacheinander zu lernen?
Danke schon mal im Voraus für die Antworten. Ich suche mir derweil schon mal Lernmaterial heraus.