Programmierung für OttoNormalVerbraucher

Facebook und Co. arbeiten daran Nachrichten so aufzubereiten, dass sie emotional noch mehr ansprechen, als ob die gesellschaftliche Situation nicht schon aufgeheizt genug ist. Wir arbeiten daran dem Endnutzer Werkzeuge bereitzustellen um seine rationale Urteilskraft mit Hilfe des Computers zu stärken. Dafür benötigt man möglichst einfache aber dennoch leistungsstarke Programmiersprachen und umfangreiche, vertrauenswürdige, öffentlich zugängliche Informationen in Form von vielgestaltigen großen Tabellen und Dokumenten ähnlich der Wikipedia. 

Auch wenn die entwickelte Sprache so einfach wie möglich ist, wird sie im Gegensatz zum Facebookansatz einen gewissen Lernaufwand erfordern. 

Eine solche Programmiersprache in Kombination mit vertrauensvollen Daten könnte ein großer Schritt in Richtung einer weiteren Demokratisierung der Gesellschaft werden. Viele Falschnachrichten könnten leicht von jedermann durch entsprechende Fakten oder statistischen Auswertungen paralysiert werden. 

Vielleicht kann man die Schaffung einer solchen Programmiersprache mit der Schaffung des ersten Alphabets durch die Phönizier oder der Schaffung des ersten Alphabets mit Vokalen durch die Griechen vergleichen. Hätten diese Völker solche Leistungen vollbringen können ohne diese Voraussetzungen. Ich vermute ohne dieses Alphabet hätte es keine griechische Wissenschaft und Kultur gegeben; vielleicht auch keine griechische Demokratie.  

Entwurfskriterien für eine solche Sprache:

  1. Eine mathematische Fundierung ist erforderlich.
  2. Methodisch-didaktische und pragmatische Fragen stehen zunächst vor Effizienzproblemen.
  3. Kurze, lesbare Programme; die wichtigsten Schlüsselworte sollten kurz sein
  4. Einfache, unstrukturierte Programme; Schleifen und allgemeine Rekursionen führen häufig zu schwer lesbaren und schwer änderbaren Programmen; 
  5. Universelle Anwendbarkeit; sie muss nicht nur für Relationen (flache einfache Tabellen) sondern auch für strukturierte Tabellen und Dokumente nutzbar sein; sie muss nicht nur für Anfragen an die wichtigsten Systeme sondern auch für vielfältige Berechnungen geeignet sein
  6. Um im Schulunterricht einsetzbar zu sein, muss sie die verschiedenen mathematische Teilgebiete unterstützen, sowie Nutzen für die anderen Fächer bieten
  7. Sie sollte so mächtig sein, dass sie andere Systeme und Sprachen wie Tabellenkalkulation und SQL ersetzen kann. 
  8. Aus Endnutzersicht darf es nur ein einheitliches System mit einheitlicher Syntax (Schreibweise) für die Verarbeitung von Massendaten geben, genau wie die Operationen der Einzeldatenverarbeitung (+ – * : sin) standardisiert sind. 

 

Einführung in o++o: 

A. Merkel „Jeder Schüler soll neben lesen, rechnen und schreiben auch programmieren können.“ 

o++o (ausführlich ottoPS) ist eine tabellenorientierte Programmiersprache mit funktionalen Möglichkeiten, die auf Schleifen verzichtet. Dennoch ist o++o sehr ausdrucksstark und man kann mit ihr nicht nur kompakte Anfragen sondern auch vielfältige Berechnungen für strukturierte Tabellen und strukturierte Dokumente bewerkstelligen.

o++o benutzt viele mathematische Konzepte, daher sehen wir die Hauptvorteile der Vermittlung im Mathematikunterricht, genau wie die wesentlichen Fähigkeiten für die Nutzung des Taschenrechners in Mathematik vermittelt werden. o++o verwendet insbesondere folgende Konzepte: Kollektion (Menge, Multimenge, Liste); Gleichheit und Inklusionsbeziehungen dieser; Tupel; leistungsfähige Operationen zum Selektieren; Berechnen; Restrukturieren; Sortieren und Aggregieren (Summe; Durchschnitt; …),… .

Tabellenkalkulationsprogramme wie EXCEL und die Datenbankstandardabfragesprache SQL kennen keine strukturierten Schemen und Tabellen. Erste Tests mit Vorschulkindern lassen vermuten, dass man mit strukturierten Tabellen leichter rechnen kann als mit Dezimalzahlen. Wir wollen einige o++o-Beispielprogramme anfügen:

1. Berechne den Wert eines einfachen Terms.

2*3+4

* und + haben jeweils 2 Inputwerte. Zunächst wird 2*3 (6) berechnet. Die 6 ist erster Inputwert von +, so dass sich insgesamt 24 ergibt. Hier wird also einfach von links nach rechts gerechnet.

 

2. Schreibe den Term cos³(sin²(3.14159)) in o++o.

pi sin hoch 2 cos hoch 3

 

Unserer Meinung nach ist der Ausgangsterm für Otto Normalverbraucher schwer zu lesen. Man beginnt mit pi geht nach links bis zum sin dann nach rechts zum hoch 2 jetzt bewegt man sich wieder nach links zum cos und abschließend nach rechts zum hoch 3. Diese Schreibweise wurde sicher eingeführt um Klammern zu sparen. Eigentlich müsste der Ausgangsterm um unmissverständlich zu sein, folgendes Aussehen haben: 

(cos((sin(3.14159))²))³ 

Das ist sicher noch schwerer zu lesen und man bewegt sich noch mehr von links nach rechts und umgekehrt. 

 

3. Schreibe den Term sin²(x)+cos³(y)  in o++o.

X sin hoch 2 + (Y cos hoch 3) 

oder 

X sin hoch 2

+ Y cos hoch 3

Man könnte alle Terme in o++o ohne Klammern schreiben, allerdings müssten dann bestimmte Terme mehrzeilig geschrieben werden.  

 

4. Wie berechnet man den Term 2+3:4*5 ?

2+(3:(4*5))=2 3/20

2+((3:4)*5)=5 ¾

o++o: ((2+3):4)*5=6 1/4

 

Man erkennt, dass man mit der Schulweisheit Punktrechnung geht vor Strichrechnung noch nicht auskommt. Man benötigt die Regel „von links nach rechts“ zusätzlich.

 

5. Berechne den Durchschnitt mehrerer Noten.

1 2 3 1 2 ++:

 

Vom methodischen Standpunkt kann man dieses Programm noch verbessern, indem man die Klammern für Listen hinzufügt: [1 2 3 1 2] ++:

Man erkennt jetzt, dass die Durchschnittsoperation ++: einen Inputwert, nämlich eine Liste besitzt und dass ++: diesem einen Inputwert nachgestellt wird. Da die Nutzer in der Regel nicht viel tippen wollen, gehen wir davon aus, dass die erste Notation in Praxis häufiger benutzt werden wird.

 

6. Berechne die Durchschnitte einer strukturierten Tabelle noten.tab für jedes Fach.

noten.tab

DUR:=NOTEl ++:

noten.tab könnte so aussehen:

FACH,NOTEl l
Ma       1 2 1 3 1 2
Phy      4 3 2 2 1

 

Hierbei kürzt l Liste ab. D.h., noten.tab ist eine einfache strukturierte Tabelle (Liste), die zu jedem Fach eine Liste von Noten enthält. Um Platz zu sparen, wählen wir auch hier die methodisch nicht optimale Darstellung. Wie FACH ist auch NOTE ein Spaltenname, so dass noten.tab eigentlich so dargestellt werden müsste:

FACH,NOTEl l

Ma       1 2 1 3 1 2
Phy      4 3 2 2 1

 

Das Ergebnis der Anfrage wieder im „tab-Format“:

FACH, DUR, NOTEl l
Ma 1.66666666667 1 2 1 3 1 2
Phy 2.4 4 3 2 2 1

7. Bilde die Summe der Zahlen von 1 bis 100 (Aufgabe von Gauß Klasse 5).

1 .. 100 ++

Wie die Addition und die Multiplikation besitzt  .. zwei Inputwerte (1 und 100). Als Zwischenergebnis entsteht die Liste

ZAHLl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

,deren Zahlen dann aufsummiert werden, so dass sich 5050 ergibt. 

 

8. Berechne näherungsweise das Maximum der Sinus-Funktion im Intervall [1 2].

1 … 2!0.001 sin max 

… benötigt 3 Inputwerte: 1. den Anfangswert 1, den Endwert 2 und die Schrittweite 0.001. Es entstehen hierbei die Zahlen 1 1.001 1.002 1.003 …1.999 2.

Auf jede der Zahlen wird die Sinusfunktion angewandt, sodass wieder 1001 Zahlen entstehen. Auf diese Liste wird dann die Funktion max (Maximum) angewandt. Obwohl es sich hierbei um ein Näherungsverfahren handelt, kommt der exakte Wert 1 heraus, wenn die Schrittweite weiter verfeinert wird. sin und max haben jeweils einen Inputwert (hier eine Liste) aber der Outputwert von sin ist wieder eine Liste und max erzeugt lediglich eine Zahl, da es sich hier um eine Aggregationsfunktion handelt. Der zweite und der dritte Inputwert einer dreistelligen Operation (oben  …) wird jeweils durch ein „!“ getrennt. Das ist in o++o nötig, da das Komma für die Paarbildung bereits vergeben ist und das Leerzeichen bereits Listenelemente trennt. 

 

9. Berechne näherungsweise das Minimum des Polynoms X³ + 4 X² -3 X+2 im Intervall [0 2] mit zugehörigem X-Wert.

[X! 0 … 2!0.001] 

Y:= X polynom [1 4 -3 2] 

MINI:= Yl min

avec Y = MINI

avec ist französisch und bezeichnet eine Selektion. Ein konkretes Polynom von einer Variablen X  hat stets nur einen Inputwert, der für X eingesetzt wird. polynom in Zeile 2 ist dagegen allgemeiner und hat 2 Inputwerte: 

  1. Den Inputwert für X, der hier alle Zahlen, die in der ersten Zeile generiert wurden, annimmt.
  2. Eine Liste von Zahlen, die den Koeffizienten des konkreten Polynoms entspricht.

Durch die ersten Zeile entsteht eine Liste von Zahlen, die alle den Namen X bekommen haben. Das erkennt man am besten in der xml bzw. ment-Repräsentation:

<X>0.</X>

<X>0.001</X>

<X>0.002</X>

Gesamtergebnis:
MINI,             (X, Y     l)

1.481482037 0.333 1.481482037

10. Berechne eine Nullstelle der Cosinus Funktion im Intervall [1 2] näherungsweise.

[X! 1 … 2!0.0001]

avec X cos < 0

avec X pos = 1  

Hier verbleiben nach der ersten Selektion nur die X-Werte mit Funktionswert kleiner 0. Von diesen wird im zweiten Schritt der erste Wert ausgewählt. Da wir wissen, dass cos nur eine Nullstelle im betrachteten Intervall besitzt, wird diese durch das Ergebnis angenähert. pos kürzt Position ab, so dass das erste Paar der verbliebenen Paare selektiert wird. 

11. Berechne das Gesamtwachstum, wenn 5 Jahreswachstumszahlen gegeben sind. Runde das Ergebnis auf eine Stelle nach dem Komma.

[W! 0 1.5 2.1 1.3 0.4 1.2]

ACCU:= first 100. next ACCU pred *(W:100+1) at W

rnd 1

Die Ergebnistabelle:

[W! 0 1.5 2.1 1.3 0.4 1.2]
ACCU:= first 100. next ACCU pred *(W:100+1) at W
rnd 1
Die Ergebnistabelle:
W, ACCU l
0. 100.
1.5 101.5
2.1 103.6
1.3 105.
0.4 105.4
1.2 106.7

Der erste ACCU-Wert ergibt sich durch den Ausdruck hinter first (100.). Für den zweiten Wert wird für ACCU pred der Wert 100. eingesetzt und der Term nach next bewertet. Es ergibt sich 101.5. Diese Zahl wird wieder in ACCU pred eingesetzt und der next-Term erneut berechnet (rund 103.6),…  bis der letzte W-Wert erreicht ist. pred ist der predecessor (Vorgänger).

 

12. Berechne die Fläche unter der Sinuskurve im Intervall [0, pi] näherungsweise.

0 … pi!0.0001 sin * 0.0001 ++

Hierbei werden nacheinander alle Zahlen zwischen 0 und pi generiert, dann von jeder Zahl der Sinus berechnet und anschließend jede Zahl mit 0.0001 multipliziert. Es entstehen 31415 Rechteckflächen, die abschließend addiert werden.

 

13. Berechne den DurchschnittsBMI pro Alter und den BMI pro Person und Alter für alle Personen über 20.

<TAB!
NAME, LAENGE, (ALTER, GEWICHT l) l
Klaus        1.68     18      61     30     65     56     80
Rolf           1.78      40     72
Kathi         1.70       18      55     40     70
Walleri     1.00      3      16
Viktoria   1.61      13      51
Bert          1.72      18      66     30     70
!TAB>

avec NAME! 20&lt;ALTER
BMI:= GEWICHT : LAENGE : LAENGE
gib ALTER,BMIAVG,(NAME,BMI m) m BMIAVG:= BMI ! ++:
rnd 2 #rundet alle Zahlen der Tabelle auf 2 Stellen nach dem Punkt

Die TAB-Klammern deuten an, dass die eingeschlossenen Daten der TAB-Darstellung entsprechen. 

Die obige Bedingung selektiert Personen-Sätze, d.h. NAME,LAENGE,(ALTER,GEWICHT l) Tupel (strukturierte Tupel bzw. Strupel). Da eine Personen mehrere ALTER-Angaben besitzt, muss quantifiziert werden. NAME! 20 <ALTER selektiert demnach alle Personen, die einen entsprechenden Alterseintrag besitzen. D.h., der Existenzquantor wird nicht geschrieben, gehört aber zu jeder Bedingung.  In diesem kleinen Beispiel könnte man die Selektion natürlich auch per Hand realisieren.

Resultat:

ALTER, BMIAVG, (NAME, BMI  m) m

18     20.98   Bert 22.31

                       Kathi 19.03

                       Klaus 21.61

30     23.35   Bert 23.66

                       Klaus 23.03

40     23.47   Kathi 24.22

                       Rolf  22.72

56     28.34   Klaus 28.34

Das Endergebnis kann beispielsweise durch einfaches Klicken als Säulendiagramm dargestellt werden. Das Beispiel zeigt, dass man eine Hierarchie einfach durch Angabe des gewünschten Schemas umkehren kann. Im Ergebnis ist der Name dem Alter untergeordnet.

 Es wird insbesondere deutlich, dass die Aufgaben ohne Kenntnisse der Differential- und Integral-rechnung gelöst werden können. Mit o++o kann der Mathematikunterricht in vielfältiger Weise unterstützt werden. Das reicht von Klasse 7 oder tiefer bis zur Klassenstufe 12. Es betrifft: Rechnen mit natürlichen Zahlen, Dezimalzahlen, näherungsweise Berechnung von Nullstellen beliebiger Funktionen, Ableitung, Flächen unter Kurven, Extremwerte (kann wahrscheinlich bereits in der Sekundarschule gelehrt werden), Wahrscheinlichkeitsrechnung, … . Mit o++o können Dinge in einfacher Weise berechnet werden, die sonst nur theoretisch abgehandelt werden. Dadurch kann das Verständnis der Konzepte wesentlich verbessert, erweitert und vertieft werden. Weitere Informationen zu o++o finden Sie unter ottops.de (Z.B. „o++o auf 8 Seiten“ ist eine kurze Einführung).

Wir glauben, dass o++o besondere Vorteile für den Mathematik- und Informatikunterricht bietet aber auch in den anderen Fächern sinnvoll genutzt werden kann.

Treffen Sie bessere Entscheidungen

Entscheidungen prägen unseren Alltag, dies beginnt schon bei der Frage, was man anziehen oder essen soll. Andere hingegen mögen auf den ersten Blick unbedeutend erscheinen, können das Leben aber gravierend verändern, wie beispielsweise die Entscheidung, ob die Überquerung einer Straße sicher ist. Je größer die relative Macht eines Entscheidungsträgers ist, desto größer ist natürlich auch die Auswirkung seiner Entscheidungen.


Read this article in English: 
“How to Make Better Decisions”


Auch der Unternehmensalltag ist geprägt durch Entscheidungen. Tatsächlich kann man ein Unternehmen als die Summe großer und kleiner Entscheidungen betrachten: Welche neuen Märkte erschlossen werden sollen, über die nächste große Werbekampagne bis hin zur Wandfarbe für das neue Büro. Im Idealfall wäre jede einzelne Entscheidung innerhalb einer Organisation Teil einer konsistenten, kohärenten Unternehmensstrategie.

Leider ist eine derartige Konsistenz für viele Unternehmen schwer umsetzbar. Den Überblick darüber zu behalten, was in der gestrigen Sitzung beschlossen wurde, geschweige denn vor Wochen, Monaten oder gar Jahren, kann schwierig sein. Die Erkennung, Kategorisierung und Standardisierung der Entscheidungsfindung kann daher eine Möglichkeit sein, diese Herausforderung zu meistern.

Strategische, taktische und operative Entscheidungen

Grundsätzlich gibt es in einem Unternehmen drei Entscheidungsebenen: Strategische Entscheidungen haben einen großen Einfluss auf das gesamte Unternehmen, wie bspw. Fusionen und Übernahmen oder die Aufgabe eines leistungsschwachen Geschäftsbereichs. Taktische Entscheidungen werden zu bestimmten Themen getroffen, z. B. wo und wie eine Marketingkampagne durchgeführt werden soll.

Und schließlich gibt es noch die operativen Entscheidungen, auf die jeder Mitarbeiter täglich in jedem Unternehmen trifft: Beispielsweise wie viele Treuepunkte ein Kunde erhält, bei welchem ​​Lieferanten Materialien und Dienstleistungen gekauft werden oder ob ein Kunde einen Kredit erhält. Millionen dieser Entscheidungen werden jeden Tag getroffen.

Der kumulative Effekt dieser operativen Entscheidungen hat einen enormen Einfluss auf die geschäftliche Leistung eines Unternehmens. Nicht unbedingt in dem Maße wie sich strategische oder taktische Entscheidungen auswirken, aber sie nehmen Einfluss darauf, wie reibungslos und effektiv die Dinge innerhalb des Unternehmens tatsächlich erledigt werden.

Risiken einer schlechten Entscheidungsfindung

Auf operativer Ebene können sich selbst kleine Entscheidungen erheblich auf das gesamte Unternehmen auswirken – vor allem dann, wenn sich diese Entscheidungen wiederholen. In vielen Fällen bedeutet dies:

  • Compliance-Verstöße: Mitarbeiter und Systeme wissen nicht, was das Management erwartet, oder welches das richtige Verfahren ist. Mit der Zeit kann dies dazu führen, dass Richtlinien generell nicht eingehalten werden.
  • Weniger Agilität: Unkontrolliert oder unstrukturiert getroffene Entscheidungen lassen sich nur schwer ändern, um schnell auf neue interne oder externe Umstände reagieren zu können.
  • Reduzierte Genauigkeit: Ohne einen klaren Entscheidungsrahmen können sich unklar und unpräzise ausgerichtete Prozesse und Praktiken weiterverbreiten.
  • Mangelnde Transparenz: Mitarbeiter und Management können möglicherweise die Faktoren nicht erkennen und verstehen, die jedoch für eine effektive Entscheidungsfindung zu berücksichtigen sind.
  • Zunehmende Nichteinhaltung gesetzlicher Vorschriften: Viele Entscheidungen betreffen Themen wie Steuern, Finanzen und Umwelt, sodass falsch getroffene Entscheidungen zu potenziellen Verstößen gegen Gesetze und Vorschriften und damit letztlich zu Straf- und Rechtskosten führen können.

Diese Risiken können sich wiederholen, wenn Entscheidungen nicht prozessbasiert, sondern aus dem Bauch heraus getroffen werden oder wenn Entscheidungsträger erst Anwendungsfälle, Berichte und Prozesse durchsuchen müssen.

Treffen Sie bessere Entscheidungen

Die richtige Entscheidung zur richtigen Zeit zu treffen, ist für den Geschäftserfolg entscheidend; doch nur wenige Unternehmen verwalten ihre Entscheidungen als separate Instanzen. Die meisten Unternehmen nutzen KPIs oder Ähnliches, um die Auswirkungen ihrer Entscheidungen zu messen, statt die eigentlichen Entscheidungsprozesse im Vorfeld zu definieren.

Hier kommt Business Decision Management (BDM) ins Spiel, mit dem Entscheidungen identifiziert, katalogisiert und modelliert werden können – insbesondere die bereits genannten operativen Entscheidungen. BDM kann zudem ihre Auswirkungen auf die Leistung quantifizieren und Metriken und Schlüsselindikatoren für die Entscheidungen erstellen.

Mit einem effektiven BDM-Ansatz und der Decision Model and Notation (DMN) können Unternehmen Modelle zur Entscheidungsfindung erstellen. DMN bietet ein klares, benutzerfreundliches Notationssystem, das Geschäftsentscheidungen einschließlich der zugrunde liegenden Richtlinien und Daten beschreibt.

Bessere Entscheidungen mit Signavio

Die Signavio Business Transformation Suite unterstützt nicht nur den DMN-Standard, sondern auch den Aufbau einer umfassenden Umgebung zur kollaborativen Ermittlung, Verwaltung und Verbesserung Ihrer Entscheidungen.

Mit dem Signavio Process Manager können Sie Entscheidungen über mehrere Geschäftsbereiche hinweg standardisieren, replizieren und wiederverwenden und diese Entscheidungen mit Ihren Geschäftsprozessen verknüpfen. Der Signavio Process Manager ermöglicht es Ihren Mitarbeitern, stets die beste Entscheidung für ihre Arbeit zu treffen – egal, wie komplex die Aufgaben sind.

Profitieren Sie von den vielen Vorteilen wie verbesserte Leistung und geringere Risiken und trennen Sie die Entscheidungsfindung von unklaren Prozessen und unsicheren Technologien. Registrieren Sie sich noch heute für eine kostenlose 30-Tage-Testversion und lernen Sie die Signavio Business Transformation Suite und ihre Vorteile kennen. Mehr zum Thema lesen Sie in unserem kostenlosen Whitepaper.