Education

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

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

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

Анатомия программирования

В мире разработки очень много языков, легко наберется больше 5000, а по индексу TIOBE топовыми являются 250. У 20-ти самых популярных похожие стандартные библиотеки.

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

Атомарные элементы

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

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

От двоичных чисел до слова Hello

Если вы поймете одну эту концепцию, будет гораздо легче найти ответы на все остальные “почему?”.

Инструменты

Photo by Fleur on Unsplash

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

Переменные

Они достаточно простые. А вы как создаете переменную?

Операторы

Что это такое и как их использовать? Может вы и знаете базовые операторы из математики, но как насчет их родственников из логики? Как правильно писать оператор “AND”: “and” или всё-таки “AND”? Или вообще “&&”?

Условные операторы

Удивительно, что мои самые читаемые статьи на тему Swift и Python  — все имеют отношение к принятию решений. Следующее, что вы должны узнать ,— как принимать решения в процессе создания своей программы. Использует ли язык, который вы учите, традиционные конструкции “if/else if/else” или более похожие на Python “if/elif/else”? В вашем языке есть “switch” или “guard”? 

Циклы

Как вы можете создать цикл для повторяющихся задач? Есть ли в языке так называемые циклы for, while, do-while или for-each циклы?

Функции

Возможно ли создавать функции? Если да, то каким способом вы пользуетесь? Как вы добавляете параметры в эти функции? Если вы знаете как правильно пользоваться функциями, то сэкономите свое время и упростите себе жизнь.

Классы и структуры

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

Обработка ошибок

Ошибок не избежать. Когда они появляются, есть ли в языке четкое решение о том, что делать, и как вы его используете? Это выглядит как “try/catch”, “try/except” или как-то еще? Есть ли другие возможные предложения, такие как “else” или “finally”, которые открывают новые варианты работы с ошибками? 

Тестирование

Как вы проверяете свой код? Пользуетесь ли встроенной библиотекой для тестирования или сторонним инструментом?

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

Едем дальше

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

Пока вы пишете приложение, вам надо думать как некий программист Х. Если кто-то думает, что знает С++, потому что прошел курсы и читал документацию по нему, то на самом деле он не знает С++, потому что не применил его на практике.

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

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

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

Что еще?

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

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

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

Если вам нужно быстро сделать что-то в области науки о данных, то берите несколько пакетов Python или Rust. Если надо написать быстрый сервис, то беритесь за С или Go, а если целый веб-сервер, то, конечно, в этом поможет Java или Python.

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

Читайте также:


Перевод статьи Bob Roebling: How To Learn Any New Programming Language Quickly