Jesus, agora estou velho e nunca tive que mexer com cartões perfurados ou processamento em lote. Inferno, eu só tinha que usar um terminal impresso uma ou duas vezes ao longo da minha carreira na faculdade.
Eis como fizemos as coisas no final do Cretáceo (por volta de 1986). Eu estava trabalhando no VAX / VMS por meio de um terminal baseado em caracteres âmbar sobre preto VT220 que poderia ser exibido em 80x24 ou 132x24.
Primeiro, você acionou o editor de texto:
$ EDIT/EDT HELLO.C
O EDT era o equivalente do VMS ao vi, caindo em algum lugar entre o DOS edlin e o Bloco de Notas. Você digitou o texto do programa
#include <stdio.h>
int main(void)
{
printf("Hello, Stupid\n");
return 0;
}
salvou-o no arquivo e saiu do editor.
Então você executou seu código através do compilador:
$ CC HELLO
Isso traduziu o código-fonte em HELLO.C e gerou o arquivo de objeto HELLO.OBJ. O arquivo de objeto continha o código de máquina do programa, mas ainda não estava em um formato executável. Por um lado, o código binário real da printf
chamada não está presente; há apenas um espaço reservado para isso. Você ainda precisava executar o arquivo de objeto por meio de um vinculador , que incorporava o código binário da biblioteca padrão (e de qualquer outra biblioteca necessária) e formatava o arquivo para que pudesse ser reconhecido como um executável:
$ LINK HELLO
O resultado desta etapa é o arquivo HELLO.EXE, que é a versão executável do seu programa.
O procedimento é praticamente o mesmo em qualquer sistema moderno; é que as cadeias de ferramentas específicas são diferentes. Por exemplo, a sequência de comandos em um sistema Linux típico seria
$ vi hello.c
$ gcc -o hello hello.c
ou
$ vi hello.c
$ gcc -c hello.c
$ ld -o hello hello.o -lc
Desde que cresci nesse ambiente, nunca entendi como alguém poderia precisar de um IDE apenas para escrever seu código. No entanto, no início deste ano, comecei a trabalhar em Java e, embora o Eclipse tenha muitas, muitas falhas, posso entender como alguém pode confiar fortemente em um IDE para concluir seu trabalho. Como o Java é uma linguagem tão grande em comparação com o C, e como ainda estou tentando reduzir os pontos mais refinados da sintaxe, ajuda a ter um ambiente de desenvolvimento inteligente que saiba em quais pacotes estão os tipos específicos e me ajude a organizar as importações.