Logica-Code lässt sich zu SQL kompilieren und läuft auf Google BigQuery mit experimenteller Unterstützung für PostgreSQL und SQLite. [...]
Logica ist laut Google viel prägnanter als SQL und unterstützt die sauberen und wiederverwendbaren Abstraktionsmechanismen, die SQL fehlen. Es unterstützt Module und Importe, kann von einem interaktiven Python-Notebook aus verwendet werden und macht sogar das Testen von Abfragen natürlich und einfach.
«Daten sind das neue Öl», sagt man, und SQL ist bisher die Lingua franca für die Arbeit mit Daten. Als SQL in den 1970er Jahren erfunden wurde, hätten sich seine Autoren vielleicht die Popularität, die SQL ein halbes Jahrhundert später erreichen sollte, nicht vorstellen können. Heute lesen und schreiben Systeme, die von winzigen Smartwatch-Anwendungen bis zu IT-Lösungen für Unternehmen reichen, ihre Daten mit SQL.
Trotz der weiten Verbreitung ist SQL jedoch nicht fehlerfrei. Das Konstruieren von Anweisungen aus langen Ketten englischer Wörter kann sehr langatmig sein – dass sich eine einzige Abfrage über Hunderte von Zeilen erstreckt, ist nicht selten. Der Hauptfehler von SQL liegt jedoch in der sehr begrenzten Unterstützung für Abstraktion.
Bei guter Programmierung geht es darum, kleine, verständliche, wiederverwendbare Teile der Logik zu erstellen, die getestet, mit Namen versehen und in Paketen organisiert werden können, die später dazu verwendet werden können, nützlichere Teile der Logik zu konstruieren. SQL widersetzt sich diesem Arbeitsablauf. Obwohl Sie bestimmte sich wiederholende Berechnungen in Views und Funktionen kapseln können, können die Syntax und die Unterstützung für diese von Implementierung zu Implementierung variieren, die Begriffe «Packages» und «Importe» sind im Allgemeinen nicht vorhanden, und Konstruktionen auf höherer Ebene (zum Beispiel die Übergabe einer Funktion an eine Funktion) sind unmöglich.
Dieser inhärente Widerstand gegen die Zerlegung von Logik in mundgerechte Stücke führt zu ausgeklügelten, langwierigen Abfragen, kopierten Code-Blöcken und schließlich zu unwartbaren, unstrukturierten SQL-Codebasen. Erschwerend kommt hinzu, dass SQL-Code nur selten getestet wird, weil «Testen von SQL-Abfragen» für die meisten Ingenieure bestenfalls esoterisch klingt. Aus diesem Grund wurde eine Reihe von alternativen Abfragesprachen und Bibliotheken entwickelt. Von diesen kommen Systeme, die auf logischer Programmierung basieren, den Einschränkungen von SQL vielleicht am nächsten.
Logische Programmiersprachen lösen die Probleme von SQL, indem sie die Syntax der mathematischen Aussagenlogik und nicht die natürliche englische Sprache verwenden. Die Sprache der formalen Logik wurde von Mathematikern speziell entwickelt, um den Ausdruck komplexer Aussagen zu erleichtern und eignet sich für diesen Zweck viel besser als die natürliche Sprache. Logica erweitert die klassische logische Programmsyntax weiter, vor allem durch Aggregation, daher der Name Logica, der für Logik plus Aggregation steht.
Weitere Informationen zu Logica finden Sie im Google Open Source Blog, ein Tutorial gibts unter colab.research.google.com und auf GitHub finden Sie Logica unter EvgSkv/logica.
Be the first to comment