Czy to prawda, że ​​pierwsze wersje kompilatorów C działały przez dziesiątki minut i wymagały wymiany dyskietek między etapami?

15

Zainspirowany tym pytaniem .

Słyszałem, że niektóre bardzo wczesne wersje kompilatorów C na komputery osobiste (chyba około 1980 r.) Znajdowały się na dwóch lub trzech dyskietkach, więc aby skompilować program, najpierw trzeba było włożyć dysk z „pierwszym przejściem”, uruchomić „pierwsze przejście”, następnie przejdź na dysk z „drugim przejściem”, uruchom to, a następnie zrób to samo dla „trzeciego przejścia”. Każde przejście trwało kilkadziesiąt minut, więc deweloper tracił dużo czasu nawet w przypadku literówki.

Jak realistyczne jest to twierdzenie? Jakie były rzeczywiste liczby i szczegóły?

sharptooth
źródło
2
Wygląda na to, że to może być prawda. W latach 60., kiedy programy znajdowały się na kartach perforowanych lub na taśmie papierowej, programiści mogą poczekać ponad dzień, aby dowiedzieć się o literówce.
Chris Card
3
Interesujące pytanie. Jeśli to prawda, cieszę się, że żyję teraz, a nie wtedy;)
Anto
2
Pamiętam, że musiałem zamieniać dyski wiele razy, aby skompilować pascal na komputerze osobistym Amstrad .
Martin York
Cóż, rzecz polegająca na czekaniu jednego dnia nie była tak bardzo czasem pracy, ale kolejką rzeczy przed nami. Były miejsca, do których chodziłeś, aby złożyć talię kart, a niektórzy naziści w białym płaszczu zabierali ją i wkładali karty do leja w wolnym czasie. Czas działania może wynosić tylko kilka minut lub sekund. Czas przetwarzania przez człowieka często wynosił kilka godzin.
Szybko_niedz
4
Widziałem współczesne projekty C ++, których pełne czyszczenie i przebudowa zajmuje kilkadziesiąt minut, a zamiast zamiany płyt robi strony pamięci wirtualnej automatycznie przez system operacyjny. Dlaczego wszyscy wciąż mówią, że komputery są tak zaawansowane? =)
Patrick Hughes

Odpowiedzi:

29

Absolutnie. Miałem Microsoft C (myślę, że wersja 1.0) dla komputera Zenith Z100 na początku lat 80., który był dostarczany na kilku dyskietkach 5,25 "360K. Z100 nie miał dysku twardego, więc musiałem często zamieniać dyskietki podczas przełączania między edytorem, kompilatorem i konsolidatorem. Kilkuminutowe czasy kompilacji i łączenia nie były niczym niezwykłym. To było tak denerwujące, że zapłaciłem 500 USD za 2 MB (tak, megabajt) karty rozszerzeń pamięci, aby móc załadować wszystkie pliki do Dysk RAM. To skróciło czas do około 30 sekund. Zabawne ... Naprawdę podobało mi się programowanie w tamtych czasach, ponieważ było fajnie. Dzisiaj to praca.

SteveM82
źródło
+1 jednak mam odwrotne uczucie. Po przeczytaniu odpowiedzi programowanie wydaje się dziś zabawniejsze.
Simon Bergot
Microsoft C 1.0 był w rzeczywistości przepakowaną wersją Lattice C. AFIK, Lattice C był pierwszym kompilatorem MS-DOS C. Wymagało to dwóch osobno uruchomionych przebiegów kompilatora.
OldFart
1
Łał! 2 MB! To było ogromne jak na razie.
System
Użyłem Turbo C 1.0 na komputerach IBM (no cóż, naprawdę AT, jeśli dobrze pamiętam) i nie było tak źle. Były to jednak szybsze maszyny.
Gort the Robot
9

To chyba prawda.

Na początku komputerów domowych (dla dzieci / rodziców nie Hobiest) maszyny nawet nie miały dysków twardych.

Moi rodzice mieli system Amstrad, na którym system operacyjny był na 1 dyskietce, co pozwoliło wybrać aplikację do uruchomienia, która mogła wymagać przełączenia dyskietek (tj. Edytory tekstu znajdowały się na innym dysku), wymagając ręcznego przełączenia z powrotem na dysk systemu operacyjnego, jeśli aplikacja potrzebowałem specjalistycznej usługi systemu operacyjnego.

Miałem kopię Pascala dla Amstrada. Pamiętam, że edytor znajdował się na 1 dysku, ale podczas kompilacji wymagał przełączania się między dyskiem 1 a dyskiem 2, ponieważ proces kompilacji był kontynuowany (może nawet wymagać przełączenia na dysk systemu operacyjnego w niektórych punktach procesów (ale nie jestem więc na pewno)).

To dobre stare czasy, kiedy cały system operacyjny mieścił się na jednej dyskietce 3.5 (ale niewiele więcej).

Martin York
źródło
4
Całkowita prawda. Kiedy pojawił się kompilator „lightspeed C” dla komputerów Macintosh i „turbo C” dla komputerów MS-DOS, byliśmy zachwyceni, ponieważ działał w jednym przebiegu.
S.Lott
3,5? Amstrad mojej rodziny miał napęd dyskietek 2,5 ". I tak, CP | M był na dysku 1 zestawu 4, a Logo na dysku 4. Nie pamiętam, co tam jeszcze było.
Peter Taylor
@Peter Taylor: Prawdopodobnie masz rację. To jest tak dawno (czuję się stary).
Martin York,
1
To nie był dla mnie problem. Kiedy nauczyłem się języka C, miałem ładny duży dysk twardy o pojemności 21 MB :-)
dan04,
1
@ dan04 - Zejdź z naszych zbiorowych trawników. Przeklęte lucjanowate bicze i ich fantazyjne dyski twarde .....;)
System Down
6

Dyskietki zostały wprowadzone w 1971 r. (8-calowa dyskietka), ale były popularne dopiero w połowie lat 70-tych (z dyskami 5,25 cala). C pochodzi z 1973 roku, więc myślę, że odpowiedź w dużej mierze zależy od tego, co nazywacie „pierwszą wersją” i od kontekstu kompilacji. Pomyśl o tych zmiennych:

  • Używane biblioteki . Podczas kompilowania biblioteki, która nie znajduje się na bieżącym dysku, będziesz musiał zmieniać dyskietki pomiędzy nimi.
  • Złożoność programu („Hello world” to nie to samo co „Norton Commander”)
  • Sprzęt (osobiście uważam, że poważna kompilacja była prawie zawsze wykonywana na komputerach mainframe lub minikomputerach)

W końcu - w dzisiejszych czasach kompilacja wciąż zajmuje kilka minut - wystarczy dostosować kompromis między sprzętem a złożonością programu. Tylko część dyskietki nie jest :-).

Weź również pod uwagę, że wiele obliczeń w latach 70-tych wciąż było wykonywanych na konstrukcji terminal-mainframe, więc zmiana dyskietek jest być może mało prawdopodobna (przynajmniej w kontekście produkcji biznesowej. Nie wiem, czy C był używany jako „dom” „język).

vstrien
źródło
5
„Pierwsza” wersja nie działała na dyskietkach. Był to system PDP-11 oparty na twardym dysku w AT&T. Jednak pierwsza wersja na komputer z dyskietkami (tj. CP / M, MS-DOS itp.) Była dość trudna w zarządzaniu.
S.Lott
Pamiętam, jak widziałem dyskietkę (dysk wymienny) z lat 60. Miał 4 stopy średnicy. Zostały one zamontowane na sklejce, aby można je było przewijać w laboratorium. Odbyłem około 5K, jak pamiętam.
Martin York
Nie chcesz zastępować tego dla każdego uruchomienia kompilatora! Bardzo chciałbym zobaczyć jego zdjęcie :-).
vstrien
6

Moja pierwsza próba nauki języka C odbyła się na Commodore 64 (tak, był do tego kompilator) pod koniec lat 80-tych. Jeśli dobrze pamiętam, kompilator / edytor / linker znajdował się na jednym dysku, a twoje źródło było na innym, a ty musiałeś co najmniej raz zamienić podczas etapu kompilacji. Oczywiście na C-64 zawsze zamieniasz.

Co do tego, co jest warte, wciąż mam pudełko i dokumenty dla tego kompilatora. Robi nostalgiczne czytanie co kilka lat.

DevSolo
źródło
2
Nauczyłem się również C na Commodore 64 w 1984 roku. Pamiętam, jak wymieniłem dyskietki podczas kompilacji. Chcę powiedzieć, że używałem kompilatora Abacusa, ale być może nie pamiętam tego poprawnie.
Clint Miller
@Clint, jestem pewien, że masz rację. To jest nazwa na pudełku.
DevSolo,
@Clint: Miałem ten sam kompilator. Commodore 64 był niesamowitym komputerem do nauki programowania. Był na tyle zaawansowany, by robić naprawdę fajne rzeczy, ale na tyle prosty, że można było zrozumieć cały sprzęt, z którym trzeba było wchodzić w interakcje, co było wymagane, ponieważ nie miały wtedy warstw abstrakcji wysokiego poziomu, jakie mają dzisiaj.
Dunk
6

Mój pierwszy kompilator C był na TRS-80 Model 4 z uruchomionym CP / M (pierwszy model, który zrobiłby to poprawnie, nie mając na stałe mapowanych lokalizacji pamięci ROM na ROM). Wymagało to, aby dysk na pierwszym dysku miał CP / M na nim.

Kiedy skończyłem z jakimkolwiek edytorem, którego używałem, musiałem skompilować, złożyć i połączyć program, zanim będę mógł go uruchomić. Każdy z nich miał swój własny proces, rozpoczęty w linii poleceń. Kompilator, asembler i linker nie zmieściłyby się na jednej dyskietce. (IIRC, asembler i linker mogą pasować do siebie.)

Dlatego chciałbym mieć program i edytor na dysku systemowym CP / M i zamienić dyski kompilatora i asemblera / linkera.

Patrzyłem na program, który pozwoliłby mi działać bez dysku systemowego, i miałem plan (którego już nie pamiętam), aby skonfigurować rzeczy, aby móc zrobić mały plik wsadowy i zautomatyzować wywołania z wiersza poleceń, ale nigdy nie przeszedłem.

Prawie zrezygnowałem z C po próbie użycia tego systemu i wróciłem do Pascala na kilka lat.

David Thornley
źródło
Prawdopodobnie system P UCSD Pascal?
Szybko_niedz
2
@quickly_now: Coś, co skompilowało się do kodu p, ale nie było rozliczane jako UCSD. Naturalnie pozbyłem się go kilkadziesiąt lat temu i niewiele o tym pamiętam. Kiedy dostałem Turbo Pascal, prawie o tym zapomniałem.
David Thornley,
5

Kiedy byłem w liceum (1989-1990) Robiliśmy pascal na jabłku II i było WOLNIE . możesz napisać program składający się z około 100 linii, kiedy kompilujesz kompilację, zajęło to kilka minut. Pamiętam, że miałeś czas, aby przejść do męskiego pokoju, gdy kompilował się przed uruchomieniem programu.

Mniej więcej w połowie rzuciłem ten termin, że dostałem Mac SE, który był o wiele szybszy! Myślę, że Pascal był o wiele lepszy.

Zachary K.
źródło
2
+1 za wzmiankę o Mac SE. Pamiętam, że otrzymałem zewnętrzny dysk twardy o pojemności 20 MB na komputer Mac SE. Był tak duży, że cały Mac siedział na nim.
philosodad
Miałem wewnętrzny, ale mogłem też mieć jeden z nich. Naprawdę bardzo ładny design.
Zachary K
5

Ojciec mojego przyjaciela był wówczas znanym programistą. Zmęczyło go oczekiwanie na wyniki swoich kompilacji, dni, czasem tygodnie. Pracował głównie z domu, napisał program, uderzył kartami, przejechał, podał operatorowi skrzynkę i przez chwilę kłócił się, że jego kod był ważniejszy niż wszystkie inne i czekał.

Czasami kod nigdy nie dotarł do komputera, mój przyjaciel opowiedział mi historię, kiedy jego ojciec naprawdę, to znaczy NAPRAWDĘ się na niego wściekł. Nigdy tak naprawdę nie rozumiał, dlaczego jeszcze dużo później w życiu, ale chłopiec to pudełko pełne sztywnych papierów wyglądało na zabawę ... hej też pełne dziur !!!

Pewnego dnia skierował argument do kierownictwa i chyba zrobił dobrą sprawę, ponieważ dostarczyli mini-komputer do jego domu. Powinienem wspomnieć, że do tego czasu komputer zajmował większość salonu, który oczywiście stał się niedostępny.

Więc tak, zamiana dysków między etapami w kompilacji jest zdecydowaną możliwością i zaufaj mi, gdy powiem, że była to poprawa VAST w stosunku do tego, co było wcześniej dostępne !!!

Poczekaj około 20 lat, wyobrażam sobie, że ktoś zadaje pytanie w stylu:

Czy to prawda, że ​​wcześniej musieli używać klawiatury do wpisywania kodu literą po literze?

Newtopian
źródło
3

Nie wiem o C, ale w tym czasie miałem przez pewien czas kompilator Microsoft Fortran, który przeszedł dwa przejścia. Nie tylko to, ale miałem program o długości strony, który działał niepoprawnie (jestem pewien, że kod źródłowy miał rację), więc to wszystko, zrezygnowałem z kompilacji na PC. To były dni przed internetem, a komputer należał do mojego pracodawcy. Nadal świetnie było mieć komputer, mogłem umieścić pracę na dyskietce, zabrać ją do domu i edytować. Kiedy więc następnego dnia zabrałem się do pracy, miałem już edytowany program, a nie odręczne notatki.

Nawet we wcześniejszych dniach (zacząłem programować wiosnę 70), kompilator był pojedynczą komendą JCL w systemie operacyjnym przetwarzania wsadowego. To tak jak opisano powyżej. Czekałeś w kolejce na keypunch i uderzyłeś w karty holerith. Następnie podałeś je operatorowi przez okno. W zależności od koloru twojego PNC (w zasadzie perforowanej karty zawierającej numer konta / hasło), możesz odzyskać swoje wyniki od 1 do 24 godzin później. Uczniowie niskiego poziomu mieli późniejszy zwrot. Naprawdę trudno było ukończyć zadanie „witaj świecie” w ciągu dwóch tygodni! Kilka lat później dostałem pracę w niepełnym wymiarze godzin i mogłem spędzać noc w centrum komputerowym. Niektórzy z nas mogliby nawet sami nakarmić czytnik kart. Potem wystarczy kilka minut / Ale można to zrobić tylko późno w nocy.

Przez długi czas kompilatory dotyczyły głównie komputerów mainframe (maszyny klasy miliona dolarów należące do bardzo dużych organizacji). A kilka minikomputerów w okolicy często trzeba było programować w dziwny i skomplikowany sposób. Użyłem jednego mini-komputera do digitalizacji sejsmogramów. Uruchomienie systemu operacyjnego zajęło około 10-15 minut prowadzenia taśmy papierowej, a następnie zrobiłbyś swoje na stole do digitalizacji.

Omega Centauri
źródło
2

Tak, na pewno. Nie używałem C na tych starych maszynach CP / M, użyłem CB-80. Skompilowany BASIC. (I tak, to było dość okropne). Na Heath / Zenith Z-89 z 2 dyskietkami o pojemności 89K.

Kompilacja na jednym dysku była tak okropna, że ​​zapomniałem o niej. Zbyt dużo wymiany dysku. 2 dyskietki były LUKSUSOWE! Źródło na jednym, kompilator na drugim. Ustaw kompilację i odejdź po filiżankę herbaty, podczas gdy maszyna przełączyła się na „clang clang clang”, gdy dyskietki były włączane i wyłączane, a głowy machały głowami.

Szef kupił dysk twardy 5 MB o wymiarach około 18 x 18 x 8 cali, oddzielnie zasilany i przymocowany z tyłu H89 za pomocą kabla taśmowego o długości około 4 stóp.

Och, prędkość! i pojemność! z 5 MB pamięci.

szybko
źródło
1

nie wiem o C (mój pierwszy kompilator C działał z dysku twardego i nie był szybki), ale pierwszy używany asembler makr (C64) wymagał przełączania dyskietek (jeden w celu załadowania asemblera, drugi w celu załadowania kodu), zbudowanie systemu zajęło ponad 20 minut, a po kilku miesiącach rozwoju zarówno stacja dyskietek, jak i płyta główna przegrzały się i zginęły.

Steven A. Lowe
źródło
1

College w 1988 roku = Fortran na PC, 8088 512 KB (to K !!) pamięci RAM i pojedynczy napęd dyskietek Kompilowanie zajęło 20-30 minut, nie musiałem zamieniać dyskietek, ponieważ miałem jedno z tych 720K.

Sun3 (68030 1Mb RAM) i zaciski 24 vt100 dla całej klasy.

Martin Beckett
źródło
1

Chyba przed czasem. Moim pierwszym „prawdziwym” programowaniem (w każdym razie na PC) było COBOL. W tym czasie korzystaliśmy z komputerów IBM. Mieli 2 dyski 360k; jeden miał kompilator, a drugi kod źródłowy.

Wiem, że nawet moje proste projekty na studiach zajęły dosłownie 15 minut na skompilowanie tych dyskietek - biegałem do kawiarni na kawę podczas kompilacji. Potem przy ostatnim projekcie pracowałem nad tym w domu mojego kumpla. Właśnie dostał nową maszynę z tym dyskiem o nazwie dysk twardy - 10 megabajtów! Nasz projekt skompilowany w niecałą minutę. To całkowicie rozwaliło mój umysł.

zpasternack
źródło
Najprawdopodobniej nie skonfigurowano żadnych buforów dyskowych. Tylko kilka czyniło cuda.
1

Musiałem wykonać taniec dyskietek na moim starym komputerze Mac 128K dla różnych aplikacji, więc nie wątpię w to przez chwilę, chociaż nie mogłem podać żadnych szczegółów. Nie zdziwiłbym się, gdyby nie to tłumaczyło, dlaczego tłumacze BASIC-a były tak wszechobecne na wczesnych komputerach osobistych (nie potrzeba wielu przejść, tabel symboli itp.).

John Bode
źródło