Найти тему
⚠️ Инженерные знания

Как написали первую программу, если компьютера ещё не было?

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

Яйцо, курица или реле?
Яйцо, курица или реле?

Если не было компьютера, то нужно было как-то придумать программу, которая потом заработает на появившемся железе и писать её под это железо или же нужно было каким-то чудом разрабатывать одно под другое (что кажется логичным, но тяжело осознаётся на момент разработки). Но вопрос тут куда более глубокий и интересный, чем это видится на первый взгляд.

Современный читатель скажет - ну хорошо. Нет первой программы - накатите операционку и в рабочей среде напишите первую программу. Но самой операционки-то тоже нет. А ещё нет биоса и как такового понимания, что всё это вообще такое.

Тут стоит обратиться к тем знаниям, которые современные школьники могут получить, разве что, из учебников истории. Тогда всё встанет на свои места, а процесс развития вычислительной техники видится закономерным и логичным.

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

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

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

По сути машина Голдберга - это отличный пример первого механического компьютера :)
По сути машина Голдберга - это отличный пример первого механического компьютера :)

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

Всё программирование такой машины - это электромонтажная работа. Что с чем соединить, чтобы при срабатывании, например, механического таймера, выполнился цикл последовательных операций.

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

Позже появились перфокарты. Компьютер всё ещё был большой мясорубкой. Но представьте себе, что у вас уже есть перфокарта, которая представляет собой набор отверстий, куда "проваливаются" концевики при прохождении этой карты. Концевик нажался, цепь замкнулась, механизм сработал. Это позволило перейти к последовательному выполнению механических операций.

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

Нужно просто правильно замкнуть рубильники. Это раннее программирование
Нужно просто правильно замкнуть рубильники. Это раннее программирование

По сути это уже был прототип любой современной компьютерной программы. Только код считывался не автоматически, а сначала вносился механически ключами или рубильниками, а затем отправлялся на обработку главным ключом в цепи, который активизировал отработку "алгоритма".

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

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

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

Первый компьютер был настолько прост, что программировался ручками и включателями. Последовательное их упорядочивание позволяло системе работать. О написании кода задумались лишь тогда, когда мощности стали расти, а операций становилось всё больше и больше. Написание программы и развитие электронной начинки - это процессы взаимосвязанные. Поэтому, вопрос про то, что было первым, звучит совершенно некорректно.

Как жаль, что в риторическом вопросе относительно курицы ничего такого придумать нельзя.

---

⚡ Обязательно подпишитесь на Telegram проекта и читайте эксклюзивные статьи! Обновления каждый день!

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

👉💖 Ставьте лайки материалу, подписывайтесь на проект!