Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
karppaul
7 лет назад

Программирование для непрограммистов

В предыдущем посте я написал, почему программирование является фундаментальным навыком. Подобное предполагает, что изучает его следует каждому. И, в случае с техническими специальностями, даже не связанными с непосредственной разработкой ПО, это относительно легко. Но как быть в случае, когда вы занимаетесь чем-то довольно далёким от IT?

Но начнём с другого вопроса. Я периодически встречаю обсуждения на тему "с какого языка начинать изучать программирование". Ответы, как правило, сильно субъективные: каждый отвечающий говорит о том, что ему знакомо и что кажется правильным. Часто советуют "классические" компилируемые языки со статической типизацией: C и C++. Нередко упоминают Pascal. Более "современные" ответы: Java, C#, PHP и Python.

Если вы хотите стать программистом, то выбирать язык следует из того, чем именно вы хотите заниматься, поэтому нужно смотреть прежде всего на области применения и широту распространения. Конечно, у всех языков разные углы наклона кривой обучения, но в итоге, сам язык не так важен, как окружающая инфраструктура. А именно: библиотеки, наличие всевозможных фреймворков и готовых решений, шаблонов, книг рецептов и прочего. А также сообщества, которое может прийти на помощь в случае чего. Так, например, если вы хотите заниматься играми и решаете, что вам надо освоить C# + Unity (пожалуй, самая популярная платформа для начинающих разработчиков игр), следует иметь в виду, что помимо языка вам понадобиться освоить интерфейс Unity и логику работы всего движка, а там всё не так просто, как хотелось бы.

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

Здесь нужно исходить прежде всего из задач, которые перед вами стоят. Например, вы можете заниматься анализом данных, и тогда ваш выбор упадёт на R или Python, скорее всего. Но это всё ещё к вопросу о выборе языка, а не о том, как вам изучать программирование.

В предыдущем посте я написал, что программирование сводится к двум процессам: анализу и синтезу, деконструкции и конструкции, декомпозиции и композиции (названия на любой вкус, суть не меняется). И первый шаг в изучении программирование - это понимание, что оно состоит из двух этих процессов. Что здесь важно: программирование во многом - это декомпозиция задачи на подзадачи. Они, в свою очередь, тоже могут быть разделены на подзадачи. И так далее, до тех пор, пока вы не придёте или к набору подзадач, которые решаются элементарно, или решения которых вам не известны (в этом случае обычно помогают или гугл или старшие коллеги).

Посмотрим на примере. Допустим, нам нужно получить среднее от каких-то значений. Все ведь знают как получить среднее (арифметическое) из нескольких значений? Вы складываете все значения, а потом делите на их количество.

avg = sum(x1, x2, ... xn) / n

Это простая операция, которая во многих языках программирования реализована в виде встроенной функции. Однако, как же нам решать эту задачу "вручную"?

Для начала давайте посмотрим на наши шаги: 1 - мы складываем все значения; 2 - получившийся результат делим на число значений. Здесь пропущен один шаг - вычисление числа значений. Мы принимает это число за что-то изначально известное нам, но это не так. Поэтому алгоритм вычисления среднего становится трёхшаговым: 1 - складываем все значения; 2 - считаем число значений; 3 - делим одно на другое. Из-за того, что мы можем забывать про такие мелочи, как этот "скрытый" шаг, нам зачастую становится трудно решить задачу. Мы не можем сделать быстрый и безболезненный переход от шага 1 к шагу 3 просто потому, что мы неправильно разбили задачу на подзадачи.

Композиция, или синтез, в программировании - это объединение решений подзадач так, чтобы получившийся результат решал нашу задачу. Вышеперечисленные шаги надо делать в правильном порядке. Какой шаг идёт первым (1й или 2й) - не так важно, но что важно - 3й шаг должен быть последним, потому что он зависит от 1го и 2го, от их результатов.

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

5
0.550 GOLOS
На Golos с June 2017
Комментарии (15)
Сортировать по:
Сначала старые