Я бы предположил, что был гораздо больший процент программистов, которые оба знают ассемблер и не будут дважды думать о программировании на ассемблере. И даже во времена IBM-PC и AT люди, которые никогда не программировали ничего, кроме ассемблера, все еще были вокруг и могли легко программировать круги вокруг программистов на C и Pascal.
Pascal и C были великолепны (для настольных компьютеров), когда они закрепились, и вы могли позволить себе компилятор, вы были счастливы просто программировать на каком-то новом языке и никогда не слышали об оптимизаторе, вы просто предполагали, что высокий язык уровня превращается в машинный код одинаково с каждым компилятором. Вы по-прежнему легко помещаете свои программы на 5,25-дюймовую дискету. И у вас было достаточно этих 640K, чтобы сэкономить.
Я думаю, нам нужно вернуть или провести больше 4K конкурсов по программированию. Напишите игру для GBA или NDS, но двоичный файл, данные, код и все остальное не может быть больше 4K. Или, возможно, заново изобрести игровой процесс с астероидами, камнями, кораблями, плохими парнями, ракетами, не беспокойтесь о пикселях видео, потому что, во-первых, это не так, а во-вторых, что обрабатывается вторым процессором (хорошо, аппаратный конечный автомат) , просто сгенерируйте команды векторного рисования. Сейчас есть бесплатные компиляторы 6502 C и паскаль-компиляторы, основанные на p-коде, чтобы было легко запустить вывод на 6502 и посмотреть, сможете ли вы получить частоту кадров в реальном времени до 1,5 МГц или что бы то ни было Бег. И вписался в выпускной. Я думаю, что упражнение ответит на ваш вопрос. ИЛИ ... просто создайте интерпретатор p-кода во время выполнения и посмотрите, подходит ли он. (standardpascal.org, ищите компилятор p5).
Горстка Кбайт - это тысяча строк кода или меньше. В программе не было ничего особенного, и ассемблер совсем не сложен, конечно, не на 6502 или других подобных системах. У вас не было кешей, mmus, виртуализации и многоядерности, по крайней мере, тех головных болей, которые мы испытываем сегодня. У вас была свобода выбора любого резистора, который вы хотели, каждая подпрограмма могла использовать свое собственное соглашение о вызовах, вы не выбрасывали огромное количество команд, которые занимались жонглированием регистров, стека или памяти, просто чтобы вы могли вызывать функции стандартным способом. У вас было только одно прерывание, и вы использовали его для опроса и управления оборудованием (обновления видео, равномерно синхронизированный опрос кнопок и другой ввод данных пользователем, опрос детектора четверти слота даже во время игры).
Астероиды выглядят как приблизительно 3000 линий ассемблера. С эффективностью компиляторов сейчас или потом я бы сказал, что вам нужно написать целую игру примерно в 500 строк кода на C, чтобы превзойти это, паскаль с использованием p-кода, я дам вам 100 строк кода, ладно, 200 (не p -код, но оптимизирован для цели, я дам вам больше строк, чем C).
Atari VCS (a.k.a 2600) даже не имел памяти для буфера кадров для видео. Программа должна была генерировать пиксели как раз вовремя, а также выполнять все игровые задачи. Конечно, не много пикселей, но подумайте о задаче программирования и ограниченных размерах и скорости. Для чего-то подобного вы начинаете понимать, сколько инструкций на пиксель, а мы говорим небольшое число. Скомпилированный код высокого уровня будет работать с перебоями и не будет достаточно плавным, чтобы гарантировать время.
Если у вас есть шанс разобрать некоторые из этих старых игровых дисков, очень образовательных, последовательности инструкций часто бывают очень элегантными. У оптимизированного скомпилированного кода высокого уровня есть классные приемы, но это не то же самое.
Предположительно, лучшие языки и компиляторы не делают вас автоматически лучше, быстрее, эффективнее или надежнее. Точно так же, как модный автомобиль не делает кого-то лучшим водителем.