Перевод статьи Педро Морейры Сантоса «Learning a new language».
Я стараюсь изучать (или учить заново) какой-нибудь язык программирования каждые 2-3 года. В 2015 году я решил изучить функциональный язык, поскольку знал очень мало об этой парадигме программирования. Я попробовал несколько языков, таких как OCaml, Haskell, Clojure и F#. На последнем я и решил остановиться в конечном итоге.
Изучение нового языка это медленный процесс. Вы изучаете синтаксис и начинаете писать простой код на этом языке. В самом начале вы используете синтаксис нового языка, но по-прежнему не программируете с помощью его идиом. На этой первой стадии я обычно пользуюсь упражнениями на программирование (из-за их простоты). Я немного позанимался F#, пока не почувствовал, что понял язык и его идиомы, понял, как писать тесты, как управлять зависимостями и как создавать и строить простые проекты. Если вам интересно, мои упражнения по F# можно найти здесь.
Со временем вы начинаете программировать с помощью как синтаксиса языка, так и его идиом. Достигнув этой точки, я перешел от упражнений к проекту, размер которого был достаточным, чтобы подталкивать меня к изучению языка и его экосистемы. Я старался выбрать проект, который бы меня мотивировал. Для изучения F# я решил написать библиотеку по теории музыки и гитаре, которую я назвал Vaughan.
Мой план того, как выбрать язык для изучения и приступить к его освоению:
-
- Решить, какую парадигму программирования я хочу изучить (или усовершенствовать свои знания по этой теме)
- Примеры:
- Объектно-ориентированные (Java, C#, …)
- Функциональные (Haskell, F#, Clojure, …)
- Логические (Prolog, …)
- Процедурные (C, Pascal, …)
- Декларативные (SQL, …)
- …
- Примеры:
- Решить, какого вида приложения я хотел бы строить
- Примеры:
-
- LOB-приложения (сайты и веб-приложения, мобильные приложения, корпоративные приложения)
- Системные (веб-сервера, операционные системы, сеть, низкоуровневые штуки:) )
-
- Примеры:
- Попробовать несколько языков, подходящих по парадигме и типу приложений
- Я обычно провожу несколько недель/месяцев, исследуя подходящие языки.
- Выбрать язык и начать его изучение
- Получить рекомендации относительно начальной книги или другого учебного ресурса
- Найти других людей, заинтересованных в совместном обучении
- Найти наставника, который мог бы направлять процесс
- В случае с F# мой друг и просто прекрасный человек Samir Talwar был тем, кто ввел меня в мир функционального программирования.
- Использовать упражнения для изучения основ языка (главным образом синтаксиса) и экосистемы
- Примеры одинарных абстрактных упражнений
- Fizzbuzz
- LeapYear
- Roman numerals
- Примеры множественных абстрактных упражнений
- Bowling
- Tic tac toe
- Game of life
- Mars Rover
- Примеры одинарных абстрактных упражнений
- Построить проект с применением нового языка
- Решить, какую парадигму программирования я хочу изучить (или усовершенствовать свои знания по этой теме)
Построение Vaughan и изучение F# стало незабываемым опытом. Если интересуетесь музыкой и/или гитарой, то обратите внимание на мою библиотеку.
Перед F# я изучил Swift и набросал интерфейс с помощью iOS.
В данный момент я снова нахожусь в процессе поиска языка для изучения. В этот раз я решил изучить язык систем. Я колеблюсь между изучением Rust или возобновлением изучения C++ (в частности, новых C++11/14/17 стандартов). В 90-х и ранних 2000-х я много занимался С++, но теперь практически забыл его (несколько упражнений по С++ можно найти здесь). Оба языка весьма привлекательны.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]