Dieser Artikel stammt aus GW Adventskalender "Kalender, um etwas Neues herauszufordern" / 67) 5/6 Artikel.
Wenn es darum geht, APIs zu formulieren und SDKs zu erstellen, stellt sich die Frage, welche Sprache unterstützt werden soll. Ich möchte den Aufwand für die Erstellung eines SDK minimieren. Wenn möglich, möchte ich es in einer Sprache erstellen und dann automatisch in eine andere Sprache konvertieren.
Kann automatisch konvertiert werden! !! Obwohl es nicht so weit geht, habe ich versucht, eine Bibliothek zusammenzustellen, die ziemlich bedauerlich erscheint.
JavaScript -> TypeScript
Es gibt eine Geschichte, dass 60% der Javascript-Leute auch TypeScript verwendet haben, aber die alte Bibliothek ist immer noch JavaScript, nicht wahr? Wenn Sie aufgrund der Migrationskosten nicht migrieren können, kann es praktisch sein, wenn Sie die automatische Konvertierung verwenden können.
Diese Bibliothek war vorerst praktisch für die Konvertierung von JavaScript in TypeScript.
https://github.com/gregjacobs/js-to-ts-converter
Ich zerlege das JavaScript AST und erstelle das TypeScript neu. Es ist das Gegenteil der TypeScript-Kompilierung. Es steht geschrieben, dass der Typ aus der Umgebung erraten wird, aber er ist fast nutzlos und alle sind welche. Aber es scheint sich vorerst zu bewegen! Es wird bis zu diesem Punkt konvertiert. (* Es funktioniert nicht. Es gab einige Fehler)
Sobald Sie sich an AST gewöhnt haben, ist es nicht mehr so schwierig. Daher können Sie ganz einfach etwas wie Teilweise anpassen entsprechend Ihrem Projekt ausführen.
JavaScript <-> Python
JavaScript und TypeScript sind dieselbe Sprache, oder? Sie können das hören, aber JavaScript und Python sind völlig verschiedene Sprachen.
Jiphy sah dafür gut aus
https://github.com/timothycrosley/jiphy
Ich kann den Inhalt nicht lesen, aber ich denke, dies ist wahrscheinlich auch die Konstruktion und Konvertierung von AST. Es ist auch ein Höhepunkt, dass es eine Liste von Syntaxen gibt, die konvertiert werden können.
Wenn es sich um ein Programm der in dieser Liste aufgeführten Stufe handelt, funktioniert es problemlos, aber ein wenig traurig ist, dass es keine Klasse unterstützt.
Jiphy does not implement stdlib components, classes, etc. It's SYNTAX ONLY.
Da die Klasse es nicht unterstützt, müssen Sie es in einem wirklich kleinen Programm verwenden oder die Klasse später reparieren.
TypeScript -> Java, Python, C#
Es ist erstaunlich, dass es verschiedene Sprachen jsii unterstützt https://github.com/aws/jsii
Bisher war die Konvertierung nur die Konvertierung des Programminhalts, aber dieser hat einen etwas anderen Mechanismus. TypeScript (oder node.js) wird immer im Hintergrund ausgeführt und seine Schnittstelle wird in Java, Python, C # konvertiert.
Ich dachte, ich würde eine Python-Funktion aufrufen, aber sie wurde an die Funktion node.js weitergeleitet, die hinter den Kulissen ausgeführt wird! Es ist wie es ist.
Da nur eine Sprache im Hintergrund ausgeführt wird, scheint die Fehlerrate gering zu sein.
Es ist ein ziemlich epochaler Mechanismus, und das muss ich leider sagen Es hat auch den Nachteil, dass es viel Speicher verbraucht und die Typen einschränkt, die für Schnittstellenargumente verwendet werden können (da es dynamisch in Sprachen übersetzt wird).
Das größte Problem ist auch, dass es schwierig ist, sich später damit zu befassen, wenn Sie nicht ausschließlich dafür ein Projekt erstellen. Sie müssen ein Programm gemäß den von jsii festgelegten Sprachspezifikationen erstellen. Zum Beispiel
――Es ist erforderlich, ein Programm zu schreiben, das alle Einschränkungen jeder Sprache übernimmt (Auch wenn Sie nur Python möchten, unterliegen Sie Java- und C # -Einschränkungen.)
etc. Es ist jedoch eine sehr gute Bibliothek, wenn sie von Anfang an funktioniert.
Ich habe 3 Sprachkonvertierungsbibliotheken ausprobiert. Alle sind bedauerlich! Ich bin an den Ort gekommen und hoffe, dass er in ein oder zwei Jahren fertig sein wird.
Recommended Posts