Правда ли, что первые версии компиляторов C работали в течение десятков минут и требовали смены дискет между этапами?

15

Вдохновлен этим вопросом .

Я слышал, что некоторые очень ранние версии компиляторов C для персональных компьютеров (я полагаю, это около 1980 года) располагались на двух или трех дискетах, поэтому для компиляции программы сначала нужно было вставить диск с «первым проходом», запустить «первый проход», затем перейдите на диск со «вторым проходом», запустите его, затем сделайте то же самое для «третьего прохода». Каждый проход длился десятки минут, поэтому разработчик потерял много времени даже в случае опечатки.

Насколько реалистично это утверждение? Каковы были реальные цифры и детали?

Sharptooth
источник
2
Похоже, это может быть правдой. В 60-х годах, когда программы были на перфокартах или бумажной ленте, программисту приходилось ждать больше суток, чтобы узнать об опечатке.
Крис Кард
3
Интересный вопрос. Если бы это было правдой, я рад, что живу сейчас, а не тогда;)
Anto
2
Я помню, что мне приходилось менять диски несколько раз, чтобы скомпилировать паскаль на персональном компьютере Amstrad .
Мартин Йорк,
Хорошо, что ожидание дня было не столько временем выполнения работы, сколько очередью вещей впереди. Раньше были места, куда вы отправляли свою колоду карт, и какой-то нацист в белом халате забирал ее и складывал карты в бункер на досуге. Время выполнения может составлять всего несколько минут или секунд. Время обработки человеком часто составляло часы.
quick_now
4
Я видел современные проекты C ++, в которых полная очистка и перестройка занимают десятки минут, и вместо смены диска он автоматически создает страницы виртуальной памяти через ОС. Почему все продолжают говорить, что компьютеры в наши дни такие продвинутые? =)
Патрик Хьюз

Ответы:

29

Абсолютно. У меня был Microsoft C (я думаю, версия 1.0) для компьютера Zenith Z100 в начале 80-х, который поставлялся на нескольких 5,25-дюймовых дискетах 360K. У Z100 не было жесткого диска, поэтому мне приходилось часто менять местами дискеты, когда я переключался между редактором, компилятором и компоновщиком. Время компиляции и компоновки в несколько минут не было чем-то необычным. Это стало настолько раздражающим, что я заплатил 500 долларов за плату расширения памяти объемом 2 МБ (да, мегабайт), чтобы я мог загрузить все файлы в RAM-диск. Это сократило время примерно до 30 секунд. Забавно ... В те дни мне действительно нравилось программировать, потому что это было весело. Сегодня это работа.

SteveM82
источник
+1 однако у меня противоположное чувство. После прочтения вашего программного обеспечения сегодня вы вдруг чувствуете себя смешнее.
Саймон Бергот
Microsoft C 1.0 была фактически перепакованной версией Lattice C. AFIK, Lattice C был первым компилятором MS-DOS C. Это потребовало двух проходов компилятора.
OldFart
1
Ого! 2 МБ! Это было огромно для того времени.
Система отключена
Я использовал Turbo C 1.0 на ПК IBM (ну, действительно, AT, если я правильно помню), и это было не так уж плохо. Это были более быстрые машины.
Gort Робот
9

Это, вероятно, правда.

В первые дни домашних вычислений (для детей / родителей, а не Hobiest) машины даже не имели жестких дисков.

У моих родителей был Amstrad, операционная система была на 1 дискете, и это позволяло вам выбрать приложение для запуска, которое, возможно, потребовало переключения дискет (т.е. текстовые процессоры были на другом диске), требующих ручного переключения обратно на диск ОС, если приложение нужен какой-то специализированный сервис ОС.

У меня была копия паскаля для амстрада. Я помню, что редактор находился на 1 диске, но во время компиляции он требовал переключения назад и вперед между диском 1 и диском 2, поскольку процессы компиляции продолжались (возможно, он даже требовал переключения на диск ОС в определенные моменты процесса (но я не так что конечно)).

Старые добрые времена, когда вся ОС помещалась на одной дискете 3.5 (но не более того).

Мартин Йорк
источник
4
Абсолютно верно. Когда вышел компилятор «lightspeed C» для Macintosh и «Turbo C» для ПК с MS-DOS, мы были в восторге, потому что он работал за один проход.
S.Lott
3,5? У Amstrad моей семьи был 2,5 "дисковод гибких дисков. И да, CP | M был на диске 1 из набора из 4, а Logo был на диске 4. Я не помню, что там было еще.
Питер Тейлор
@ Питер Тейлор: Вы, скорее всего, будете правы. Это так давно (я чувствую себя старым).
Мартин Йорк
1
Не было проблемой для меня Когда я выучил C, у меня был хороший большой 21 МБ жесткий диск :-)
dan04
1
@ dan04 - Сойди с наших коллективных газонов. Чёрт возьми, болтун и их модные жесткие диски .....;)
System Down
6

Флоппи-диски были представлены в 1971 году (то есть 8-дюймовые флоппи-диски), но не были популярны до середины 70-х годов (с 5,25-дюймовыми дисками). C относится к 1973 году, поэтому я думаю, что ответ во многом зависит от того, что вы называете «первой версией», и каков был контекст компиляции. Подумайте об этих переменных:

  • Использованные библиотеки . При компиляции библиотеки, которой нет на текущем диске, вам придется менять дискеты между ними.
  • Сложность программы («Hello world» отличается от «Norton Commander»)
  • Аппаратное обеспечение (лично я думаю, что серьезная компиляция почти всегда выполнялась на мэйнфреймах или миникомпьютерах)

В конце концов - в наши дни компиляция все еще занимает несколько минут - просто измените компромисс между вашим оборудованием и сложностью программы. Только часть дискеты не :-).

Примите также во внимание, что большая часть вычислений в 70-х годах все еще выполнялась на конструкции терминала-мэйнфрейма, поэтому замена дискет может быть несколько маловероятной (по крайней мере, в контексте производственного процесса. Я не знаю, использовался ли C как «домашний»). "язык".

vstrien
источник
5
«Первая» версия не работала на дискетах. Это была система PDP-11 на жестком диске в AT & T. Однако с первой версией компьютера с дискетами (например, CP / M, MS-DOS и т. Д.) Было довольно сложно управлять.
S.Lott
Я помню, как видел дискету (съемный диск) 60-х годов. Это было 4 фута в поперечнике. Они были установлены на фанере, чтобы их можно было катать по лаборатории. Держится около 5К как я помню.
Мартин Йорк,
Вы не хотите заменять ТО для каждого запуска компилятора! Хотелось бы увидеть фотографию этого :-).
Встриен
6

Мой первый опыт изучения C был на Commodore 64 (да, для него был компилятор), еще в конце 80-х. Если я правильно помню, компилятор / редактор / компоновщик был на одном диске, а ваш источник - на другом, и вам пришлось хотя бы раз поменять местами на этапе компиляции. Конечно, на C-64 вы всегда обмениваетесь.

Что бы это ни стоило, у меня все еще есть коробка и документы для этого компилятора. Делает для некоторого ностальгического чтения каждые пару лет.

DevSolo
источник
2
Я также выучил C на Commodore 64 еще в 1984 году. Я помню, что во время компиляции я достаточно поменял местами дискеты. Я хочу сказать, что я использовал компилятор Abacus, но, возможно, я не помню это правильно.
Клинт Миллер
@ Clint, я уверен, что ты прав. Это имя на коробке.
DevSolo
@Clint: у меня был тот же компилятор. Commodore 64 был отличным компьютером для обучения программированию. Он был достаточно продвинут, чтобы делать действительно классные вещи, но достаточно прост, чтобы вы могли понимать все оборудование, с которым вам нужно взаимодействовать, что было необходимо, потому что у них тогда не было уровней абстракции высокого уровня, которые они имеют сегодня.
Данк
6

Мой первый компилятор C был на TRS-80 Model 4 с CP / M (первая модель, которая сделала бы это должным образом, не имея места с низкой памятью, постоянно привязанного к ПЗУ). Требуется диск на первом диске, чтобы иметь CP / M на нем.

Как только я закончил работу с любым редактором, я должен был скомпилировать, собрать и связать программу, прежде чем смог ее запустить. У каждого был свой процесс, запускаемый из командной строки. Компилятор, ассемблер и компоновщик не все поместятся на одной дискете. (IIRC, ассемблер и компоновщик могут совмещаться.)

Следовательно, я должен иметь программу и редактор на системном диске CP / M и менять местами на дисках компилятора и ассемблера / компоновщика.

Я смотрел на программу, которая позволяла бы мне запускаться без системного диска, и у меня был план (который я больше не помню), чтобы настроить все, чтобы я мог сделать небольшой командный файл и автоматизировать вызовы командной строки, но я никогда не доводил до конца.

Я довольно сильно разочаровался в Си после попытки использовать эту систему и вернулся на Паскаль на несколько лет.

Дэвид Торнли
источник
Вероятно, UCSD P-система Pascal?
quick_now
2
@quickly_now: что-то, что скомпилировано в p-код, но не было объявлено как UCSD. Естественно, я избавился от этого десятилетия назад и мало что о нем помню. Когда я получил Turbo Pascal, я почти забыл об этом.
Дэвид Торнли
5

Когда я учился в средней школе (1989-1990), мы делали паскаль на яблоке II, и это было МЕДЛЕННО . Вы можете написать программу из 100 строк или около того, когда вы нажмете «compile», это займет несколько минут. Я помню, что у вас было время пойти в мужскую комнату, пока она собиралась, до запуска программы.

Примерно на полпути бросил этот термин, я получил Mac SE, который был намного быстрее! Думаю, Паскаль был намного лучше.

Захари К
источник
2
+1 за упоминание Mac SE. Я помню, как получил 20 МБ внешнего жесткого диска для моего Mac SE. Он был настолько большой, что весь Mac сидел на нем.
Philododad
У меня было внутреннее, но у меня, возможно, был и один из них. Очень хороший дизайн на самом деле.
Захари К
5

Отец моего друга был известным программистом того времени. Он устал ждать результатов своих сборок, дни, иногда недели. Работал в основном из дома, писал программу, перфорировал карты, проезжал, отдал коробку оператору и поспорил на время, его код был важнее всех остальных и ждал.

Иногда код никогда не доходил до компьютера, мой друг рассказывал мне историю того времени, когда его отец действительно, я имею в виду ДЕЙСТВИТЕЛЬНО злиться на него. Он никогда не понимал, почему, пока намного позже в жизни, но мальчик, этот ящик, полный жестких бумаг, выглядел забавным ... эй, их дырявый тоже !!!

Однажды он передал спор руководству, и я думаю, что он привел веские доводы, потому что они доставили мини-компьютер к его дому. Я должен упомянуть, что к тому времени компьютер занял большую часть гостиной, что, конечно, стало недоступным.

Так что да, замена дисков между этапами компиляции - определенная возможность, и поверьте мне, когда я говорю, что это было НАИБОЛЕЕ улучшение по сравнению с тем, что было доступно до этого !!!

Просто подождите 20 лет или около того, я могу представить, что кто-то задает вопрос вроде:

Правда ли, что раньше им приходилось использовать клавиатуры для ввода кода по буквам?

Newtopian
источник
3

Я не знаю о C, но в то время у меня был компилятор Microsoft Fortran, который занимал два прохода. Мало того, у меня была программа длиной в страницу, которая работала некорректно (я уверен, что исходный код был верным), так что на этом я полностью отказался от компиляции для ПК. Это было до интернета, и компьютер принадлежал моему работодателю. Было по-прежнему замечательно иметь ПК, я мог положить работу на дискету, взять ее домой и отредактировать. Поэтому, когда я приступил к работе на следующий день, у меня уже была отредактированная программа, а не рукописные заметки.

Даже в более ранние времена (я начал программировать весной 70-х) компилятор представлял собой одну команду JCL в ОС мэйнфрейма пакетной обработки. Это так же, как описано выше. Вы ждали в очереди нажатия клавиш и били свои карточки с галерией. Затем вы передали их оператору через окно. В зависимости от цвета вашего PNC (обычно это перфокарта с номером счета / паролем), вы можете получить результаты через 1–24 часа. Студенты низкого уровня имели более поздний поворот. Это было действительно непросто - выполнить задание «Привет, мир!» За две недели, отведенные для этого! Пару лет спустя я устроился на работу по совместительству и мог тусоваться ночью в компьютерном центре. Некоторые из нас могут даже прокормить кардридер сами. Затем поворот займет всего несколько минут / Но вы можете сделать это только поздно ночью.

Так что долгое время компиляторы были в основном для мэйнфреймов (машин класса миллион долларов, принадлежащих очень крупным организациям). И немногочисленные мини-компьютеры часто приходилось программировать странным и хитрым способом. Я использовал один мини-компьютер для оцифровки сейсмограмм. На загрузку ОС ушло около 10-15 минут, чтобы провести через нее бумажную ленту, а затем вы бы занялись своими делами на планшете.

Омега Центавра
источник
2

Да точно. Я не использовал C на этих старых машинах CP / M, я использовал CB-80. Скомпилированный бейсик. (И да, это было довольно ужасно). На Heath / Zenith Z-89 с 2 дисководами, каждый из которых вмещал 89K.

Компиляция одного диска была настолько ужасна, что это был случай забыть об этом. Слишком большая замена диска. 2 флоппи-дисководов было ЛЮКС! Источник на одном, компилятор на другом. Запусти компиляцию и уйди за чашкой чая, пока машина работала как «лязг, лязг, лязг», когда дискеты были заняты и разъединены, а головы стучали.

Босс купил жесткий диск объемом 5 МБ, размером около 18x18x8 дюймов, с отдельным питанием и прикрепленный к задней панели H89 с помощью ленточного кабеля длиной около 4 футов.

Ох скорость! и вместимость! с 5 МБ памяти.

quickly_now
источник
1

не знаю о C (мой первый C-компилятор работал с жесткого диска и не был быстрым), но первый использованный мной Macro Assembler (C64) потребовал переключения с дискет (один для загрузки ассемблера, другой для загрузки код), на сборку системы ушло более 20 минут, и после нескольких месяцев разработки и дисковод гибких дисков, и материнская плата перегрелись и умерли.

Стивен А. Лоу
источник
1

Колледж в 1988 году = Фортран на ПК, 8088 512 КБ (это K !!) оперативной памяти и одного дисковода. Компиляция заняла 20-30 минут, мне не пришлось менять местами дискеты, потому что у меня была одна из этих новых 720К.

Sun3 (68030 1Mb ram) и 24 терминала vt100 для всего класса.

Мартин Беккет
источник
1

Я полагаю, до моего времени. Моим первым "настоящим" программированием (на ПК, в любом случае) был COBOL. В то время мы использовали компьютеры IBM. У них было 2 360k дисководов; у одного был компилятор, а у другого был ваш исходный код.

Я знаю, что даже мои простые проекты в колледже заняли буквально 15 минут, чтобы скомпилировать работу на этих дискетах - я бегал в кафетерий за кофе, пока он собирался. Затем для финального проекта я работал над ним в доме моих друзей. Он только что получил совершенно новую машину с этой штукой под названием жесткий диск - 10 мегабайт! Наш проект скомпилирован менее чем за минуту. Это полностью взорвало мой разум.

zpasternack
источник
Скорее всего, вы не настроили дисковые буферы. Лишь немногие сделали чудеса.
1

Мне приходилось танцевать дискеты на моем старом 128K Mac для различных приложений, поэтому я ни минуты не сомневался в этом, хотя не мог дать никаких подробностей. Я не удивлюсь, если бы это не было частью того, почему интерпретаторы BASIC были настолько распространены на ранних персональных компьютерах (не нужно многократных проходов, таблиц символов и т. Д.).

Джон Боде
источник