Wow, Konrad. Damit hätte ich jetzt nicht gerechnet.
Ich habe durch das Wirtschaftsinformatikstudium gelernt, dass ich keine Lust mehr auf selbst programmieren habe. Java und OOP ist derart merkwürdig zu programmieren, dass macht mich auf dauer krank. Wenn ich für "Hello World" einen Monat in Vollzeit brauche, ist das für jemanden der mit programmieren und OOP aufgewachsen ist eine Sache von 3 Minuten (inklusive PC hochfahren). Wenn ich an Webanwendung denke, dann habe ich zum Beispiel Telegram im Kopf. Allerdings sehe ich optisch nicht, dass Telegram als Webanwengung irgendwie was mit HTML/HTML5 zu tun hat. Es muss auch etwas geben das sich CSS nennt, da weiss ich aber auch nicht wann ich das brauche. Aktuell gibt es zwei Domains. Bei der einen Domain soll der normale Webauftritt stattfinden. Er repräsentiert das Unternehmen in jedem Land, in diesem Fall Deutschland. Das Unternehmen soll weltweit agieren, dementsprechend kommen im Laufe der Zeit noch weitere hinzu. Ist aber irrelevant. Hinter der anderen Domain ist dann die Webanwendung und Datenbank versteckt. In der Datenbank sind neben allgemeinen Informationen auch sensible Daten der Nutzer, welche nicht unbedingt ständig durchs Internet müssen.
Die Webanwendung (Programmiersprache noch unklar) muss sich also mit der einen Domain verbinden. Ich habe mich schon mit dem Gedanken angefreundet, dass die Nutzer sich einerseits mittels Webbrowser in ihren Account einloggen können oder sich eben die Webanwendung "installieren", wie so ein Telegram, die ganzen Google Anwendungen, etc. Müssen sensible Daten verarbeitet werden, soll dies auf dem Server passieren, alle weitere Aktionen auf dem Client.
Kann ich mit den Angaben jetzt weiter die richtige(n) Programmiersprachen filtern? Wenn nein, welche Fragen muss ich noch stellen um die Suche weiter einzugrenzen?
Gruß Stefan
Am Fr., 5. März 2021 um 13:28 Uhr schrieb Konrad Rosenbaum <konrad@silmor.de
:
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