Est-il vrai que les premières versions des compilateurs C ont fonctionné pendant des dizaines de minutes et ont nécessité l'échange de disquettes entre les étapes?

15

Inspiré par cette question .

J'ai entendu dire que certaines versions très très anciennes des compilateurs C pour ordinateurs personnels (je suppose que c'était vers 1980) résidaient sur deux ou trois disquettes et donc pour compiler un programme, il fallait d'abord insérer le disque avec "premier passage", exécuter le "premier passage", puis passez sur le disque avec "deuxième passage", exécutez-le, puis faites de même pour le "troisième passage". Chaque passage a duré des dizaines de minutes, le développeur a donc perdu beaucoup de temps en cas de faute de frappe.

Dans quelle mesure cette affirmation est-elle réaliste? Quels étaient les chiffres et les détails réels?

acéré
la source
2
Il semble que cela pourrait être vrai. Dans les années 60, lorsque les programmes étaient sur des cartes perforées ou du ruban adhésif, un programmeur pourrait devoir attendre plus d'une journée pour découvrir une faute de frappe.
Chris Card
3
Question interessante. Si c'était vrai, je suis content de vivre maintenant et pas alors;)
Anto
2
Je me souviens avoir dû changer de disque plusieurs fois pour compiler pascal sur l' ordinateur personnel Amstrad .
Martin York
Eh bien, le fait d'attendre un jour n'était pas tellement le temps d'exécution du travail, c'était la file d'attente de choses devant. Il y avait des endroits où vous alliez pour soumettre votre jeu de cartes et des nazis en blouse blanche les emportaient et mettaient les cartes dans la trémie à leur guise. Le temps d'exécution peut être seulement de quelques minutes ou secondes. Le temps de traitement humain était souvent en heures.
quick_now
4
J'ai vu des projets C ++ modernes qu'un nettoyage et une reconstruction complets prennent des dizaines de minutes, et au lieu des échanges de disques, il fait automatiquement des pages de mémoire virtuelle via le système d'exploitation. Pourquoi tout le monde continue de dire que les ordinateurs sont si avancés ces jours-ci? =)
Patrick Hughes

Réponses:

29

Absolument. J'avais Microsoft C (version 1.0, je pense) pour un ordinateur Zenith Z100 au début des années 80 qui était livré sur plusieurs disquettes de 5,25 pouces à 360K. Le Z100 n'avait pas de disque dur, j'ai donc dû échanger fréquemment des disquettes lorsque je passais entre l'éditeur, le compilateur et l'éditeur de liens. Les temps de compilation et de liaison de plusieurs minutes n'étaient pas inhabituels. C'était tellement ennuyeux que j'ai payé 500 $ pour une carte d'extension de mémoire de 2 Mo (oui, mégaoctet) pour pouvoir charger tous les fichiers dans un Disque RAM. Cela a réduit le temps à environ 30 secondes. Drôle ... J'ai vraiment apprécié la programmation à l'époque parce que c'était amusant. Aujourd'hui, cela fonctionne.

SteveM82
la source
+1 mais j'ai le sentiment inverse. Après avoir lu votre programmation, vous vous sentez soudainement plus drôle aujourd'hui.
Simon Bergot
Microsoft C 1.0 était en fait une version reconditionnée de Lattice C. AFIK, Lattice C était le premier compilateur MS-DOS C. Il a fallu deux passes de compilateur exécutées séparément.
OldFart
1
Woah! 2 Mo! C'était énorme pour l'époque.
System Down
J'ai utilisé Turbo C 1.0 sur les PC IBM (enfin, vraiment des AT si je me souviens bien) et ce n'était pas si mal. C'étaient des machines plus rapides, cependant.
Gort le robot
9

C'est probablement vrai.

Dans les premiers temps de l'informatique à domicile (pour les enfants / parents pas les Hobiest), les machines n'avaient même pas de disques durs.

Mes parents avaient un Amstrad, le système d'exploitation était sur 1 disquette et cela vous permettait de sélectionner l'application à exécuter, ce qui peut avoir nécessité la commutation de disquettes (c'est-à-dire que le traitement de texte était sur un autre disque) nécessitant un basculement manuel vers le disque du système d'exploitation si l'application avait besoin d'un service OS spécialisé.

J'avais une copie de pascal pour l'amstrad. Je me souviens que l'éditeur était sur 1 disque, mais pendant la compilation, il a fallu basculer en avant et en arrière entre disque1 et disque2 au fur et à mesure que les processus de compilation se sont poursuivis (cela peut même avoir nécessité un passage au disque du système d'exploitation à certains moments des processus (mais que je ne suis pas si sûr off)).

Un bon vieux temps où tout le système d'exploitation était installé sur une seule disquette 3,5 (mais pas grand-chose d'autre).

Martin York
la source
4
Complètement vrai. Lorsque le compilateur "lightspeed C" est sorti pour le macintosh et "turbo C" pour les PC MS-DOS, nous étions ravis car il fonctionnait en une seule passe.
S.Lott
3,5? L'Amstrad de ma famille avait un lecteur de disquette de 2,5 pouces. Et oui, CP | M était sur le disque 1 d'un ensemble de 4, et Logo était sur le disque 4. Je ne me souviens plus de ce qu'il y avait là-bas.
Peter Taylor
@Peter Taylor: Vous avez plus que probablement raison. Cela fait si longtemps (je me sens vieux).
Martin York
1
Ce n'était pas un problème pour moi. Quand j'ai appris le C, j'avais un joli gros disque dur de 21 Mo :-)
dan04
1
@ dan04 - Descendez de nos pelouses collectives. Damn whipper snappers et leurs fantastiques disques durs shmancy .....;)
System Down
6

Les disquettes ont été introduites en 1971 - (la disquette de 8 pouces, c'est-à-dire), mais n'étaient pas populaires jusqu'au milieu des années 70 (avec les disques de 5,25 pouces). C date de 1973, donc je pense que la réponse dépend en grande partie de ce que vous appelez la "première version" et du contexte de compilation. Pensez à ces variables:

  • Bibliothèques utilisées . Lors de la compilation d'une bibliothèque qui n'est pas sur le disque actuel, vous devrez changer les disquettes entre les deux.
  • Complexité du programme ("Hello world" n'est pas la même chose que "Norton Commander")
  • Matériel (personnellement, je pense que la compilation sérieuse se faisait presque toujours sur des ordinateurs centraux ou des mini-ordinateurs)

Après tout - de nos jours, la compilation prend encore plusieurs minutes - ajustez simplement le compromis entre votre matériel et la complexité du programme. Seule la partie disquette n'est pas :-).

Tenez également compte du fait qu'une grande partie de l'informatique dans les années 70 se faisait encore sur une construction terminal-mainframe, donc changer de disquette est peut-être quelque peu improbable (au moins dans un contexte de production d'entreprise. Je ne sais pas si C a été utilisé comme "maison" " Langue).

vstrien
la source
5
La "première" version ne fonctionnait pas sur disquettes. Il s'agissait d'un système PDP-11 basé sur un disque dur chez AT&T. Cependant, la première version pour un ordinateur avec des disquettes (c'est-à-dire CP / M, MS-DOS, etc.) était assez difficile à gérer.
S.Lott
Je me souviens avoir vu une disquette (disque amovible) des années 60. Il faisait 4 pieds de diamètre. Ils étaient montés sur du contreplaqué pour pouvoir être enroulés dans le laboratoire. Tenu environ 5K si je me souviens bien.
Martin York
Vous ne voulez pas remplacer celui-là pour chaque exécution du compilateur! J'adorerais voir une photo de celui-ci :-).
vstrien
6

Ma première incursion dans l'apprentissage de C était sur un Commodore 64 (oui, il y avait un compilateur pour cela), à la fin des années 80. Si je me souviens bien, le compilateur / éditeur / éditeur de liens était sur un disque et votre source était sur un autre et vous avez dû échanger au moins une fois pendant la phase de compilation. Bien sûr, sur le C-64, vous échangiez toujours.

Pour ce que ça vaut, j'ai toujours la boîte et les documents pour ce compilateur. Fait pour une lecture nostalgique tous les deux ans.

DevSolo
la source
2
J'ai également appris C sur le Commodore 64 en 1984. Je me souviens avoir échangé des disquettes pendant la compilation assez clairement. Je veux dire que j'utilisais un compilateur d'Abacus, mais je ne m'en souviens peut-être pas correctement.
Clint Miller
@Clint, je suis sûr que vous avez raison. C'est le nom sur la boîte.
DevSolo
@Clint: J'avais le même compilateur. Le Commodore 64 était un ordinateur génial pour apprendre la programmation. Il était suffisamment avancé pour faire des trucs vraiment cool mais assez simple pour que vous puissiez comprendre tout le matériel avec lequel vous avez besoin d'interagir, ce qui était nécessaire car ils n'avaient pas les couches d'abstraction de haut niveau à l'époque qu'ils ont aujourd'hui.
Dunk
6

Mon premier compilateur C était sur un TRS-80 modèle 4 exécutant CP / M (le premier modèle qui le ferait correctement, n'ayant pas de mémoire faible mappée en permanence sur la ROM). Il fallait que le disque dans le premier lecteur ait CP / M dessus.

Une fois que j'avais fini avec l'éditeur que j'utilisais, je devais compiler, assembler et lier le programme avant de pouvoir l'exécuter. Chacun était son propre processus, lancé sur la ligne de commande. Le compilateur, l'assembleur et l'éditeur de liens ne tiendraient pas tous sur une disquette. (IIRC, l'assembleur et l'éditeur de liens pourraient s'emboîter.)

Par conséquent, j'aurais le programme et l'éditeur sur le disque système CP / M, et j'échangerais les disques du compilateur et de l'assembleur / éditeur de liens.

Je cherchais un programme qui me permettrait de fonctionner sans avoir de disque système, et j'avais un plan (dont je ne me souviens plus) pour configurer les choses afin de pouvoir créer un petit fichier batch et automatiser les appels en ligne de commande, mais je n'ai jamais suivi.

J'ai pratiquement abandonné C après avoir essayé d'utiliser ce système, et je suis retourné chez Pascal pendant plusieurs années.

David Thornley
la source
Probablement UCSD P-system Pascal?
quick_now
2
@quickly_now: Quelque chose qui s'est compilé en p-code, mais il n'a pas été facturé comme UCSD. Naturellement, je m'en suis débarrassé il y a des décennies et je m'en souviens peu. Quand j'ai eu Turbo Pascal, j'ai presque tout oublié.
David Thornley
5

Quand j'étais au lycée (1989-1990), nous faisions du pascal sur une pomme II et c'était LENT . vous pouvez écrire un programme de 100 lignes environ lorsque vous appuyez sur la compilation, cela prend quelques minutes. Je me souviens que vous aviez le temps d'aller dans la salle des hommes pendant la compilation avant que le programme ne s'exécute.

Environ à mi-chemin a jeté ce terme, j'ai obtenu un Mac SE qui était tellement plus rapide! Je pense que Pascal était tellement mieux.

Zachary K
la source
2
+1 pour avoir mentionné le Mac SE. Je me souviens avoir obtenu un disque dur externe de 20 Mo pour mon Mac SE. Il était si grand que tout le Mac était assis dessus.
philosodad
J'avais un interne, mais j'en avais peut-être aussi un. Très joli design vraiment.
Zachary K
5

Le père d'un de mes amis était un programmeur de haut niveau à l'époque. Il était fatigué d'attendre les résultats de ses compilations, des jours, parfois des semaines. Travaillé principalement à domicile, écrire le programme, perforer les cartes, conduire, donner la boîte à l'opérateur et argumenter pendant un moment son code était plus important que tous les autres et attendre.

Parfois, le code n'a jamais atteint l'ordinateur, mon ami m'a raconté l'histoire de l'époque où son père était vraiment, je veux dire VRAIMENT en colère contre lui. Il n'a jamais vraiment compris pourquoi jusqu'à bien plus tard dans la vie, mais ce garçon plein de papiers rigides avait l'air amusant ... hé plein de trous aussi !!!

Un jour, il a porté l'argument à la direction et je suppose qu'il a fait une bonne affaire car ils ont livré un mini-ordinateur chez lui. Je dois mentionner que, à ce moment-là, l'ordinateur occupait la majeure partie du salon qui, bien sûr, était devenu interdit.

Alors oui, l'échange de disques entre les étapes d'une compilation est une possibilité certaine et croyez-moi quand je dis que c'était une VASTE amélioration par rapport à ce qui était disponible auparavant !!!

Attendez une vingtaine d'années environ, j'imagine que quelqu'un pose une question un peu comme:

Est-il vrai qu'avant, ils devaient utiliser des claviers pour taper leur code lettre par lettre?

Newtopian
la source
3

Je ne sais pas pour C, mais dans ce laps de temps pendant un certain temps, j'ai eu un compilateur Microsoft Fortran qui a pris deux passes. Non seulement cela, mais j'avais un programme d'une page qui fonctionnait mal (je suis sûr que le code source était correct), alors c'était tout, j'ai abandonné la compilation pour le PC. C'était avant Internet et le PC appartenait à mon employeur. C'était toujours bien d'avoir le PC, je pouvais mettre du travail sur une disquette et le ramener à la maison et le modifier. Donc, quand je suis arrivé au travail le lendemain, j'avais déjà un programme édité, plutôt que des notes manuscrites.

Même à une époque beaucoup plus ancienne (j'ai commencé la programmation au printemps 70), le compilateur était une seule commande JCL sur un système d'exploitation central de traitement par lots. C'est comme décrit ci-dessus. Vous avez fait la queue pour un clavier et vous avez perforé vos cartes holerith. Vous les avez ensuite remis à un opérateur par une fenêtre. Selon la couleur de votre PNC (essentiellement une carte perforée contenant un numéro de compte / mot de passe), vous pouvez obtenir vos résultats de 1 à 24 heures plus tard. Les élèves de bas niveau ont connu le dernier revirement. C'était vraiment un défi de terminer la mission "bonjour le monde" dans les deux semaines qui lui étaient allouées! Quelques années plus tard, j'ai obtenu un travail de programmation à temps partiel et je pouvais passer la nuit au centre informatique. Certains d'entre nous pourraient même nourrir le lecteur de carte nous-mêmes. Ensuite, le retournement n'a duré que quelques minutes / Mais vous ne pouvez le faire que tard dans la nuit.

Ainsi, pendant longtemps, les compilateurs étaient principalement destinés aux mainframes (machines de classe millionnaire appartenant à de très grandes organisations). Et les quelques mini-ordinateurs autour devaient souvent être programmés de manière étrange et délicate. J'ai utilisé un mini-ordinateur pour numériser les sismogrammes. Il a fallu environ 10 à 15 minutes pour guider la bande de papier à travers elle pour démarrer le système d'exploitation, puis vous feriez votre chose sur la table du numériseur.

Omega Centauri
la source
2

Oui bien sûr. Je n'ai pas utilisé C sur ces vieilles machines CP / M, j'ai utilisé CB-80. BASIC compilé. (Et oui, c'était assez horrible). Sur un Heath / Zenith Z-89 avec 2 lecteurs de disquette pouvant contenir chacun 89 Ko.

La compilation sur un seul disque était tellement horrible qu'il fallait l'oublier. Échange de disque trop important. 2 lecteurs de disquette, c'était le LUXE! Source sur l'un, compilateur sur l'autre. Lancez une compilation et partez pour une tasse de thé pendant que la machine se met à "clang clang clang" alors que les disquettes sont engagées et désengagées et que les têtes claquent.

Le patron a acheté un disque dur de 5 Mo d'environ 18 x 18 x 8 pouces, alimenté séparément et fixé à l'arrière du H89 avec un câble ruban d'environ 4 pieds de long.

Oh la vitesse! et la capacité! avec 5 Mo de stockage.

vite_maintenant
la source
1

Je ne sais pas pour C (mon premier compilateur C fonctionnait à partir d'un disque dur et n'était pas rapide), mais le premier assembleur de macros que j'ai utilisé (C64) nécessitait une commutation sur disquette (une pour charger l'assembleur, l'autre pour charger le code), a pris plus de 20 minutes pour construire le système, et après quelques mois de développement, le lecteur de disquette et la carte mère ont surchauffé et sont morts.

Steven A. Lowe
la source
1

Collège en 1988 = Fortran sur un PC, 8088 512K (c'est un K !!) de RAM et un seul lecteur de disquette La compilation a pris 20-30 minutes, je n'ai pas eu à échanger les disquettes car j'avais une de ces nouvelles 720K.

Un Sun3 (68030 1Mb ram) et 24 terminaux vt100 pour toute la classe.

Martin Beckett
la source
1

Avant mon temps, je suppose. Ma première "vraie" programmation (sur PC, en tout cas) était COBOL. À cette époque, nous utilisions des PC IBM. Ils avaient 2 lecteurs de disquette 360k; l'un avait le compilateur, et l'autre avait votre code source.

Je sais que même mes projets collégiaux simples ont pris littéralement 15 minutes pour compiler en cours d'exécution sur ces disquettes - je courrais à la cafétéria pour le café pendant la compilation. Ensuite, pour le projet final, j'ai travaillé dessus chez mes copains. Il venait d'acquérir une toute nouvelle machine avec ce qu'on appelle un disque dur - 10 mégaoctets! Notre projet a été compilé en moins d'une minute. Cela m'a complètement époustouflé.

zpasternack
la source
Vous n'aviez probablement aucun tampon de disque configuré. Quelques-uns seulement ont fait des merveilles.
1

J'ai dû faire la danse de disquette sur mon ancien Mac 128K pour diverses applications, donc je n'en doute pas une minute, même si je n'ai pas pu donner de détails. Je ne serais pas surpris si cela ne faisait pas partie des raisons pour lesquelles les interprètes BASIC étaient si omniprésents sur les premiers ordinateurs personnels (pas besoin de plusieurs passes, tables de symboles, etc.).

John Bode
la source