Перевод статьи Vinicius Brasil «How to Learn a New Programming Language or Framework».
Новые языки программирования появляются ежедневно. Dart, Go, Kotlin, Elixir и прочие! Справиться с кривой их изучения может быть непросто, но есть определенные подходы, которые помогут вам пройти этот путь.
Для ускорения процесса обучения, а также чтобы свободнее владеть новым языком или фреймворком, стоит предпринять следующие шаги.
Изучите язык, а уж затем фреймворк
Некоторые люди пытаются изучать фреймворки, например, Ruby on Rails, без знания языка (в данном случае – Ruby). Это большая проблема, особенно если речь идет о Rails, для которого Ruby является предметно-ориентированным языком (DSL, domain-specific language).
Решайте задачки на программирование
Есть много сайтов, таких как LeetCode, HackerRank и Project Euler, которые могут помочь вам в этом вопросе. Решая задачи, вы узнаете гораздо больше о синтаксисе, библиотеках и логике. Также это хороший способ подготовиться к собеседованиям.
Пользуйтесь StackOverflow и Code Review в свое удовольствие
Решая задачи, вы будете сталкиваться с проблемами. Чтобы с ними разобраться, вы можете использовать StackOverflow – сайт, не нуждающийся в представлении.
Также будет хорошей идеей пользоваться разделом Code Review сайта StackExchange – сети от StackOverflow. Смысл этого раздела в том, что вы можете получить ревью своего кода от экспертов по языку, который вы изучаете. Просмотрите раздел для новичков и присоединитесь к отличному сообществу!
Читайте побольше кода
Здесь вам очень поможет GitHub. На этом сайте вы сможете найти продкашен-код на изучаемом вами языке. А если вы уже достаточно уверены в себе, чтобы сделать свой вклад, то это будет даже лучше.
Установите статический анализатор кода (Linter)
Линтеры это инструменты для анализа кода, помечающие баги, идиоматические отступления, стилистические ошибки и многое другое. Эти инструменты будут помечать ошибки, чтобы вы могли их исправить, и таким образом вы будете учиться. В качестве линтера для Ruby я использую RuboCop.
Пишите код идиоматически
Когда я изучал Python, я перенес на него свои знания C#. Это отличный способ изучения нового языка программирования. Однако, этого недостаточно, чтобы свободно им владеть, поскольку так вы не научитесь писать код с применением идиом этого языка.
Для иллюстрации, взгляните на этого код на Python:
def matrix_of_floats(matrix_of_anything): n = len(matrix_of_anything) n_i = len(matrix_of_anything[0]) new_matrix_of_floats = [] for i in xrange(0, n): row = [] for j in xrange(0, n_i): row.append(float(matrix_of_anything[i][j])) new_matrix_of_floats.append(row) return new_matrix_of_floats
А это тот же код, но с применением идиоматического написания, характерного для Python:
def matrix_of_floats(matrix_of_anything): return [[float(a_ij) for a_ij in a_i] for a_i in matrix_of_anything]
Чтобы так писать код, вам нужно читать побольше кода, написанного профессионалами.
Постройте что-нибудь!
Это самое лучшее. Мы ведь учим языки программирования, чтобы на них создавать что-нибудь. Когда я изучал Ruby, я использовал фреймворк Rails, чтобы построить блог, todo-приложение, клон Википедии и сайт, похожий на Rotten Tomatoes.
Построение чего-нибудь затронет каждый изучаемый вами аспект.
Не сдавайтесь
Преодолеть кривую обучения может быть действительно сложно. Вам потребуется время и концентрация. Не сдавайтесь, ведь вы можете быть гораздо ближе к успеху, чем думаете. Если застряли, попросите о помощи. Для этого есть множество ресурсов.
Совет джедая: while(true) => study()
Я знаю одного программиста, который уже больше 20 лет изучает C#. И он по-прежнему каждый день открывает для себя что-то новое в C# и .NET. Этот парень – Антонио Маниеро, самый влиятельный член StackOverflow на португальском языке.
Реальность такова, что мы никогда не изучим язык полностью. Вы можете знать что-то очень хорошо, стать авторитетом в этой сфере, но все равно останется еще больше того, что только предстоит узнать.
Да пребудет с вами сила! Поделитесь в комментариях, что лично вам помогает в изучении новых языков.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]
Статья короткая, но по делу, спасибо)
Самое главное практика — по ходу теория нужная и навыки подтянутся.
Теперь я знаю чем заняться.