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

9 шагов к освоению любого языка программирования

Перевод статьи «The 9-Step Plan For Becoming Dangerous In Any Language».

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

Люди изучают языки программирования по многим причинам. Например, когда:

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

Почему я считаю, что могу давать советы?

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

Сейчас мой путь в «языкознании» выглядит так:

Я не включаю в список родственные языки (например, TypeScript), которые тоже изучал попутно.

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

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

1. Следование принципу Парето

Формулировку возьмем из Википедии: «20% усилий дают 80% результата, а остальные 80% усилий — лишь 20% результата».

Применительно к изучению языков программирования эту формулировку можно перефразировать следующим образом: «Знание 20% языка позволит вам справиться с 80% работы, для которой этот язык вам нужен».

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

Но лично мне нравится поговорка «Jack of all trades, master of none, oftentimes better than a master of one» (приблизительно можно перевести как «специалист широкого профиля, не имеющий узкой специализации, зачастую бывает полезнее, чем узкий специалист», — прим. перев.).

За время своей карьеры вы постепенно придете к пониманию, что никакой язык не является универсальным, подходящим для всех случаев жизни (хотя JavaScript и Python приближаются к этому), так что все равно придется учить несколько.

2. Не упускайте из виду принципы программирования

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

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

3. Ознакомьтесь с документацией языка

«Если у меня будет 6 часов на то, чтобы срубить дерево, первые 4 я потрачу на заточку топора».

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

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

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

Если у вас Mac, подумайте о том, чтобы инвестировать в Dash. Это мой любимый ресурс, в частности, когда дело касается изучения нового языка. А еще там отличные интеграции с некоторыми IDE, например, с VSCode.

4. Изучите самые основы и практикуйтесь, практикуйтесь, практикуйтесь

Под «основами» я подразумеваю некоторые основные идеи, присутствующие в каждом языке:

По мере накопления опыта вы начнете видеть общие паттерны и на этом успокоитесь. А вот этого не надо! Хотя else/if и варианты switch могут быть легкими для понимания, научиться использовать их на практике с учетом всех мелких различий может быть не так просто.

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

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

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

Использование REPL

(Прим. ред. Techrocks. Из Википедии: «REPL — форма организации простой интерактивной среды программирования в рамках средств интерфейса командной строки. В такой среде пользователь может вводить выражения, которые среда тут же будет вычислять, а результат вычисления отображать пользователю»).

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

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

Онлайн-ресурсы для практики в алгоритмах

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

5. Как можно раньше учитесь тестировать свой код и тестируйте его почаще

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

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

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

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

6. Изучите, как в вашем языке работает менеджмент пакетов

Bundler, Cargo, Yarn, NPM, Cocoapods, PipEnv, NuGet, Gradle, Hex. Что у них общего? Все это — инструменты, играющие ключевую роль в управлении пакетами в экосистемах разных языков программирования.

Если вам приходилось пользоваться хоть одним из них, вы должны понимать, насколько это важно.

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

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

7. Поищите Awesome-репозитории на GitHub, связанные с вашим языком

Оригинальный репозиторий awesome — это невероятный ресурс для поиска связанных репозиториев для отдельных языков и технологий. Раздел Programming Languages — настоящая сокровищница со ссылками на потрясающие ресурсы по языку.

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

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

8. Практика. Build your own X

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

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

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

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

Создайте инструмент командной строки

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

Среди созданных мной CLI-инструментов были:

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

Создайте веб-сервер

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

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

9. Научитесь чтению файлов и записи в файлы

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

Эпилог

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

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

Источник

С чего самостоятельно начать обучение программированию: этапы освоения профессии и советы новичкам

История о том, как стать программистом с нуля

С чего учить языки программирования. Смотреть фото С чего учить языки программирования. Смотреть картинку С чего учить языки программирования. Картинка про С чего учить языки программирования. Фото С чего учить языки программирования

Здравствуйте, уважаемые читатели!

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

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

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

Кто такой программист

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

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

Программисты обладают такими качествами, как:

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

Что нужно знать и уметь

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

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

И это лишь часть того, что должен уметь делать программист.

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

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

Язык – это просто инструмент для решения бизнес-задач. Поэтому новичку надо определиться с тем, как решать задачу, разбить это решение на этапы, оптимизировать процесс, чтобы не тратить время и ресурсы впустую.

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

И напоследок научиться работать с базой данных.

Подбор направления

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

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

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

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

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

Выбрать направление деятельности можно среди доступных профессий:

И это только часть должностей, которые может занимать программист.

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

Выбор языка программирования

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

Можно найти предложения о работе, в которых сразу написано, с каким языком надо будет работать, например, PHP-программист или программист Python.

Если же отталкиваться от направления, то надо знать, что веб-разработчик пользуется C++, Python, Java. Системный программист – Assembler, C, C++, Python. Администратор базы данных – SQL.

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

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

Если к этому времени специалист еще не приступал к изучению фреймворков, структур и баз данных, то сейчас эти знания просто необходимы. Не надо бросаться на все сразу, лучше выбрать что-то из основного: Git, SQL, HTML, CSS, XML, JSP, Maven, Spring, ORM, REST, MySQL, PostgreSQL.

Самообразование

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

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

Онлайн-курсы

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

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

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

Составление резюме и портфолио

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

Лучше выбирать иностранные биржи, особенно если есть знания английского языка. Там и заказов больше, и доход выше. Подойдут, например, Upwork и YouTeam. Если говорить о русскоязычных биржах, то популярны Kwork, FL.ru и Freelance.ru.

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

А дальше можно уже перейти на специализированные сайты с вакансиями только для программистов, например, We Work Remotely и Хабр Карьера. А можно поискать работу на таких ресурсах, как hh.ru или SuperJob.ru.

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

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

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

Советы новичкам

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

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

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

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

Узнайте больше об архитектуре компьютера.

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

Заключение

Подведем итоги. Чтобы начать обучение программированию, надо следовать поэтапно. Сделайте следующее:

И в качестве общих советов:

Источник

Какие языки программирования учить в 2021 (для начинающих)

13 комментариев 4 месяца назад обновлено 1 месяц назад

Наша редакция подготовила исчерпывающее руководство по языкам программирования в 2021 году. В статье ответим на такие вопросы:

С чего учить языки программирования. Смотреть фото С чего учить языки программирования. Смотреть картинку С чего учить языки программирования. Картинка про С чего учить языки программирования. Фото С чего учить языки программирования

Содержание:

Как выбирают
язык программирования?

Список востребованных языков программирования не меняется уже лет 20. Тот же С, который был изобретен в 1972 году в 2019 стал лидером согласно индексу TIOBE. Но смотреть на индексы, когда выбираете язык программирования для изучения – не самая лучшая стратегия. Вы рискуете так и не стать программистом, потому что на каком-то этапе может стать понятно, что это не ваше.

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

Важный критерий – скорость изучения. Самые интуитивно понятные языки: Python и JavaScript. Но они могут подойти не для любой задачи.

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

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

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

Смотрите инфографику ниже. Она поможет с выбором:

С чего учить языки программирования. Смотреть фото С чего учить языки программирования. Смотреть картинку С чего учить языки программирования. Картинка про С чего учить языки программирования. Фото С чего учить языки программирования

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

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

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

Определились с профессией? Теперь давайте выберем, какой язык изучать.

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

В мире насчитывается по разным источникам до 25 000 языков. Но наиболее востребованными остаются 15-20: Java, JavaScript, Python, PHP, С, С++, С# и другие.

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

PHP и JavaScript – для создания сайтов.

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

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

Backend разработка

Чем занимается backend разработчик?

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

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

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

С чего учить языки программирования. Смотреть фото С чего учить языки программирования. Смотреть картинку С чего учить языки программирования. Картинка про С чего учить языки программирования. Фото С чего учить языки программирования

Какие языки программирования используют в backend?

Backend developer должен знать один или несколько серверных языков. Какой именно — зависит от назначения сервера. Если это типичный веб, то подойдет PHP, Python. Для RPG игр подойдет производительный С++.

Java для сайтов с большими базами данных и сложными задачами, аналогичных Uber или Airbnb. Чтобы разработка шла быстро пригодятся знания фреймворков: например, Django для Python, Laravel для PHP.

Разработчику потребуются навыки настройки Nginx или Apache, если нужно будет развернуть веб-сервер. Обязательны навыки работы с базами данных MySql, PostgreSQL, MongoDB и языками запросов.

Работа с API: Rest, JSON. Это нужно для работы с интеграциями с разного рода внешними сервисами и обработкой запросов от фронтенда. В must have список знаний бекендера с квалификацией выше среднего добавляется инструменты для автоматизации развёртывания, контейнеризации например Docker.

JavaScript, понадобиться, чтобы помочь на клиентской стороне. Для этого же будет полезно понимать логику работы HTML/CSS технологий.

Для любого программиста обязательно знать и уметь обращаться с системами контроля версий. Например Git.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *