Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida: como um programa que é escrito em uma linguagem compilada roda em outras máquinas?

O professor nos ensinou que um programa escrito em C só vai rodar naquela máquina na qual foi escrito, pois a linguagem C usa um compilador para transformar o código escrito em código de máquina.

Talvez eu tenha entendido errado, mas aqui vai minha pergunta.

A minha dúvida é a seguinte: se o código escrito na linguagem C só pode ser rodado ou interpretado naquela máquina em que foi escrito, como um jogo escrito na linguagem C roda nas máquinas dos usuários ou jogadores que compraram o jogo por exemplo?

4 respostas

Bom dia, Diego!

Se não tiver o arquivo executável (ou arquivos equivalentes para o Linux e outros SOs), você realmente terá que compilar o seu código em todas as máquinas que você for utilizar. Caso você tenha o executável e, além disso, a arquitetura do computador e o sistema operacional sejam os mesmos da máquina que você escreveu, não há motivos para ter problemas. Ainda assim, se tratando de computadores, os sistemas operacionais proporcionam uma abstração entre o hardware e as aplicações.

Quando você adquire um software/jogo, há um arquivo executável e uma lista de pré-requisitos, um deles é o sistema operacional. Assim, evita-se que os usuários tenham problemas de compatibilidade na instalação.

Uma observação sobre a sua dúvida: "ou interpretado naquela máquina em" - a linguagem C não é interpretada.

Fala Yan, blz?

Então quer dizer que o arquivo executável compila o código que foi escrito em outra máquina para que a minha máquina "entenda" aquele código? E eu também gostaria de entender melhor como o sistema operacional proporciona essa abstração entre hardware e aplicação, como vc mencionou.

Se vc ou alguém souber de algum artigo ou conteúdo no Youtube que fale mais sobre esse assunto, peço por favor pra que deixe aqui nesse tópico pra quem quer se aprofundar mais.

Valeu, Yan!

solução!

Bom dia, Diego!

Os arquivos executáveis não compilam códigos, pois para isso os códigos-fonte seriam necessários. Contudo, eles possuem os arquivos binários gerados na compilação. Um programa em C pode funcionar no Linux e no Windows, mas vc vai precisar compilar em cada SO para que ele funcione. Pode ser que um programa funcione no Windows 10 e não funcione em uma versão anterior, novamente, você vai precisar compilar o seu código para funcionar. Não necessariamente o problema é o SO, pode ser a arquitetura também. Por exemplo, a arquitetura onde funcionavam o Windows XP/95 é bem diferente da que roda o Windows 10. Tenta realizar um teste em casa, se for possível.

Sobre a abstração do Sistema Operacional, basicamente, o objetivo é evitar que o programador precise se preocupar com alocação de recursos (memória e processador). O que tornaria a programação algo muito complexo e totalmente depende do hardware. Eu não conheço um canal sobre esse assunto, eu conheço um livro que é o "Operating Systems: Three Easy Pieces".

Fala, Yan

Desculpe pela demora pra responder, mas vim aqui te agradecer pela explicação. Entendi um pouco melhor a questão de compilação, obrigado mesmo.