Die Geschichte der automatischen Sprachkonvertierung von TypeScript / JavaScript / Python

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.

スクリーンショット 2020-05-06 20.00.44.png

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.

Zusammenfassung

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

Die Geschichte der automatischen Sprachkonvertierung von TypeScript / JavaScript / Python
Die Geschichte von Python und die Geschichte von NaN
Die Geschichte der Manipulation globaler Python-Variablen
Die Geschichte der Verarbeitung A von Blackjack (Python)
Die Geschichte, dass die Lernkosten von Python niedrig sind
Bildverarbeitung? Die Geschichte, Python für zu starten
Die Geschichte des Lesens von HSPICE-Daten in Python
der Zen von Python
Die Geschichte von sys.path.append ()
Die Geschichte von FileNotFound im Python open () -Modus = 'w'
Die Geschichte des Baus von Zabbix 4.4
Auf dem Weg zum Ruhestand von Python2
Automatisches Update des Python-Moduls
Die Kraft der Pandas: Python
Die Geschichte der Implementierung des Themas Facebook Messenger Bot mit Python
Sakura Die Geschichte, wie die Python-Flasche im Internet funktioniert hat
Die Geschichte der Einführung von Jedi (automatisches Vervollständigungspaket von Python) in Emacs
Die Geschichte eines Rubinisten, der mit Python :: Dict-Daten mit Pycall kämpft
[Python] Tensorflow 2.0 unterstützte Python 3.8 nicht, daher die Geschichte des Downgrades von Python
Die Geschichte, dass die Version von Python 3.7.7 nicht an Heroku angepasst wurde
Erster Python 3 ~ Der Beginn der Wiederholung ~
Der 14. März ist der Tag des Umfangsverhältnisses. Die Geschichte der Berechnung des Umfangsverhältnisses mit Python
Die Geschichte der Teilnahme an AtCoder
Existenz aus Sicht von Python
[Python] LINE-Benachrichtigung über die neuesten Informationen mithilfe der automatischen Suche von Twitter
pyenv-change die Python-Version von virtualenv
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
Die Geschichte, wie man Python ausführt und die Ergebnisse anzeigt, ohne vim zu schließen
Die Geschichte des "Lochs" in der Akte
[Python] Die potenzielle Feldplanung von Python Robotics verstehen
10 Funktionen von "Sprache mit Batterie" Python
Überprüfung der Grundlagen von Python (FizzBuzz)
Die Geschichte des erneuten Bereitstellens des Anwendungsservers
Informationen zur Grundlagenliste der Python-Grundlagen
Geschichte der Potenznäherung von Python
Die Geschichte des Exportierens eines Programms
Die Geschichte, ein Modul zu erstellen, das E-Mails mit Python überspringt
Lernen Sie die Grundlagen von Python ① Grundlegende Anfänger
Die Geschichte, wie man mit Python einen 100-Yen-Frühstücks-Bot für die Universität macht
Konvertierung der Zeichenfolge <-> Datum (Datum, Datum / Uhrzeit) in Python
Automatische Erfassung von Aktienkursen mit Python
Ändern Sie die Länge der Python-CSV-Zeichenfolgen
Die Geschichte des Versuchs, den Client wieder zu verbinden
Überprüfen Sie das Verhalten des Zerstörers in Python
Die Geschichte eines Fehlers in PyOCR
[Python3] Verstehe die Grundlagen von Beautiful Soup
4-Sprachen-Vergleich des Abschlusses (Python, JavaScript, Java, C ++)
Übergeben Sie den Pfad des importierten Python-Moduls
Die Geschichte, MeCab in Ubuntu 16.04 zu setzen
Vergleich japanischer Konvertierungsmodule in Python3
Notizen vom Anfang von Python 1 lernen
Überprüfen Sie die Existenz der Datei mit Python