Hi,
On 05/03/2021 12:15, Stefan Engelhardt wrote:
ich würde gerne lernen/verstehen, wie Webanwendungen aufgebaut sind, welche Programmiersprachen wann verwendet werden, etc. Ist zufälligerweise jemand unter euch, der sich in dem Thema Zuhause fühlt?
Es kommt sehr stark darauf an was Du unter "Webanwendung" verstehst und in welche Umgebung die Anwendung eingebettet ist.
Grundsätzlich kannst Du jede beliebige Programmiersprache benutzen um aktive Webinhalte zu programmieren, ein paar typische Beispiele in mehr oder weniger historischer Reihenfolge:
C/C++: klassische CGI-"Scripte". Wird gerne verwendet um irgendwelche Low-Level Informationen über den Browser anzusprechen (z.B. klassische Web-Cam, Sensor-Status abfragen, etc.) ohne große Ansprüche an die Interaktivität. Ist normalerweise in ein größeres Framework eingebettet bei dem dann kaum noch auffällt dass ein paar CGIs da drin versteckt sind (z.B. die Konfiguration Deiner FritzBox). Heute werden auch gerne mal solche Sprachen wie Go oder Rust verwendet um CGIs zu schreiben.
Perl: war bis vor 10 Jahren der Platzhirsch unter den Web-Sprachen. Man kann einfache CGIs oder sehr komplexe Anwendungen damit schreiben. Heiko kann sicherlich mehr zu Perl sagen als ich. Von mir nur eine kleine Warnung: Perl ist eine "write-only Sprache" - d.h. es ist sehr einfach Scripte so zu schreiben dass man sie ein paar Tage später nicht mehr versteht - auf der anderen Seite habe ich auch schon sehr schöne Perl-Scripte gesehen (aber nicht viele).
Java: hat in verschiedensten Formen das Web beeinflusst. Auf der Client Seite gab es "Applets" (lern es nicht, funktioniert nicht mehr). Auf der Server Seite gab es verschiedene Konzepte wie "Java Server Pages", "Application Server", etc. Wird im Business-Umfeld relativ häufig als Framework eingesetzt (z.B. Jenkins CI Server, Gerrit Code Review, Tomcat, ...). Hat den Vorteil dass es sehr dicht an der klassischen Anwendungsprogrammierung ist und den Browser nur als Schnittstelle zum User benutzt.
Javascript, CSS: im Wesentlichen Client-Seite. Beide werden benutzt um Applikationen interaktiver zu machen und "schöner" zu gestalten. Es ist erstaunlich wie weit man mit der Kombination kommt (ich habe z.B. mal eine HTML-Seite entwickelt die Barcodes ausspuckt ohne den Server fragen zu müssen). Es ist aber auch erstaunlich wie schlimm die Kopfschmerzen nach ein paar Stunden Javascript sind. Wird normalerweise als Ergänzung zu anderen Server-seitigen Frameworks eingesetzt.
PHP: de-facto Standard für interaktive Web-Inhalte, gefühlt über 90% der Webseiten sind heute mit PHP geschrieben. Die Sprache ist explizit für Web entwickelt und bietet so ziemlich alles was man sich vorstellen kann. In bestimmten elitären Kreisen gilt PHP wahlweise als unsicher (behobenes historisches Problem) oder unästhetisch (Geschmacksfrage). Auf der anderen Seite beweisen große Projekte wie Wikipedia oder Phabricator, dass PHP für anspruchsvolle Sachen geeignet ist. Wenn Du es lernst orientier Dich bitte an den größeren Projekten, es gibt (genau wie bei anderen verbreiteten Sprachen) viel Schrott, der einem gut zeigt welche Fehler man machen kann...
Ruby/Python: sind beide angetreten Perl zu verdrängen. Die Fans sind üblicherweise auf den Erfolg von PHP wütend. Es gibt in beiden Sprachen gute Frameworks und beeindruckende Anwendungen. Ob Du sie lernen willst hängt davon ab ob Du sowieso Fan einer dieser Sprachen bist oder ob Du ein Projekt zum Thema hast.
C#: Microsoft ist wie üblich auf Java neidisch und versucht es aus dem Business-Umfeld zu verdrängen - mit teilweisem Erfolg. Würde ich nur lernen wenn mein Chef die Bücher und die Zeit bezahlt.
Ich habe auch schonmal eine Mini-Spass-Webseite mit Bash programmiert, aber ich würde empfehlen bei den verbreiteteren Frameworks zu bleiben.
Zum Einstieg würde ich Dir empfehlen PHP zu lernen - es ist schön einfach, flexibel und Du kommst relativ schnell zu Erfolgserlebnissen, kannst aber auch relativ weit damit kommen. Es ist recht gut geeignet die wichtigsten Konzepte zu begreifen und Du wirst immer Leute finden, die weiterhelfen können. Wenn Du die Grundlagen begriffen hast mach' mal etwas "Urlaub" von PHP und schau Dir andere Frameworks an (z.B. indem Du in die Sourcen anderer Anwendungen schaust). Genau wie bei "klassischen" Anwendungen hängt die Wahl der Sprache vom Einsatzgebiet der Anwendung und von deren Umgebung ab.
Architektonisch reichen Webanwendungen von simplen Datentransformatoren (z.B. Wert aus einer Datei lesen und in HTML verpacken) über die klassischen multi-tier Applikationen bis hin zu komplexen Cluster-Anwendungen (z.B. Phabricator oder Wikipedia wenn sie vollständig ausgenutzt werden). Sie können komplett alleine dastehen (nur Webserver), eine Datenbank benutzen oder eine komplette Server-Umgebung brauchen. Etwas Literaturstudium kann nicht schaden bevor Du größere Projekte angehst.
Sobald Du die Grundlagen verstanden hast solltest Du auch anfangen Dich mit den Problemen zu beschäftigen - insbesondere Security-Probleme (Cross-Site Scripting, SQL Injection, etc.). Die allermeisten Frameworks haben Lösungen für die Probleme, aber man muss es wissen um es korrekt einzusetzen. Bei Web-Anwendungen ist das wichtiger als bei klassischen Anwendungen, da Deine Anwendung offen da steht und Angreifer quasi einlädt sich auszutoben. Es gibt reichlich Literatur (auch online) zum Thema.
Konrad