tipo traduzir pascal para visualg e vise e versa?
Unconfigured Ad Widget
Collapse
Anúncio
Collapse
No announcement yet.
Como criar um tradutor de uma linguagem para outra?
Collapse
X
-
Trabalho
Dá bastante trabalho...
tipo assim, seria como você tentar traduzir a expressão: "casa da mãe Joana" para a língua japonesa...
se vc traduzisse no literal, eles pensariam que se tratava da casa de alguém, e não de um lugar onde se pode fazer bagunça... teríamos que encontrar uma expressão equivalente em japonês.
da mesma forma as linguagens tem métodos e funções diferentes... tem que conhecer muito bem das duas linguagens para poder portar o código.
existirá coisas que são aceitas em uma linguagem mas não são na outra... por isso terá que saber como contornar isso...
dá bastante trabalho fazer isso, a não ser que as linguagens sejam muito parecidas...
- Top
-
Eu imagino algo que ia precisar de uma comunicação bem direta com o usuário, podendo ele dizer se aquela tradução estava correta, não, e ainda sugerir uma tradução melhor.
O grande problema é o seguinte... Alguns comando em determinadas linguagens não existem em outras. E se existem, ainda tem a necessidade de alguma livraria às vezes.
Por exemplo: C# escrever "Hello World"
Console.WriteLine("Hello World");
cout << "Hello World";
#include iostream
using namespace std;
- Top
Comment
-
Toda linguagem -e mais especificamente uma linguagem de programação- tem 2 características básicas: a sintaxe, que define a forma, e a semântica, que define o conteúdo.
"um mais um" tem o mesmo significado de "1 + 1", alterando-se apenas a simbologia.
O seu processador só entende bits e bytes, é o compilador que vai traduzir a sua representação de "comandos" (denominada linguagem de programação) nisso.
Note, então, que existem niveis de sentido e limitações de representação.Seu compilador nada sabe sobre objetos, páginas de memória, namespaces, threads etc.
Exemplificando ainda mais, tome os 2 códigos:
Código:#include <stdio.h> int main() { puts("Eu exibo algo na tela!"); return 0; }
Código:#include <iostream> using namespace std; int main() { cout << "Eu exibo algo na tela!"; return 0; }
Mas a nivel das linguagens:
C:
-Imperativo e procedural
-Chama uma função
-Trabalha com file-descriptors e tipos primitivos
C++:
-Imperativo e orientado a objetos
-Define o uso de um namespace globalmente.
-Chama o método de um objeto valendo-se de uma caracteristica que sobreescreve o comportamento de operadores.
-Trabalha com streams e objetos
Percebe?Nessa conversão, seu objetivo é conciliar a representação -e sua legibilidade- e "os niveis de significado".
Não é nada simples.Você pode começar pelo Dragon Book (referência nessa área de compiler-writing) e olhando projetos do tipo, como o HipHop, conversor de PHP para C++ do facebook.
- Top
Comment
X
Comment