Как и где научиться кодингу? — The Village

Как перейти с начального уровня на средний?

Типичный вопрос, который мы получаем от многих новичков, — «что дальше?» В частности, когда они пытались проработать какие-то уроки, пособия, курсы, но в итоге всё равно не смогли заполнить пробел между пониманием, как работает оператор if или цикл for, и как именно применять то, что они изучили, чтобы создать сложные и интересные программы.

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

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

Вот несколько советов, как не сдаваться и что делать дальше.

Перейдите с пассивного обучения на активное

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

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

Постоянно практикуйтесь

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

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

(См. также ЧаВо: Где можно найти тренировочные упражнения и идеи для проектов и ЧаВо: Я не могу придумать классную идею для проекта. Мне просто не хватает креативности? Как другие программисты ищут вдохновение?)

Научитесь декомпозировать задачу

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

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

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

Если вы совсем не знаете, как сделать что-то (например, как заставить компьютер выбрать случайное значение), погуглите. В данном примере поиск «Х выбрать случайное значение» (где Х — используемый язык программирования) покажет несколько различных способов, которые вы сможете использовать. Иногда задачу получается разбить на множество частей без поисковика, а иногда без него не обойтись.

Так, если вы учите Java и хотите научиться писать игры, но понятия не имеете, с чего начать или как разбить задачу на составляющие, загуглите «java игры уроки». Поиск даст несколько хороших источников, которые научат вас писать игры и (обычно автоматически) разбивать процесс написания игры на подзадачи поменьше.

Как и где научиться кодингу? — The Village

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

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

Больше советов смотрите в ЧаВо: Как улучшить навык реализовывать задачи/задания в программах (алгоритмическое мышление).

Будьте систематичны

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

Во время написания кода остановитесь на минуту и составьте на листе бумаги приблизительные план действий. Попробуйте нарисовать какие-то схемы или набросать что-то вроде псевдокода. Если вам придётся изменить свой план (что вы, скорее всего, и сделаете), подумайте, для чего вам нужно это изменение и каким будет ваш новый план действий. (Этот этап планирования — также подходящая возможность, чтобы потренироваться декомпозировать задачи!)

Во время отладки кода ставьте чётки цели. Попробуйте мыслить, как учёный: проводите эксперименты, чтобы либо попытаться исправить баг, либо сузить область его поиска, и запишите результаты. Если ваша догадка/предпринятая попытка оказалась неверной или произошло что-то, чего вы не предусмотрели, остановитесь и разберитесь, в чём причина. Можете фиксировать эксперименты и тесты в блокноте, если это поможет вам придерживаться плана.

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

Не делайте что попало, пока что-нибудь не сработает — будьте последовательны.

Как и где научиться кодингу? — The Village

Не расстраивайтесь, если приходится исправлять баги или гуглить

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

Отладка (и трудности!) — неотъемлемая часть программирования. Если получится, постарайтесь не отчаиваться и не злиться. Отнеситесь к этому как к занимательному квесту или головоломке.

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

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

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

Не бойтесь попросить помощи

И наконец, если вы совсем не можете сдвинуться с места и понятия не имеете, что делать дальше, не стесняйтесь обратиться за помощью!

Как и где научиться кодингу? — The Village

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

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

Больше информации читайте в руководстве о том, как задавать вопросы на reddit.

Пройдите более интенсивный вводный курс

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

Железное правило: если вводные курсы по программированию, которые вы проходили, не вызвали у вас особых трудностей или не содержали заданий, упражнений и мини-проектов, вам нужно поискать более требовательные курсы. Постоянная практика (и трудности!) — неотъемлемая часть учебного процесса.

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

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

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

Предлагаем ознакомиться:  Чем опасно кодирование от алкоголизма

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

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

Я хочу научиться…

  • …разрабатывать приложения для iPhone — Swift (ещё)
  • …разрабатывать приложения для Android — Java (ещё)
  • …создавать веб-сайты — JavaScript, CSS, HTML5 (ещё)
  • …писать десктопные приложения для Windows — C#
  • …создавать 2D/3D-игры — JavaScript, C# или C (ещё)
  • …программировать Arduino/микроконтроллеры/роботов — Си
  • …заниматься научными/математическими вычислениями или анализом данных — Julia, Python, R или Matlab
  • …заниматься автоматизацией и разработкой скриптов — многие языки (Python, Ruby, Bash, Powershell, AutoHotKey…)

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

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

Как и где научиться кодингу? — The Village

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

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

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

Информатика/компьютерная инженерия/программная инженерия vs. программирование/кодирование

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

Как и где научиться кодингу?. Изображение № 1.

Первое отличие, о котором вам следует понимать, это отличие между первыми тремя терминами и программированием/кодированием. Информатика, компьютерная инженерия и программная инженерия — это научные дисциплины. Сказать «я изучаю информатику» — то же самое, что сказать «я изучаю химию» или «я изучаю литературу».

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

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

Информатика vs. компьютерная инженерия vs. программная инженерия

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

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

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

Да и да.

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

Как и где научиться кодингу?. Изображение № 2.

Более развёрнутые ответы на различные вопросы по поводу карьеры можно получить, задав их в /r/cscareerquestions.

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

Многие люди, занимающиеся программированием, начинают бояться, что им недостаточно знаний. Поэтому многие стремятся усовершенствовать свои навыки. Но на данном этапе есть только один способ сделать это — практиковаться. Существует много сайтов и источников для тренировки, например, /r/dailyprogrammer, CodeWars, HackerRank, Project Euler и многие другие.

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

Scratch — просто потрясающий инструмент для детей 8-16 лет, разработанный Массачусетским технологическим институтом. Он запускается через браузер без установки дополнительного ПО.

Также можете заглянуть на /r/ProgrammingForKids — сабреддит посвящён именно этому вопросу. Ресурсов множество.

Я не могу придумать классную идею для проекта. Мне просто не хватает креативности? Как другие программисты ищут вдохновение?

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

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

Здесь список простых клонов 49 игр, которые можно повторить.

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

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

Если вы хотите попробовать что-то новое, на сайте Idea Machine пользователи размещают свои идеи для приложений и очень хотели бы, чтобы кто-нибудь их осуществил.

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

  • утилиты командной строки (ls, wget, curl и т.д.)
  • текстовый редактор
  • IDE
  • программу для просмотра изображений
  • пакет офисных приложений (например, Microsoft Office или Libreoffice)
  • язык программирования (интерпретатор или компилятор)
  • веб-браузер
  • базу данных (реляционную или нереляционную)
  • веб-сервер
  • систему управления версиями

Если хотите сделать что-то потруднее, но с детальным объяснением, попробуйте реализовать одну из программ 500 Lines or Less — это open source-книга, в которой пошагово описано, как создавать относительно сложные программы, занимающие не более чем 500 строчек кода (3D-моделлеры, статистические анализаторы и т.д.).

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

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

Предлагаем ознакомиться:  Какими препаратами кодируют алкоголиков

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

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

Присмотритесь к вещам, которые вас раздражают. Если в вашей жизни есть что-то монотонное или что вы не любите делать, спросите себя, нельзя ли это действие автоматизировать. Чтобы получить представление о том, что можно автоматизировать с помощью компьютера, зайдите на Automate the Boring Stuff. Это руководство для Python, но все описанные в нём вещи можно сделать на любом языке программирования. Или попробуйте загуглить «как автоматизировать дом», чтобы найти больше прикладных решений.

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

Конечно, нет!

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

Неудача — важная часть обучения. Очень важно знать, как не надо делать. Неудача — это просто приобретённый опыт.

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

Я много гуглю или не знаю, как делать что-то, когда только собираюсь начать. Это плохо?

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

Вот единственные действительно необходимые условия:

  • Вы должны уметь печатать (если только вы не используете язык на основе подхода «drag-and-drop» вроде Scratch).
  • У вас должен быть компьютер.
  • Вы должны уметь самостоятельно гуглить/искать ответы на вопросы.

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

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

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

Нет. Вот ветка, в которой эта тема рассмотрена с разных сторон. Есть много других, аналогичных этой.

Как выучить темы, которые рассматриваются в стандартных университетских программах по информатике?

Я хочу научиться…

Это один из самых часто задаваемых вопросов.

Обычно ответ такой: пишите как можно больше программ.

Однако, есть простое упражнение, которое поможет вам улучшить этот навык:

  • Выберите действие, которое вы делаете каждый день, например, готовите завтрак или что-то в этом роде. Оно должно быть не слишком простым, но и не слишком сложным.
  • Запишите, какие шаги вы при этом предпринимаете, но сделайте это по памяти и не в то время, в которое обычно выполняете выбранное действие. (Запишите шаги, чтобы приготовить завтрак в середине дня.)
  • В следующий раз, когда будете выполнять это действие, возьмите этот план и попробуйте неотступно придерживаться его. Постарайтесь не отклоняться от записанных шагов, а если вам пришлось это сделать, то запишите, что вы сделали не по плану.
  • Улучшайте алгоритм, пока не будете довольны им.
  • Попробуйте повторить то же самое на различных действиях. С каждым разом задание будет даваться всё легче.

Как бы глупо это упражнение ни звучало, оно работает. Схема была испробована на множестве студентов и позволила достичь значительного прогресса.

What every computer science major should know — Matt Might (Что нужно знать каждому студенту, изучающему информатику — Мэтт Майт)

Даёт высококачественный обзор различных областей и причин, почему они ценны. Также содержит список материалов к прочтению.

Open source computer science degree — Open Source Society (Открытая программа по информатике от Open Source-сообщества)

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

Teach yourself CS (Как самостоятельно изучить информатику)

Аналог предыдущего ресурса с тем исключением, что рекомендует как книги, так и видеолекции. Более продвинутые рекомендуемые источники связаны с системами (например, операционными системами, базами данных…)

A Self-Learning, Modern Computer Science Curriculum (Современная программа по информатике для самостоятельного изучения)

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

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

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

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

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

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

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

Однако ответ будет несколько другим, если вы хотите получить диплом по информатике. У многих вузов есть особые требования, которым вы должны удовлетворять, прежде чем они либо примут, либо выпустят вас (курсы по исчислению и т.д.). А так как информатика — это в некоторой степени прикладная математика, вам почти наверняка придётся учить дискретную математику, писать доказательства и тому подобное, чтобы получить диплом.

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

Иллюстрация: Reddit blog

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

Частый вопрос, который возникает у многих новичков, — какую из операционных систем им лучше использовать: Windows, Mac или Linux.

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

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

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

Из этого правила есть два основных исключения:

  • Если вы хотите заниматься разработкой для Windows, покупайте компьютер на Windows.
  • Если вы хотите заниматься разработкой для Mac или iOS, покупайте Mac.

Да и да.

С чего начать делать видеоигры?

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

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

Конечно, нет!

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

  • Unity (C#): подходит для мобильных, десктопных, браузерных/онлайн и консольных 2D и 3D-игр
  • Construct2 (JavaScript): для мобильных, десктопных и браузерных/онлайн 2D-игр
  • Pygame (Python): движок для десктопных 2D-игр
  • LÖVE (LUA): подходит для десктопных 2D-игр

Всегда помните, что ваша цель — разрабатывать игры, а не движки! Так что не нужно заново изобретать велосипед.

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

Обязательно загляните в ЧаВо /r/gamedev, почитайте вводное руководство на /r/gamedev и поищите более старые ветки на /r/gamedev и /r/learnprogramming.

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

Обычно большинство людей советует начинать с изучения HTML, CSS и Javascript (в таком порядке) — это три главных языка, которые поддерживают все веб-браузеры и на которых написаны все сайты.

Больше информации можно найти в ЧаВо /r/webdev. Вот ещё один список онлайн-курсов, пособий и ресурсов для начинающих.

Для каждого типа смартфонов понадобится выучить разные языки программирования.

  • Приложения для Android пишутся преимущественно на Java — больше информации читайте в ЧаВо /r/androiddev.
  • Приложения для iOS пишутся на Objective-C или Swift — больше информации ищите на боковой панели /r/iosprogramming и в их вики (на GitHub).
  • Приложения для Windows Phone пишут на C#, Visual Basic или Javascript — больше информации ищите на боковой панели /r/WPDev.

Вы также можете создать приложения, которые будут запускаться на всех трёх крупнейших платформах, с помощью технологий Phonegap и Titanium — приложения пишутся один раз с использованием HTML, CSS и Javascript, а запускаются на любой платформе.

Больше информации ищите в списке ресурсов по разработке мобильных приложений. Вот одна старая ветка на эту тему: http://redd.it/352f09.

Однако не забывайте, что многие, если не все из указанных инструментов рассчитаны на тех, кто уже имеет предыдущий опыт в программировании. Если вы прежде никогда не занимались разработкой, может быть, вам лучше начать с изучения языка, по которому есть больше ресурсов специально для новичков. Когда вы приобретёте некоторый опыт и усвоите лежащие в основе программирования принципы, то вам станет намного проще учить новые языки и начинать изучение мобильной разработки. Раздел «С чего мне начать?» в нашем ЧаВо содержит больше информации о том, с чего нужно начинать.

Участвуйте в проектах группы /r/learnprogramming на GitHub! Её создал jfredett специально для размещения проектов, с помощью которых начинающие программисты смогут освоить отрытую разработку, взаимодействуя с опытными программистами и менторами.

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

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

Вот несколько старых веток на тему работы с open source-проектами.

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

Где можно найти примеры хорошего кода и проектов для обучения?

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

Что значит «знать язык» или «уметь программировать»?

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

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

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

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

Зайдите на /r/GetMotivated/ и /r/GetDisciplined.

Как начать крупный проект и не забросить его?

Во-первых, досконально разберитесь в сути задачи.

Часто на этом этапе помогает Rubber Duck Debugging. Объясняя задачу или идею кому-то (или чему-то) другому, кто о ней ничего не знает или ничего в ней не понимает, человек сам более глубоко вникает в неё: ведь ему приходится размышлять над задачей значительно больше, и это приводит к её лучшему пониманию.

Во-вторых, не бросайтесь сразу же к компьютеру!

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

Это приведёт нас к следующему.

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

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

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

Как только вы дойдёте до этого момента, начинайте программировать. Напишите одну небольшую часть и протестируйте. Напишите следующую, протестируйте и т.д.

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

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

Как не забросить проект?

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

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock detector