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

Почему надо изучать программирование

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

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

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

Программирование - это фундаментальный навык. Примерно на уровне "писать-читать-считать". Многие (включая и самих программистов) не понимают этого. В чём заключается собственно "программирование"? Грубо говоря, это решение какой-то задачи. И сводится оно к двум процессам: анализ и синтез. Или, другими словами, деконструкция и конструкция.

Анализ - это разбор реальной (или не очень реальной) ситуации, выделение сущностей, категоризация, операционализация и так далее. Например, чтобы написать программу, решающую какую-то бухгалтерскую задачу, нужно понять, что есть такие сущности как "счёт-фактура", "кассовый аппарат", "чек", "опись", "точка продажи", "дебит", "кредит" и так далее. Многие из этих сущностей абстракты, некоторые вполне себе реальны. Сущности эти связаны между собой. Сущности также участвуют во всевозможных процессах. Результат анализа - это ментальная модель, которая описывает ситуацию, явление, или что-то в реально мире. Модель может быть как и в вашей голове, так и записана в виде документации, диаграмм, схем, и так далее.

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

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

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

Пишите свои комментарии на эту тему. Если тема окажется интересной, я её продолжу в этом блоге.

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