Возможно, вы уже знаете хотя бы один язык программирования, но в любом случае приведенные концепции помогут вам приступить к разработке.
Когда я учился в школе, преподаватель сказал мне одну вещь, которой я делюсь с новичками в разработке. Она звучит так: самым сложным в изучении будет ваш второй язык программирования.
Не впадайте в замешательство. Когда вы впервые научитесь программировать, то будете полны всех этих предвзятых мыслей о процессе и будете создавать больше синтаксических связей и присвоений, чем нужно. По этой причине вам нужно как бы разучиться думать в рамках первого языка программирования, когда перейдете к следующему. Постарайтесь держать это в уме, когда приступите ко второму или уже к третьему языку программирования в своей жизни.
Анатомия программирования
В мире разработки очень много языков, легко наберется больше 5000, а по индексу TIOBE топовыми являются 250. У 20-ти самых популярных похожие стандартные библиотеки.
Я считаю, что лучший способ размышлять о разработке — это отбросить лишнее и оставить только самое необходимое.
Атомарные элементы
Каждый аспект любого языка можно упростить до “правды” или “лжи”. Почему? Потому что так работает компьютер. Напряжение повышено 1
, или понижено 0
. Третьего не дано. Память сохраняет значения в виде нулей и единиц, т.е. либо этот бит заряжен, либо нет.
Восемь битов эквивалентны одному байту. Этого достаточно для записи любого символа из таблицы ASCII. Биты располагаются в таком порядке, чтобы обеспечить десятичное представление символа. Компьютер понимает, как перевести это представление в букву.
Если вы поймете одну эту концепцию, будет гораздо легче найти ответы на все остальные “почему?”.
Инструменты
Все инструменты схожи. Их можно изучать в любом порядке, отличном от того, который вы сейчас прочитаете.
Переменные
Они достаточно простые. А вы как создаете переменную?
Операторы
Что это такое и как их использовать? Может вы и знаете базовые операторы из математики, но как насчет их родственников из логики? Как правильно писать оператор “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