Разбор полетов — это серия эпизодов блога, в которых я, Антон Беза, обсуждаю, что я узнал, что мне понравилось и что не так сильно понравилось после выполнения созданной пользователем миссии из приложения Checkverse. Чтобы отправиться в собственные приключения, скачайте Checkverse для iPhone сегодня!

Еще один поздний вторник, печатающий. Вторники в последнее время благоприятны для меня, несмотря на их репутацию. Моя размолвка со вторниками — это сказка в другой раз. Сегодня вечером для программирования.

Некоторое время назад я создал миссию Hello World! на Checkverse. Это простая задача: написать простую программу, которая выводит Hello World! на 12 различных языках программирования. Я только что закончил последние несколько сегодня вечером.

Вот мои результаты:

Все это «Hello World!» вещи вызвали у меня ностальгию. Большинство языков были для меня новыми, но один особенно напомнил мне о том, как я впервые попал в программирование…

…все началось с видеоигр…

Память с произвольным доступом

Когда я был ребенком, я очень увлекался видеоиграми. Не столько игра с ними (мне хреново с ними играть), в основном их рисование. Я нарисовал Марио, Луиджи, Линка, Мегамена и многих других. Я вырезала их и летала по комнате детского сада. Прикрутите блоки. Со временем я начал создавать своих персонажей. Конечно, они были похожи на мои вдохновения, но знаете что? Линк был основан на Питере Пэне, так что ха! Сначала рисовал персонажей, потом рисовал уровни и вскоре просочился в страстное желание программировать.

Мой первоначальный опыт был связан с первым в мире компьютером моего отца. Это было не очень похоже на компьютер. Это было похоже на клавиатуру, которой нужно было сбросить несколько фунтов. Я был в восторге. — Как ты видишь вещи? Я попросил. «Вы подключаете его к телевизору», — ответил он. Думаю, он вытащил его с чердака, чтобы отвлечь детей от тихого дня. Он подключил его, включил и подарил мне гигантский том числовых заклинаний. «Просто введите числа, и вы сможете программировать вещи из книги», — сказал он. Занудный двоюродный брат этой телефонной книги был полон захватывающих названий, таких как «Pong» или «Paint», за которыми следовали страницы за страницами с номерами. Не было ни мыши, ни графического интерфейса пользователя. Когда компьютер загрузился, вы только что напечатали. Насколько я мог судить, не было ни проверки ошибок, ни предупреждений. О, и не было жесткого диска. Поэтому, когда вы выключили его, вы потеряли все. Весь день я тщательно, ох как тщательно, печатал номер за номером. Я не помню программу, которую я выбрал, просто разочарование, когда она, наконец, воплотилась в жизнь. В тот день я узнал кое-что ценное: внешность не всегда обманчива.

После этого шока можно было подумать, что я сдаюсь. Черт, я почти сделал. На самом деле я не возвращался к компьютерному волшебству до тех пор, пока в 5-м классе не появился послешкольный компьютерный клуб мистера Махара. Именно тогда я познакомился с HyperStudio. HyperStudio — это не цифры, HyperStudio — это графика! Это было странное мультимедийное приложение с убийственной программой рисования. Вы можете использовать его для создания веб-приложений или презентаций. Помню, я построил этот интерактивный урок про муравьев, еще одно мое увлечение (в конце концов, меня зовут Антон). Он был полон прекрасных иллюстраций насекомых и их холмов, которые я сделал. Насколько я помню, это было довольно удивительно. Это могло бы быть ревизионистским, но я думаю, что это было лучшим в классе. Итак, с высокими ожиданиями после этого шедевра я знал, что мне нужно повышать уровень. Вновь вдохновленный видеоиграми, для своего следующего проекта я создал первый (и последний) в мире шутер от первого лица/игру «выбери свое приключение». Представьте, что Doom работает в PowerPoint. Делал дома летом. Никакого хромого программирования. В HyperStudio был язык программирования, но я так и не выучил его.

Я не был глуп. Я знал, что никто не хотел играть в игру с частотой кадров 10 в минуту. Я знал, что мне придется изучить настоящее программирование. Это привело к моему следующему большому скачку в 7-м классе, когда я нашел книгу Программирование игр для Windows для чайников. Там говорилось о создании настоящих видеоигр, но была одна загвоздка. Мне придется столкнуться со своим старым врагом: цифрами. Но не только это! Буквы тоже! Я стал старше; мудрее. Я думал, что готов. Я думал, что справлюсь с этим, но не мог предвидеть, что произойдет дальше. Уже в самой первой главе я обнаружил, что мужество перед лицом персонажей — не единственный необходимый ингредиент. Было еще два: компилятор и знание C++. Компилятор? С++?. Я снова был плохо подготовлен! И позвольте мне сказать вам, что поиск C++ с помощью ранних поисковых систем — это заноза в заднице. Это была небольшая неудача. Я бы сделал все возможное, чтобы получить этот легендарный компилятор и изучить способы С++.

Я был счастливчиком. На Пасху родители подарили мне Microsoft Visual Studio 6.0. Это была самая дорогая вещь, которую я когда-либо получал на Пасху, и она вышла из-под контроля. Конечно, они знали, что я этого хотел, это было рекомендовано в книге, которая у меня была, но я никак не ожидал, что получу ее. Я был (и до сих пор) так благодарен, что они сделали это для меня (если бы я только знал о gcc). Имея в руках компилятор/редактор кода, мне пришлось изучать C++.

Если идиот может выучить C++, я смогу выучить C++, — подумал я, когда взял в руки Полное руководство идиота по C++. Как только я понял, как заставить Visual Studio выполнять мои требования, я начал со своих первых программ. Я узнал об этом экзотическом языке ints, bool и chars (я произносил его как char, как в Charizard, но позже узнал, что люди произносят его как car, как в charizard, но если это так, то не стал бы это будет "забота"!??). У меня был очень целенаправленный подход к обучению (до сих пор). Я быстро просмотрел скучные вещи сфокусированными на лазере глазами в поисках того, что мне нужно: иметь возможность печатать текст на экране и запускать игровую логику. Каждую новую вещь, которую я узнал, я добавил в текстовую приключенческую игру, которую я создал по ходу дела. Когда я узнал достаточно, чтобы сделать игру такой большой, какой хотел, я перестал читать книгу. Оказывается, чтобы сделать текстовую приключенческую игру, нужно знать только половину книги. Я сделал игру, но ОПЯТЬ никто не захотел в нее играть. Почему? Потому что у меня не было графики, вот почему! Сначала была графика без логики, теперь логика без графики. Тогда я понял, что чувствовал Том, когда он забрал консервный нож у Джерри только для того, чтобы обнаружить, что банка пропала.

Я пролистал оставшуюся часть книги и просмотрел указатель в поисках «графики», «спрайтов» и «изображений». Ничего такого. Я снова посмотрел на книгу по программированию игр для Windows. Слишком продвинутый еще, так как я только что пропустил половину той другой книги. Господи, есть ли более быстрый способ добраться до графики!?!? Я попросил всех своих знакомых, кто хоть немного упомянул о компьютерах или программировании, дать мне ускоренный курс по графическому программированию. Многие зануды старшего возраста, с которыми я разговаривал, говорили, что знают, как это делать, но, похоже, они никогда не были в состоянии осмысленно ответить на мои вопросы. Я думаю, они просто притворялись, что знают, что графическое программирование звучит круто. Какая куча лживых ботаников.

Без ясного пути к графическому программированию и подающего надежды интереса к кино мои увлечения кодированием пошли на убыль. Я пошел дальше. К старшим классам я вообще почти не программировал. Я по-прежнему ходил в компьютерный клуб и посещал (едва ли там) компьютерные курсы в старшей школе, но теперь я был полностью сосредоточен на кино. Свободное время было для рассказов, сценариев и съемок.

Когда средняя школа подходила к концу, я подал документы в несколько киношкол и одну на всякий случай школу компьютерных наук. Киношколы были сверхизбирательными. Я дошел до собеседования в одном из них, но в итоге меня отвергли. Поэтому осенью 2004 года я получил степень бакалавра компьютерных наук. Но я не отказался от кино. Мой план был прост: пройти компьютерные классы и сосредоточить все свое время и энергию на кинопроизводстве.

Но потом меня снова укусила ошибка программирования. Почему? В школе были роботы! Там были замечательные преподаватели и интересные задания! Мало того, уроки были легкими после изучения книги идиотов. Я снова получил удовольствие от программирования. Затем, когда я подумал, что лучше уже быть не может, мой советник, профессор Чайкен, одолжил мне книгу по OpenGL. А вы знаете, что означает буква «G» в «GL»? Как вы уже догадались, «графика»! И не просто графика, а 3D графика! На этот раз я вернулся к программированию по-настоящему.

После колледжа я получил кучу работ по программированию и следовал множеству интересных идей и направлений. Но, в конце концов, я всегда хотел вернуться к тому, с чего все началось: к геймдизайну. Я накопил достаточно денег за последнее десятилетие, чтобы купить год или два, чтобы поработать над своей страстью и создать игру для создания игр в реальной жизни. Возможно, вы знаете его как Checkverse. Приложение пока находится в зачаточном состоянии, но со временем оно будет переполнено простыми основными инструментами, которые каждый сможет использовать для создания или выполнения задач в реальном мире. Он обладает всеми преимуществами цифрового ведения записей и постановки социальных задач, но помогает вам играть в окружающий мир. Если вы еще этого не сделали, вы должны проверить это. Это на iPhone, а со вчерашнего дня и на Android!

И это возвращает нас в будущее…

Подведение итогов

Так что да, именно так я попал в программирование. Эта миссия вызвала море воспоминаний, особенно когда я написал «Hello World!» программа для C. Видите ли, C++, язык, который я впервые начал изучать, является расширением C. Так что вся первая половина «Руководства для идиотов» — это просто C. На самом деле я не изучал C++ до колледжа ;)

Что я думаю об этой миссии? На ум пришло несколько вещей:

  1. Меня волнует синтаксис. Что такое синтаксис? Если вы не программист, я бы приравнял это к ощущениям от языка. Говорить по-французски весело, так же как и печатать на Python. Многие из моих языковых выборов основаны на удовольствии от программирования. Люди часто спорят о том, чтобы использовать лучший инструмент для работы, но для большинства проектов скорость программирования важнее, чем скорость программы, поэтому синтаксис имеет значение. Языки, которые мне нравятся на основе синтаксиса, — это JavaScript, Python, Go, C и Rust. В основном они мне нравятся, потому что я знаком с этим стилем, и они не были слишком шаблонными.
  2. Научиться программировать сегодня проще простого по сравнению с той длинной историей, которую я рассказал выше. В сети полно онлайн-переводчиков, с которыми можно просто дико экспериментировать, ничего не устанавливая. Я смог попробовать Go, Haskell и JavaScript, используя всего лишь веб-браузер.
  3. Даже когда я не мог найти (я не очень старался) онлайн-переводчик, установка необходимых инструментов в современном мире не составляет труда. Я смог использовать Homebrew (программу для установки программ на Mac), чтобы получить все необходимое для выполнения остальных Hello World!. Если бы я только родился позже…
  4. Я давно не изучал новый язык, и было бы интересно попробовать Go и Rust. Мне нравится, как они выглядят из моей небольшой выборки, и я довольно много слышал о них. Был долгий период, когда я всегда изучал новые языки, но какое-то время я действительно не брался за новые.

Итак, что мы рассмотрели сегодня? Мы узнали, как я научился программировать, и что образец «Hello World!» программ — это хороший способ познакомиться с синтаксисом и получить некоторые идеи для языков, о которых можно узнать больше. Я не говорю, что это лучший способ, но если вам нравится изучение языков в качестве хобби, это хорошее упражнение.

Может быть, текстовое приключение в каждом из них было бы более показательным :) Спасибо за чтение!

До следующей недели!

Ваш приятель,
Антон

Понравился разбор полетов? Затем коснитесь маленького сердечка в углу, чтобы другим было легче его найти! Или, чтобы отправиться в собственные приключения, получи инвайт на Checkverse уже сегодня. Если вы хотите узнать больше от меня, вот предыдущие выпуски блога: