12

Изучение программирования

Как сейчас человеку научиться программировать?

Самое простое это записаться на курсы, благо рекламы всяких разных курсов от «Python с трудоустройством» до «С++ за месяц» полно на любом сайте.
Можно смотреть обучающие ролики на Ютубе.
Можно читать обучающие статьи.
Можно задавать вопросы на форумах и читать Stack Overflow.
Можно скачать самоучители и учиться по ним.
Можно делать все это вместе взятое, так наверное даже будет эффективнее.

А как научиться программировать 12-и летнему подростку в начале 90-х в богом забытом моногороде, когда папа инженер по ДВС, мама медик, в школе даже компьютерного класса с монстрами типа БК-0010 нет, а интернетом не пахнет еще лет 10?

Лежал я тут недавно на диване, плевал в потолок и мой взгляд остановился на книжной полке, где у самой стенки составлены тоненькие брошюрки с пожелтевшими от времени корешками.
«А что это там такое черненькое белеет?» - подумал я, решив разобрать эту макулатуру и выбросить ненужное.

Первое, что попало в руки — вот такие книжечки:

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

И тут, как здесь принято говорить, воспоминание разблокировано.
На дворе 1992 или 1993 год и в подарок на день рождения я получаю бытовой компьютер ZX Spectrum.
Компьютеры продавались даже без упаковки. Просто тебе из-за прилавка вручали сам компьютер, блок питания, джойстик, инструкцию, шнурок для подключения к телевизору и аудиокассету с каким-то начальным набором игр.

Кассета мне попалась с сюрпризом. Кроме обычных пулялок-бродилок и прочих тетрисов в наборе оказалась игра Peep Show.
Что такое Peep Show мы тогда не знали, но картинка на заставке во время загрузки игры как-то не двусмысленно намекала, на что-то интересное:

Смысл игры оказался в следующем: Есть шесть дверей. За каждой дверью голая женщина. Чтобы открыть дверь нужно решать какие-то головоломки и ребусы.

И то ли головоломки оказались сложными, то ли терпения не хватало, но попробовав несколько раз открыть дверь я решил: ТАК!

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

Итак, понятно. Память это набор ячеек, каждая из которых имеет свой адрес. Адресация начинается с адреса 0 и заканчивается адресом 65535. Видеопамять находится в том же адресном пространстве, начинается с адреса 16384 и заканчивается адресом 22528. Схема вывода изображения на экран просто побитово читает эту область памяти и преобразует в видеосигнал (спасибо подшивкам журнала «Радио» в городской библиотеке). Игра с магнитофона загружается в память начиная с адреса 32768.
Для вывода картинки на экран нужно просто найти ее начальный адрес в оперативной памяти и скопировать в видеопамять столько байт, сколько она занимает.

Следующий вопрос: как копировать байты?
Во встроенном Бейсике есть команды PEEK и POKE. Первая получает байт по заданному адресу, а вторая записывает заданное значение в память по заданному адресу.

Это все хорошо, но когда я обычным образом загружаю игру командой LOAD““ игра просто запускается и не дает мне писать какие-либо команды. Кроме того, в оперативной памяти кроме самой игры еще где-то должна располагаться моя программа копирования изображений голых женщин. Значит надо управлять памятью и загрузкой.
Какими-то комбинациями команд LOAD DATA и LOAD CODE пропускаю загрузку первоначального загрузчика, а загружаю только основные файлы игры уже по определенному мной адресу.

Код игры загружен в память, но как теперь искать адреса, по которым лежат голые женщины? Самое простое решение это начиная с адреса 32768 последовательно в циклах копировать в видеопамять блоки по 6144 байта. Рано или поздно среди цветной мешанины на экране появятся фрагменты изображений.
Сказано — сделано. Но оказалось, что интерпретатор Бейсика работает ну ОООчень медленно. Первое копирование цветной мешанины происходило построчно, как в плохой анимации к какому-то дешевому фильму про хакеров.
Как же так? Ведь сама игра выводит изображения моментально, значит должен быть способ делать это быстрее.
И действительно, в книжке написано:

Можно в машинных кодах, а можно на ассемблере. Что это такое, где эти штуки найти, а самое главное, как поместить в память и запустить на выполнение? В сотый раз перечитываю книжку. Ага! Вот оно! Глава 26 использование машинных кодов.

Т.е. получается, что команда ассемблера это просто число, которое можно поместить в память командой POKE по нужному адресу. Затем в следующий байт поместить ее операнд, затем следующую команду и так далее.
Смотрю, какие команды мне доступны:

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

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

1
Автор поста оценил этот комментарий
Крутой пост. Очень интересно как вы реально на этом учились. Сейчас пытаюсь учить Пайтон, кажется очень сложным
раскрыть ветку (1)
3
Автор поста оценил этот комментарий

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

Вам кажется сложным не Пайтон, а перестроить свой мозг мыслить другими категориями.

Не бросайте.

Дойдет до того, что от непонимания и неудач опустятся руки.

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

показать ответы
0
Автор поста оценил этот комментарий
Спасибо вам большое за поддержку! Сейчас так много инфы, вроде бери и делай, все разжёвано. Мне реально кажется подвигом что такие как вы в своё время выскребли знания, при дефиците информации и техники.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ну подвиг - не подвиг.

За информацией в библиотеку. Это было нормально для всех.

Мы же не знали, что может быть по другому.

Сейчас мы вот даже не зная друг друга, даже находясь на разных континентах можем поддерживать и подсказывать, а тогда в одном городе двор на двор или ГЭПА против техникума из-за косого взгляда дрались стенка на стенку.

Сегодня на работе нужно было вспомнить побитовые операции на С для контроллера AVR. И ведь знаю, что где-то в тетрадке это записано, но загуглить стало уже проще и быстрее.

Мир меняется, становится удобнее. Люди меняются. И это хорошо.

0
Автор поста оценил этот комментарий
Комментарий удален.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Да, интернет перевернул нашу жизнь.

Я, вот, в 40 лет с его помощью нотную грамоту выучил))))

0
Автор поста оценил этот комментарий
Чё то мне кажется, что видеопамять была либо в конце, либо в начале. Давно это было. Писал игрушку на асме. 1988 год
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

В начале, конечно, но не в самом.

В самом начале ПЗУ и векторы прерываний.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества