Estou curioso sobre o nascimento do compilador. Como começou a programação? As pessoas criaram primeiro hardware que reconheceu um determinado conjunto de comandos ou definiram uma linguagem e depois construíram hardware em torno dela? E em uma nota relacionada, qual foi a primeira linguagem de programação?
programming-languages
history
compiler
assembly
David Cowden
fonte
fonte
Respostas:
Isso tem uma resposta muito clara, na verdade: o código fonte veio primeiro - por uma grande margem.
Antes de dar os detalhes técnicos, um pouco de perspectiva:
As primeiras linguagens de programação foram todas traduzidas para linguagem de máquina ou montador manualmente . A idéia de usar um software para automatizar essa tradução (por meio de um compilador ou avaliador) sempre veio mais tarde e estava longe de ser intuitiva.
Considere esta citação do artigo da Wikipedia sobre FORTRAN, que ilustra a relutância que os compiladores precisavam enfrentar:
=> Quando o compilador FORTRAN chegou ao mercado (1957), as pessoas já estavam programando alegremente tanto na linguagem assembly quanto no FORTRAN.
O caso foi semelhante para o LISP (da Hackers & Painters ):
Mais uma vez, não apenas o código fonte (no LISP) é anterior ao intérprete, mas o último nem estava implícito no primeiro.
Mas esses desenvolvimentos são relativamente atrasados. Mesmo sem considerar o Analytical Engine de Charles Babbage e o primeiro programa relacionado a Ada Lovelace , havia linguagens de programação no século 20 que antecederam os compiladores:
Plankalkül, de Konrad Zuse, e a construção matemática do cálculo λ, introduzida pela Igreja Alonzo. Ambas são linguagens de programação indubitavelmente especificadas formalmente, mas nenhuma delas possuía um compilador na época.
Para colocar isso em perspectiva, o λ-calculus é da década de 1930 e o Plankalkül foi desenvolvido por volta de 1945. Por outro lado, o primeiro compilador FORTRAN saiu em 1957 (mais uma vez três anos após a especificação do FORTRAN).
fonte
A programação começou com as pessoas escrevendo código de máquina diretamente na memória, em cartões perfurados e fita de papel ou até mesmo encurtando links em um painel de remendo. É difícil saber se o hardware foi construído com base nas necessidades do software ou vice-versa. Certamente, o design mais antigo de um computador programável completo , o mecanismo analítico da Babbage , era anterior ao primeiro programa documentado de Ada Lovelace .
Quanto à primeira linguagem de programação, argumentei que era a linguagem de máquina do mecanismo analítico de Babbage (da pergunta Qual foi a primeira linguagem de programação escrita para computadores? )
Para responder à pergunta no título da pergunta, como a linguagem assembly é o código-fonte e as linguagens assembly pré-datam as linguagens de alto nível que poderiam ser compiladas no assembler, o código fonte veio primeiro.
Além disso, um compilador nunca foi necessário , apenas conveniente.
É perfeitamente possível gravar software diretamente na memória se você memorizou as tabelas de código operacional apropriadas . De fato, alguns computadores antigos exigiam que o usuário digitasse o código de inicialização no teclado hexadecimal do painel frontal para inicializá-los, mas você poderia digitar qualquer código que gostasse e ele seria executado.
É certo que, à medida que as CPUs ficam mais complexas, isso fica mais difícil, mas um conjunto de instruções simples como 6809 ou Z80 (ignorando todos os modos indexados estranhos) é relativamente fácil de programar, mesmo sem um montador , sem falar em um compilador de uma linguagem de alto nível.
Se o mecanismo analítico de Babbage já tivesse sido construído, tenho certeza de que haveria um Mel steampunk , escrevendo programas otimizados diretamente em cartões de tear.
fonte
movl $0, -20(%rbp)
, enquanto o código da máquina éC745EC00000000
, e é o último (bem, algo parecido) que foi inserido manualmente ou lido pela fita de papel. Quanto ao código de máquina contar como código-fonte , estou inclinado a dizer "o que quer que flutue no seu barco". Se você estiver alternando manualmente, sim, eu diria que conta.O compilador foi o primeiro . Foi escrito diretamente no código da máquina, pois a fonte não pôde ser compilada sem um compilador.
Artigos da Wikipedia como este sobre Idiomas de computador podem responder à maioria das perguntas. Caso contrário, basta escolher um dos livros de Tanenbaum, como o Structured Computer Organization , que pode responder a mais perguntas do que você pode fazer :)
Não posso dizer nada mais específico, pois sua pergunta é muito ampla.
fonte
Os intérpretes existiam antes dos compiladores; portanto, o código-fonte existia antes dos compiladores.
Existem alguns artigos muito interessantes sobre a história da computação aqui . O código-fonte do compilador FORTRAN II deve estar disponível, mas esses links estão desfeitos.
Este artigo , de 1954, descreve o intérprete Whirlwhind.
fonte
Esta questão está fortemente ligada à nossa interpretação semântica do 'código fonte'. Se o definimos como 'instruções de computador baseadas em texto que são compiladas', presumivelmente um compilador veio primeiro.
Estou mais inclinado a aceitar algo mais autoritário, como o artigo de Mark Harman "Por que a análise e a manipulação do código fonte sempre serão importantes", apresentado na Décima Conferência Internacional de Trabalho do IEEE sobre análise e manipulação do código fonte
E acho que sua resposta está implícita nessa definição - o código fonte certamente veio primeiro.
fonte
Os algoritmos foram ordenados em papel e os demais foram conectados fisicamente / mecanicamente (fios móveis). Para alterar o programa, você move os fios e executa novamente.
Mais tarde, a linguagem assembly ordenada em papel, traduzida manualmente para o código da máquina e, em seguida, usando interruptores etc. para alimentá-lo no ram. Ou perfure cartões, etc. Eventualmente, você pode criar um montador, depois programar em assembly, não código de máquina, em seguida, criar um compilador. Eventualmente, você pode inicializar esse compilador. E crie novos idiomas e novos compiladores, etc.
O primeiro idioma não era um idioma, mais tarde o primeiro idioma foi a linguagem assembly. para cada processador, o primeiro idioma é a linguagem assembly (derivada do código da máquina). O conjunto de instruções é projetado primeiro, depois o hardware para implementá-lo, depois o assembler e depois os compiladores.
fonte