runnable pseudokod?

głosy
3

Ja próbując ustalić stan techniki na kolejny pomysł:

1) użytkownik wpisze jakiś kod w języku zwanym (insert_name_here);

2) użytkownik wybiera język docelowy z listy znanych kandydatów wyjściowych (JavaScript, Ruby, Perl, Python);

3) procesor przekłada insert_name_here do kodu runnable w języku docelowym;

4), procesor uruchamia kod za pomocą odpowiedniego połączenia systemu opartego na języku

Powodem jest to działa, ponieważ nie ma ustalonego 1 do 1 mapowanie między wszystkimi konstrukcjami językowymi z insert_name_here dla wszystkich obsługiwanych języków docelowych.

( Uwaga: .. To oczywiście nie wytwarza „Elegant” kod, który jest dobrze dopasowany do języka docelowego on po prostu robi tłumaczenie podstawową, która jest runnable Celem jest umożliwienie programistom, aby uzyskać szybki i brzydka implementację algorytmów w różnych językach dla tych przypadkach, gdy nie masz ochoty na ponowne wynalezienie koła, ale są wymagane niezależnie od przyczyny do pracy z danego języka w konkretnym projekcie.)

Czy to już istnieje?

Utwórz 03/12/2008 o 22:52
źródło użytkownik
W innych językach...                            


5 odpowiedzi

głosy
4

.NET CLR jest tak zaprojektowany, że C ++. Net, C # .NET, a VB.Net wszystko skompilować do tego samego języka maszynowego, a można „dekompilować” że CLI z powrotem do jednego z tych języków.

Więc tak, chciałbym powiedzieć, że już istnieje, choć nie dokładnie tak, jak opisać.

Odpowiedział 03/12/2008 o 22:57
źródło użytkownik

głosy
2

Są to przetworniki dostępne w różnych językach. Problem masz zamiar mieć ma do czynienia z bibliotek. Chociaż mapowanie pomiędzy wypowiedzi językowych może być łatwe, znalezienie mapowania między funkcji bibliotecznych będzie bardzo trudne.

Nie jestem pewien, jak użyteczny że typ generatora kodu będzie. Dlaczego chcesz napisać coś w jednym języku, a następnie natychmiast przekształcić go do czegoś innego? widzę uzasadnienie dla 4 językach Gen które przekształcają rysunki lub modele w kodzie, ale ja naprawdę nie widzę sensu swojego wysiłku.

Odpowiedział 03/12/2008 o 23:05
źródło użytkownik

głosy
2

To wydaje się trochę dziwne. Jeśli używasz określenia „stanu techniki” w jego najbardziej rozpowszechnioną formą, jesteś omawianie potencjalnie zdolność patentową pomysł. Jeśli tak jest w przypadku, trzeba:

1 / Opublikowane pomysł, rozpoczynając zegar działa na zgłoszenia patentowego - Zakładam, że, być może błędnie, że jesteś z siedzibą w USA innych jurysdykcjach może mieć inne zasady.

2 / Told całej planety swój pomysł, co oznacza, że ​​to dość dużo bezużyteczny, aby spróbować go patentu, chyba że działają bardzo szybko.

Jeśli nie myślisz o opatentowanie tego i po prostu używając terminu „stanu techniki” w sensie świeckim, przepraszam. Pracuję dla firmy, która zajmuje patentów bardzo poważnie i to wiercone w nas, w najdrobniejszych szczegółach, co mamy robić z informacji przed złożeniem.

Mimo, że patentom pomysły muszą być nowe, użyteczne i nieoczywiste. Myślę, że Twój pomysł nie przejdzie na trzecią z nich, ponieważ jesteś opisujący tłumacza języka, który byłby w stanie techniki wielu konwerterów Pascal-to-C i Fortran-to-c tam.

Jedyny promyk nadziei byłaby zdolność swojego pomysłu, aby wygenerować jeden z wielu języków wyjściowych (które P2C i f2c nie robią), ale myślę, że nawet byłyby objęte takimi poprzecznymi kompilatorów (GCC), takich jak, które zamieniają źródło w jednym z wielu różnych językach obiektowych.

IBM oferuje produkt o nazwie Generator optyczny Wiek, w którym kod w jednym (Proprietary) języka i to przekształcony COBOL / C / Java / innych, aby uruchomić na różnych platformach docelowych z komputerów do wielkiego honkin' mainframe System z, więc jest to Twoja pierwsza problem (myślenie o opatentowanie pomysłu, że IBM, największa patenter na świecie, korzysta już).

Odpowiedział 04/12/2008 o 00:07
źródło użytkownik

głosy
2

Mnóstwo z nich. P2C, f2c, a oryginalna implementacja s C ++ i Objective C uderzyć mnie natychmiast. Poza tym, to trochę trudno odróżnić to, co opisujesz z dowolnego kompilatora, specjalnie dla nas starych facetów, których kompilatory wygenerowany kod ASM dla pośredniego represetation tak.

Odpowiedział 04/12/2008 o 00:54
źródło użytkownik

głosy
3

Tak, to program, który przekształcić program z jednej reprezentacji do drugiego nie istnieje. To się nazywa „kompilator”.

A co do twojego pytania, czy zawsze jest to możliwe: tak długo, jak język docelowy jest co najmniej tak mocny jak języku źródłowym, to jest to możliwe. Tak więc, jeśli język docelowy jest Turing-complete, to jest to zawsze możliwe, ponieważ nie może być językiem, który jest bardziej wydajny niż Turinga pełnej języku.

Jednak nie musi być głupi mapowanie 1: 1.

Na przykład: kompilator Microsoft Volta, który kompiluje kod bajtowy CIL do kodu źródłowego JavaScript ma problem: NET ma tematów, JavaScript nie. Ale można zaimplementować wątki z kontynuacje. Dobrze, JavaScript nie ma kontynuacje albo, ale można wdrożyć kontynuacje z wyjątkami. Tak, Volta przekształca CIL do CPS a następnie wdraża CPS z wyjątkami. (Nowsze wersje mają JavaScript naczepy współprogram w postaci generatorów; te mogą być również używane, ale Volta jest przeznaczone do pracy w szerokim zakresie, w tym wersje JavaScript oczywiście JScript w programie Internet Explorer.)

Odpowiedział 04/12/2008 o 09:22
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more