Grundsätzlich funktioniert die Parametrisierung mit beliebigen Programmiersprachen. In Dynexite wird zurzeit Python 3
verwendet, aber auch der Einsatz anderer Generatoren ist denkbar.
Im letzten Schritt der Generierung werden die lokalen Variablen in ein maschinenlesbares Format umgewandelt. Hierfür nutzt Dynexite eine einfache JSON
-Struktur. Diese unterstützt typische "primitive" Strukturen wie Zahlen, Texte, Arrays und Objekte.
{
"x": ["a", "b", "c"]
"y": "122.223",
"z": "Tannenbaum"
"w": {
"name": "Karl",
"alter: "155"
}
}
Problem: Da die Genauigkeit von Zahlen nicht hoch genug ist, könnte es zu Rundungsproblemen kommen.
Aus diesem Grund werden Zahlen nicht als Zahl
(144.984375
), sondern als Text ("144.98437559871"
) gespeichert. Dies stellt sicher, dass die Genauigkeit nicht beeinträchtigt wird. Innerhalb von Dynexite werden diese Texte dann automatisch ohne Verluste zurück in Zahlen umgewandelt.
Dynexite kann keine automatische Wiederherstellung vornehmen. Dies liegt daran, dass nicht sichergestellt werden kann, dass die Datentypen zu 100% zwischen der Version des Generators und der Version des Korrekturdienstes gleich geblieben sind. Für primitive Typen wie Zahlen wäre diese Umwandlung zwar grundsätzlich in den meisten Fällen möglich. Sie würde aber dazu führen, dass sich das Verhalten der Applikation in Grenzfällen unterscheiden könnte.
/// Beispiel: Rückumwandlung von Text in Zahlen in Python 3
/// Daten aus der Parametrisierung
{
x = "25.667"
}
// Korrekturdienst
x = float(x)
Problem: Rückumwandlung komplexer Datentypen
Werden komplexe Datentypen wie z.B. Numpy-Matrizen umgewandelt, müssen diese ebenfalls wiederhergestellt werden. Ob dies möglich ist, hängt von der verwendeten Bibliothek ab.
/// Code
A = sympy.Matrix(((25, 15, -5), (15, 18, 0), (-5, 0, 11)))
/// Ergebnis
A = [
[
"25",
"15",
"-5"
],
[
"15",
"18",
"0"
],
[
"-5",
"0",
"11"
]
]
/// Beispiel: Wiederherstellen der Matrix A im Korrekturdienst
A = sympy.sympify(A)
/// Beispiel: Bewusstes Speichern von Matrizen
/// Speichern in der Parametrisierung
A = sympy.Matrix(((25, 15, -5), (15, 18, 0), (-5, 0, 11)))
_A = str(A)
/// Ergebnis
_A = "Matrix([[25, 15, -5], [15, 18, 0], [-5, 0, 11]])"
---
/// Wiederherstellung im Korrekturdienst
A = sympy.sympify(_A)
Informationen zur Entwicklung eigener Korrekturdiensten finden Sie hier.