Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Как первые программисты написали программы для программирования без программ для программирования?

ИсторияПрограммирование
Симеон Дункан
  ·   · 127,8 K
Специалист в области разработки систем...  · 3 янв 2021

В самых первых компьютерах программы писались в машинных кодах и первично вводились в память при помощи тумблеров, отвечающих за состояние каждого бита. Или же задавались напайкой соответствующих битам перемычек в постоянном запоминающем устройстве. Самые опытные программисты знали начальный загрузчик побитово наизусть и могли его ввести с тумблеров по памяти.

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

Вот такой интерфейс для ввода программ был на машинах до 1960-х годов:

https://upload.wikimedia.org/wikipedia/commons/6/6a/IBM360-65-1.corestore.jpg

(кстати, это пульт системы IBM S/360 – первого компьютера, в котором придумали делить память на байты, благодаря чему видны группы по 8 тумблеров).

Потом, имея такую введённую по битам программу (начальный загрузчик), можно было с её помощью уже вводить, например, с перфоркарт другие программы на машинном языке, не манипулируя битами. В конечном итоге на машинном языке были написаны первые трансляторы с ассемблера, затем на ассемблере – первые трансляторы с языка высокого уровня. А имея транслятор с языка высокого уровня на одной машине, можно уже его дописать таким образом, чтобы он генерировал машинный код для другой машины, и на этой второй машине не повторять полностью всю цепочку.

Сейчас, разумеется, все программы для новых компьютеров поначалу пишутся при помощи старых компьютеров.

Весь этот процессс развёртывания выполнения сложных программ при помощи многоэтапного усложения от самых простых называется bootstraping, или раскрутка.

7 экспертов согласны

Вадим, спасибо Вам за интереснейший ответ на уровне лекции. И за фото ЭВМ с Эрикой в правом нижнем углу.

Ничего особенного. Я сам написал довольно приличный компилятор в кодах 580-го микропроцессора. Редактор вводился с перфоленты, разбросанной по полу. Было очень увлекательно. Сегодня, конечно, это кажется полным абсурдом.

Агдамов Александр, а как компилировались программы без компиляторов? И ещё, как самих компиляторов компилируют?

Аналогично писал дизассемблер для Радио РК86 и драйвер для принтера СМ6337. В тетрадке строчки типа

4A MOV C,D

3C INR D

то есть шестнадцатеричный код команды и его расшифровка.

Затем последовательный ввод в ячейки памяти, вручную каждое число. Запуск, и на печать выходит вполне удобоваримый для понимания текст на языке ассемблер. Это было время, когда каждый бит можно было подержать в руке. Романтика

CD 4A 35 - Вызов подпрограммы по адресу 4A35. ... или 354A - уже забыл... :-(
C3 4A 35 - безусловный переход по этому же адресу.
FF - RST 7 - очень часто исполняемая команда, т.к. незапрограммированая область ПЗУ содержит именно коды FF.

Не давно пришлось программировать 556рт5 на программаторе 815. Данные как раз вводятся именно побитно. Три часа и две испорченные микросхемы. но программа записана. Скажу вам, весьма увлекательная процедура.

Александр К, Ну 512 байт можно конечно и ручками, особенно если на голом 815.

Но по мне проще было сварганить RT-prog и на чем нибудь, что под руку подвернется (хоть на бейсике) набросать генератор бинарников из логических выражений. А 815-ый гроб убрать на полку, чтоб не спотыкаться :D

О, Боже, вы раскрыли мне секрет все моей жизни. Спасибо большое!

Ууууууу шайтан программа

Всеравно ничего не понимаю ;(

Это действительно очень интересно, спасибо. А как нужно было понять что комбинация из тумблеров сможет создать необходимое...это ведь просто ноль и единица, из которых даже простую команду не представляю как сложить...я даже затрудняюсь правильно задать вопрос)...как люди пришли к тому что тумблеры, дающие ноль и один, смогут сложиться в (не знаю...) MS DOS))?

Хоб Энегерек, ну так компьютер устроен. MS DOS состоит из операторов языка Си, которые транслируются в последовательности машинных команд. А машинные команды имеют числовые коды, которые представляются в двоичной системе. И именно с этими числовыми кодами в двоичной системе как раз и работает процессор компьютера. Например, 10100001 означает “загрузить значение из записанного дальше адреса памяти в регистр A” и т.д.

Интересная статья,но как по мне было мало информации.Спасибо за ответ!

Точный ответ именно на поставленный вопрос "Как .... написали программы.. без программ" звучит так:

"На бумаге". Я один из первых. Рисуешь блок-схему и потом...уже на чем есть - механические перемычки, электрические перемычки, перфокарты, перфоленты... ну и далее, по нарастающей.

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

Я одна офигела от заголовка?

Первый
Я программист с 1965 года. Окончил физический...  · 31 мар 2021
Писали на бланках с 4 или 5 колонками: код операции и три адреса. Карандашом - чтобы стереть, если неправильно. Регистров, насколько помню, не было - для обработки массива команда модифицировалась сложением с константой... Читать далее
Работаю разработчиком с 2017 года, фронтендер...  · 18 февр 2021
Что бы понять ответ на этот вопрос, я бы поррекомендовал ознакомиться с трудами фон Неймана и Тьюринга. Особенно впечатляет знаменитая статья Тьюринга, где он описывает вычислительную машину. Есть хорошая книга Петцольд -... Читать далее
Юрист. Пишу статьи и книги по правовым и политичес...  · 23 янв 2021

Вот так и "раскручивается" искусственный интеллект. Сначала биты, потом один другого, потом другой третьего... Через несколько десятилетий раскрутится так, что человека задвинет.

Вряд ли. ИИ пока не создан.

Электроника радиотехника электрика программировани...  · 14 янв 2021
Вадим Румянцев всё верно ответил, но хочу добавить, что тот же вопрос можно задать в отношении любых технологий и инструментария. Например, как с нуля создать точный измерительные прибор, например, хотя бы – микрометр? 1. Берём... Читать далее
Занимаюсь компьютерами с 1974 года. Первый...  · 4 февр 2021
Я начинал програмистскую карьеру с отечественных ЭВМ м-220 в середине 70-х . Программы писались в машинных кодах. То есть вообще без использования языков программирования, потом появились мнемокоды ( автокоды), для которых... Читать далее
Программу писали на перфокартах путем выдавливания окошек. Перфокарты в ЭВМ вводили уже другие специалисты. Если... Читать дальше
Первый
инвалид, раньше летал, починяю компьютеры, товары...  · 23 янв 2021

Для ЭВМ не пробовал, а вот для станка с чпу в конце 80-х доводилось "набивать" программу на перфоленте вручную специальным дыроколом.Необходимо было уметь читать программу с перфоленты "по дырочкам".

Я в училище с перфокарт программы читал, пока не поставили перфоратор, где вверху перфокарты печатался листинг.

Действующий программист. 1948 г.р. Закончил...  · 29 янв 2021
Я работаю программистом с 1971. В начале своей карьеры писал программы для БЭСМ-4 в машинных кодах. Ввод через перфокарты. До этого будучи студентом мехмата МГУ работал на Урале 2 (ввод данных через перфорированную кинопленку)... Читать далее

Как можно удаленно тумблерами щелкать-то и перфоленту заправлять?)))

Преподаватель экономики, увлекаюсь ИТ, историей...  · 10 февр 2021
Первый Бейсик для ПК Альтаир Билл Гейтс и Пол Аллен писали на мини-компьютере PDP-11. Гейтс писал интерпретатор Бейсик, а Аллен написал эмулятор ПК Альтаир для PDP-11 (грешным делом, не помню, какая там стояла ОС), на PDP-11 их... Читать далее
#define FALSE TRUE //счастливой отладки  · 15 февр 2021
Очень просто: 1. отжал рычаг 2. выставил восемь тумблеров в положение 0 или 1 3. вжал рычаг 4. байт ушёл на ферритовую матрицу 5. ... 6. профит а можно было пропустить пункт 1 а вместо пункта 3 нажимать БКК (Большую Красную... Читать далее