Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Como criar um tradutor de uma linguagem para outra?

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Duvida Como criar um tradutor de uma linguagem para outra?

    tipo traduzir pascal para visualg e vise e versa?

  • Font Size
    #2
    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...

    Comment


    • Font Size
      #3
      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");
      em C++:

      cout << "Hello World";
      Porém, no C++ necessita do seguinte:

      #include iostream

      using namespace std;
      sigpic

      Decidi deixar de ser usuário e virar desenvolvedor

      Comment


      • Font Size
        #4
        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;
        }
        Os dois programas exercem a mesma função: exibem determinado texto na tela.
        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.

        Comment

        X
        Working...
        X