В силу возраста, к сожалению, не застал эпоху DOS и 386-го процессора, так как в те года мои родители даже не знали друг друга.
Компьютер я впервые увидел, вероятно, в 2001 году, когда мне было пять лет. Сразу же запомнил слова "Windows 98" и "Pentium III". В те года в нашей якутской деревне компьютеры были у считанных людей. Так как на том компьютере у тётки игр не было, а из сторонних программ только Office 97, в редкие моменты, когда мы шли к ней гости, я набирал буквы разными шрифтами и удивлялся, почему в большинстве шрифтов вместо букв прямоугольники. И пытался рисовать в Пейнте, куда же без этого.
Вообще, программистов у нас, конечно, не было. Примерный уровень компьютерной грамотности можно иллюстрировать следующей историей. В 2004, вроде, году, отмечали день рождения моей двоюродной сестры. Тогда я знал уже слова "Windows XP" и "Целерон", которые почему-то никому не нравились. Из этого события запомнился момент, когда дядя, пытаясь запустить какую-то игру, случайно передвинул значок на рабочем столе. Помню, как все собравшиеся вокруг компьютера были ошарашены: оказывается, значки на рабочем столе можно передвинуть!
Собственный компьютер мы купили на последние деньги 6 июня 2006 года. Использовался он только для игр. В те годы я думал, что программы создаются на каком-то специальном оборудовании, а слова "программирование" даже не знал. Единственный "компьютерщик" из 11 класса тогда мог переустановить Windows и я считал это чем-то очень сложным. Уже через три года компьютер был заменён на топовый по тогдашним меркам, с которого я сейчас и пишу этот ответ.
В январе 2010 года я получил доступ в интернет. Дела с ним на севере Якутии даже сейчас плохи, а уж в 2010, когда мегабайт стоил два рубля, было страшно за каждую просмотренную страницу. Тогда, наконец, я смог получить то, о чём мечтал последние пару лет -- инструменты для моддинга GTA: SA и Half-Life. Собственно, с GTA: SA и началось фактическое изучение программирования как такового, но тогда я этого не осознавал. Я даже не знал, что исходный текст компилируется в бинарный файл, я думал, что работаю сразу с бинарным файлом.
В трёхмерной серии GTA (с GTA III по GTA LCS) есть файл MAIN.SCM. Это бинарный файл, скомпилированный из исходников на неком внутреннем языке программирования. Rockstar North никакой документации по формату файла и исходников не предоставляет, поэтому сообщество моддеров дизассемблировало этот формат и создало некий язык, который инструкция к инструкции (опкод к опкоду) ассемблируется в MAIN.SCM. Понятно, что этот язык очень низкоуровневой, похож на ассемблер и достаточно трудно понять, например, как правильно пишутся условия и циклы, особенно школьнику, который даже не слышал слова "программирование". Тем не менее, я смог создать пару миссий и пройти их.
Следующим этапом стал Half-Life. Для начала я хотел сделать что-то простое и просто поменять количество патронов в обойме пистолета. Уже до этого я точно знал, что игровая логика хранится в файле hl.dll (или другой .dll в зависимости от аддона), но не знал, как же можно изменить этот файл. Да, я был уверен, что любой файл можно просто так взять и отредактировать, как картинку. Гугление привело меня к HEX-редакторам. Открыв файл я понял, что что-то не так и игры вряд ли делаются таким странным способом.
В течение двух-трёх дней я набрёл на форум HLFX и читал там все темы подряд в разделе, посвящённом как раз этому -- программированию. Кто-то даже выложил обрезанный для компиляции hl.dll Microsoft Visual C++ 6.0 и я, не жалея 200 рублей, скачал эту сборочку вместе с HLSDK -- исходниками для злополучного hl.dll. Видимо, ещё в значительной части России было туго с трафиком или скоростью. С горем пополам разобравшись с открытием проекта и его сборкой, первое время я просто копировал и вставлял кусочки кода из форумных постов. Затем стал вчитываться в копируемые куски и различать основные ключевые слова, такие как void, if, while, switch, case... Тем не менее, попытки самому написать что-то приводили к порче кода, который я сам восстановить был не в состоянии.
Через полмесяца я понял, что весь этот код написан на определённом языке -- C++. И код этот называется исходным. Происходит, оказывается, какая-то комплиментац... компиляция из текста в DLL или EXE, тут уж на выбор. Оказывается, существует не один язык программирования и даже не два. Интернет был дорогим и я не стремился лишний раз туда лезть, изучая язык по примерам с фруктами из VC++ 6.0. Удивительно, но английский текст не казался чем-то очень сложным. Попытка скомпилировать свою первую программу провалилась -- Visual C++ же был неполон! Тогда пришлось скачивать уже полный вариант VC++ 2008 Express Edition. Так и прошла весна, была написана куча вариантов небезызвестной программы "Hello, World!" и списаны сотни строк из туториалов по всему интернету. Вспоминается адрес shatalov...
Первую настоящую программу написал уже осенью того же 2010 года, когда в 8-м классе проходили удельную теплоёмкость. Было лень решать однотипные задачи, подставляя значения в кучу формул, вот и набросал программу, в которую просто надо было вписать числа из условия. Помню, как гордился собой. Когда в 10 классе начали проходить Паскаль, я был уже хорошо знаком со всем этим.
А количество патронов в пистолете в Half-Life так и не поменял.