Neue Features für Programmiersprachen

md-consulting-cosing-assistant-binary-boolean-file-handle-features

SQLWindows ein möglicher Kandidat?

In einem am 31. Januar 2017 veröffentlichten Aufsatz, legt der Softwareentwickler, Autor und Unternehmer Dan Appleman einen Vorschlag für eine neue Programmiersprache vor, die – wie er nachdrücklich betont – durch die Präsidentschaft von Donald Trump inspiriert wurde.

In einem als Entwurf in der Version 1.0 bezeichneten Papier legt der Autor eine Begründung vor, warum eine neue Programmiersprache notwendig werde:

„Programmiersprachen basieren auf Logik und Voraussagbarkeit. Während diese Grundlagen geradezu ideal sind, um Probleme in der wirklichen Welt zu lösen, sind sie dementsprechend ungeeignet für eine Welt, in der alternative Wirklichkeiten  die Politik antreiben. Eine solche neue Welt verlangt geradezu nach neuen Features in Programmiersprachen.“

In seinem Papier schlägt Appleman folgende Änderungen und Erweiterungen für Programmiersprachen vor, die selbstverständlich auch für SQLWindows-Programmierer von Interesse sein könnten. Obwohl es derzeit noch keine Gespräche mit der Firma OpenText über eine mögliche Implementierung der von Appleman vorgeschlagenen Features gibt, meinen wir, dass es wichtig ist, diese innovativen Features zur Diskussion zu stellen.

(Alt-Boolean)
Der neue Datentyp Alt-Boolean ist ein erstes, sehr mächtiges Feature für eine Programmiersprache. Durch die Definition einer derartigen Variablen, könnten beispielsweise die Logik, die Algorithmen und auch die Daten, die verarbeitet werden, ins Gegenteil verkehrt werden.
Als Beispiel führt Appleman die Erderwärmung an. In SQLWindows sähe die Implementation in etwa folgendermaßen aus:
Function: Beispiel1
Description:

Local Variables
Alt-Boolean: bErgebnis
Actions
Set bErgebnis = gibtEsDieGlobaleErderwärmung()

Source Code 1: Beispiel einer Verwendung einer Alt-Boolean Variable

Nach der Ansicht des Autors würde sich die Alt-Boolean-Variable so auswirken, dass die Funktion gibtEsDieGlobaleErderwärmung durchlaufen würde, indem die Logik, der Algorithmus, aber auch die zugrundeliegenden Daten ins komplette Gegenteil verkehrt würden und der Variablen bErgebnis den Wert der entsprechenden Alt-Boolean zugewiesen würde.

Es handelt sich also um ein sehr mächtiges Konzept, dass in der Lage ist, jegliche Logik ins Gegenteil zu verkehren.

Enorm
SQLWindows verfügt derzeit leider nur über den Datentyp Number. In der Vergangenheit reichte das im Bereich von Geschäftsanwendungen aus, den Programmierer von Feinheiten wie Ganzzahl, Dezimalzahl usw. frei zu halten. Der Datentyp Enorm, wie ihn Appleman vorschlägt, hätte zunächst den Vorteil, dass kleine Zahlen überhaupt keine Berücksichtigung finden und von dem entsprechenden Compiler nicht berücksichtigt würden.

Ein zweiter Vorteil des Datentyps Enorm, so Appleman, läge darin, dass Enorm-Werte exakt die gewünschten Werte einer Berechnung ergeben. Als Beispiel erwähnt der Autor eine Menge von Zuschauern einer Amtseinführung eines amerikanischen Präsidenten O und T.

Klassischerweise würde eine Berechnung in etwa folgendermaßen aussehen:
Function: TeilnehmerBeiDerAmtseinführung
Description:
Returns
Parameters:
Local Variables:
Number: T
Actions:
Set T = O/3
! T = 500.000

Source Code 2: klassische Implementierung

Die klassische Implementierung hat, so Appleman, den Nachteil, dass hier der veraltete Determinismus von Programmiersprachen zur Anwendung kommt, sodass sich das Ergebnis nach den ebenfalls überalterten mathematischen Regeln bildet.
Die Implementierung mithilfe des neuen Datentyps Enorm weist demgegenüber Vorteile der neuartigen „alternativen Faktenwelt“ auf:
Function: TeilnehmerBeiDerAmtseinführung
Description:
Returns
Parameters:
Local Variables:
Enorm: T
Actions:
Set T = O/3
! T = 1.5 Mio, unabhängig vom Wert von O und der Division

Source Code 3: Implementierung mit dem neuen Datentyp Enorm

In dieser Implementierung ist das Ergebnis immer 1.500.000. Es ist derzeit aber noch unklar, inwieweit der Compiler sich auf die Division und/oder den Variablenwert von O auswirken muss.
Hinweis: In einer bestehenden Klassenstruktur lässt sich die Funktion TeilnehmerBeiDerAmtseinführung auch late-bound aufrufen, sodass mögliche zukünftige Modifikationen beim Datentyp Enorm auch in Zukunft leicht angepasst werden können.

@fake
Die meisten Programmiersprachen wurden so entworfen, dass sie Daten korrekt (aus einer Datenbank) lesen und verarbeiten können. In einer neuen, alternativen Programmiersprache treten hierdurch zunächst unüberwindbare Probleme auf, wenn korrekte Daten und deren korrekte Verarbeitung zu unerwünschten Ergebnissen führen. Mit klassischen Programmiersprachen kann es sehr schwer sein, die Daten so zu modifizieren, dass die gewünschten Ergebnisse herauskommen.

Um diese Probleme endgültig zu beseitigen, schlägt Appleman den @fake-Operator vor. Es ist derzeit nicht deutlich, ob sich das vorgestellte Konzept auf die Programmiersprache SAL oder eher auf die Datenbank beziehen soll.

Bei der Erweiterung des SQL-Standards um die Funktion @fake könnte beispielsweise die folgende Query ergeben, dass Kandidat T mehr Stimmen („popular vote“) erhalten hat als Kandidat(in) C

SELECT CANDIDATE, @FAKE(COUNT(*)) FROM VOTES WHERE ELECTION_YEAR = 2016

Source Code 4: Erweiterung des SQL-Standards

Wichtig ist, dass sich das @fake-Attribut in Zukunft auf Ergebnismengen und Datentypen beziehen soll. Das ist insofern praktisch, da sich herausgestellt hat, dass es in der Realität auch Menschen, Firmen und Länder geben soll, die mit diesem Attribut bereits erfolgreich arbeiten.

Bei der Nationalisierung der möglichen SQL-Erweiterung notiert Appleman, dass derzeit noch geprüft werden müsse, wie russische Queries bzw. Anfragen über russische IP-Adressen in einem solchen Fall technisch zu behandeln wären. Mit einer Implementierung innerhalb einer überschaubaren Zeit kann wegen dieser Problematik daher wohl eher nicht gerechnet werden.

Multithreading
Ein vollkommen neues Konzept für das Multithreading bietet die neue, von Appleman zur Diskussion gestellte Computersprache.

In einer vereinfachten Darstellung sieht es so aus, dass alle Threads von einem sogenannten „executive thread“ kontrolliert werden. Die Implementierung dieses Multithreading-Modells sieht dann so aus, dass die Ergebnisse aller Threads durch den „executive thread“ an die gewünschten Ergebnisse angepasst werden.

Auch in diesem Bereich müssen zunächst noch einige Klärungen vorgenommen werden. So hat sich gezeigt, dass sich die Prioritäten des „executive threads“ während der Ausführung ändern können, sodass der abhängige Thread sich nach wechselnden Vorgaben zu richten hat. In einem derartigen Fall, so ist es vorzusehen, muss der abhängige Thread lautlos abgeschossen und parallel ein entsprechender, den neuen Vorgaben folgender Tweet abgesetzt werden.

Des Weiteren kann es vorkommen, dass das Betriebssystem ein derartiges Multithreading nicht vorsieht und externe Anwendungen (Juristen) die Ausführung des „executive threads“ behindern. Es wird derzeit daran gearbeitet, derartige Unterbrechungen für die Zukunft zu verhindern.

Farbgebung der Programmiersyntax
SQLWindows lässt derzeit nicht zu, die farbliche Darstellung der Programmiersyntax in der Farbe Gold vorzunehmen. Dieser Change Request sollte allerdings einfach zu implementieren sein.

Fraglich ist zudem, ob die Include-Funktionalität noch aufrecht erhalten bleibt, denn dann wäre es auch weiterhin möglich, fremden Code in die Anwendungen zu integrieren.

Unit Tests und Fehlerbehandlung
Unterbleibt in Zukunft, da keine Notwendigkeit mehr besteht, diese aufwendigen Arbeiten vorzunehmen.

Fazit
Es ist derzeit sehr unwahrscheinlich, dass OpenText als kanadische Firma die von dem Amerikaner Appleman beschriebenen Funktionen implementieren wird. Ob die bisherigen und die für die Zukunft zu befürchtenden Wahlergebnisse der „Alternative für Deutschland“ ausreichen werden, die beschriebenen Funktionen in einer zukünftigen Version von SQLWindows zu implementieren, ist eher zweifelhaft. Allerdings könnte die Berücksichtigung anderer Ländern wie Ungarn, Türkei, Frankreich und die Niederlande dazu beitragen, dass sich auch bei OpenText das Produktmarketing mit den entsprechenden Tendenzen befassen muss.