Содержание

языки, движки и все, что нужно знать начинающему разработчику — руководства на Skillbox

Многие люди (и я в их числе) хотят научиться программированию, чтобы создавать игры. В начале это может показаться дико сложным, потому что ты еще не знаешь, как реализовать свою грандиозную идею. А первые идеи всегда грандиозные.

Поэтому ты идешь в гугл и начинаешь изучать все статьи и ролики по теме. Выведя на экран первое «Hello, world!», решаешь, что все очень просто. Но чем глубже погружаешься в это, тем сильнее хочется рвать волосы на голове.

Не переживайте! Главное — в самом начале узнать, что нас ждет, чтобы потом не свернуть на полпути, пройти все этапы и начать продавать игру!

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

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

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

Создать игру можно на любом языке, от Python и C до Pascal и Java. От выбора зависит то, сколько времени уйдет на игру и для какой платформы будет релиз. Также язык влияет на производительность, хотя навыки программиста тоже очень важны.

На C++, например, можно писать для любой платформы, а вот PHP или JavaScript больше подойдут для браузерных игр. Если же вы собираетесь использовать один из популярных движков, то лучше изучать C#, потому что он часто используется ими для прописывания скриптов.

Главное — не недооценивать языки. В движке Unity можно писать и на JavaScript, а Minecraft был написан на Java.

Среди современных можно выделить:

 Crysis, Far Cry, Sniper II: Ghost Warrior.

Gears of War 4, Deadpool, Mortal Kombat X, Tekken7 

Outlast, Assassin’s Creed: Identity, Temple Run, Deus Ex: The Fall.

Большой популярностью пользуется Unity, потому что он позволяет создавать как 2D-, так и 3D-игры. Также можно работать с разными платформами и языками. Еще на нем создается большинство мобильных игр и инди. Он бесплатный, но если вы зарабатываете на своих играх больше100 000 долларов в год, то придется делиться ими с разработчиками Unity.

Допустим, вы выбрали язык, движок, придумали концепт игры. Что дальше?

Нужно продумать всё от и до. В зависимости от выбранного вами пути (чистый язык или использование движка) будет отличаться и то, что вас ждет на разных этапах разработки.

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

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

  • ходьба;
  • езда;
  • прыжки;
  • удары;
  • выстрелы;
  • падение предметов и так далее.

Если вы пишете сами, то для обычного прыжка вам придется:

  • проверить, находится ли игрок на земле;
  • менять координату Y, чтобы игрок поднимался вверх;
  • закончить подъем через какое-то время;
  • начать и продолжать падение до тех пор, пока под ногами игрока не окажется земля.

Не говоря уже о том, что нужно работать над анимацией всего этого.

function jump() {
If(gamer.jumpTimer >= 1) {
   gamer.y++
   gamer.jumpTimer ;
   } else {
      

If(gamer.y >= ground.y) {
         gamer.y;
      }
   }
}

В движках же уже прописана физика, и вам нужно только подогнать ее под свои нужды. Для примера, если вы поместите в рабочую область Unity объект и укажете, что для него нужно использовать физику, то при запуске игры объект упадет. И для этого не придется писать код вообще — все уже предусмотрено.

Игровая механика — это то, какими способами игрок взаимодействует с миром. Совокупность игровых механик составляет игровой процесс. Например, вы уже реализовали возможность ходьбы и прыжков. Пока игру можно отнести к платформерам.

А вот если вы добавите механику получения очков опыта, повышения уровней, прокачки навыков — игра уже станет походить на RPG. Механика — такая же важная составляющая игры, как и сюжет, графика, баланс и так далее.

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

  • если добавить стрельбу, то это будет экшн;
  • если игрок будет безоружен — стелс;
  • если еще и замки нужно будет взламывать, то это уже головоломка или пазл.

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

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

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

Пример анимации двумерного персонажа

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

Анимация в действии

Если же использовать трехмерную модель, то используется скелетная анимация — модель как бы нанизывается на специальный каркас (скелет) с подвижными частями. Движение этих частей прописывается в коде.

Источник

На скриншоте видно, как персонаж сгибает руку в местах с точками (вершинами). Таких точек может быть очень много, если требуется сложная анимация — жесты, мимика и так далее.

Работать с такой анимацией можно, прописывая точки координат или захватывая движения реального актера. Первый способ сложный, но дешевый, потому что от программиста требуется только прописать движения — сдвинуть точку A1 на координаты (50,240). Второй проще, потому что достаточно одеть актеров в специальные костюмы с маячками, отснять это и перенести в игру. Но тут, конечно, придется оплатить костюмы, павильон, работу операторов, постановщиков и актеров.

Источник

Чтобы играть было интересно, нужен баланс. Это значит, что у каждого противника должны быть сильные и слабые стороны. Так геймплей не превратится в убийство младенцев или 10-часовые перестрелки с боссом.

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

Если геймплей предусматривает взаимодействие с NPC, то им нужно прописать модели поведения: реакцию на действия игрока, агрессивность, возможность вести диалоги или торговать.

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

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

  1. Персональные компьютеры.
  2. Приставки.
  3. Мобильные устройства.
  4. Браузер.

У каждой из этих платформ своя аудитория с вполне конкретными предпочтениями. На мобильных устройствах предпочитают головоломки (2048, 94%, Cut the Rope), аркады (Subway Surf, Temple Run, Angry Birds) и казуалы (Talking Cat Tom, Kitty Kate Baby Care, Hair Stylist Fashion Salon).

На компьютерах можно играть в MMORPG (Lineage II, World of Warcraft, Skyrim) или шутеры (Battlefield, Call of Duty, Counter-Strike)

. Приставки подходят для гонок (Need for Speed, Blur, Burnout Paradise), приключенческих игр (Assassin’s Creed, Portal, The Walking Dead) и так далее. В браузерах собирают пазлы и строят фермы.

Конечно, можно сделать и головоломку для PS4, и гонку для браузера — никто никого не ограничивает.

Заключение

Будьте готовы к тому, что ваша первая игра не станет шедевром. Скорее всего, получится что-то вроде этого:

Вам нужен браузер с поддержкой HTML5 и JavaScript!

Управлять игрой можно мышью, клавиатурой или сенсорным экраном телефона.

Мышью:

Зажмите экран и водите курсором:

— Левее корабля — влево

— Правее корабля — вправо

— Вверх — стрелять

На мобильных устройствах достаточно нажать влево, вверх или вправо.

Клавиатура:

— Стрелка влево — влево

— Стрелка вправо — вправо

— Ctrl или Cmd — Стрелять (edited)

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

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

Курс «С# с нуля»

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

  • Живая обратная связь с преподавателями
  • Неограниченный доступ к материалам курса
  • Стажировка в компаниях-партнёрах
  • Дипломный проект от реального заказчика
  • Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы

skillbox.ru

Советы, которые помогут вам начать программировать

На сайте Business Insider можно посмотреть на список из 10 профессий, которые будут максимально востребованы в 2015 году. Неудивительно видеть, что для трёх из них нужны навыки программирования.

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

Однако, если вы действительно хотите освоить этот навык, у нас есть несколько советов, которые помогут вам начать.

Выясните, почему вы хотите программировать

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

Выберите специализацию

Вы хотите верстать сайты? Создавать игры для Android или iOS? Делать софт для профессионалов? Каждое из этих направлений кардинально отличается от остальных. Не забывайте, что если вы решили стать независимым программистом и создать новый Minecraft, то для этого вам понадобятся усилия других людей — дизайнеров и гейм-дизайнеров. Конечно, если вы не хотите делать сами абсолютно всё.

Выберите правильный язык программирования

Идеального языка программирования нет. Каждый из них направлен на решение определённых задач. Хорошая новость в том, что, как только вы освоите один язык, выучить другие будет гораздо проще. К примеру, язык Swift позволяет писать приложения для iOS, а Java — для Android.

Попробуйте приложения для детей

Если вы делаете первые шаги в программировании, то давайте проследуем за этой метафорой и дальше. Почему бы не попробовать приложения для детей? К примеру, игра Code Combat, которая в виде RPG будет обучать вас JavaScript. Или Hopscotch — игра для iPad, рассказывающая об основах программирования.

Используйте бесплатные курсы

Вам даже не придётся особо напрягаться, чтобы найти стоящие курсы. Coursera, Udacity и другие образовательные сервисы предлагают сотни курсов по программированию на выбор. А мы каждый месяц выбираем 10 лучших курсов с Coursera. И часто в их числе оказываются интересные курсы, связанные с программированием.

Сделайте обучение интересным

Когда я думал о том, какие сервисы соблюдают тонкую грань между полезностью и интересным обучением, в голову пришло три названия:

  1. HTML Academy — здесь собраны практические задания по изучению HTML и CSS.
  2. Hexlet — на этом сайте собраны десятки уроков и практических занятий по программированию.
  3. Codeacademy — интерактивные занятия, обучающие всем языкам программирования бесплатно.

Скачайте бесплатные книги

Недавно мы рассказывали о подборке из 24 бесплатных книг по программированию. Каждая книга в списке описывает основы одного из языков. Они помогут понять, какой сфере программирования вы хотите посвятить себя.

Найдите ментора

Когда я впервые поехал кататься на лыжах, мне казалось, что я научился достаточно быстро: уже после первого дня я уверенно стоял и съезжал с горы. Так продолжалось где-то неделю, пока я случайно не встретил лыжника старой закалки, который сказал мне, что я катаюсь как подстреленный медведь. За час разговоров и упражнений с ним я узнал в десятки раз больше, чем за предыдущую неделю.

К чему это? Ищите ментора, наставника. Человек, который знает больше вас и захочет помочь, окажет вам услугу и даст огромный толчок в развитии.

Пройдите офлайн-курс

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

Экспериментируйте

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

Какие советы можете дать программистам вы?

lifehacker.ru

Почему научиться программировать так чертовски тяжело? / Hexlet corporate blog / Habr

Привет, Хабр!

Взявшись за работу над образовательным проектом Хекслет, мы понимали, что на нас ложится большая ответственность. К нам приходит огромное количество новичков с вопросами и комментариями, такими как:

  • С чего начать обучение программированию?
  • У вас есть курс по Java для новичков, но я слышал, что нужно изучать Python, правда ли это?
  • На других сайтах все просто и понятно, а у вас какие-то компиляции и тесты!
  • Непонятно зачем нужен этот ваш курс по алгоритмам, в реальной жизни все алгоритмы уже реализованы в стандартных библиотеках

Но сложнее всего объяснить новичку, грубо говоря, во что он ввязывается. Благодаря очень простым, игровым образовательным проектам многие считают, что программирование это очень легко, а наши виртуальные машины, где нужно запускать тесты и компилировать код – это надуманная сложность. Давно хотелось найти такой материал, который бы подготовил новичка к длинному и сложному пути к карьере программиста. И недавно наши коллеги из Viking Code School такой материал написали! А мы его перевели для вас.

Квинси Ларсон был просто “офисным парнем в костюме”. Он решил научиться программировать. Начал спрашивать людей вокруг. Изучил немного Руби, потом быстренько посмотрел на другие языки вроде Scala, Clojure и Go. Он изучил Emacs, а потом Vim, а потом раскладку Dvorak. Он втыкал в Линукс, копался с Лиспом и кодил на Питоне, и жил при этом в командной строке больше полутора лет.

Его швыряло туда-сюда как листочек в торнадо. Каждый совет, который он слышал, тащил его то в одну, то в другую сторону, до тех пор пока он не прошел “каждый онлайн-курс по программированию во вселенной”. В конце концов, не смотря на то, что он получил работу разработчика ПО, Квинси:

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

Ох. Звучит знакомо?

Фаза 1: Медовый месяц

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

С одной стороны, вы с детства слышали слухи о сложности программирования. Мамы запугивали детей, чтобы те шли в гуманитарии.

С другой стороны, движение «Learn to Code” проделало фантастическую работу по удалению барьеров, и показало что кодить на самом деле довольно просто. Инструменты вроде Codecademy, Treehouse и Code School так мягко и за ручку подводят тебя к коду, что можно быть уверенным – я не просто смогу научиться программировать, я смогу стать полноценным разработчиком!

Внезапно, проблема не в страхе, а в избыточных надеждах и высоких ожиданиях.

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

Проблема в том, что вы находитесь в фазе “медового месяца”. Может казаться, что конец близок, но в реальности вы прошли лишь крохотный отрезок пути. Это только начало…

Рисуем маршрут

Перед тем как перейти к Фазе 2, давайте взглянем взглянем на весь путь.

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

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

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

Мы рассмотрим уникальные испытания, которые ждут нас в следующих трех фазах, но для начала вкратце рассмотрим каждую фазу:

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

2. Скала смятения это болезненное осознание реальной сложности после того, как помощник отпускает вашу руку. Оказывается, вы ничего не можете сделать сами. Главными испытаниями становится постоянная отладка кода. Непонятно какие вопросы задавать чтобы хотя бы начать двигаться в правильном направлении.

3. Пустыня отчаяния это долгий и одинокий путь через бездорожье, где каждое новое направление кажется верным, но часто вы просто ходите кругами и голодаете по ресурсам, которые могли бы помочь. Остерегайтесь “миражей мании” как сирен пустыни! Они уведут вас в никуда.

4. Подъем благоговения это та часть, где вы наконец находите путь через пустыню и начинаете понимать как создавать приложения. Ваш код все еще дырявый и хрупкий как карточный домик. Вера в себя растет потому что ваши сайты вроде как работают, вы изучили несколько важных паттернов, ваши друзья считают ваши интерфейсы крутыми, но вам страшно заглянуть под капот, и вы не знаете как делать production-ready код. Как отсюда построить мост к состоянию “готов к реальной работе”?

Я брал интервью у сотен разработчиков в течение последних нескольких лет и слышал отголоски всё одной и той же истории снова и снова. Цель этого поста — научить вас двигаться по пути обучения с широкого раскрытыми глазами и с таким компасом в руках, с которым вы ловко обойдёте все ямы, в которые попали те, кто шли до вас.

Давайте вернемся к фазе 2…

Фаза 2: Скала смятения

Итак, вы находитесь в фазе 1 – „Медовый месяц“. Вы заполняете пробелы и завершаете задачи, связанные с кодом в то время как ваша уверенность и возможности растут. Это не так уж плохо… К чему суета? Вы поднялись на «Гору иррационального изобилия»…

Будьте осторожны! Вы собираетесь переступить пропасть, которая ломает многих сильных учеников, вытесняя их в лагерь под названием „кодинг — это слишком тяжело“. Точный момент этого скачка происходит тогда, когда вы садитесь за клавиатуру, открываете свой текстовый редактор и пытаетесь в первый раз создать проект с нуля без каких-либо встроенных в браузер редакторов, костылей кода или полезных советов.

Блин…

Вы можете немного оттянуть этот момент, продолжая следовать учебникам, но никто ещё не достиг неба, не оторвавшись от земли, и настанет момент, когда вы будете творить волшебство в пустом текстовом файле. Вы только что вошли во вторую фазу обучения, где уверенность падает вниз на землю. Добро пожаловать на «Скалу смятения»:

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

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

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

Страшно то, что вы еще даже не дошли до самых «вкусных» вещей. После того, как вы, наконец, устранили достаточное количество багов, чтобы положить конец восьмой казни египетской и фактически уже закончили несколько проектов, настанёт конец второй фазы. Но у вас всё только начинается.

Для тех, кто действительно собрался сделать карьеру в программировании, выживание на «Скале смятения» часто является точкой, после которой они всецело готовы погрузиться в новую жизнь. Но слишком многие остаются позади. И, к сожалению, вы только собираетесь войти в «Пустыню отчаяния».

Два ключевых фактора

Так в чем же на самом деле разница между первой и второй фазой? Почему фаза 2 («Скала смятения») так ужасна по сравнению с фазой 1 («Медовый месяц»)? Понимание этого поможет вам понять, что вашей вины абсолютно нет в том что, ваше путешествие выглядит так, как мы только что описали.

Есть два основных момента во время прохождения каждой фазы: плотность ресурсов и объем знаний. Давайте посмотрим, что это такое, прежде чем изучать, как они выведут вас к фазе 3.

Фактор 1: плотность ресурсов

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

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

К сожалению, на более поздних этапах плотность ресурсов быстро падает. Любой, кто прошёл от стадии новичка до среднего уровня, может подтвердить, что существует БОЛЬШАЯ разница между количеством имеющихся ресурсов в самом начале и тогда, когда вы впервые ищете помощь самостоятельно, без посторонней поддержки.

Эта проблема усугубляется при переходе к третьей фазе, когда количество знаний быстро возрастает, и есть одна причина, по которой мы называем эту фазу „Пустыней отчаяния“. Как только вы пройдете её и начнете точно чувствовать, что именно вам нужно искать, то ресурсы вернутся, и вы сможете использовать в работе большее количество технических средств, таких как блоги и видеоролики. Отчасти это просто умение задать правильные вопросы.

Вот как выглядит плотность ресурсов в каждой фазе (большая концентрация линий указывает на большую плотность ресурсов):

Фактор 2: объем знаний

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

Когда вы только начали обучение, набор вещей, которые вам нужно понимать, ещё достаточно узкий. Каждому человеку, независимо от целей обучение, языка и предпосылок, необходимо изучить, что такое цикл «for», как построить логику условного оператора и познакомиться с основными структурами синтаксиса программирования. А зачастую даже и не приходится сталкиваться с некоторым из вышеприведенных базовых понятий, поэтому объем знаний на этом этапе является очень узким.

Как только вы отходите от основ, вы замечаете быстрое расширение базы знаний, так как начинаете сталкиваться с более сложными вопросами, такими как понимание разновидностей ошибок, или, когда именно использовать код, который вы знаете и как вообще его использовать. А это две разные вещи, потому что нет „правильного“ ответа на точный вопрос… Пока всё очень размыто.

По мере продвижения к третьему этапу объем знаний станет расти. Теперь вы должны понимать, какие инструменты использовать, какие языки изучать, как писать модулярный код, знать основы CS и объектно-ориентированного программирования, обладать грамотным стилем кода и уметь искать ответы на вопросы (хотя бы в нескольких источниках). Каждый заход в Google или на сайт Hacker News погружает вас в огромное множество кроличьих нор и ошеломляет вас такими вещами, которых вы не знаете, но чувствуете, что должны их знать.

Вы не знаете, чего именно вы не знаете.

Только тогда, когда вы, наконец, сделали рывок и покинули пустыню, объем знаний снова начинает сужаться. К этому моменту, вы уже определили свою выбранную технологию и её место в общей системе. Вы, наконец, знаете (и довольно неплохо), чего именно вы не знаете и можете проложить путь через эти ямы. Вы будете продолжать расширять кругозор по мере продвижения вперед, к началу своей карьеры.

Фаза 3: Пустыня отчаяния

С пониманием ключевых факторов, можно увидеть, что «Скала смятения» является критической точкой. Мучения, вызванные совокупностью быстро растущего объема знаний и упадка плотности ресурсов привели к фазе, которую я называю „Пустыня отчаяния“.

В сущности, это пустыня, где вы знаете, что где-то есть конец, но не знаете, как до него добраться:

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

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

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

Существует НАМНОГО больше вещей, которые предстоит узнать, чем вы, возможно, ожидали. Даже если вы в состоянии заставить работать некоторые приложения, то очень трудно не чувствовать себя слабым звеном в огромной цепочке становления настоящим профессионалом. Трудно измерить ваш прогресс. Как вы узнаете, что вам изучать, если изучаете только необходимые вещи?

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

Безусловно, до этого момента было трудно, но, возможно, вся эта история с веб-программированием и не такая сложная, в конце концов… Everything’s coming up Milhouse!

Фаза 4: Подъем благоговения

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

Это и есть «Подъем благоговения»:

Снаружи всё может выглядеть хорошо, но в глубине души вы знаете, что вы ещё не достигли цели.

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

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

Вы чувствуете, что уже должны стать разработчиком, но дистанция между кодом, который вы пишете и «профессиональной» рабочей средой не сокращается…

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

«Подъем благоговения» всегда занимает больше времени, чем вы ожидаете, и кажется бесконечным, потому что вы так близко… Но вы всё же достигнете его. Если вы настойчиво идёте в правильном направлении (тема следующего поста), то сможете убедить кого-то платить вам и спокойно продолжать учиться дальше. Работа ваша.

На что всё это похоже

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

Одно дело — знать путь, а другое дело — идти по нему. Давайте поможем вам начать.

Как дойти до конца живым

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

В этом разделе я представлю основные тактики, которые можно использовать, чтобы держаться в правильном направлении.

I: Как Выжить в «Медовом месяце»

Разнообразие доступных ресурсов в «Медовом месяце» доставляет много веселья. Они делают большую работу, чтобы сформировать вам нужный тип логического мышления, который вы должны будете развивать в течение последующих фаз. Это прекрасное время, чтобы начать учиться коду. Итак, пробуйте, наслаждайтесь, но не забывайте держать в голове эти два совета:
  1. Начните пробовать разные ресурсы, чтобы найти те, которые лучше вам помогают в обучении, ищите наиболее интересные для вас проекты. Это могут быть быстрые решения от KhanAcademy, упражнения в браузере от Codecademy, книга Learn to Program Криса Пайна или школа кода Try Ruby. В начале будьте открытыми для всего и игнорируйте наставления в стиле «вы должны учить только это». На данном этапе весь код одинаковый.
  2. Далее выберите один подходящий для вас ресурс и старайтесь придерживаться только его. Пройдите курс от начала до конца, чтобы получить все основные знания, которые вам помогут написать базовые скрипты и приложения. А в дальнейшем приготовьтесь начать создавать свои собственные проекты.
II: Выживание на «Скале смятения»

Почти каждый из вас пройдёт через «Скалу смятения», поскольку единственный способ стать разработчиком — это разрабатывать. Вы можете претендовать на эту профессию, подписавшись на статьи (или на туториалы, которые выдают за «полные» курсы), но этим вы будете только откладывать неизбежное. Учебники — это хороший способ решить начальные задачи, но в некоторой момент вы должны будете отучить себя от соски и столкнуться с реальным миром.

Вот три совета, которые помогут самостоятельно перейти к компилированию:

  1. Работайте с кем-то в паре, даже если он такой же новичок как и вы. Вы будете удивлены, насколько легче отладить кажущуюся неисправимой ошибку, если подключить ещё две пары глаз.
  2. Читайте больше чужого кода, чтобы познакомиться с хорошими паттернами. Постарайтесь понять, почему автор сделал именно так, а не иначе. Вы ведь не сможете стать писателем, не читая чужих книг, не правда ли? Мы подробно рассмотрим это в следующем посте, а сейчас, заострите своё внимание на мелких проектах и задачах, для которых другие люди уже написали решения.
  3. Начните с малого и программируйте постоянно. Вы должны думать о будущих крупных и интересных проектах, но для этого ваша отладка должна стать гладкой, а поиск ресурсов не должен составлять труда. Опыт вы ничем не замените.
III: Выживание в «Пустыне отчаяния»

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

Итак, вот ключи к выходу из «Пустыни отчаяния»:

  1. Поставьте перед собой определенную цель, которую вы хотите достичь, потому что в противном случае вы закончите тем, что устанете гоняться за своим хвостом, изучая различные виды интересных, но по большому счёту ненужных вещей. Но если у вас есть свободное время, то можете опустить этот совет…
  2. Найдите верный путь, который ведет прямо к поставленной цели и убедитесь, что он действительно направляет вас к ней. Вам нужно копать глубже и не искать ответ среди рекламных лозунгов, суперобложек и улыбающиеся лиц на веб-сайтах различных курсов на вопрос „поможет ли мне это достичь поставленной цели или нет?“
  3. Сконцентрируйте всё своё внимание и не отвлекайтесь, потому что, если вы относитесь к тем людям, которым интересно изучать код, вы также заинтересуетесь изучением других интересных вещей. В те моменты, когда программирование даётся тяжело, вы должны особенно сильно продвигаться вперед, а не браться осваивать другие модные занятия.

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

IV: Выживание на «Высоком подъеме»

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

Ключ к решению вышеперечисленных проблем и к восхождению на «подъем благоговения» — это обратная связь. Студенты, которые полностью обучились самостоятельно могут быть работоспособными, но они редко обладают разборчивым, модульным, и гибким кодом, который характеризует их востребованность в профессиональной сфере. Вы должны работать с другими людьми, которые будут оспаривать ваши предположения, задавать каверзные вопросы и заставлять вас устранять утечки в ведре ваших знаний.

Итак… Возможно ли это вообще?

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

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

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

Удачи!

habr.com

Советы начинающим программистам микроконтроллеров / Habr

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

1. Многие начинающие электронщики не знают с чего начать, поэтому спрашивают совета. Большинство бывалых радиолюбителей ответят, что начни собирать какую нибудь схему. Естественно в голове любого начинающего сразу мелькает LCD дисплей с jpeg картинками, какой нибудь mp3 плеер или часы, без малейшей мысли о том, что не имея базовых знаний это неподъемная задача.

Я категорически против такого подхода. Обычно это все заканчивается — либо ничем, либо забитые форумы с мольбами помочь. Даже если кому то помогают, то в 90% он больше никогда не всплывет на сайтах по электронике. В остальных 10% он так и продолжает заливать форумы мольбами, его будут сначала пинать, затем поливать грязью. Из этих 10% отсеивается еще 9%. Далее два варианта: либо таки до глупой головы доходит и все же происходит goto к началу, либо в особо запущенных вариантах, его удел копировать чужие конструкции, без единой мысли о том как это работает. Из последних зачастую рождаются ардуинщики.

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

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

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

2. Перед решением задачи, дробите ее до абсурда вплоть до «припаять резистор», это помогает, проверено. Мелкие задачи решать куда проще. Когда большая задача разбита на кучу мелких действий, то все что остается — это выполнить их. Могу привести еще один годный совет, хоть он вам и покажется бредовым — заведите блокнотик и пишите в него все что собираетесь сделать. Вы думаете, итак запомню, но нет. Допустим сегодня у меня хорошее настроение и думаю о том, как собрать плату. Запиши план действий: сходить купить резистор, подготовить провода, сделать крепление дисплея. Потом все забудешь, откроешь блокнотик и смотришь — ага сегодня настроение попилить и построгать, сделаю крепление. Или собираешь ты плату и уже осталось допаять последний компонент, но не тут то было резисторы кончились, вот записал бы перед тем как паять, то вспомнил.

3. Не пользуйтесь кодогенераторами, нестандартными фичами и прочими упрощалками, хотя бы на первых этапах. Могу привести свой личный пример. Во времена активного использования AVR я пользовался кодогеном CAVR. Меня он полностью устраивал, хотя все говорили, что он кака. Звоночки звенели постоянно, были проблемы с библиотеками, с синтаксисом, с портированием, но было тяжело от этого отказаться. Я не разбирался как это работает, просто знал где и как поставить галочки.

Кол в мой гроб был вбит с появлением STM32, нужно было обязательно переползать на них, вот тогда то и появились проблемы. Проблемы мягко сказано, фактически мне пришлось осваивать микроконтроллеры и язык Си с нуля. Больше я не повторял прошлых ошибок. Надо сказать это уже пригодилось и не один раз. С тех пор мне довелось поработать с другими платформами и никаких затруднений не испытываю, подход оправдывает себя.

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

4. Изучайте язык Си. Эх, как же часто я слышу, как начинающие радиолюбители хвалятся, что хорошо знают сишку. Для меня это стало кормом, всегда люблю проконсультироваться у таких собеседников. Обычно сразу выясняется, что язык они совершенно не знают. Могу сказать, что не смотря на кажущуюся простоту, людей которые действительно хорошо бы его знали, встречал не так много. В основном все его знают на столько, на сколько требуется для решения задач.

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

Очень многие начинающие брезгуют изучением языка, поэтому если вы не будете как все, то сразу станете на две ступени выше остальных новичков. Так же не никакой разницы, где изучать язык. На мой взгляд, микроконтроллер для этого не очень подходит. Гораздо проще поставить какую нибудь Visual studio или Qt Creator и порешать задачки в командной строке.

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

5. Изучение ассемблера? Бояться его не нужно, равно как и боготворить. Не нужно думать, что умея написать программу на ассемблере, вы сразу станете гуру микроконтроллеров, почему то это частое заблуждение. В первую очередь это инструмент. Даже если вы не планируете использовать его, то все равно я бы настоятельно рекомендовал написать хотя бы пару программ. Это сильно упростит понимание работы микроконтроллера и внутреннего устройства программ.

6. Читайте даташит. Многие разработчики, пренебрегают этим. Изучая даташит вы будете на две ступени выше тех разработчиков. Делать это крайне полезно, во первых это первоисточник, какие бы сайты вы не читали, в большинстве случаев они повторяют информацию из даташита, зачастую с ошибками и недосказанностями. Кроме того, там может находиться информация, о которой вы не задумываетесь сейчас, но которая может пригодиться в будущем. Может статься так, что вылезет какая то ошибка и вы вспомните что да, в даташите об этом было сказано. Если ваша цель стать хорошим разработчиком, то этого этапа не избежать, читать даташиты придется, чем раньше вы начнете это делать, тем быстрее пойдет рост.

7. Часто народ просит прислать даташит на русском. Даташит — это то, что должно восприниматься как истина, самая верная информация. Даже там не исключены ошибки. Если к этому добавятся ошибки переводчика, он ведь тоже человек, может даже не нарочно, просто опечататься. Либо у него свое видение, может что-то упустить, на его взгляд не важное, но возможно крайне важное для вас. Особенно смешной становится ситуация, когда нужно найти документацию на не сильно популярные компоненты.

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

Мною был проведен эксперимент: в наличии был студент, даташит и гугл переводчик. Эксперимент №1: студенту вручен даташит и дано задание самостоятельно найти нужные значения, результат — «да как я смогу», «да я не знаю английский», «я ничего не нашел/я не понял» типичные фразы, говорящие о том, что он даже не пытался. Эксперимент №2: тому же студенту, вручен все тот же даташит и тоже задание, с той разницей, что я сел рядом. Результат — через 5 минут он сам нашел все нужные значения, абсолютно без моего участия, без знания английского.

8. Изобретайте велосипед. Например, изучаете какую то новую штуку, допустим транзистор, дядька Хоровиц со страниц своей книги авторитетно заявляет, что транзистор усиливает, всегда говорите — НЕ ВЕРЮ. Берем в руки транзистор включаем его в схему и убеждаемся что это действительно так. Есть целый пласт проблем и тонкостей, которые не описываются в книгах. Прочувствовать их можно только, когда возьмешь в руки и попробуешь собрать. При этом получаем кучу попутных знаний, узнаем тонкости. Кроме того, любая теория без практики забудется намного быстрее.

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

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

9. А как бы я сделал это, если бы находился на месте разработчиков? Могу ли я сделать лучше? Каждый раз задавайте себе эти вопросы, это очень хорошо помогает продвигаться в обучении. Например, изучите интерфейсы 1wire, i2c, spi, uart, а потом подумайте чем они отличаются, можно ли было сделать лучше, это поможет осознать почему все именно так, а не иначе. Так же вы будете осознавать, когда и какой лучше применить.

10. Не ограничивайтесь в технологиях. Важно что этот совет имеет очень тонкую грань. Был этап в жизни, когда из каждой подворотни доносилось «надо бы знать ПЛИС», «а вот на ПЛИС то можно сделать». Формально у меня не было целей изучать ПЛИСины, но и пройти мимо было никак нельзя. Этому вопросу было выделено немного времени на ознакомление. Время не прошло зря, у меня был целый ряд вопросов, касаемых внутреннего устройства микроконтроллеров, именно после общения с плисинами я получил ответы на них. Подобных примеров много, все знания, которые я приобретал в том или ином виде, рано или поздно пригодились. У меня нет ни единого бесполезного примера.

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

11. Если спросить начинающего радиолюбителя, что ему больше нравится программирование или схемотехника, то с вероятностью 99% ответ будет программирование. При этом большую часть времени эти программисты тратят на изготовление плат ЛУТом/фоторезистом. Причины в общем то понятны, но довольно часто это переходит в некий маразм, который состоит в изготовлении плат ради изготовления плат.

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

12. Следующий совет, особенно болезненный, мне очень не хочется его обсуждать, но надо. Часто мне пишут, мол ххх руб за ууу дорого, где бы подешевле достать. Вроде бы обычный вопрос, но обычно я сразу напрягаюсь от него, так как зачастую он переходит в бесконечные жалобы на отсутствие денег. У меня всегда возникает вопрос: почему бы не оторвать пятую точку и не пойти работать? Хоть в тот же макдак, хоть на стройку, потерпеть месяц, зато потом можно приобрести парочку плат, которых хватит на ближайший год. Да я знаю, что маленьких городах и селах сложно найти работу, переезжайте в большой город. Работайте на удаленке, в общем нужно крутиться. Просто жаловаться нет смысла, выход из ситуации есть, кто ищет его тот находит.

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

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

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

15. Тонкий вопрос: профильное высшее образование, нужно ли оно? Мне известны не единичные случаи, когда люди работали абсолютно без образования и по опыту и знаниям они могли дать прикурить любому дипломированному специалисту. Собственно, у меня нет профильного образования, испытываю ли я от этого дискомфорт? В определенной степени да.

Еще в самом начале, когда микроконтроллеры были для меня хобби, я много помогал с курсовыми и дипломами разных вузов, просто чтобы оценить свой уровень. Могу сказать уверенно, что уровень в целом невысок вне зависимости от имени вуза. Учиться несколько лет, для того чтобы написать такой диплом, совершенно необязательно. Достигнуть этого можно самостоятельно за весьма короткий срок. И все же зачастую бывали моменты, когда студенты знали какой то предмет, который они проходили на 2-3 курсе, а я этого не знал. Хоть все эти знания и компенсировались самообразованием, но все же лучше было бы не тратить на это время.

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

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

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

Если подытожить то совет таков: если есть хоть малейшая возможность — нужно идти учиться, обязательно по профилю, если есть хоть какие то шансы, то лезть везде, а не отсиживать штаны на задней парте. Заводить знакомства, параллельно дома самому практиковаться, развиваться.

16. Поздно ли начинать программировать в 20, 30, 40, 50 лет? Практика других людей показывает, что возраст вообще не помеха. Многие почему то не учитывают то, что есть целый пласт работы, которую молодые в силу своих амбиций не хотят делать. Поэтому работодатели предпочитают брать тех, кто будет ее тащить. Это ваш шанс зацепиться, а дальше все зависит только от вас.

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

habr.com

Программирование для начинающих – куда сделать первый шаг

Если разобраться, то каждый из нас ежедневно занимается программированием. Не верите? Но ведь вы устанавливаете будильник на своем телефоне на определенное время. Или задаете программу для стиральной машины, мультиварки.

При этом вы своими действиями меняете значение переменных и запускаете выполнение различных функции, которые прописаны в программном коде каждого из устройств. Для жаждущих новых знаний мы расскажем о программировании для начинающих более подробно:

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

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

Под технологией понимается хорошо зарекомендовавший себя и устоявшийся способ (подход) реализации определенных задач и функций с применением нескольких языков программирования.

Одной из таких технологий является ASP.Net. Она построена на основе устаревшей платформы Asp с использованием одного из языков .Net. Чаще всего применяются C# и Visual Basic. ASP.Net является серверной технологией, применяется для построения сайтов и веб-сервисов:


Но эта связка не является основной, используемой для построения современного виртуального пространства. Чаще всего для создания веб-ресурсов применяют язык программирования PHP и MySQL. Конечно, все эти составляющие «густо приправлены» CSS и HTML кодом.

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

В самом начале зарождения современного виртуального пространства использовался лишь один язык гипертекста (HTML). Именно он является тем, с чего начинается веб программирование. Со временем возможностей его тегов и атрибутов для оформления веб-страниц стало мало. Поэтому был реализован специальный стилевой язык элементов CSS.

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

Очередным этапом в эволюции интернета стало появление динамически изменяемых ресурсов. До этого все сайты были статическими и не могли изменять свое содержимое в ответ на действия пользователя. Частично это ограничение удавалось преодолеть с помощью встраивания в HTML блоков кода Java Script.

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

Создать динамически изменяющиеся ресурсы удается лишь благодаря использованию серверных языков программирования. Основным из них является PHP.

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


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

И в ответ на запрос браузера клиента быстро извлекать данные, необходимые для генерации. Чаще всего используется система управления базами данных (СУБД) MySQL. Это нужно учитывать при принятии решения о том, с чего начать web программирование.

Теперь давайте подведем итоги по сказанному выше:

  • В основе любого сайта лежит HTML и CSS;
  • Наиболее распространенным является динамический тип веб-ресурса;
  • Основным серверным языком является PHP;
  • Кроме PHP в создании динамических веб-страниц используют СУБД MySQL.

Все перечисленные дисциплины являются базовыми. Их основы являются тем, с чего начинают изучение программирования для веб.

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

Еще одной разновидностью прикладного программирования является системное программирование. Оно подразумевает создание программ, с помощью которых реализуется взаимодействие между собой различных частей операционной системы (драйвера, трансляторы).

Наиболее перспективные языки программирования прикладного уровня:

  • C/C++ — то с чего начинают обучение программированию. Несмотря на свой солидный возраст, эти языки остаются актуальными и сейчас. Тем более что C является основным языком, на котором написана операционная система Windows:

  • C# — дальний потомок предыдущих языков. Входит в состав пакета .NET от Microsoft. Используется как в прикладном программировании, так и для создания веб-приложений на основе технологии asp.net;
  • Java – кроссплатформенный язык. Основа, на которой базируется популярная сегодня мобильная операционная система Android. Разработка приложений под эту операционную систему является весьма перспективным направлением:

Если вы новичок и не знаете даже основ программирования, то изучение лучше всего начать с C или С++. Большая часть остальных языков имеет схожий с ними синтаксис и структуру.

Также важно правильно подобрать основные источники информации. Лучше всего, если это будут книги по программированию. Благодаря вводу кода примеров вручную новичок быстрее запоминает структуру и основные элементы языка.

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

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

www.internet-technologies.ru

Что следует знать перед тем как «увлечься» программированием / Habr

Вступление

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

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

Итак, после осознания навязчивого желания хотя бы немного да освоить это таинственное ремесло, каждый задает абсолютно логичный вопрос — «С чего же мне начать»? Ответов может быть множество — к услугам новичков скринкасты, книги, курсы, онлайн-обучение, форумы и прочее, и прочее. Учи-нехочу. И так как никакой общепринятой системы самообучения программированию не существует, можно смотреть и читать все без разбору, дни напролет. При желании, в чтении можно захлебнуться, однако для уверенного продвижения по лестнице знаний необходимо четко и эффективно расходовать свое время и силы, и если не знать с чего начать и куда двигаться — вы попросту забредете в дремучий лес, по которому можно блуждать неделями, пока, наконец, вы не выйдете на верную тропинку. Если выйдете вообще — велик шанс, что вам попросту все это дело быстро надоест.

Я и сам пошел по этому пути — скачивал тучи роликов, впридачу купил несколько книг, читал их и забрасывал, потому что мне все-равно не хватало знаний и подготовки, несмотря на то, что все материалы были предназначены для «новичков». Я постоянно гуглил разные мелочи, задавал нубские вопросы на форумах, хватая минусы, и это убивало во мне желание продолжать самообучение.

Да, любые знания и любой накопленный (нагугленный?) опыт вам, безусловно, поможет и пригодится, однако ваша цель научиться тому, чему вы хотите научиться, и увидеть мало-мальский результат в обозримом будущем ведь так?

Абсолютно все материалы, которые попадались мне на глаза, после краткого вступления немедленно бросались с места в карьер, предлагая читателю решения и примеры на заданную тему. Я чувствовал себя абсолютным двоечником в классе вундеркиндов, и постоянно сталкивался с одной и той же проблемой — авторы книг, впрочем как и любого другого образовательного материала, предполагали что я владею некоторой базой основ, которая, на первый взгляд, к непосредственному программированию не имеет никакого отношения.

Это как если вы пришли работать, скажем, крановщиком, вас в первый же день посадили в башню, и похлопали по плечу со словами «Ну, удачи!». А как же техника безопасности и базовое объяснение что делать, а чего делать не нужно? Как мне пользоваться инструментами? Что вообще у меня за инструменты в наличии? Что я должен знать перед тем как приступить к работе?

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

Итак, что же следует знать, перед тем как увлечься программированием?

1. Терминал

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

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

Самообучение

25 вещей о терминале, которые должен знать каждый пользователь Mac (англ.)
How to be a terminal pro — серия отличных скринкастов от Tuts+
2. Регулярные выражения

Представьте себе, что вы решили выучить иностранный язык не вникая в его азбуку, алфавит или иероглифику. Конечно, это возможно. Но насколько это усложнит процесс и путь к пониманию сути вещей? Решение сомнительное, правда? Так вот, регулярные выражения (они же регексы, с ударением на первый слог) — это, объясняясь простым языком, в какой-то степени вспомогательная азбука любого программиста, или, выражаясь языком викисловаря — «формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов».

Выглядеть регекс может, например, так:

((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,15})

Задача регулярных выражений — помочь программисту с поиском чего-либо. Сейчас объясню.

Если я в своей программе захочу найти все слова, частью которых является слово car (car, carrot, cartoon), мой регекс будет выглядеть так:

/car/

Если же меня интересует только слово car, я напишу:

/\bcar\b/

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

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

Зубрить их совсем не обязательно, но, согласитесь, просмотр пары-тройки скринкастов на данную тематику вас явно не убъет.

Самообучение

Скринкасты от Tuts+ — Regular expressions up and running
3. Софт для разработки — знай свое оружие

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

Для веб-разработки существует огромное количество програм, от простых текстовых редакторов до сложных облачных решений. В этой статье я не буду сравнивать эти редакторы между собой, вам придется сделать это самостоятельно — ведь вам с этим редактором жить, работать и смотреть на него и в горе и в радости. Я остановил свой выбор на редакторе Sublime Text 2. Помимо тонны возможностей, которыми обладает Sublime, необходимо отметить, что он условно-бесплатный и по нему существует множество отличной документации. Возможно совсем скоро, познав все хитрости Sublime и научившись подключать к нему плагины, подобная строка будет для вас обычным делом:

div>(header>ul>li*2>a)+footer>p (используется плагин Emmet, если кому интересно)

Самообучение

Готовим Sublime для front-end
Tuts+ — Sublime Text 2 first steps
4. Система контроля версий

«Ну а это еще что такое?» — спросите вы. О, система контроля версий это прекрасная вещь, без которой в наши дни не обходится ни один серьезный девелопер. Википедия гласит — «Система управления версиями позволяет хранить несколько версий одного и того же документа, при необходимости возвращаться к более ранним версиям, определять, кто и когда сделал то или иное изменение, и многое другое.» Систем контроля версий существует достаточно много, поэтому сразу скажу — ниже речь пойдет исключительно о GitHub, самом большом сервисе для совместной разработки проектов.

Резонный вопрос: «Зачем мне этот Гитхаб осваивать, ведь мне пока нечего выкладывать?» А причин на то несколько. Помимо содержания собственных репозиториев, GitHub, во-первых, поможет вам осознать себя частью огромного сообщества разработчиков (возможно, кто-то из читающих сейчас ухмыльнулся, но поверьте, это действительно важно, особенно на ранних стадиях обучения!). Кроме того, вы сможете взглянуть на чужой исходный код и научитесь правильно его скачивать и «форкать» (копировать). В дальнейшем GitHub частенько будет всплывать в различных онлайн-курсах и скринкастах, и, конечно же, их авторы будут уверены в том, что вы знаете, как Гитхабом пользоваться. Поэтому если у вас найдется немного времени на неделе, сделайте себе одолжение — попробуйте Git.

Самообучение

Tuts+ Git essentials
Try Git
5. История и культура

Этот пункт, скорее, вспомогательный, но если программиста которым вы восхищаетесь зовут Стив Джобс, то прошу вас, продолжайте чтение. Программирование имеет богатую и интересную историю (говорю вам как историк по первому диплому), в которой следует поковыряться хотя бы для общего образования. Занимаясь чем-либо, всегда полезно знать, откуда у этого чего-либо растут ноги. Кроме того, я искрене считаю, что без знания истории предмета невозможно полностью понять его суть, и, следовательно, достичь предельных успехов в его освоении. Поэтому если по прошествии некоторого времени такие имена, как Линус Торвальдс или же Грейс Хоппер не будут для вас пустым звуком — уважение вам и респект!

Помните — тот, кто не изучает историю, повторяет ее ошибки.

Заключение

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

Никогда не сдавайтесь!

habr.com

С чего начать изучение программирования новичку? / itProger

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

Надеюсь, после прочтения этой статьи, вы найдете свой путь, ведь именно в этом мы с вами сейчас и разберемся!

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

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

Стоит отметить, что знание таких наук, как математика, физика и английский язык, не обязательны, и это вы очень быстро поймете, как только начнете писать свою первую программу. Конечно, если вы планируете работать над большими проектами, вроде GTAV, Cinema4D или Google.Maps, то такие науки лучше бы знать. Правда, здесь вам больше поможет опыт, который в быстрые сроки сформирует в вашем сознании огромное количество знаний точных наук. Однако не стану скрывать, существуют некоторые сферы деятельности, как, например, нейронные сети, в которых без предварительных знаний математики просто не обойтись. Но только не веб, игры, программы, дизайн и прочее в этом духе. По крайней мере, на первых парах об этом можно вообще не заморачиваться.

Кстати, многие думают, что нужно учить языки программирования, начиная с самого первого появившегося языка и заканчивая последним. То есть построение алгоритмов, устаревшие языки, как Pascal, Delphi и прочие. Но это необязательно. Хотя может и пригодиться, если вы будете упорно их изучать, натачивая логические знания, которые можно будет потом использовать при построении кода на современных, более доступных простому пользователю языках. Но начинать все-таки нужно с языка, который большего всего относится именно к вашей любимой сфере, потому что это поможет вам быстро освоиться и начать зарабатывать на этом деле реальные деньги. А доскональное изучение основ может попросту вас напугать. К тому же, когда вы будете хоть немного владеть кодом, теория быстро станет понятной и доступной, чем наоборот.

Первым моим языком был сам «C++». До этого же я ничего не знал, и, поверьте моему опыту, со временем все стало на свои места. Позже я поступил в университет. Там мы учили все с самых основ, но смысла в этом я особо не видел.

Теперь давайте разберем каждую сферу по отдельности. И начнем мы с веб-программирования…

Веб программирование

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


Чтобы стать веб-программистом, необходимо знать такие языки программирования и разметки, как HTML, CSS, JavaScript (а вместе с ним и библиотеки jQuery, AngularJS и многие другие). Кроме того, необходимо уметь писать функционал сайта, который можно написать на языке PHP. Необходимо также уметь работать с базами данных и языком SQL. Для связи сайт – база данных можете изучить MySQL. И последнее, что прибавит вам пару очков навыка, это Ajax. Он позволяет делать некоторые изменения на сайте, к примеру, отправлять данные в базу данных без перезагрузки самого сайта.

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

Самостоятельная разработка игр

Данная область знаний является одной из самых сложных, невероятно интересных, труднодосягаемых и космически азартных сфер деятельности. Начав однажды, потом будет сложно остановиться. Тут и сложно и интересно одновременно, так что сложность со временем компенсируется интересом. Однако если вы создаете игру на уже готовых движках, то сложностей на горизонте никаких не видать. А экспериментировать с тем, что вы создаете, так это вообще отдельная тема.

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

К примеру, для разработки игры на Android вам потребуется знать язык Java и специальные библиотеки, служащие для создания игр на Android в Android Studio.

Для создания игр на ПК или консоль вам однозначно потребуется язык C++ и всевозможные библиотеки, которые и помогут вам создать игру. Для разработки на IOS потребуется язык Objective С или Swift, а также понадобится программа XCode.

Разработка игр при помощи движков

Если вы решили заняться разработкой игр при помощи движков, то вы на верном пути. Большинство игр в наше время создаются при помощи всевозможных игровых движков, из которых можно отметить таких гигантов как Unity, Cry Engine, Unreal Engine, Frostbite Engine, Dunia Engine, Source и так далее.


 Unity – игровой движок, позволяющий разрабатывать игры любой сложности, графики и логической составляющей под любую из популярных платформ. Чтобы владеть им, необходимо знать один из двух языков – C# или JavaScript. Рекомендуется разрабатывать на Unity именно мобильные игры, ибо иные приложения будут не столь мощными, как хотелось бы.

CryEngine, Unreal Engine, Frostbite Engine, Dunia Engine, Source – все эти и подобные им языки предназначены для построения мощных современных компьютерных и консольных игр. Для написания кода на них используется язык программирования C++. Если вы хотите создать игру похожую на CrySis 3, то именно подобные движки вам в этом и помогут.

Разработка приложений

Разработка приложений ведется в основном на языке C и ему подобных, то есть C++, C#, Java. Поэтому для написания приложений вам необходимо изучить C, а также более новый C-подобный язык, к примеру, C++.

Дизайнер

В дизайне необходимо уметь хорошо рисовать в Фотошопе и в программах 3D-моделирования, вроде Cinema 4D. Двух недель обучения вполне достаточно, остальное сделает опыт.


На этом все. Я попытался рассказать обо всех тонкостях каждой сферы программирования и рассказать, какие именно области знаний вам потребуется, чтобы овладеть ими. Сложные темы, вроде ИИ (Искусственный Интеллект) я обошел стороной, так как подобные области знаний не для новичков, для которых была рассчитана эта статья.

itproger.com