Приветствую тебя, начинающий программист! Этот репозиторий создан специально для тебя. Здесь ты найдешь коллекцию игр из легендарной книги «101 BASIC Computer Games», переведенных на язык Python. Я хочу показать тебе, как всего несколько строк кода могут воплотить сложные идеи, чтобы ты мог без труда разобраться в логике написания программы, увлечься процессом и начать свои эксперименты.
Книга, которая вдохновила меня на создание этого учебника
В 1973 году была опубликована книга «101 BASIC Computer Games», быстро ставшая настоящим бестселлером, разойдясь тиражом в миллион экземпляров. Она сыграла ключевую роль в популяризации программирования, а за её успехом стояла компания Digital Equipment Corporation (DEC), один из пионеров в производстве мини-компьютеров.
Немного истории развития вычислительной техники
К концу пятидесятых годов прошлого века гигантские машины на электронных лампах, такие как ENIAC и MARK-1 в основном были замещены поколением компьютеров на транзисторах. Каждое следующее поколение разительно отличалось быстродействием и объемом обрабатываемых данных, но и они занимали немало места и требовали команду профессионалов для обслуживания. На рынке того времени было несколько выдающихся марок вычислительных машин, которые оказали значительное влияние на развитие технологий и науки. Перечислю некоторые из них:
IBM 709 — одна из самых популярных машин того времени, использовавшаяся для научных и военных расчетов.
UNIVAC I (Universal Automatic Computer I) — первый коммерчески успешный компьютер, разработанный для использования в бизнесе и правительственных учреждениях.
PDP-1 (Programmed Data Processor-1) — первый компьютер из линейки PDP, разработанный компанией Digital Equipment Corporation (DEC), который стал основой для развития мини-компьютеров. (о компании DEC будет написано ниже)
EDSAC (Electronic Delay Storage Automatic Calculator) — один из первых практических компьютеров с хранимой программой, разработанный в Кембриджском университете.
CDC 1604 — компьютер компании Control Data Corporation, известный своей высокой производительностью и использованием в научных исследованиях.
ENIAC
Панель управления для компьютера UNIVAC 1232. Этот конкретный компьютер использовался примерно с 1967 по 1990 год в Центре управления спутниками ВВС США в Саннивейле, Калифорния. Этот компьютер является военной версией универсального коммерческого компьютера UNIVAC 490. Находится в Смитсоновском национальном музее авиации и космонавтики в Центре Удвара-Хейзи. (https://commons.wikimedia.org/)
Программирование в 1970-80х: эпоха перфокарт и терпения
Процесс разработки 1970-х годах был совсем не таким, как сегодня. Доступ к вычислительным машинам был ограничен, и это влияло на весь процесс. В основном, это были армия, университеты, и научные учреждения. Программирование в те времена было скорее искусством, требующим кропотливости, трудолюбия и огромного терпения. Работа с кодом требовала внимательности, аккуратности и высокой степени усидчивости. Разработчик писал и редактировал код вручную в тетради или блокноте. Представь себе: никакой подсветки синтаксиса, автодополнения или отладчика! Если в код закрадывалась ошибка или нужно было что-то изменить, код переписывался заново или исправлялся аккуратными пометками. Это был долгий и монотонный процесс, требующий предельной концентрации. Ни о какой массовости профессии программиста речи не шло.
Ввод программы в машину был отдельным «искусством». Программист или оператор садился за перфоратор, рядом клал тетрадь с кодом и начинал набивать код на перфокарты. Перфоратор – это устройство, похожее на пишущую машинку, где каждая клавиша соответствовала определённой букве, цифре или символу. Нажатие клавиши пробивало отверстие в нужной колонке карты. Каждая карта представляла собой одну или несколько строк кода. После завершения набора карты передавались на проверку – верификацию. Оператор вводил в верификационное устройство данные повторно, а машина сверяла их с пробитыми отверстиями. Перфокарту с ошибкой либо заменяли, либо исправляли путём пробивки новых отверстий в подходящих колонках. Когда все карты были готовы, их раскладывали в строгой последовательности. Порядок был критически важен, так как именно в этой последовательности карты считывались машиной. Затем карты передавали на считывающее устройство. Для кодировки даже относительно небольших программ требовались сотни, тысячи, а то и десятки тысяч перфокарт. Любая ошибка, будь то неправильно пробитое отверстие или нарушение последовательности, приводили к сбою программы. И тогда весь процесс приходилось начинать заново.
Перфоратор IBM 29 Keypunch
FORTRAN IV Pocket Handbook, Daniel E. Alexander and Andrew C. Messer, McGraw Hill, 1972.(https://www.math-cs.gordon.edu/courses/cs323/FORTRAN/keypunch.jpg)
Эта стопка из 62 500 перфокарт — объемом 5 МБ — содержала программу управления гигантской военной компьютерной сетью SAGE.
DEC и Дэвид Ал
Выпускники Массачусетского технологического института (MIT) Кен Олсон и Харлан Андерсон не были новичками в вычислительной технике. Работая в Лаборатории Линкольна (научно-исследовательское учреждение Министерства обороны США в структуре Массачусетского технологического института) они выполнили бо́льшую часть проектов при разработке машин AN/FSQ- 7, TX-0 и TX-2. TX-0 был первым полностью транзисторным 16-битным компьютером с 16-битной адресацией и 16-битными инструкциями.
Название "AN/FSQ" происходит от Army-Navy / Fixed Special eQuipment.
AN/FSQ-7 был самой большой дискретной компьютерной системой из когда-либо созданных. Это была основная компьютерная система сети SAGE, разработанная и построенная IBM. Она была огромной, содержала около 49 000 электронных ламп, весила сотни тонн и потребляла мегаватты энергии. Программа на перфокартах из предыдущего фото запускалась на этой системе
(https://commons.wikimedia.org/)
В 1957 году Кеннет Олсен и Харлан Андерсон учредили компанию Digital Equipment Corporation (DEC) с целью удешевить и уменьшить габариты вычислительных машин. Начальный капитал компании составил $100 000, причём 70% из них принадлежало компании American Research and Development. Американская корпорация исследований и разработок (ARDC) была новаторской венчурной фирмой, а ее инвестиция в DEC считается первой в истории успеха венчурного капитала. Классический пример стартапа тех лет😊. Компания-учредитель настояла на том, чтобы в названии дочерней компании отсутствовало слово «computer», хотя изначально название планировалось как «Digital Computer Corporation». Это же условие было соблюдено и в названии продукции: вместо термина «computer» употреблялся термин «Programmable Data Processor», или сокращённо «PDP». Данное условие было связано с тем, что в те времена существовал стереотип о том, что компьютер — это нечто огромное и дорогое, требующее отдельного машинного зала и солидного обслуживающего персонала. Таким путём компания избежала негативных последствий этого стереотипа.
PDP-8 на выставке в Национальном музее вычислительной техники в Блетчли, Англия. Этот экземпляр относится к первому поколению PDP-8, построенному на дискретных транзисторах и позднее известному как Straight 8. (https://commons.wikimedia.org/)
Компьютер PDP-11/40 в Венском Техническом Музее. Внизу расположен процессор PDP–11/40, над ним установлен двойной накопитель DECtape TU56. (https://commons.wikimedia.org/)
В 1969 году корпорация DEC пригласила на работу Дэвида Ала в качестве консультанта по психологии обучения и маркетингу для разработки своей линейки учебных продуктов. У Ала было основательное образование в области точных наук и бизнеса: он получил учёные степени в области электротехники и делового администрирования. До прихода в DEC он успел получить опыт работы в сфере просвещения и был известен своим интересом к использованию компьютеров в учебном процессе. Он начал свою карьеру в Digital Equipment Corporation в качестве консультанта по психологии обучения и маркетингу для разработки линейки компьютеров, не требующих специального обучения для обслуживания вычислительных систем. Дэвид Ал редактировал информационный бюллетень DEC, в котором регулярно публиковались блоки кода и инструкции по программированию мини-компьютеров. Ал уговорил руководство издать сборник игр на языке BASIC.
- BASIC, язык, на котором написаны игры, тогда только набирал популярность.
- BASIC был спроектирован так, чтобы студенты могли без затруднений писать программы, используя терминалы с разделением времени. Он предназначался для более «простых» пользователей, не столько заинтересованных в скорости исполнения программ, сколько просто в возможности использовать компьютер для решения своих задач, не имея специальной подготовки.
- интерпретатор языка был в каждой моделей PDP, кроме самых ранних (PDP-1, PDP-4, PDP-5)
Сборник стоил 7,50 долларов плюс 50 центов за доставку. Сегодня эта цена эквивалентна примерно 50.25 долларам, учитывая среднегодовую инфляцию в 3.8%
Важную роль в создании книги сыграли энтузиасты программирования со всей страны. DEC объявила конкурс, приглашая программистов присылать свои игры на BASIC. Авторы лучших работ получали гонорар, а их игры включались в сборник. Этот краудсорсинговый подход сделал книгу поистине уникальной. Она стала не только сборником игр, но и отражением энтузиазма и творчества целого поколения программистов-любителей. DEC предъявляла достаточно строгие требования к оформлению присылаемых материалов, что было необходимо для унификации и упрощения процесса публикации. Вот некоторые из этих требований:
Бумага. Белая, нелинованная. Как можно меньше сгибов на распечатках.
Печать. Свежая черная лента. Красная не не принималась.
Перфолента. Предпочтительна была парафинированная фальцованная перфолента (бумага, пропитанная парафином для прочности и защиты с отверстиями для лентопротяжного механизма). Если использовалась лента с пропиткой (например, от телетайпа), её необходимо было аккуратно сложить (сгибы через каждые 8.5 дюймов (21.59 см)), оставив не менее 17 дюймов (43.18 см) пустого лидера и 8.5 дюймов (21.59 см) трейлера. Ленту с пропиткой требовалось заворачивать в пищевую пленку или вощеную бумагу, чтобы предотвратить загрязнение.
- Лидер — начало ленты, которое остается пустым перед началом записи данных.
- Трейлер — конец ленты, который остается пустым после завершения записи данных.
Кроме того, авторы должны были предоставить следующую информацию:
* Имя
* Полный адрес
* Телефон
* Школу (если есть)
* Возраст
* Используемую компьютерную систему
* Источник программы (оригинальная идея или адаптация)
Отправляя программу, автор давал Digital Equipment Corp. право публиковать, перепечатывать, распространять или использовать её любым другим способом. При этом авторство, конечно же, всегда указывалось.
Страница книги с инструкцией для авторов (us.archive.org)
Кроме этой книги, были изданы два дополнительных руководства:
Understanding Mathematics and Logic Using BASIC Computer Games для учеников 7-12 классов.
Getting Started in Classroom Computing для учеников 2-7 классов.
Книга выдержала три переиздания:
1-е издание: июль 1973 года.
2-е издание: апрель 1974 года.
3-е издание: март 1975 года.
В 1973 году Девида Ала уволили со своей должности в связи с сокращением штатов, но еще до увольнения он был принят в новое подразделение DEC. Эта группа трудилась над созданием компьютера, который был меньше, чем любой из когда-либо построенных, намереваясь вывести новый продукт на новые рынки, такие как школы. Им удалось построить компактную машину, сочетающую PDP-8 с терминалом VT50, а также, они смогли поместить PDP-11 в небольшой портативный корпус. Когда результат показали операционному комитету DEC, инженерам он понравился, но отдел продаж опасался, что это сократит продажи их существующих линий. В конечном итоге решение было принято Кеном Олсеном, одним из основателей Digital Equipment Corporation, который в конце концов заявил: «Я не вижу причин, по которым кому-то может понадобиться собственный компьютер».
На этом проект завершился.
В 1974 г. Ал покинул DEC, разочаровавшись в политике компании и основал Creative Computing, один из первых журналов, популяризаторов компьютеров. В течение следующего десятилетия Creative Computing охватывала весь спектр любительских, домашних и персональных компьютеров, и, хотя Ал продал журнал в начале 1980-х, он продолжал выполнять свои обязанности главного редактора.
В июне 2022 года Ал выпустил в общественное достояние все, что он когда-либо написал, от прозы до программного обеспечения
Продолжение истории. Дэвид Ал и Creative Computing
В этом сборнике
Я начинаю портировать игры на языке Python. Каждая игра сопровождается исходным кодом, подробным объяснением, блок-схемой и алгоритмом, чтобы ты смог легко понять, как она работает, и начать экспериментировать.
Обучение коду через написание игр дает ученику возможность увидеть осмысленный результат выполнения кода. В репозитории код написан максимально просто, чтобы быть доступным для начинающих. В процессе я буду давать рекомендации по написанию кода, комментариев и следованию стилю PEP-8.