• Дональд Кнут: про ассемблер, транслятор и грамотное программирование

    • Перевод
    "Literate programming (грамотное программирование) — отношение к компьютерным программам, как к литературе: компьютерная программа пишется не столько для компьютера, сколько для людей, чтобы люди могли ее прочитать. И поскольку я пишу программы, то я, в некотором роде, учитель."

    image


    «Давайте изменим традиционные приоритеты в создании программ: вместо представления о нашей задаче как о создании инструкций «Что делать?» для компьютера сконцентрируемся на объяснении другим людям описаний нашего видения того, что под управлением программы должен делать компьютер.»
    Читать дальше →
    • +26
    • 18,2k
    • 6
  • Локализация инди-игр в Unity: неявные затраты

    • Перевод

    Начну с оговорки: эта статья относится не только к играм, сделанным в Unity, или к инди-играм, но в ней есть разделы, посвящённые только Unity, так что можно пропустить их, если вам нужны общие советы по локализации. Я написал эту статью, чтобы описать ВСЕ затраты, связанные с локализацией, и дать советы по снижению этих затрат.
    Читать дальше →
  • Пять видов систем крафтинга в играх

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

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


    Читать дальше →
  • Матрица прокрастинации (откладывания дел «на потом»)

    • Перевод
    Для лучшего понимания этого поста, прочитайте сначала предыдущий пост про прокрастинацию.

    Если бы, когда я учился в школе, вы спросили меня прокрастинатор ли я, я бы конечно ответил “да”. Учеников школы учат “держать темп” с крупными проектами. И я гордо держал темп больше чем кто-либо кого я знаю. Я никогда не пропускал дедлайн, но делал все ночью перед сроком сдачи работы. Я был прокрастинатором.

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

    Без всякого сомнения в моей голове была Обезьянка Немедленного Удовольствия, но она была милее всех на свете. С постоянно маячащими дедлайнами, Панический Монстр никогда не спал и Обезьянка знала об этом. Она конечно постоянно отвлекала, но не была за главного.

    Мой мозг в школе:
    image

    Читать дальше →
  • Unity3D Ускорить отрисовку 2D анимации в разы? Легко

    В этой статья мне хотелось бы рассказать о том, как была ускорена отрисовка монстров при создании игры Alien Massacre. Данное решение подойдет для любых проектов, которые испольуют спрайтовую анимацию.

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

    • 1 Необходимо обеспечить отрисовку большого числа анимированных объектов на сцене. Ведь мы хотим, чтобы игрок отстреливался от полчищ монстров.
    • 2 Прогресс анимации должен быть различен для каждого из объектов. Ведь мы не хотим, чтобы мобы ходили строем.

    Решение «из коробки»


    Безусловно, первое решение было простым: все сделать с помощью уже встроенного в UnityEngine компонента Animator. Посмотрим, что из этого получается.
    Читать дальше →
  • Болты в чае, или вебинар по теории вероятностей на практике

      В статье "Применение Теории вероятностей в IT" автор (преподаватель теории вероятностей в ВУЗе) пишет:
      из года в год я сталкиваюсь с таким явлением, что студенты не понимают, зачем и почему им учить эту дисциплину.

      Это действительно важная проблема. Владелец компании минималистичных видео-уроков Common Craft и заодно автор книги "Искусство объяснять" пишет, что человеку очень важно сначала ответить себе на вопрос «зачем?», и только тогда он заинтересуется ответом на вопрос «как?» (наверное, поэтому ему заказывали создание роликов в стиле Common Craft и Google, и Dropbox, и Twitter).

      Поэтому я решил разобраться в теории вероятностей: накупил разных книжек типа "Удовольствие от икс", да потом ещё нанял двух репетиторов по Skype.

      В итоге всё стало проясняться, и было решено поделиться своими инсайдами с широкой аудиторией.

      Самый красивый пример, из тех, что я нашёл — это болты в чае. В советские времена был ГОСТ на максимальное содержание болтов\гаек в чае, которые попадали туда при уборке урожая: «массовая доля металломагнитной примеси» не должна была превышать 5-7 грамм на тонну. Для этого проверяли выборку и по ней делали заключение по всей партии чая.

      И от этого примера можно переходить к более глобальному примеру применения статистического анализа — к японскому экономическому чуду.

      В общем, всё это упоминается в тизере вебинара:


      Давай посмотрим
    • Лекции Технопарка. 3 семестр. Проектирование высоконагруженных систем

      • Tutorial


      И снова в эфире наша постоянная рубрика «Лекции Технопарка». На этот раз предлагаем вам ознакомиться с материалами курса «Проектирование высоконагруженных систем». Цель курса — получение студентами навыков проектирования высокоэффективных программных систем.
      Читать дальше →
      • +50
      • 59,5k
      • 5
    • Паттерны ООП в метафорах

        Большинство литературы посвященной паттернам в ООП (объектно-ориентированном программировании), как правило, объясняются на примерах с самим кодом. И это правильный подход, так как паттерны ООП уже по-умолчанию предназначаются для людей, которые знают что такое программирование и суть ООП. Однако порой требуется заинтересовать этой темой людей, которые в этом совершенно ничего не понимают, например «не-программистов» или же просто начинающих «компьютерщиков». Именно с этой целью и был подготовлен данный материал, который призван объяснить человеку любого уровня знаний, что такое паттерн ООП и, возможно, привлечет в ряды программистов новых «адептов», ведь программирование это на самом деле очень интересно.
        Статья предназначена исключительно для новичков, так что «старожилы» ничего нового для себя не узнают. В основном статья описывает известные паттерны из книги «Приемы объектно-ориентированного программирования. Шаблоны проектирования.», но более популярным и простым языком.
        Читать дальше →
      • Что такое анти-паттерны?

          Анти-паттерны — полная противоположность паттернам. Если паттерны проектирования —
          это примеры практик хорошего программирования, то есть шаблоны решения определённых задач. То анти-паттерны — их полная противоположность, это — шаблоны ошибок, которые совершаются при решении различных задач. Частью практик хорошего программирования является именно избежание анти-паттернов. Не надо думать, что это такая непонятная теоретическая фигня — это конкретные проблемы, с которыми сталкивался практически каждый разработчик. Кто осведомлен, тот и вооружён! Рассмотрим же несколько расрпотранённых анти-паттернов в программировании.
          Да, рассмотрим!