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