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?
Odpowiedzi:
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.
źródło
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).
źródło
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:
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).
źródło
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.
źródło
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.
źródło
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.
źródło
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?
źródło
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.
źródło
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.
źródło
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.
źródło
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.
źródło
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ł.
źródło
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.).
źródło