Saltar para o conteúdo

Discussão:G-Portugol

O conteúdo da página não é suportado noutras línguas.
Adicionar tópico
Origem: Wikipédia, a enciclopédia livre.


"Pode traduzir seu código para Assembly, que depois é compilado usando o assembler NASM, como back-end."


Assemblers não compilam, montam:


"Ao contrário do que acontece nas linguagens de alto nível, existe (até certo ponto) uma correspondência de 1 para 1 entre a linguagem de montagem simples e a linguagem de máquina. Por isso a tradução do código de montagem em código de máquina não é chamada compilação, mas montagem." [1]


"Ao contrário do que se pensa, G-Portugol não é uma linguagem compilada, pois antes de ser compilada, ela é traduzida para outra linguagem de baixo nível, o Assembly."


Ignorando a contradição acima ("...não é uma linguagem compilada, pois antes de ser compilada, ela é..."), observe:


"The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a lower level language (e.g., assembly language or machine language)."[2]


"GCC's external interface is generally standard for a Unix compiler. Users invoke a driver program named gcc, which interprets command arguments, decides which language compilers to use for each input file, runs the assembler on their output, and then possibly runs the linker to produce a complete executable binary."[3]


"The GNU Assembler, commonly known as Gas, is the assembler used by the GNU Project. It is the default back-end of gcc, and is used to compile the GNU operating system and Linux, amongst others. It is a part of the GNU Binutils package." [4]


Sendo assim:

[0] - Dizer que "ela é traduzida para outra linguagem de baixo nível" é a mesma coisa que dizer que ela é compilada. Mesmo que estas atividades sejam, a rigor, traduções, prefere-se utilizar o termo "compilação" para casos como este.

[1] - Como espero estar claro, da mesma forma que o GCC utiliza o Gas como back-end, o G-Portugol utiliza o Nasm. Back-ends não tem papel algum em caracterizar se um programa é um compilador ou não. Papel mais importante teria a presença de um processo que envolve expansões de instruções abstratas para instruções próximas da máquina (transformações 1 para N).

[2] - E, aproveitando o embalo, uma vez que se afirma algo como "a linguagem G-Portugol é uma linguagem compilada", é verdadeiro dizer que "ela é interpretada", e é verdadeiro dizer que "ela é traduzida", já que o programa GPT atua nestas 3 atividades (e, por padrão, compila).


Uma vez que eu corrigi o artigo anteriormente, espero que você tenha tido uma boa razão (leia-se, boas referências) para ter, de certa forma, reafirmado informações de versões anteriores.


- TSilva 04h11min de 31 de Agosto de 2007 (UTC)

  1. «http://pt.wikipedia.org/wiki/Assembly»  Ligação externa em |title= (ajuda)
  2. «http://en.wikipedia.org/wiki/Compiler»  Ligação externa em |title= (ajuda)
  3. «http://en.wikipedia.org/wiki/GNU_Compiler_Collection»  Ligação externa em |title= (ajuda)
  4. «http://en.wikipedia.org/wiki/GNU_Assembler»  Ligação externa em |title= (ajuda)

Reconheço meus erros e, já os corrigi.

  • Eu tinha colocado "compilado" (na parte, agora, onde diz que é montado), pois me confundi, com a mudança de TSilva, e acabei colocando errado... Mas anteriormente (antes da versão de TSilva), eu tinha colocado de forma correta (ver Revisão de 17h19min de 28 de Julho de 2007).
  • A questão de não haver diferença entre as expressões "compilar" e "traduzir": vou deixar como TSilva deseja e, de acordo com a comunidade (obrigado pelo toque, TSilva). --Ricvelozo 18h03min de 1 de Setembro de 2007 (UTC)


Grato!! :) TSilva 17h04min de 3 de Setembro de 2007 (UTC)

Novamente...[editar código-fonte]

Não entendi as modificações posteriores que você fez (re-editei o artigo para refletir o que é mais acurado)...

"[...] e é capaz de traduzir e interpretar códigos escritos em G-Portugol. "

É capaz de traduzir, interpretar e compilar.

"Pode traduzir seu código para Assembly, que depois é compilado usando o assembler NASM"

Novamente:
a) Tradução de código (de alto nível) para assembly é o equivalente a compilação (e prefere-se o segundo termo).
b) Assemblers não compilam (o NASM não compila).

"Ao contrário do que se pensa, G-Portugol não é uma linguagem compilada,"

Mas não já discutimos isso? ;)

"pois antes de ser compilada, ela é traduzida para outra linguagem de baixo nível, o Assembly."

Esta última, mais uma vez, não faz sentido. A propósito, a tipagem do G-portugol é estática/forte. Não entendi porque colocou "dinâmica" novamente.