Cum să scrie un traducător de la o limbă la alta

De fapt, pentru Go, parserul și alte nishtyaks sunt livrate la biblioteca standard:
golang.org/pkg/go

Dar nu este așa de simplu. Nu este suficient să luați o altă sintaxă bazată pe o singură sintaxă. Limbile pot diferi în mod serios modelul suficient de muncă cu memorie. De exemplu, ia în considerare faptul că JS rulează într-un singur fir, iar Go nu este necesar, ceea ce face ca multe elemente Go care nu au rost să se sincronizeze fără sens. De asemenea, de exemplu, să nu dea seama imediat cum cel mai bine să releu JS în astfel de lucruri de nivel scăzut cum ar fi indicii, deoarece JS sine nu da un „simt“ stilouri lor, deoarece le permite să meargă. Și sunt momente când săpa în continuare, va fi mult mai mult, deoarece dulceața Go - runtime-ul său, care nu poate fi atât de simplu să ia și trageți pe JS cocoașă în browser.
Puteți, desigur, să ia și să aplice sintaxa Du-te prost la modelul cu un singur threading JS, ar trebui să fie suficient, dar nu va merge curat, dar este ușor caietul de sarcini diferite pentru modelul de memorie diferite, cu capcanele sale. Și apoi apare întrebarea: este suficient pentru sarcinile pe care JS le rezolvă în browser? În căutarea de aspectul și sintaxa corpului nu fixați pe tractor într-o mașină, ca rezultat al acesteia au atins ceva, dar cel puțin probleme Poimena cu locuri de parcare? Totuși, limbile au fost create pentru a rezolva diferite probleme.

În ceea ce privește Python, lucrurile ar trebui să fie mai bune, deoarece modelele de limbă sunt mai apropiate. Sunt sigur că există deja niște repetoare din Python în JS. Am auzit de multe ori că a fost frumos să sculpt într-un browser Python, dar lumea este plină de entuziaști =).

Revenind la problema de retransmisie, @mututunus v-a întrebat vectorul corect. Studiați problema mai profundă, vedeți progresul altora în acest domeniu. În același Dart și JS - modelele de limbi sunt foarte asemănătoare și nu este un accident. La prima vedere, Dart pare să fie un astfel de JS pe steroizi cu asincronie normală, pachete, tipărire statică opțională și alte dulciuri. Nu este surprinzător că este ușor și destul de bine tradus în JS. Mai mult decât atât, a fost creat la fel ca și de înlocuire JS, care este, pentru a rezolva problemele din browser-ul, acesta este un limitat într-un anumit sens, care, desigur, se traduce într-un anumit limbaj de design și unele dintre conceptele sale.

Articole similare