Terminologia - o código fonte é um programa? [fechadas]

10

Sou iniciante em programação e não tenho uma boa noção de terminologia. Gostaria de saber se o código fonte escrito em uma linguagem compilada como C ou C ++ é considerado um programa? Se não, alguém pode explicar o porquê?

Othman
fonte
1
Sim, o código fonte é considerado um programa. Os programas podem ser distinguidos pelo tipo de código que contêm, como em "código fonte", "código de objeto", "código de máquina" e "código executável".
Robert Harvey
6
Essa pergunta me parece da mesma maneira "A carne é uma vaca?" , por praticamente todas as mesmas razões.
RM
1
Farinha e açúcar são um bolo?
Bryan Oakley

Respostas:

16

Veja a entrada da Wikipedia sobre Programa : (adicionei o negrito )

Um programa de computador é uma coleção de instruções que executam uma tarefa específica quando executadas por um computador. Um computador requer que os programas funcionem e normalmente executa as instruções do programa em uma unidade central de processamento.

Um programa de computador geralmente é escrito por um programador de computador em uma linguagem de programação. A partir do programa em sua forma legível por humanos de código fonte , um compilador pode derivar código de máquina - um formulário que consiste em instruções que o computador pode executar diretamente

Portanto, o "programa" é o conjunto de instruções que o computador executa e o "código-fonte" é a versão legível por humanos dessas instruções.

Dan Pichelman
fonte
1
Obrigado pela sua resposta. Se bem entendi, o código-fonte é um programa porque define um conjunto de instruções que executa uma tarefa quando são executadas por um computador. Mas mesmo que essas instruções não sejam as executadas pela CPU no final, a CPU executa instruções, que são as traduções das instruções definidas em um idioma de alto nível?
Othman
7

Gostaria de saber se o código fonte escrito em uma linguagem compilada como C ou CPP é considerado um programa?

Sim, ele é.

MAS

O perigo com esta linha de pensamento está chegando: "o computador executa meu programa, eu escrevo meu programa em [por exemplo] C, portanto, o código fonte é instruções para o computador".

E é isso que muitos de nós pensamos por muitas décadas no século XX. O que aprendemos na última década, mais ou menos, é que outros programadores são o público principal do código fonte . Então, sim, essa fonte é o programa, da mesma maneira que você obteria um programa no teatro, que diz às outras pessoas o que está acontecendo. A beleza do código-fonte é que, além de ser o programa, também é um conjunto de instruções para o computador ...

David Arno
fonte
1

Se é ou não, depende do contexto. Pense nisso desta maneira. Esqueço qual é o nome formal do conceito, mas há uma teoria da linguagem que diz que as palavras têm significado que descrevem não o que é algo, mas o que não é . Uma maçã vermelha não é vermelha porque é, bem, vermelha, mas porque não é azul, não é verde, etc. Ignore se isso é verdade ou não, mas presuma que seja por um segundo e pense na pergunta nesse contexto.

Portanto, quando pensamos nesse conceito, podemos comparar nosso código-fonte com o plano de uma casa. Se você estiver olhando o projeto de uma pilha de outros projetos, e perguntar "isso é uma casa", e os outros projetos forem para edifícios comerciais, pontes, etc., a resposta seria afirmativa. Porque o projeto não representa todas essas outras coisas, e o aspecto da casa é o que o distingue dos outros projetos.

No entanto, obviamente, um projeto de uma casa não é o mesmo que uma casa real feita de madeira e drywall em que você pode ficar. Existem contextos em que a diferença entre o projeto e a casa real é significativa. Há uma diferença entre o plano e a entrega.

Da mesma maneira que o código fonte de um programa em uma linguagem compilada é como o blueprint, se você o está comparando com bibliotecas, módulos de kernel, etc., o código fonte e o programa são conceitualmente o mesmo. Mas se você estiver observando como o software é compilado, projetado e implantado, os dois não são os mesmos. Mais uma vez, há uma diferença entre o plano e a entrega.

tl; dr: Às vezes, o que algo é e o que representa é considerado a mesma coisa, mas outras vezes não.

whatsisname
fonte
0

Código fonte é um termo geral para linhas de código originais (de autoria humana). Outros tipos de código que não são de origem podem ser criados por tradução ou por outro programa.

A propriedade intelectual é ainda mais ampla e pode incluir código fonte e outro código ou dados.

Um programa se distingue de outro código (fonte ou outro) em sua integridade. Um programa é um código suficientemente completo para poder ser executado (ou se destina a ser executado). Nem todo código (fonte ou outro) representa integridade suficiente para executar. As bibliotecas, por exemplo, devem ser combinadas e usadas por outro código e, portanto, geralmente não seriam consideradas um programa, pois não podem (não deveriam ser) executadas.

Às vezes, essa integridade significa ter um main, que é usado por um sistema operacional como ponto de entrada para o programa

De um modo geral, quando um programa está em execução, isso é chamado de processo.

Erik Eidt
fonte
1
Por favor, não mencione "propriedade intelectual", pois esse é um termo intencionalmente destinado a confundir as pessoas.
Whatsisname
0

O código fonte é a forma preferida do software no qual os desenvolvedores de software humanos estão trabalhando . O insight é que o desenvolvimento de software é um processo social; portanto, o código fonte é uma noção social . Você escreve o código-fonte principalmente para humanos (seus colegas desenvolvedores ou até você mesmo trabalhando em alguns meses no mesmo programa), não para computadores. Para um programa codificado em C, geralmente são (mas nem sempre) .carquivos C e .harquivos de cabeçalho, mas o Makefile também é código-fonte. Às vezes, porém, são usadas técnicas de metaprogramação : algum programa está gerando código C e, em seguida, a entradapara esse gerador é considerado código-fonte (mesmo que a saída desse gerador seja código C). Dois exemplos: você pode usar algum gerador de analisador (como o GNU bison ) para analisar problemas; o .yarquivo de entrada desse gerador é o código-fonte. Ou você pode escrever um pequeno script awk ou gawk para extrair de algum banco de dados sqlite alguns dados que seriam transformados em, por exemplo, uma grande enum declaração em algum cabeçalho gerado; então esse banco de dados conteria código fonte!

Um programa de computador, por outro lado, está relacionado ao computador que o executa. Geralmente é obtido compilando algum código-fonte (escrito em alguma linguagem de programação , e essas são especificações escritas em inglês em documentos técnicos - veja o rascunho n1570 para C11 -, não as ferramentas de software!) Em um executável binário .

Leia também sobre software livre . Mergulhe no código fonte dos projetos de software livre existentes (consulte o github ou o sourceforge para encontrar alguns).

Basile Starynkevitch
fonte