Профессия программист
4348

Программистская логика

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

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

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

Суть работы программиста


Что же делают программисты, чем их работа отличается от других работ?

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

Вот так просто. И за этой простотой прячется огромная сложность.

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

Ставим задачу:

Допустим, у вас идет ремонт и вам нужен мешок строительной смеси для выравнивания стен.

Не бог весть какая задача, конечно, но на ее основе попытаемся показать работу программиста.

Начав решать задачу сразу сталкиваешься с большим количеством вопросов.

Первый вопрос: что будет решением (как оно будет выглядеть)?

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

Что мы знаем об исполнителе?
Для целей решения представьте в качестве исполнителя любого из ваших знакомых (супруг/супруга, знакомый, родитель или даже ребенок).
Предположим, что исполнитель не может принести мешок смеси на себе (он «сломается»).

  1. Каким транспортом может быть доставлен груз?
  2. Как далеко находится магазин, в котором продаются смеси?
  3. Есть ли нужная смесь в магазине?
  4. Достаточно ли у исполнителя денег?
  5. и т.д.
Как видите, простое по сути действие вылилось в кучу вопросов. И на каждый из них нужно ответить, если мы хотим, чтобы задача была решена. Более того, чем «глупее» исполнитель, тем большее количество вопросов придется задать и, соответственно, дать большее количество ответов.

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

2 комментария

avatar
Когда речь заходит о простоте/сложности, мне всегда вспоминается вот эта замечательная картинка из книжки Гради Буча.
+2
avatar
Картинка о программерах и не тока =)
+1
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.