bash.im ithappens.me zadolba.li
7990

Ты помнишь, как всё начиналось?

Недавно я наткнулся на свой инженерный калькулятор, с которым связаны мои самые яркие (как ни грустно это звучит) воспоминания о школе. Когда я учился в шестом, кажется, классе, родители решили подарить мне на день рождения его — инженерный калькулятор Casio CFX-9950GB аж с трёхцветным и невероятно большим на те времена (127×63 пикселя) дисплеем. Я особо не понимал, зачем он вообще нужен, но было достаточно забавно строить какие-то хитрые графики и вообще щёлкать по кнопкам. Ах да, забыл сказать, что к нему прилагалась толстенная инструкция, которую по понятным причинам я читать не стал и убрал куда-то в стол. Да и зачем читать, если и так всё понятно было в меню:

RUN — калькулятор;
GRAPH — рисовать графики;
DYNA — рисовать динамические графики;
PRGM — типа, программы;
MEM — показывает память;
CONT — меняет контрастность экрана;
STAT, MAT, LIST, TABLE, RECUR, CONICS, EQUA, TVM, LINK — неинтересно.

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

Страшнее было то, что встроенный язык программирования не имел ни намёка на логи или дебаггер. Программа работала до строчки, в которой была ошибка, и завершалась. Даже не показывала, на какой строке запнулась — крутись, как хочешь, старичок!

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

Я решил не останавливаться на достигнутом и написал свою первую игру «однорукий бандит». Идея была проста: отображается твой текущий баланс, ты вводишь сумму, на которую хочешь сыграть, далее заполняются случайным образом три поля, в каждом из которых может быть любой из трёх символов. Если поля совпадают, ты получаешь приз: ставку, умноженную на какой-то коэффициент. И начал я в эту игруху рубиться! Правда, играл недолго: быстро надоела, да и рассчитал я, останусь ли я в выигрыше в итоге или нет. Это, пожалуй, был первый раз, когда я занимался теорией вероятности, хоть и не знал, что это так называется.

В общем, моя светлая голова решила, что пора играть в что-то более интересное (и уж точно не текстовое, а с таким-то 2D-графоном). Нужно написать арканоид — ну, или хотя бы то, что хоть немного может за него сойти.

Из документации — только инструкция, интернета нет нигде и ни у кого, и ни одного человека, который бы понимал, что я делаю, тоже нет. Зато есть среда разработки в инженерном калькуляторе, в которой, чтобы ввести символ, нужно нажать комбинацию из двух, трёх, а иногда четырёх клавиш, без копипаста, без дебаггера, без способа найти проблемную строку в коде, на экране 20×6 символов. Вдобавок половина школы откровенно смеётся над чудиком, который выходит в обед на улицу, но вместо прогулок и игры в футбол сидит на шине и смотрит в калькулятор. Но я справился.

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

Хэппи-энд есть, только немного запоздалый. Я уже почти год на работе, которую безумно люблю: я разработчик на Java/Groovy.