É verdade que as primeiras versões dos compiladores C foram executadas por dezenas de minutos e exigiram a troca de disquetes entre os estágios?

15

Inspirado por esta pergunta .

Ouvi dizer que algumas versões muito antigas dos compiladores C para computadores pessoais (acho que é por volta de 1980) residiam em dois ou três disquetes e, para compilar um programa, era necessário primeiro inserir o disco com "primeira passagem", executar a "primeira passagem", depois mude para o disco com "segunda passagem", execute-a e faça o mesmo para a "terceira passagem". Cada passe durou dezenas de minutos, para que o desenvolvedor perdesse muito tempo, mesmo no caso de um erro de digitação.

Quão realista é essa afirmação? Quais eram os números e detalhes reais?

dente afiado
fonte
2
Parece que pode ser verdade. Nos anos 60, quando os programas estavam em cartões perfurados ou fita de papel, um programador pode ter que esperar mais de um dia para descobrir um erro de digitação.
Chris Card
3
Pergunta interessante. Se isso fosse verdade, eu estou feliz que eu vivo agora e não depois;)
Anto
2
Lembro-me de ter que trocar de disco várias vezes para compilar pascal no computador pessoal da Amstrad .
Martin York
Bem, a questão de esperar um dia não era tanto o tempo de execução do trabalho, era a fila de coisas na frente. Havia lugares em que você iria enviar seu baralho de cartas e algum nazista de jaleco branco o tirava e colocava as cartas no funil à vontade. O tempo de execução pode ser de apenas alguns minutos ou segundos. O tempo de processamento humano era geralmente em horas.
quickly_now
4
Vi projetos C ++ modernos que uma limpeza e reconstrução completa levam dezenas de minutos e, em vez de trocas de discos, estão fazendo páginas de memória virtual automaticamente através do sistema operacional. Por que todo mundo continua dizendo que os computadores estão tão avançados hoje em dia? =)
Patrick Hughes

Respostas:

29

Absolutamente. Eu tinha o Microsoft C (versão 1.0, acho) para um computador Zenith Z100 no início dos anos 80, entregue em vários disquetes de 5,25 "360K. O Z100 não tinha um disco rígido, então tive que trocar frequentemente de disquetes conforme alternava entre o editor, o compilador e o vinculador.Tempos de compilação e link de vários minutos não eram incomuns.Foi tão irritante que paguei US $ 500 por uma placa de expansão de memória de 2 MB (sim, megabyte) para carregar todos os arquivos em um Disco de RAM, que reduziu o tempo para 30 segundos, engraçado ... Na verdade, eu gostava de programar naqueles dias porque era divertido. Hoje é trabalho.

SteveM82
fonte
+1, no entanto, tenho o sentimento oposto. Depois de ler sua resposta, a programação parece subitamente mais engraçada hoje.
Simon Bergot
Microsoft C 1.0 era realmente uma versão reembalada do Lattice C. AFIK, Lattice C foi o primeiro compilador do MS-DOS C. Exigiu duas passagens do compilador executadas separadamente.
OldFart 15/05
1
Woah! 2 MBs! Isso foi enorme para a época.
System Down
Usei o Turbo C 1.0 nos PCs da IBM (bem, realmente ATs, se bem me lembro) e não foi tão ruim assim. Mas eram máquinas mais rápidas.
Gort the Robot
9

Provavelmente é verdade.

Nos primeiros dias da computação doméstica (para crianças / pais, não os Hobiest), as máquinas nem sequer tinham discos rígidos.

Meus pais tinham um Amstrad, o sistema operacional estava em 1 disquete e isso permitiu que você selecionasse o aplicativo a ser executado, o que pode ter exigido a troca de disquetes (ou seja, os processadores de texto estavam em outro disco), exigindo uma troca manual de volta para o disco do sistema operacional, se o aplicativo precisava de algum serviço especializado do sistema operacional.

Eu tinha uma cópia de pascal para a amstrad. Lembro que o editor estava em um disco, mas durante a compilação, foi necessário alternar entre o disco1 e o disco2 à medida que os processos de compilação continuaram (pode até ter sido necessário mudar para o disco do SO em determinados pontos dos processos (mas eu não estou tão certo fora)).

Nos bons velhos tempos, quando todo o sistema operacional cabia em um único disquete de 3,5 (mas não muito mais).

Martin York
fonte
4
Completamente verdadeiro. Quando o compilador "speedpeed C" foi lançado para o Macintosh e o "turbo C" para os PCs do MS-DOS, ficamos em êxtase porque ele rodava em uma única passagem.
S.Lott 24/02
3.5? O Amstrad da minha família tinha uma unidade de disquete de 2,5 ". E sim, o CP | M estava no disco 1 de um conjunto de 4 e o Logo estava no disco 4. Não me lembro do que mais havia lá.
Peter Taylor
@ Peter Taylor: É mais do que provável que você esteja correto. Faz muito tempo (sinto-me velho).
Martin York
1
Não foi um problema para mim. Quando eu aprendi C, eu tinha um grande agradável 21 MB disco rígido :-)
dan04
1
@ dan04 - Saia de nossos gramados coletivos. Droga Whipper Snappers e seus discos rígidos fantasia shmancy .....;)
Sistema de Down
6

Os disquetes foram introduzidos em 1971 - (o disquete de 8 polegadas, ou seja), mas não eram populares até meados dos anos 70 (com os discos de 5,25 polegadas). C é de 1973, então acho que a resposta depende em grande parte do que você chama de "primeira versão" e de qual era o contexto de compilação. Pense nestas variáveis:

  • Bibliotecas usadas . Ao compilar uma biblioteca que não esteja no disco atual, você precisará alterar os disquetes no meio.
  • Complexidade do programa ("Hello world" não é o mesmo que "o Norton Commander")
  • Hardware (pessoalmente, acho que a compilação séria era quase sempre feita em mainframes ou minicomputadores)

Afinal - atualmente, a compilação ainda leva alguns minutos - apenas ajuste a troca entre o seu hardware e a complexidade do programa. Somente a parte do disquete não é :-).

Leve também em consideração que muita computação nos anos 70 ainda era feita em uma construção de terminal-mainframe, portanto, talvez seja improvável alterar os disquetes (pelo menos em um contexto de produção comercial. Não sei se C foi usado como "casa" " língua).

vstrien
fonte
5
A "primeira" versão não foi executada em disquetes. Era um sistema PDP-11 baseado em disco rígido da AT&T. No entanto, a primeira versão para um computador com disquetes (ou seja, CP / M, MS-DOS, etc.) foi bastante difícil de gerenciar.
S.Lott 24/02
Lembro-me de ver um disquete (disco removível) dos anos 60. Tinha 4 pés de diâmetro. Eles foram montados em madeira compensada para que pudessem ser enrolados no laboratório. Realizada cerca de 5K como eu me lembro.
Martin York
Você não deseja substituir esse para cada execução do compilador! Adoraria ver uma foto dessa :-).
vstrien
6

Minha primeira incursão no aprendizado de C foi em um Commodore 64 (sim, havia um compilador para ele), no final dos anos 80. Se bem me lembro, o compilador / editor / vinculador estava em um disco e sua fonte estava em outro e você teve que trocar pelo menos uma vez durante o estágio de compilação. Claro, no C-64, você sempre trocava.

Pelo que vale, ainda tenho a caixa e os documentos desse compilador. É uma leitura nostálgica a cada dois anos.

DevSolo
fonte
2
Também aprendi C no Commodore 64 em 1984. Lembro-me de trocar os disquetes durante a compilação com bastante clareza. Quero dizer que estava usando um compilador da Abacus, mas talvez não esteja lembrando disso corretamente.
Clint Miller
@Clint, tenho certeza que você está correto. Esse é o nome na caixa.
DevSolo 24/02
@ Clint: Eu tinha o mesmo compilador. O Commodore 64 era um computador incrível para aprender programação. Foi avançado o suficiente para fazer coisas realmente legais, mas simples o suficiente para que você pudesse entender todo o hardware com o qual precisava interagir, o que era necessário porque eles não tinham as camadas de abstração de alto nível naquela época que possuem hoje.
Dunk
6

Meu primeiro compilador C foi em um TRS-80 Modelo 4 executando CP / M (o primeiro modelo que faria isso corretamente, não tendo locais com pouca memória permanentemente mapeados para a ROM). Exigia que o disco na primeira unidade tivesse CP / M nele.

Depois que terminei com o editor que estava usando, tive que compilar, montar e vincular o programa antes de poder executá-lo. Cada um era seu próprio processo, iniciado na linha de comando. O compilador, montador e vinculador não caberiam em um disquete. (IIRC, o montador e o vinculador podem se encaixar.)

Portanto, eu teria o programa e o editor no disco do sistema CP / M e trocaria os discos do compilador e do montador / vinculador.

Eu estava olhando para um programa que me permitia executar sem um disco do sistema e tinha um plano (do qual não me lembro mais) de configurar as coisas para que eu pudesse criar um pequeno arquivo em lotes e automatizar as chamadas da linha de comando, mas eu nunca segui adiante.

Eu praticamente desisti do C depois de tentar usar esse sistema e voltei para Pascal por vários anos.

David Thornley
fonte
Provavelmente UCSD P-system Pascal?
quickly_now
2
@quickly_now: algo que compilou em código-p, mas não foi cobrado como UCSD. Naturalmente, me livrei disso décadas atrás e lembro pouco sobre isso. Quando cheguei ao Turbo Pascal, praticamente esqueci tudo.
David Thornley
5

Quando eu estava no ensino médio (1989-1990), estávamos fazendo pascal em uma maçã II e era LENTO . você pode escrever um programa de 100 linhas ou mais, ao pressionar compilar, levou alguns minutos. Lembro que você teve tempo de ir ao banheiro masculino enquanto ele estava compilando antes que o programa fosse executado.

Mais ou menos na metade do caminho, consegui um Mac SE que era muito mais rápido! Acho que Pascal foi muito melhor.

Zachary K
fonte
2
+1 por mencionar o Mac SE. Lembro-me de ter adquirido um disco rígido externo de 20 MB para o meu Mac SE. Era tão grande que o Mac inteiro estava em cima dele.
31511 filipadad
Eu tinha um interno, mas também posso ter um. Muito bom design realmente.
Zachary K
5

O pai de um amigo meu era um programador de alto nível naquela época. Ele se cansou de esperar pelos resultados de suas compilações, dias, às vezes semana. Trabalhou principalmente em casa, escreveu o programa, perfurou os cartões, dirigiu, entregou a caixa ao operador e argumentou por um tempo que seu código era mais importante que todos os outros e esperou.

Às vezes, o código nunca chegava ao computador, meu amigo me contou a história da época em que seu pai realmente, quero dizer, REALMENTE ficou bravo com ele. Ele realmente nunca entendeu o porquê até muito mais tarde na vida, mas garoto essa caixa cheia de papéis rígidos parecia divertida ... ei, também estão cheios de buracos !!!

Um dia ele levou o argumento à gerência e acho que ele fez um bom caso, porque eles entregaram um minicomputador em sua casa. Devo mencionar que, até então, o computador ocupava a maior parte da sala de estar que, é claro, ficou fora dos limites.

Então, sim, trocar discos entre os estágios de uma compilação é uma possibilidade definitiva e confie em mim quando digo que foi uma melhoria VAST do que estava disponível antes disso !!!

Apenas espere 20 anos ou mais, posso imaginar alguém fazendo uma pergunta algo como:

É verdade que antes, eles tinham que usar teclados para digitar seu código letra por letra?

Newtopian
fonte
3

Eu não sei sobre C, mas nesse período de tempo eu tinha um compilador Microsoft Fortran que levou duas passagens. Não apenas isso, mas eu tinha um programa de página longa que era executado incorretamente (tenho certeza de que o código-fonte estava correto); então, desisti de compilar o PC completamente. Era um dia antes da internet e o PC pertencia ao meu empregador. Ainda era ótimo ter o PC, eu poderia colocar o trabalho em um disquete, levá-lo para casa e editá-lo. Então, quando cheguei ao trabalho no dia seguinte, já tinha um programa editado, em vez de anotações manuscritas.

Mesmo nos dias anteriores (iniciando a programação da primavera de 70), o compilador era um único comando JCL em um sistema operacional de mainframe de processamento em lote. É como descrito acima. Você esperou na fila por um soco de teclas e perfurou seus cartões de holerith. Então você os entregou a um operador através de uma janela. Dependendo da cor do seu PNC (basicamente um cartão perfurado contendo o número / senha da conta), você poderá recuperar os resultados de 1 a 24 horas depois. Estudantes de nível baixo tiveram a reviravolta mais tarde. Realmente foi um desafio concluir a tarefa "olá mundo" nas duas semanas previstas! Alguns anos depois, consegui um emprego de programação em meio período e podia sair à noite no centro de informática. Alguns de nós podem até alimentar o leitor de cartões. Em seguida, a rotação ocorre apenas alguns minutos / Mas você só pode fazer isso tarde da noite.

Por um longo tempo, os compiladores eram principalmente uma coisa para mainframes (máquinas de milhões de dólares pertencentes a organizações muito grandes). E os poucos minicomputadores ao redor geralmente precisavam ser programados de maneiras estranhas e complicadas. Eu usei um mini computador para digitalizar sismogramas. Demorou cerca de 10 a 15 minutos guiando a fita de papel através dele para inicializar o sistema operacional, então você faria o seu trabalho na mesa do digitalizador.

Omega Centauri
fonte
2

Sim com certeza. Eu não usei C nessas máquinas antigas de CP / M, usei o CB-80. BASIC compilado. (E sim, foi horrível). Em um Heath / Zenith Z-89 com 2 unidades de disquete, cada uma com 89K.

A compilação em disco único foi tão horrível que foi um caso de esquecê-lo. Muita troca de disco. 2 unidades de disquete foi um luxo! Fonte em um, compilador no outro. Faça uma compilação e vá embora para tomar uma xícara de chá enquanto a máquina fica "clang clang clang" enquanto os disquetes estão engatados e desengatados e as cabeças balançam.

O chefe comprou um disco rígido de 5 MB com cerca de 18x18x8 polegadas, alimentado separadamente e conectado à parte traseira do H89 com um cabo de fita com cerca de 1 metro de comprimento.

Oh a velocidade! e a capacidade! com 5 MB de armazenamento.

rapid_now
fonte
1

não sei sobre C (meu primeiro compilador C foi executado a partir de um disco rígido e não foi rápido), mas o primeiro Macro Assembler que eu usei (C64) exigiu comutação de disquete (uma para carregar o assembler, a outra para carregar o código) levou mais de 20 minutos para construir o sistema e, após alguns meses de desenvolvimento, a unidade de disquete e a placa-mãe superaqueceram e morreram.

Steven A. Lowe
fonte
1

Faculdade em 1988 = Fortran em um PC, 8088 512K (isso é um K !!) de memória ram e uma única unidade de disquete A compilação levou 20 a 30 minutos, não precisei trocar de disquetes porque tinha uma daquelas novas de 720K.

Um Sun3 (68030 ram de 1Mb) e terminais 24 vt100 para toda a classe.

Martin Beckett
fonte
1

Antes do meu tempo, suponho. Minha primeira programação "real" (em PCs, pelo menos) foi COBOL. Naquela época, usamos computadores IBM. Eles tinham 2 unidades de disquete de 360k; um tinha o compilador e o outro o seu código-fonte.

Eu sei que mesmo meus projetos simples da faculdade levaram literalmente 15 minutos para compilar a execução nesses disquetes - eu corria para a cafeteria para tomar café enquanto estava compilando. Então, para o projeto final, trabalhei nele na casa dos meus amigos. Ele acabara de comprar uma máquina nova com esse disco chamado disco rígido - 10 megabytes! Nosso projeto foi compilado em menos de um minuto. Isso me surpreendeu completamente.

zpasternack
fonte
Você provavelmente não possui nenhum buffer de disco configurado. Apenas alguns fizeram maravilhas.
1

Eu tive que fazer a dança de disquete no meu antigo Mac de 128K para várias aplicações, por isso não duvido disso por um minuto, apesar de não poder dar detalhes. Não ficaria surpreso se isso não fosse parte do motivo pelo qual os intérpretes do BASIC eram tão onipresentes nos primeiros computadores pessoais (sem necessidade de várias passagens, tabelas de símbolos etc.).

John Bode
fonte