Просто о сложном, интересно о простом

Как научиться программировать

Как научиться программировать

Зачем учиться программировать? Если хотите стать программистом или просто работать в IT, то ответ очевиден. А если нет?
Зачем учиться программировать? Если хотите стать программистом или просто работать в IT, то ответ очевиден. А если нет?
Бывают такие задачи, что проще сесть и написать простую программку, чем полдня считать на калькуляторе и в итоге где-нибудь в середине ошибиться.

Кроме того, изучение алгоритмов структурирует мышление. Изучение стандартных алгоритмов решения определенных задач структурирует его вдвойне.

Возражения?

Возражения?

1
Мне уже поздно этому учиться. Все программисты начинают кодить еще в школе
2
Мне еще рано этому учиться. У меня даже информатика в школе не началась
Вот это сейчас смешно было. В игры, которые учат программировать, с удовольствием играют дети лет с трех. Прочтите нашу статью Программирование для детей. Не бойтесь, там про игры и роботов.
3
Я девушка. Все программисты — мужчины
Особенно Ада Лавлейс, первый программист в мире. Или Грейс Хоппер, писавшая код для первого американского компьютера. В общем, вот вам видео от разработчиц Microsoft, учебное и мотивирующее одновременно — от том, как с нуля создать мобильное приложение.
4
Я вообще гуманитарий! У меня нет к этому никаких способностей
В смысле «душа к этому не лежит» (тогда и не надо, зачем себя насиловать)? Или в смысле «мне плохо давались уроки информатики»? Может, вам просто было скучно: информатику часто преподают занудно и заумно. Не поверите, но учиться программировать можно весело, а учить — так, что хочется слушать и все понятно.
5
Для этого надо как минимум четыре года учиться в вузе. У меня сейчас нет такой возможности
Да, это серьезное препятствие. Высшее образование в области IT лишним не бывает. Но есть и другие пути. Можно заниматься самостоятельно, учиться онлайн, смотреть видеокурсы и даже играть. Да, есть игры, которые учат программировать!

Учитесь онлайн

Учитесь онлайн

Технострим Mail.Ru Group

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

GeekBrains

На IT-портале GeekBrains можно найти множество платных и бесплатных курсов, в том числе базовый курс «Основы программирования».
GeekBrains

На IT-портале GeekBrains можно найти множество бесплатных курсов, в том числе базовый курс «Основы программирования».


Udacity (Android, iOS)

Курсы программирования на платформе Udacity от Google, Facebook и других крупных компаний подойдут и для новичков, и для программистов с опытом.
Udacity (Android, iOS)

Курсы программирования на платформе Udacity от Google, Facebook и других крупных компаний подойдут и для новичков, и для программистов с опытом.


Khan Academy (Android, iOS)

Курсы на платформе Khan Academy — видеоуроки от экспертов, в том числе и на тему программирования.
Khan Academy (Android, iOS)

Курсы на платформе Khan Academy — видеоуроки от экспертов, в том числе и на тему программирования.

На платформе Stepic есть, среди прочего, онлайн-курсы с введением в такие языки программирования, как С/С++, Java, Python.

Онлайн-курсы от Массачусетского технологического университета — более 2 400 курсов для программистов на разные темы, а также учебники и вспомогательные материалы.
JavaRush

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

Видеоуроки о Ruby, JavaScript, iOS-разработке, HTML/CSS, в том числе для новичков.
Бесплатные онлайн-курсы программирования от экспертов Microsoft.
Коллекция бесплатных видео, которые показывают процесс создания кода.
Стриминговый веб-сервис: прямая трансляция написания кода.

Учитесь, играя

Учитесь, играя

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

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

Игры с элементами визуального программирования

Игры с элементами визуального программирования

SpaceChem

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


Opus Magnum

Игра от тех же разработчиков (компания Zachtronics) с очень похожей идеей. Только здесь вы имеете дело не с химией, а с алхимией, программируя машину трансмутаций. Больше возможностей, меньше ограничений, множество способов решения для каждой головоломки.
Opus Magnum

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

Human Resource Machine

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


Machineers

Головоломка-приключение с элементами визуального программирования, в которой вам нужно чинить фантастические устройства.

Danish Lohika Games, разработчики игры, придумали ее в ответ на детскую жалобу: мол, все развивающие игры похожи на брокколи в шоколаде.
Machineers

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

Codemancer

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

Игры, в которых нужно писать настоящий код

Игры, в которых нужно писать настоящий код

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

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


В общем, все как в обычных играх, только нужно писать настоящий код на языках JavaScript и Python (а в курсах веб-разработки используются HTML, CSS и jQuery). Не пугайтесь, игра действительно увлекает и очень дружелюбна к новичкам, недаром ее часто используют в школах. Есть русская локализация.
В общем, все как в обычных играх, только нужно писать настоящий код на языках JavaScript и Python (а в курсах веб-разработки используются HTML, CSS и jQuery). Не пугайтесь, игра действительно увлекает и очень дружелюбна к новичкам, недаром ее часто используют в школах. Есть русская локализация.

Code Hunt

Браузерная игра-головоломка от Microsoft Research учит программировать на C# и Java. Вы, охотник за кодом, получаете фрагмент программы. Неизвестно, что делает этот фрагмент — но точно что-то ненужное. Вы должны переписать его так, чтоб он делал что-то нужное.


Hack'n'Slash

Игра, которая разрешает себя переписывать. Вам нужно изменять свойства игрового мира и его объектов — иначе пройти это приключение невозможно.
Hack'n'Slash

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

Colobot

Классическая игра, которая вышла в 2001 году и сейчас выглядит, конечно, не очень впечатляюще. Но она интересная и свою задачу — учить программировать — выполняет вполне достойно. Вы должны подготовить планету для колонизации — а для этого нужно программировать роботов на выдуманном языке CBOT, похожем на C++ и Java.
Серия игр Ceebot

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

Герой этого приключения может менять мир игры, ведь у него есть доступ к ее коду. А вам придется программировать на JavaScript.
Стратегическая игра, в которой вы управляете колонией, программируя искусственный интеллект юнитов на языке JavaScript.
В этой игре вам предстоит управлять лифтом с помощью JavaScript.
Онлайн-игра для изучения языка Ruby, два уровня сложности.
Браузерная игра-приключение, которая научит вас программировать на Python.

Симуляторы программиста

Симуляторы программиста

TIS-100

Игра от Zachtronics, создателей SpaceChem и Opus Magnum. TIS-100 — так в этой игре называется сложная система анализа данных — сломалась, и вам нужно ее починить, переписывая поврежденный код. На ассемблере — и если вам незнакомо это слово, лучше начать с какой-нибудь другой игры.


SHENZHEN I/O

Еще один симулятор программиста от Zachtronics. Вы устраиваетесь в крупную китайскую корпорацию, где вам придется собирать и программировать микроконтроллеры (тоже на ассемблере).
SHENZHEN I/O

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

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

Еще больше игр, которые учат программировать — в нашей статье «Программирование для детей»

Используйте приложения

Используйте приложения


Серия бесплатных мобильных приложений SoloLearn (iOS и Android)

Есть отдельные приложения для языков программирования C++, Python, Java, C#, JavaScript, Ruby, PHP, Swift, для языка запросов SQL, для средств разметки веб-страниц HTML и CSS. Многие из них переведены на русский язык. Мини-игры, уроки теории и тестов. Можно задавать вопросы опытным разработчикам и соревноваться с другими пользователями.
Серия бесплатных мобильных приложений SoloLearn (iOS и Android)

Есть отдельные приложения для языков программирования C++, Python, Java, C#, JavaScript, Ruby, PHP, Swift, для языка запросов SQL, для средств разметки веб-страниц HTML и CSS. Многие из них переведены на русский язык. Мини-игры, уроки теории и тестов. Можно задавать вопросы опытным разработчикам и соревноваться с другими пользователями.


Приложение Py (iOS, Android)

Курсы по JavaScript, Python, Swift, разработке для iOS, анализу данных, HTML, CSS, SQL. Небольшие порции теории и простые интерактивные задания, быстрые и необременительные, как уроки языков в Duolingvo. Но большинство уроков — платные.
Приложение Py (iOS, Android)

Курсы по JavaScript, Python, Swift, разработке для iOS, анализу данных, HTML, CSS, SQL. Небольшие порции теории и простые интерактивные задания, быстрые и необременительные, как уроки языков в Duolingvo. Правда, большинство уроков — платные.


Приложение Mimo

Мини-уроки, задания и идеи проектов и для новичков, и для продвинутых программистов. Можно изучать HTML, CSS, SQL, Swift, языки программирования Java, JavaScript, Python, Ruby, C# и C++. Правда, бесплатны только первые два урока, дальше нужна платная подписка.
Приложение Mimo

Мини-уроки, задания и идеи проектов и для новичков, и для продвинутых программистов. Можно изучать HTML, CSS, SQL, Swift, языки программирования Java, JavaScript, Python, Ruby, C# и C++. Но бесплатны только первые два урока, дальше нужна платная подписка.


Приложение Enki (iOS, Android)

Языки и инструменты разработки Python, Java, JavaScript, Linux, SQL, Node, React, git. Мини-игры, полезные советы, примеры лучших практик, историческая информация. Но часть контента доступна только платным подписчикам.
Приложение Enki (iOS, Android)

Языки и инструменты разработки Python, Java, JavaScript, Linux, SQL, Node, React, git. Мини-игры, полезные советы, примеры лучших практик, историческая информация. Но часть контента доступна только платным подписчикам.


Lrn (iOS, Android)

Сервис и приложения Lrn предлагают уроки языкам и инструментам Python, Ruby, Javascript HTML, CSS. Немного теории и небольшие интерактивные задания с подсказками. Часть уроков доступна бесплатно, остальные докупаются.
Lrn (iOS, Android)

Сервис и приложения Lrn предлагают уроки по языкам и инструментам Python, Ruby, Javascript, HTML, CSS. Немного теории и небольшие интерактивные задания с подсказками. Часть уроков доступна бесплатно, остальные докупаются.

Практикуйтесь

Практикуйтесь

Codewars

Множество задач для огромного количества языков — от C++, C#, Java, Javascript или Python до такой экзотики, как Haskell или Elixir. Разные уровни сложности, от минимального — для тех, кто только знакомится с синтаксисом, до задач, которые будет непросто решить даже опытным программистам. Никакого обучения не предлагается, но, когда вы решите задачу (или сдадитесь, так тоже можно), можно будет посмотреть и обсудить решения других пользователей.

Codecademy

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

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

Hexlet

Русскоязычный ресурс для изучения программирования с видеолекциями, тестами, интерактивными блоками и домашними заданиями. Четыре специализации: JavaScript Backend, JavaScript Frontend, PHP и Java.

Progate (Android)

Бесплатная платформа для изучения языков программирования. Сейчас на платформе 13 курсов, в том числе по HTML и CSS, JavaScript, Java, Python, Ruby, SQL, jQuery, до десятка уроков в каждом. Все курсы стараются как можно быстрее перейти к практике.


Progate (Android)

Бесплатная платформа для изучения языков программирования. Сейчас на платформе 13 курсов, в том числе по HTML и CSS, JavaScript, Java, Python, Ruby, SQL, jQuery, до десятка уроков в каждом. Все курсы стараются как можно быстрее перейти к практике.
Учимся писать код, а потом практикуемся — в пользу благотворительных организаций
Учит программировать на Python, C#, Java, Ruby, Swift и некоторых других языках
Тур по лучшим руководствам в сети — видео, интерактивные занятия и материалы для чтения
И еще 25 сайтов с задачами по программированию

Соревнуйтесь

Соревнуйтесь

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

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

Участникам нужно за небольшое время решить несколько задач. За соревнованиями программистов следят рекрутеры крупных IT-компаний.
Пространство, где разработчики могут собираться вместе и изучать такие языки программирования, как JavaScript, Java, Python, PHP, Ruby.
Браузерная среда разработки и соревновательная платформа для программистов.
Сайт, где программисты сражаются друг с другом и с ботами разного уровня.
Напишите на Java или .NET программу для боевого робота, который победит роботов других игроков.
То же самое, только на JavaScript
Знаете, почему мы уверены, что вы можете научиться программировать, если захотите? Потому что это по силам даже маленьким детям. Если не верите, прочитайте нашу статью «Программирование для детей».
Понравилась статья? Поделись с другом!