План изучения нового языка программирования

0
5140
views

Перевод статьи Педро Морейры Сантоса «Learning a new language».

Как я изучаю новый функциональный язык программирования

Я стараюсь изучать (или учить заново) какой-нибудь язык программирования каждые 2-3 года. В 2015 году я решил изучить функциональный язык, поскольку знал очень мало об этой парадигме программирования. Я попробовал несколько языков, таких как OCaml, Haskell, Clojure и F#. На последнем я и решил остановиться в конечном итоге.

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

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

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

    1. Решить, какую парадигму программирования я хочу изучить (или усовершенствовать свои знания по этой теме)
      • Примеры:
        • Объектно-ориентированные (Java, C#, …)
        • Функциональные (Haskell, F#, Clojure, …)
        • Логические (Prolog, …)
        • Процедурные (C, Pascal, …)
        • Декларативные (SQL, …)
    2. Решить, какого вида приложения я хотел бы строить
      • Примеры:
          • LOB-приложения (сайты и веб-приложения, мобильные приложения, корпоративные приложения)
          • Системные (веб-сервера, операционные системы, сеть, низкоуровневые штуки:) )
    3. Попробовать несколько языков, подходящих по парадигме и типу приложений
      • Я обычно провожу несколько недель/месяцев, исследуя подходящие языки.
    4. Выбрать язык и начать его изучение
      • Получить рекомендации относительно начальной книги или другого учебного ресурса
      • Найти других людей, заинтересованных в совместном обучении
      • Найти наставника, который мог бы направлять процесс
        • В случае с F# мой друг и просто прекрасный человек Samir Talwar был тем, кто ввел меня в мир функционального программирования.
    5. Использовать упражнения для изучения основ языка (главным образом синтаксиса) и экосистемы
      • Примеры одинарных абстрактных упражнений
        • Fizzbuzz
        • LeapYear
        • Roman numerals
      • Примеры множественных абстрактных упражнений
        • Bowling
        • Tic tac toe
        • Game of life
        • Mars Rover
    6. Построить проект с применением нового языка

Построение Vaughan и изучение F# стало незабываемым опытом. Если интересуетесь музыкой и/или гитарой, то обратите внимание на мою библиотеку.

Перед F# я изучил Swift и набросал интерфейс с помощью iOS.

В данный момент я снова нахожусь в процессе поиска языка для изучения. В этот раз я решил изучить язык систем. Я колеблюсь между изучением Rust или возобновлением изучения C++ (в частности, новых C++11/14/17 стандартов). В 90-х и ранних 2000-х я много занимался С++, но теперь практически забыл его (несколько упражнений по С++ можно найти здесь). Оба языка весьма привлекательны.



ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here