Programmieren Grundlagen
- PHP Kurs
- Einführung in Java
- Daten und Logik (http://gnupc.de/java/JavaDatenLogik052019.pdf)
- Schritt für Schritt Anleitung zum Aufbau einer Entwicklungsumgebung
- Struktogramme1
- Struktogramme2
- Diagramme zeichnen
Sinn und Zweck
Jede Maschine, die automatische Vorgänge ausführen kann, wird programmiert
Programme können zwischen Maschinen ausgetauscht und für andere Maschinen angepasst wiederverwendet werden
Durch die Trennung von Operationen, Basislogik und Daten können virtuelle Universalmaschinen umgesetzt werden
Beispiele:
- Spieluhr: Die Operation ist die Kurbel, die Basislogik sind die Klangzungen die Daten sind auf der Walze.
- Schrift: Die Operation ist die sprachlich formulierte Aussage, die Basislogik ist die Vorschrift, nach der Zeichen angeordnet werden, implemetiert im Lesenden, die Daten sind der Text.
Werkzeug und Begriffe
Programmiersprachen erlauben es Menschen, in ihrer eigenen Sprache(fast immer Englisch) Anweisungen für Computer zu schreiben.
Die Basislogik, die die Anweisungen in Maschinensprache übersetzt, wird in Compilern umgesetzt(Binärprogramm) und/oder von vorkompilierten Basisanweisungen bereitgestellt(Bibliotheken). Fast immer wird beides kombiniert. Assemblersprachen können auch direkt für die Maschine kompiliert werden.
Scriptsprachen werden von einem Interpreter ausgeführt. Der Interpreter ist ein Binärprogramm, der meist eine Kombination aus einem Quasi Kompiler und einer Basisbibliothek darstellt und weitere Bibliotheken einbinden kann
Was wann eingesetzt wird, hängt von einer Vielzahl von Faktoren ab:
Scriptsoftware verbraucht mehr Ressourcen und ist langsamer als Binärprogramme, kann aber viel flexibler sein und oft leichter/schneller programmiert und vor allem angepasst werden. Systemnah programmierte Binärprogramme sind an eine Zielplattform gebunden, können aber aus dieser alle Leistungsreserven herausholen.
Profis kombinieren nach Bedarf...
Sprachtypen und Elemente
Programmiersprachen können zu lauffähigen Binärprogrammen kompiliert werden oder als Scriptsprache direkt aus menschenlesbaren Quellcodes laufen.
Programmiersprachen bieten fast immer die folgenden Elemente:
- Anweisungen: Daten lesen und ausgeben, Rechnen.
- Variablen und Konstanten: gelesene Daten unter Adressen speichern
- Kontrollstrukturen: WENN DANN Logik
Paradigmen
- Prozedural: eine Anweisung nach der anderen.
Einfach, schnell, verständlich. - Objektorientiert: Anweisungen und Daten sind in speziellen Datensätzen gekapselt, die "gleichzeitig" in einem gespawnten Objekt zur Verfügung stehen und über ein eigenes Interface praktisch genutzt werden.
Effizient, besonders gut für Wiederverwendung geeignet. Steilere Lernkurve. - Funktional: Alles ist eine Funktion, Funktionen greifen ineinander und beeinflussen sich gegenseitig um die gewünschten Resultate zu erzeugen. Es können auch neue Funktionen erzeugt werden.
Extrem flexibel, besonders gut für komplexe Algorithmen geeignet inklusive "KI", Leichter Einstieg, Lernkurve nach oben offen.
Der Grundtyp der Sprache spielt für das Paradigma keine wichtige Rolle, Binärsoftware kann prozedural sein, Scriptsprachen können funktional oder objektorientiert arbeiten.
Paradigmen können in einer Sprache gemischt verwendbar sein,
In Java Script kann prozedural, objektorientiert oder funktional programmiert werden.
Einige Sprachen erzwingen weitgehend ein bestimmtes Paradigma um Ordnung zu schaffen ;-).
Java ist immer objektorientiert.
Spezialisierte und Hilfssprachen
Es gibt Sprachen in der IT, die keine vollständigen Programmiersprachen sind oder als solche nur sehr selten verwendet werden, die aber für eine bestimmte Aufgabe besonders gut geeignet sind.
- Markup: XML, HTML5/CSS3, TeX, CSV, JSON
- Abfragesprachen: SQL, CQL
- Reguläre Ausdrücke zum finden von Mustern in Text
- Konventionen zur Übergabe und Adressierung von Daten: REST/URL, Dateinamen
Viele dieser Spezialsprachen sind dazu gedacht, Daten auszulesen, zu strukturieren und zu durchsuchen.
Daten können Speicherobjekte(meist Variablen), Dateien(auch Netzwerkverbindungen und Hardwareports), Datenbankabfragen oder Streams(HTTP, Audio, Video) sein.
Pro-Tipp: alles, was logisch vorstellbar ist, wird von irendwem irgendwie praktisch umgesetzt...
Praxis
Programmierer beherrschen die Logik des Programmierens, die spezifischen Werkzeuge (Sprachen und Bibliotheken) sind sekundär und werden nach Bedarf erlernt.
Bei der Programmierung von Anwendungen werden immer mehrere Sprachen gleichzeitig verwendet. Meist eine Hauptsprache, in die andere spezialisierte Sprachen eingebettet werden.
Beispiele:
- Webanwendungen in Python oder PHP enthalten HTML und CSS Code zur Darstellung der Seite im Browser, Java Script für Browserseitige Anwendungen und meist SQL und andere Datenbankabfragesprachen.
- Java Anwendungen enthalten meist XML zur Speicherung komplexer Datensätze, oft auch SQL für Datenbankabfragen
- Komplexe Hocheistungssoftware ist oft in C++ umgesetzt und kann dann über eine in Python oder Java programmierte Oberfläche gesteuert werden.
Pro Tipp: In der Praxis wird jeder Projektleiter davon ausgehen, dass ein Programmierer mit einem ganzen Zoo verschiedener Sprachen vertraut ist und voraussetzen, dass ein Programmierer oder eine Programmiererin eine Sprache, die sie noch nie gesehen hat, innerhalb von 1-2 Wochen lernen kann.
Was wir in diesem Kurs praktisch kennenlernen:
Da die Zeit sehr begrenzt ist, werden wir nur wenig vertiefen und stattdessen den Schwerpunkt auf absolut unverzichtbare Grundprinzipien legen. Das geht am besten, wenn man diese in verschiedenen Umgebungen ausprobiert.
Folgende Themen sind verfügbar:
- Shellscripte: Lesen und Schreiben von Dateien und Nutzereingaben/Ausgaben, einfache Kontrollstrukturen
- PHP: Programmieren von Webanwendungen inklusive Nutzung von Markup und Nutzereingaben via URL
- Java Script: fremden Code lesen und verstehen, objektorientierte Bibliotheken nutzen am Beispiel leaflet(Landkarten anzeigen)
- Java: Arbeit mit der IDE Eclipse, objektorientierte Software kompilieren. komplexere Kontrollstrukturen
Folgende unverzichtbare Grundprinzipien müssen klar werden:
- Wie funktionieren Synthaxregeln?
- Wie geht man mit "not found" Fehlern um?
Folgende unverzichtbare handwerkliche Fähigkeiten werden erworben und trainiert:
- Copy&Paste + Lesen und Verstehen
- Übersetzen von praktischen Aufgaben in formale Programmlogik.
Für Nachfragen per Email stehe ich gern zur Verfügung: zettberlinlinuxuse.de