Aus dem Unterricht des CAS Digital Leadership mit Chanel Greco berichtet Andreas Glaus:

Was haben zukünftige Digitale Leader mit «Code Literacy» zu tun? Chanel Greco hat uns an diesem Samstag Nachmittag insofern die Augen geöffnet und das Mysterium Code näher gebracht. Kurzum ist ihr ein weiterer Schritt zum Brückenschlag zwischen Business und IT gelungen.

Da wir in unserem Alltag inzwischen von Code nur so umgeben sind, ist es von höchster Relevanz, sich mit diesem Thema auseinanderzusetzen. So sind wir mit Code alltäglich durch Smartphone, Backofen, Lift, Kaffeemaschine, Auto, TV, etc. konfrontiert.

Umgeben von Code

Quelle: Greco, C. (2019). Code Literacy. Unveröffentlichtes Script, Zürich: HWZ

Was bedeutet Code Literacy?

Literacy bedeutet die Lese- und Schreibkompetenz und Code die Zusammenstellung von Zahlen, Buchstaben und Symbolen. Somit versteht man mit Code Literacy die Fähigkeit, Code zu verstehen, zu schreiben und zu beschrieben. Entsprechend geht es nicht nur darum programmieren zu können. Vielmehr geht es darum, ein Verständnis für Code und Menschen in deren Umfeld zu gewinnen. Passend dazu meinte Steve Jobs:

„Everybody […] should learn how to program a computer…because it teaches you how to think.“ – Steve Jobs

Computational Thinking meint…

Computergestütztes Denken (Computational Thinking) ist ein Werkzeug, um komplexe Probleme strukturiert zu lösen. Es ist eine grundlegende Fähigkeit, die für jedermann – und zwar nicht nur für IT Personen – einen Vorteil in der Problemlösung darstellt.

Computational Thinking

Quelle: Greco, C. (2019). Code Literacy. Unveröffentlichtes Script, Zürich: HWZ

Diese Methode wendet man bereits in folgenden, alltäglich komplexen Themen an. Diese Aufzählung ist nicht abschließend.

  • Wahl einer Arbeitsstelle
  • Wahl einer Weiterbildung
  • Schreiben einer Diplomarbeit
  • Weltreise planen
  • Prozesse digital abbilden
Computational Thinking anwenden

Die «Confibrot Challenge» ist ein gutes Mittel, um einen Algorithmus – an unserem Beispiel wie ein Roboter ein Confibrot streicht – zu schreiben. Als Roboter bzw. Roboterin hat sich unsere Dozentin Chanel Greco freundlicherweise zur Verfügung gestellt. Beim Ausprobieren dieses Algorithmus wurde uns jedoch schnell bewusst, dass die Roboterin die Methode «Brot schneiden» nicht kennt. Des Weiteren fiel uns auf, dass teilweise Vorschritte einer Methode («Butter  streichen») vergessen wurde. So konnte die Roboterin die Butter nicht streichen, weil keine Aufforderung zum Öffnen des Butters bestimmt wurde. (Yeah, we found a bug 😉) Dieses Beispiel demonstriert eindrücklich, dass ein Computer genau DAS ausführt, WAS man dem Computer sagt und nicht mehr oder weniger.

Welche «Sprache» spricht ein Computer?

Ein Computer versteht Maschinencodes, welcher im Binärsystem (0 und 1) geschrieben ist.

«01001011 01101111 01101101 01100010 01101111 01100101 01110101 01100110»
oder
«01000011 01101111 01101101 01100010 01101111 01100101 01110101 01100110»?
Übersetzungshilfe

Programmcodes mittels 0 und 1 zu schreiben ist sehr umständlich, fehleranfällig und nicht leserlich. Dahingehend hat Grace Hopper den ersten “Compiler” im Jahre 1952 entwickelt. Hoppers Erfindung wandelt einen Code der Programmiersprache in einen Binärcode um.
Die erste höhere Programmiersprache nennt sich Fortran und wurde im Jahre 1957 entwickelt. Mittlerweile gibt es weit mehr als 2’000 unterschiedliche Programmiersprachen. Trotz des Alters der Fortan-Sprache sind heutzutage Fortan Entwickler weiterhin gesucht. Beispielsweise benötigt die NASA diese, um die Voyager Sonden, welche in den 1970-er Jahren gestartet sind, zu unterhalten.

Einige moderne Programmiersprachen sind:

C:

C Code

Quelle: Eigene Darstellung

Die meisten heutigen Betriebssysteme haben ihren Ursprung in C. So programmiert man heute noch in dieser Sprache und C läuft noch immer auf unseren Betriebssystemen. Besonders geeignet ist diese Sprache für hardwarenahe Programmierungen.

Python:

Python hat entsprang einem Hobby-Projekt. Diese Sprache ist einfach zu erlernen und daher besonders bei Anfängern beliebt. Eine auffallende Stärke von Python ist das Ausführen von komplexen Berechnungen. Dies macht mitunter die Sprache für «machine learning» und «artificial intelligence» äußerst interessant.

Java:

Java ist Plattform-unabhängig und hat sich dadurch auf Millionen von Geräten und Computern etabliert. Am besten eignet sich die Sprache für grössere Webanwendungen. Android oder auch Elasticsearch des Webshops “Galaxus” sind bekannte Einsatzgebiete.

JavaScript:

Eine der bekanntesten Sprachen vor allem für Webanwendungen ist JavaScript. Ein riesiger Vorteil derer ist, dass es kein Zusatzprogramm für die Ausführung benötigt. Das bedeutet, die Scripts können mit den gängigsten Internetbrowsern ausgeführt werden.

Ruby:

Ruby ist eine einfache Sprache, um mit dem Programmieren anzufangen. Dies ist umso mehr der Fall, da einfache Plattformen für Start-Ups existieren. Hinsichtlich der Geschwindigkeit zählt Ruby allerdings nicht zu den schnellsten Sprachen.

Welches ist die beste Sprache?

Quelle: Greco, C. (2019). Code Literacy. Unveröffentlichtes Script, Zürich: HWZ

Bei einer solchen Vielfalt stellt sich natürlich die Frage, welches die beste Programmiersprache ist. Auf diese Frage existiert keine eindeutige Antwort. So eignen sich gewisse Sprachen für spezifische Anwendungsbereiche oder Umfelder mehr oder weniger gut. Folgend sind die bekanntesten Unterschiede der Programmiersprachen aufgeführt, um an dieser Stelle nur einige der Variationen aufzuzählen.

  • Geschwindigkeit / Performance
  • Community
  • verfügbare Programmierer
  • Libraries und Framework
  • Lizenzkosten

Mit Ruby programmieren

Was ist nun mit dem Programmieren? Um uns dies zu veranschaulichen, führte uns die Dozentin Chanel Greco an die Programmiersprache Ruby heran. Somit lernten wir zuerst die folgenden Grundlagen zu Ruby kennen.

Mittels den Operatoren < oder > können zwei Werte verglichen werden. Zudem wird mit == die Gleichheit geprüft. Das Ergebnis ist entweder “true” oder “false”.

Werte vergleichen

Quelle: Greco, C. (2019). Code Literacy. Unveröffentlichtes Script, Zürich: HWZ

Ein String ist eine Abfolge von Zeichen und wird mit doppeltem Anführungszeichen umschlossen.

Srting definition

Quelle: Greco, C. (2019). Code Literacy. Unveröffentlichtes Script, Zürich: HWZ

Die Ausgabe vom String wird mit dem Befehl puts realisiert. Soll ein zusätzlicher Ruby Code innerhalb eines Strings hinzugefügt werden, kann dieser mit geschweiften Klammern ergänzt werden #{..}.

Ausgabe von Strings

Quelle: Greco, C. (2019). Code Literacy. Unveröffentlichtes Script, Zürich: HWZ

Den Variablen werden Werte zugewiesen und das bietet zudem die Möglichkeit Berechnungen anzustellen. Die Zuweisung der Werte erfolgt mittels dem Gleichheitszeichen =.

Variabel

Quelle: Greco, C. (2019). Code Literacy. Unveröffentlichtes Script, Zürich: HWZ

Um eine Eingabe zu tätigen, kann der Befehl gets.chomp verwendet werden.

Eingabe inkl. Ausgabe

Quelle: Greco, C. (2019). Code Literacy. Unveröffentlichtes Script, Zürich: HWZ

Mit den Befehlen if (wenn), elseif (oder wenn) und oder else (oder) werden eine Anweisungen ausgeführt.

Anweisung inkl. Ausgabe

Quelle: Greco, C. (2019). Code Literacy. Unveröffentlichtes Script, Zürich: HWZ

Damit nicht ein endlos langer Code entsteht, existiert die Möglichkeit einer Schlaufe. Innerhalb von loop und end wird der Code unendlich ausgeführt. Die unendliche Ausführung (loop) wird durch das brake Statement unterbrochen, falls dieses “true” wird.

Loop inkl. Ausgabe

Quelle: Greco, C. (2019). Code Literacy. Unveröffentlichtes Script, Zürich: HWZ

 

Und los geht’s:

Nun wird es Zeit das Gelernte umzusetzen und zu üben. Auf Master21Academy stellte die Dozentin Chanel Greco mit der Aufgabe “Nummern-Rate-Spiel” eine entsprechende Übungssequenz zur Verfügung. Zusätzlich könnte man das Programmieren auch mit der Aufgabe FizzBuzz trainieren. Häufig muss FizzBuzz bei Einstellungsgesprächen und Eignungstests gelöst werden. Einige Studentenkollegen/innen haben sich ebenfalls an diese Aufgabe gewagt. In einem Fall ist dies sogar erfolgreich umgesetzt.

Erfolgreiche FizzBuzz umsetzung

Quelle: Eigene Darstellung

Ob das alles Eigenentwicklung ist oder mitunter jemand nachgeholfen hat? Was ist bei den Entwicklern üblich? Dieser Link bietet allenfalls Aufschluss: FizzBuzz