Jak mogę powiedzieć po angielsku, że język programowania można skompilować na inne języki programowania?
Przykładem może być Haxe . Na stronie internetowej język jest opisany jako „Multiplatform”:
Multiplatform: Haxe można kompilować na wszystkie popularne platformy programistyczne za pomocą szybkiego kompilatora - JavaScript, Flash, NekoVM, PHP, C ++, C # i Java (wkrótce)
ale wieloplatformowe mogą być źle rozumiane jako platformy sprzętowe lub programowe (Win, Mac, Linux).
Jakie jest zatem najbardziej odpowiednie słowo opisujące tę umiejętność?
Odpowiedzi:
Zwykłym terminem jest „transkompilacja” - nie jest to termin powszechny, ale poprawny technicznie. Nie dotyczy to także modnych nowych języków skryptowych (CoffeeScript -> JavaScript); pierwsze kompilatory C ++ były w rzeczywistości transkompilatorami do C.
źródło
Przepraszam panowie, ale słowo to po prostu „skompilowane” . Oznacza to przekształcenie jednego rodzaju kodu w inny typ kodu. Nie ma żadnej różnicy, czy ten kod to angielski, C ++, kod maszynowy x86, kod maszynowy ARM, Java, kod bajtowy lub z powrotem do angielskiego. Zasadniczo używamy go do oznaczania przejścia z języka programowania do kodu maszynowego, ale jest to aspekt, który słowo zyskało z czasem. I hej, jeśli wystarczająca liczba osób zacznie używać słowa niepoprawnie, to rzeczywiście zyska to nowe znaczenie. Ale jeśli chcesz zamienić słowo Haxe w C ++, to słowo to „kompiluje” .
(Poza tym ignoruję Merriam-Webster, ponieważ są głupi, ponieważ się ze mną nie zgadzają ... hmmmm)
źródło
Być może jest to pytanie do https://english.stackexchange.com/ jeszcze powiedziałbym, że proces kompilacji obejmuje kompilację do innego języka wysokiego poziomu i nie ogranicza się tylko do kompilatorów kompilujących w kierunku natywnego kodu maszynowego.
Słowo „kompilacja” nie jest specyficzne dla kompilatorów komputerowych i jest dość ogólne. „Kompilowanie tabeli” lub „kompilacja listy nazw” przychodzi mi na myśl, dlatego jest wystarczająco szeroki do wielu celów (procesory tekstu, takie jak kompilacja lateksowa itp.). Aby być bardziej szczegółowym na temat celu kompilacji, użyłbym kompilatora to-source
Teraz dla konkretnego przykładu uważam, że platforma jest odpowiednim słowem do użycia. Ponieważ ludzkie języki są z natury ambiwalentne, musisz użyć redundancji (przykłady, parafrazowanie innymi słowami, wyjaśnianie), aby uzyskać punkt wyjścia w razie wątpliwości.
Przeczytałbym również instrukcję „Haxe” w sposób, który obejmuje standardowe biblioteki i podobne rzeczy. Tj. W takim przypadku platforma byłaby nadzbiorem „języka” i można by ją oddzielić, nazywając ją „platformą programistyczną” itp.
źródło
Możesz powiedzieć, że kompilator ma języki X, Y i Z jako cele tłumaczenia lub zaprojektuj język z myślą o tych celach.
źródło
Powiedziałbym, że kompilator z definicji tłumaczy na inny język programowania (przynajmniej taka jest definicja, którą znam - program, który przekształca jeden język na inny). Na przykład większość kompilatorów C produkuje zestaw jako dane wyjściowe. Kompilatory asemblacyjne biorą to wyjście i przekształcają go w kod binarny, który jest także językiem (oczywiście - prawdopodobnie nikt nie pisze w nim w ciągu ostatnich 40 lat lub dłużej, ale technicznie jest to język) - który można pobrać i ponownie skompilować, by powiedzieć mikro ops przez procesory (lub istnieją pewne operacje wykonywane przez linker na plikach obiektowych). Podobnie
javap
kompiluje się w kod bajtowy. Zwykle na końcu takiego łańcucha znajduje się interpreter, który wykonuje końcowy kod (czy to CPU, GPU, czy wykonywany program). Nie ma czegoś takiego jak kod maszynowy, ponieważ współczesna x86 rekompiluje programy do operacji wewnętrznych (mikrooperacje) i jestem w pełni zdolny do traktowania kodu maszynowego ARM jako języka interpretowanego na x86 lub odwrotnie (w niektórych przypadkach nawet rekompilacja z jednej formy do drugiej).Haxe jest kompilatorem typu źródło-źródło, ponieważ nie przekształca języka wyższego poziomu w język niższego poziomu, jak w poprzednich przykładach. Wydaje się, że nie odnosi się to bezpośrednio do problemu wieloznaczności na wielu platformach, ale niestety nie sądzę, aby istniał praktyczny sposób rozróżnienia między tymi dwiema rzeczami - interfejsy API są rodzajem języków, które można ogólnie interpretować, rekompilować itp.
źródło
Po pierwsze: nie wiem, czy jest już odpowiednie słowo dla tej funkcji.
Ale może to nazwać wielojęzycznym? Czy językagnostyka? Ponieważ chodzi bardziej o język programowania, to wzmianka o „języku” w nazwie może uczynić go bardziej oczywistym niż wieloplatformowy.
Oczywiście język jest również dwuznaczny, ponieważ można zrozumieć, że kod źródłowy może być napisany w dowolnym języku świata rzeczywistego (na przykład, ponieważ zmienne można pisać w Unicode).
Z drugiej strony każdy doświadczony programista prawdopodobnie rozpozna taki konstrukt jako różny od lokalizacji lub internacjonalizacji, więc może łatwiej go „zdobyć”.
Tylko moje 2 centy.
źródło