Über abbozza!

Was ist abbozza!?

abbozza! ist eine Famile von grafischen Programmiersprachen und zusätzlichen Werkzeugen, die unter didaktischen Gesichtspunkten und der Berücksichtigung des schulischen Einsatzes entworfen und entwickelt werden. Dabei versuchen wir eine Reihe von Prinzipien möglichst konsequent umzusetzen.

Die wichtigste Komponente ist abbozza! Worlds. Ähnlich wie Snap! bietet Sie die Möglichkeit Mit Hilfe einer Blockprogrammiersprache Programme zu schreiben uns auszuprobieren.

abbozza! Arduino und abbozza! Calliope bieten die Möglichkeit mit derselben Sprache verschiedene Mikrocontroller zu programmieren. Dazu wird zusätzlich der abbozza! Peer benötigt. Er stellt die Infrastruktur zur Verfügung, um Programme für die Mikrocontroller zu compilieren und auf sie zu übertragen. Außerdem bietet er die Möglichkeit über den USB-Anschluss mit dem Gerät zu kommunizieren, Messwerte aufzunehmen oder mit abbozza! Worlds Programmen zu interagieren.

Wer macht abbozza!?

abbozza! wird von der Arbeitsgruppe
Didaktik der Informatik der Unioversität Osnabrück entwickelt und betrieben.

Entstanden ist abbozza! aus einer Reihe von kleineren Werkzeugen, die für verschiedene Zwecke gebaut wurden. Wir setzen es seit mehreren Jahren in Workshops für Schülerinnen und im Studium ein.

Hinter abbozza! steht kein großes Team und es hat keine gesonderte Finanzierung. Wir entwickeln es im Rahmen der universitären Lehre, insbesondere der Lehramtsausbildung. Viele Materialien und Features werden und wurden im Rahmen von studentischen Abschlussarbeiten entwickelt und erprobt.

Was gibt es noch zu tun?

Eine ganze Menge! Da hinter abbozza! kein großes Teams steht, gibt es immer wieder Probleme, die noch nicht bemerkt wurden. Wir versuchen sie möglichst schnell zu beheben. Aber manchmal dauert das etwas länger.

Welche Prinzipien verfolgt abbozza!?

Visualisierung

Eines der wichtigsten Prinzipien ist die Visulisierung. Wir versuchen (fast) alles, was in abbozza! - und insbesondere abbozza! Worlds - geschieht, sichtbar zu machen.

  • Die Programme beeinflussen eine grafisch repräsentierte Welt. Damit kann man die Wirkungen des Programmes direkt wahrnehmen.

  • Beim Ablauf eines Programmes wird der aktive Block optisch hervorghehoben. Außerdem kann man die Geschwindigkeit der Ausführung verändern und sich schrittweise durch das Programm bewegen.

  • Datenstrukturen, wie z.B. Stacks, Queues und Binärbäume, stehen zur Verfügung und werden automatisch visualisiert.

Integrierte Materialien

abbozza! bietet die Möglichkeit Sketches (also die Programme) mit Informaterial zu kombinieren. D.h. man kann die Programme erläutern oder Aufgaben formulieren. Mehrere Sketches können zusammen mit Bildern und anderen Dateien in Sketchbboks zusammengefasst werden. Das Hathi-Spiel ist ein Beispiel für diese Möglichkeit.

Ausführbarkeit

Wir versuchen abbozza! so zu gestalten, dass jedes vollständige, aus Blöcken erstellte Programm lauffähig ist. Das heißt natürlich nicht, dass zur Laufzeit nicht noch Fehler passieren können!

Imperatives Programmierparadigma

abbozza! hält sich konsequent an das imperative Programmierparadigma. D.h. es gibt klassische Operationen bzw. Funktionen und lokale und globale Variablen. Damit ist die klassische Rekursion möglich. Außerdem müssen Variablen explizit deklariert und typisiert werden.

Das Objektkonzept entspricht im Kern dem von Java, JavaScript und Python. Man kann Methoden auf Objekten aufrufen und Referenzen auf Objekte in Variablen speichern.

Explizite und starke Typisierung

Variablen sind explizit und (einigermaßen) stark typisiert.
D.h. man kann die Typen von Werten und Blockausgaben an der Form der Anschlüsse erkennen. Außerdem kann man nur Blöcke kombinieren, deren Anschlüsse zueinander passen. In einigen Fällen ist es möglich davon abzuweichen. Dann geschieht eine implizite und automatische Typkonvertierung.

Quelltext

Unser Ziel ist es, dass abbozza! neben den Blöcken auch immer den Wechsel und die Arbeit mit Quelltext ermöglicht. So kann man die Blockprogramme in editierbaren und ausführbaren Quelltext umwandeln lassen. im Falle von abbozza! Worlds in JavaScript, in abbozza! Arduino in Processing und in abbozza! Calliope in C++.

In abbozza! Worlds kann der Quellcode über einen integrierten Interpreter schrittweise ausgeführt werden.

Datensparsamkeit

Wir sammeln keinerlei Daten über die Nutzung von abbozza!. Insbesondere verwenden wir keine Cookies.
Allerdings hinterlegen wir Daten im Speicher des lokalen Browsers. Diese werden jedoch nur lokal verwendet und nicht an den Server gesendet.

Außerdem implementieren wir abbozza! als Progressive Web App. Dadurch ist es möglich, dass man es nach einem Aufruf auf dem Server auch offline nutzen kann. Das betrifft dann aber nur Komponenten (z.B. Welten), die man vorher online verwendet hat, denn nur dann wurden sie lokal gespeichert.

Der abbozza! Peer kann außerdem als Offline Server dienen, der eine vollständige Version auf dem lokalen Rechner zur Verfügung stellt.