Hmm, das ist aber eine zweischneidige Sache. Natürlich ist es effizient, Programmieren quasi "begleitend" zu lernen, wenn man ein konkretes Problem hat, das man lösen möchte. Für den allerersten Anfang würde ich das aber gerade nicht empfehlen, da man in gewisse Fallen tappen kann. Erstens hat es durchaus einen Grund, dass viele Lehrbücher mit äußerst simplen "Modellproblemen" starten. Wenn man sich gleich auf ein "real world" Problem stürzt besteht die Gefahr, dass man (weil noch zu viele Grundlagen fehlen) Murks programmiert. Man sucht sich dann Häppchen in Blogs, auf Stackoverflow, usw, die so ungefähr passen und bastelt zusammen, ohne es wirklich zu durchblicken -- dabei kommt in der Regel kein guter Code heraus. Die zweite große Gefahr ist die Wahl weniger gut geeigneter Tools. Was das angeht ist PHP für mich ein sehr gutes Beispiel. Auch ich bin da "vorbeigekommen", es hat mich beim Lernen aber wohl eher gebremst. PHP ist leider geradezu darauf ausgelegt, einfachere Dinge irgendwie zusammenwursteln zu können. Bei Sprachdesign und Laufzeitbibliothek hat man sich weniger Mühe gegeben, es wimmelt nur so von Inkonsistenzen. Sich daran zu gewöhnen ist fürs Lernen eher schlecht.
Wenn man gewisse Grundlagen schon hat ist es dagegen IMHO der perfekte Weg, neues zu lernen. Man sollte einfach nur nicht den zweiten Schritt vor dem ersten tun. Noch ein paar konkrete Anmerkungen:
Ruby, weil ich zunehmend mit dem
www/h2o Webserver arbeite, der das
Subset MRuby als Skriptsprache von Haus aus mitbringt (damit kann man tolle Konfigurationen bauen, bei denen man sich in Nginx einen abbrechen würde)
Nunja, diesen Webserver kenne ich jetzt nicht, aber ich habe mal hervorgehoben, was für mich hier eine kleine Warnlampe ist. Ich zitiere dazu frei einen ziemlich fähigen Berater, den wir vor kurzem im Haus hatten, zum Hype von konfigurierbaren und "customizable" Plattformen: "Jede Konfigurationssprache, wenn man immer mehr damit tun können will, wird irgendwann Turing-vollständig. Man programmiert dann anstatt zu konfigurieren, nur leider in einer denkbar miesen Programmiersprache".
Weil heute im Web leider kaum noch etwas ohne JavaScript geht - im Frontend genauso wie im Backend (Node.js)
Von Javascript würde ich jedem Anfänger dringend abraten. Erstens beobachten wir hier clientseitig gerade eine Entwicklung, die zu ziemlich schlechten Architekturen führt (indem die Vorteile der Web-Architektur einfach weggeworfen werden, wie z.B. Zustandslosigkeit, leichte Integrierbarkeit über Links, usw) -- der Trend geht dahin, jeden "Mist" als "SPA" zu entwerfen, mit Angular, React und wie sie alle heißen. Dabei funktioniert Javascript am besten so, wie es ursprünglich gedacht war: zur clientseitigen Anreicherung einer Webanwendung.[1] Zweitens ist Javascript eine recht spezielle Sprache, und wird von vielen gar nicht richtig verstanden. Zwar hat der neueste ECMAScript Standard keywords wie "class" eingeführt, trotzdem gibt es eigentlich keine Klassen in Javascript -- die Objektorientierung funktioniert hier mit "Prototypes", was ein völlig anderer Ansatz ist als man es normalerweise kennt. Wirklich gutes Javascript kann man nur schreiben, wenn man das verstanden hat.
Das soll jetzt nicht heißen, dass ein Anfänger, der eine Webanwendung entwickeln will, auf keinen Fall den Client mit etwas simplem JavaScript aufhübschen sollte --- sowas geht natürlich immer. Aber die Entwicklung von komplexen UI-Komponenten, oder gar einer SPA (in den wenigen Fällen, in denen das Sinn ergeben könnte, z.B. bei so etwas wie google maps, was definitiv nichts mehr mit einer Webanwendung zu tun hat), sollte man besser vertagen, bis man genug Programmiererfahrung hat.
Bleibt die Frage, ob es sinnvoll ist, Javascript im Backend zu verwenden (also node.js). Dazu kann ich jetzt wenig sagen, weil ich es nie getestet habe. Vielleicht kann man damit ganz gut arbeiten, allerdings würde ich aus oben genannten Gründen Anfängern davon abraten. Es gibt viele Sprachen, die einfacher zu lernen sind, und durchaus geeignet sind für Backends von Webanwendungen. Nur als EIN Beispiel, wir verwenden bei der Arbeit C# mit .NET Core und AspNetCore MVC. Ruby wird viel benutzt und offenbar mit Erfolg. Java ist eher mit Vorsicht zu genießen. PHP -- siehe oben, IMHO Finger weg....
---
[1] bin hier vielleicht etwas vom Threadthema abgekommen, sorry ... falls es dennoch jemanden interessiert, das hier halte ich für eine sehr gute Sammlung von Empfehlungen zur Architektur von Webanwendungen:
https://roca-style.org/ -- mit "progressive enhancement" steckt da auch DIE Antwort auf die Behauptung drin, im Web gehe nichts mehr ohne Javascript