Um Kapitel 10 (Konzepte der Programmierung) des Handbuchs für
Fachinformatiker geht es in der sechsundneunzigsten Episode des
Anwendungsentwickler-Podcasts. TL;DR Mit Kapitel 10 des Handbuchs
für Fachinformatiker von Sascha Kersken gehe ich mit dir
grundlegende Konzepte der Programmierung durch. Wenn du Algorithmen
und Datenstrukturen verstehst, kannst du passende Lösungen
auswählen und nachvollziehen, wie sich dein Code bei größeren
Datenmengen verhält. Reguläre Ausdrücke helfen dir im Arbeitsalltag
beim Bearbeiten von Texten, während ereignisgesteuerte
Programmierung auch im Fachgespräch relevant ist. Die Beispiele zur
systemnahen Programmierung sowie zu Netzwerkzugriffen und
grafischen Oberflächen geben dir Einblicke in Arbeitsfelder, die
über deinen Ausbildungsbetrieb hinausgehen. Kapitelmarken
[00:00:00] Einstieg in den Buchclub zu Kapitel 10 [00:01:50] Warum
du Datenstrukturen intern verstehen solltest [00:03:46] Überblick
über die Programmierkonzepte [00:04:01] Sortieralgorithmen und
Komplexität [00:07:50] Rekursion selbst ausprobieren [00:08:25]
Sortieraufgaben in Praxis und Prüfung [00:09:34] Lineare und binäre
Suche [00:10:17] Stack, Queue und weitere Datenstrukturen
[00:13:19] Reguläre Ausdrücke im Arbeitsalltag [00:16:11] Prozesse
und Pipes [00:16:47] Threads und nebenläufige Programmierung
[00:19:26] Netzwerkprogrammierung mit Sockets [00:21:08] Über den
Ausbildungsbetrieb hinaus lernen [00:22:53] Grafikprogrammierung
und Mathematik [00:24:59] Fensteranwendungen und Event-Handling
[00:26:45] Event-Bus und Reactive Programming [00:29:29] Welche
Konzepte für die Prüfung relevant sind [00:31:38] Das frühere
Unterkapitel zu Java EE [00:33:07] Fragen für Episode 100
[00:33:43] Reguläre Ausdrücke mit Regex Crossword üben [00:34:17]
Projektpräsentation, weiterführende Links und Newsletter [00:35:36]
Weitere Buchclub-Termine Das Kapitel 10 des IT-Handbuchs für
Fachinformatiker* von Sascha Kersken liefert einen Überblick über
zentrale Konzepte der Programmierung: Algorithmen, Datenstrukturen,
reguläre Ausdrücke, Netzwerkprogrammierung usw. Insgesamt ein
spannendes Kapitel gefüllt mit viel Know-How für die Praxis. Auch
wenn nicht so viel prüfungsrelevantes Wissen enthalten ist, sollte
jeder Anwendungsentwickler die beschriebenen Inhalte kennen, da man
ihnen früher oder später sehr wahrscheinlich bei der eigenen Arbeit
begegnen wird. 10.1 Algorithmen und Datenstrukturen
Sortieralgorithmen zeigen gut die Unterschiede bei der Komplexität
verschiedener Lösungen für das gleiche Problem (BubbleSort vs.
QuickSort). In einer der letzten Prüfungen war ein kleiner
Sortieralgorithmus enthalten. Der kleine Ausflug zur Rekursion und
Iteration ist wichtig. Suchalgorithmen sind für die Praxis nicht
ganz so wichtig, bilden aber die Grundlage von Datenbanken. Daher
begegnen sie uns - wenn vielleicht auch unbewusst - jeden Tag. Die
abstrakten Datenstrukturen Stack, Queue und Baum sind absolutes
Grundwissen für jeden Entwickler. Es gibt keine Ausrede dafür, sie
nicht zu kennen! Ich lasse sie in meinem Java-Tutorial auch immer
einmal selbst programmieren. 10.2 Reguläre Ausdrücke Ich bin immer
wieder erstaunt, wie selten fertige Anwendungsentwickler sich mit
regulären Ausdrücken auskennen. Ich könnte ohne sie nicht leben :-)
Es gab schon einmal eine Aufgabe zu Textmustern in der IHK-Prüfung,
die allerdings eine eigene Syntax vorgab. Aber die Idee der
regulären Ausdrücke ist daher wohl als prüfungsrelevant
einzustufen. 10.3 Systemnahe Programmierung Prozesse und Pipes sind
wichtige Konzepte für die systemnahe Programmierung, sie jeder
Entwickler einmal gehört haben sollte. In der Praxis werden sie
aber wohl nur relevant, wenn man halt systemnah programmiert :-)
Threads sind ein Konzept, das heutzutage immer wichtiger wird. Da
Prozessoren nicht mehr (oder kaum noch) vertikal skalieren, sondern
horizontal, sollte jeder Entwickler sich mit der nebenläufigen
Programmierung auseinandersetzen. Viele moderne Sprachen bieten
Abstraktionen für die nebenläufige Programmierung an, sodass man
nicht selbst mit Threads hantieren muss. 10.4 Einführung in die
Netzwerkprogrammierung Jeder Entwickler sollte wissen, was eine
Socket ist. In der Praxis wird man aber wahrscheinlich wenig damit
arbeiten, da einem moderne Sprachen das Low-Level-Coding abnehmen.
10.6 GUI- und Grafikprogrammierung Ein netter Ausblick auf die
eigene Programmierung von grafischen Ausgaben, aber für die Praxis
und die Prüfung eher uninteressant, da man heutzutage sehr
wahrscheinlich Frameworks dafür nutzen würde. Das Unterkapitel zur
fensterbasierten Programmierung und dem Event Handling ist
allerdings wieder sehr praxisrelevant. Auch in der mündlichen
Prüfung haben wir schon öfter nach Events und Event Handlern
gefragt. Frühere Inhalte 10.5 Verteilte Anwendungen mit Java
Enterprise Edition Zurecht entfernt, da schwergewichtige Konzepte
wie EJBs und SOAP heute eher eine untergeordnete Rolle spielen und
in der Kürze ohnehin nicht vermittelt werden könnten.
Literaturempfehlungen Was sonst? :-) *(direkt beim Rheinwerk-Verlag
bestellen*) Die erwähnten Bücher zum Buchclub und zur Einarbeitung
in Java EE gibt es hier: Jeff Langr - Pragmatic Unit Testing in
Java 8 with JUnit (Affiliate)* Alexander Salvanos - Professionell
entwickeln mit Java EE 7: Das umfassende Handbuch (Affiliate)*
Links Permalink zu dieser Podcast-Episode RSS-Feed des Podcasts
Regex Crossword Zusammenfassung Algorithmen und Datenstrukturen
verstehen Für dich als IT-Azubi in der Anwendungsentwicklung
bespreche ich Kapitel 10 des Handbuchs für Fachinformatiker von
Sascha Kersken. Die Codebeispiele zeigen, wie grundlegende Konzepte
intern funktionieren. Dieses Wissen hilft dir dabei,
Datenstrukturen passend auszuwählen und Ursachen für langsame
Programme zu erkennen. In meinem Java-Tutorial lässt sich jede:r
Azubi deshalb unter anderem mit einer selbst programmierten Queue
und einer verketteten Liste auf diese Grundlagen ein. Sortieren,
Suchen und Rekursion An Bubble Sort und Quick Sort führt das
Kapitel in Sortieralgorithmen ein. Bubble Sort lässt sich einfach
programmieren und hat durch seine geschachtelten Schleifen einen
quadratischen Aufwand: Bei doppelt so vielen Elementen steigt der
Aufwand auf das Vierfache. Quick Sort teilt die Liste und arbeitet
rekursiv. An solchen Beispielen kannst du nachvollziehen, wie der
Aufwand eines Algorithmus mit der Datenmenge wächst. Bei der
linearen Suche werden Elemente nacheinander geprüft. Die binäre
Suche grenzt den Bereich schrittweise ein, wodurch sie bei großen
Datenmengen erheblich weniger Vergleiche braucht. Das Kapitel
behandelt diese Suchverfahren auf wenigen Seiten. Zum Üben empfehle
ich dir, selbst etwas Rekursives zu programmieren. Dabei lernst du
die besondere Art kennen, ein Problem rekursiv zu lösen, und
begegnest den Schwierigkeiten, die daraus entstehen. Der kurze
Kasten im Buch reicht dafür als Einstieg. In einer von mir
betrachteten IHK-Prüfung musste innerhalb einer Programmieraufgabe
eine Liste sortiert werden. Der Algorithmus war frei wählbar,
sodass Bubble Sort für die Aufgabe ausreichte. Auch im
Arbeitsalltag kann eine eigene Sortierlösung erforderlich sein,
wenn die vorhandenen Sprachmittel die Aufgabe nicht abdecken.
Stack, Queue und Bäume Mit Codebeispielen stellt das Buch
ausgewählte Datenstrukturen vor: Ein Stack folgt dem LIFO-Prinzip,
also "Last In, First Out". Das zuletzt abgelegte Element wird
zuerst entnommen. Rücksprungadressen bei Methodenaufrufen werden
beispielsweise auf einem Stack verwaltet. Eine Queue arbeitet nach
FIFO, also "First In, First Out". Das zuerst eingefügte Element
wird zuerst verarbeitet, wie bei einer Warteschlange. Bäume gehören
ebenfalls zu den behandelten Grundstrukturen. Ergänzend zum Buch
erwähne ich die Double Ended Queue, bei der du an beiden Enden
Elemente einfügen kannst. Damit lässt sich beispielsweise eine
dringende Nachricht vorne einordnen. Beim Lernen hilft dir die
Frage, für welche Aufgabe eine Datenstruktur geeignet ist. Ihre
interne Arbeitsweise erklärt auch, warum bestimmte Operationen mehr
Zeit brauchen. Stack und Queue bieten sich als Themen für das
Fachgespräch an. Reguläre Ausdrücke im Arbeitsalltag Zum Einstieg
in reguläre Ausdrücke empfehle ich dir die rund 18 Seiten des
Kapitels. Dort werden wichtige Syntaxelemente sowie Gruppen und
Klammerungen behandelt. Mit regulären Ausdrücken kannst du
Textmuster erkennen und Texte bearbeiten. Beispielsweise lassen
sich Leerzeichen am Zeilenende entfernen oder Logdateien anhand
bestimmter Muster auswerten. Viele Texteditoren und IDEs
unterstützen die Suche mit regulären Ausdrücken samt Ersetzen. Auf
der Linux-Kommandozeile gehört grep zu den entsprechenden
Werkzeugen. In einer schriftlichen Prüfung habe ich bereits eine
Aufgabe zu Textmustern gesehen, die eine eigens definierte Syntax
vorgab. Für die Praxis empfehle ich dir, die gebräuchliche
Regex-Syntax zu lernen. Beim Regex Crossword kannst du sie
spielerisch üben. Systemnah und nebenläufig programmieren An
C-Beispielen zeigt das Buch, wie Prozesse über Pipes kommunizieren.
Wie weit du diese Details vertiefen solltest, hängt von deinen
Aufgaben im Betrieb ab. In den von mir betrachteten Prüfungen sind
mir solche Programmieraufgaben bislang nicht begegnet. Bei Threads
geht es darum, mehrere Abläufe nebenläufig auszuführen. Mehrere
CPU-Kerne können dabei Arbeit übernehmen. Für Entwickler:innen wird
es anspruchsvoll, die möglichen Abläufe nachzuvollziehen und
fehlerfreien Code zu schreiben. Viele Programmiersprachen bieten
dafür Abstraktionen an. Als Beispiel bespreche ich async und await
in C#, mit denen du asynchronen Code schreiben kannst.
Asynchronität und Nebenläufigkeit bezeichnen unterschiedliche
Konzepte. Das Buch liefert eine Einführung samt Java-Beispiel; für
deine praktische Arbeit solltest du zusätzlich nachlesen, welche
Möglichkeiten deine Programmiersprache bietet. Über Netzwerke
kommunizieren ...
Kommentare (0)
Melde dich an, um einen Kommentar zu schreiben.