16 ноября 2012

Триады программирования

Триады программирования

Программирование крайне противоречивый вид деятельности.

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

Мне нравится идея о дуализме. Нравится раскладывать то, что я делаю, на диалектические триады. Нравится связка «Cloud + Big Data + HPC», кофе с молоком и мультипарадигмальность в современных ЯП.

Позволю себе немного такой тонкой, но имеющей достойное место в программировании, материи как философия.

В любой деятельности важно определить для себя те высокоуровневые принципы, соблюдение/стремление/достижение которых и является показателем качества результата (да, я думаю, что результат обладает аспектом «качество»). Очень важное качество таких принципов:

  • принципы не являются взаимоисключающими;
  • принципы закладываются в начале, «пронизывают» деятельность, с ними связанную;
  • из n-принципов в результате могут быть соблюдены на только (n - 1) принципов.

Типичный пример в программировании: CAP-теорема, утверждающая, что в мире распределенных вычислений возможно обеспечить выполнение только 2-ух из трех перечисленных свойств: согласованность данных (consistency), доступность (availability), устойчивость к разделению (partition tolerance).

Ниже я представлю свое понимание того, как относиться к задаче программирование, чтобы пореже задаваться извечным вопросом программиста, вне зависимости от религиозной принадлежности (ООП, АОП, SOA, DDD... язычник) и биологического ритма (Scrum, XP, TDD, «я давно сорвал дедлайны»).

Принципы программирования

Автор статьи

,
DS/ML Preacher, Microsoft MVP && Coffee Addicted