Брутально и бессердечно о программировании и проектировании
ГлавнаяФорумПаттерныАнтипаттерныТест-драйвЗаметкиВопрос-ответКнигорецензииСправочная

33. И просто, и сложно

Все гениальное — просто.
Если подойти к вопросу с точки зрения программирования и проектирования, то я бы дополнил эту народную мудрость, сказав, что «Все гениальное — просто в использовании».
Нет ничего сложного в том, чтобы взять и просто решить поставленную задачу, предоставив работоспособное решение. Нет ничего сложного в том, чтобы соблюсти все формальные требования и спецификации. Действительно — в программировании практически не существует неразрешимых в общем случае задач.
Самое сложное в решении задачи это добиться того, чтобы это решение было простым в использовании. Самое простое в использовании решение может оказаться самым сложным как с точки зрения изобретения, так и с точки зрения реализации.
От сложности изобретения никуда не денешься — порой изобретение лаконичного механизма из десятка-другого строк кода занимает часы, дни, и, иногда, даже недели и месяцы.
Что же касается сложности реализации, то в этом нет ничего страшного. Если вы можете упростить использование системы за счет двукратного усложнения ее реализации, то обязательно сделайте это. Нет ничего страшного в том, что за простоту в использовании придется заплатить сложностью в реализации. Сложность внутренней реализации системы — это личное дело самой системы, в которое никто не будет (не должен) лезть. Пользователи системы будут использовать ее простое и лаконичное API, не имея возможности впутаться в ее внутренние дела. Реализация хранится в одном, никому недоступном месте, а пользовательское API доступно всем и каждому.
Верно и то, что чаще всего самое простое в изобретении решение оказывается самым ужасным с точки зрения использования. Редко когда решение «в лоб» оказывается наиболее оптимальным.
Простые и изящные решения обычно стоят больших затрат. Чем проще внешность решения, тем сложнее его придумать. Для того, чтобы решение действительно было простым, необходимо четко понимать, какую работу должен выполнять пользователь, а какую — сама система. Первые попавшиеся решения обычно тупо решают поставленную задачу, не обращая внимания на это разграничение полномочий.
Почему так много сложных и муторных библиотек и платформ? Почему так редко можно встретить безопасную, но в то же время изящную и лаконичную оболочку для какого-либо API? Речь даже не о C++, речь обо всех языках и платформах в принципе. Дело не в том, что кто-то намеренно пытается усложнить вам жизнь, как это может показаться. Дело как раз в том, что простой и изящный программный интерфейс — это действительно сложная задача, которая под силу далеко не каждому.
 
Резюме
Все гениальное — просто в использовании.

Оглавление
Статистика
© 2007—2009 Inside C++ Коммерческие услугиКонтактная информация

интернет магазин краснодар. самовары в марьино. противопожарные ворота в Зеленограде. colorado financial advisor. элитная мягкая мебель Аллегро-Классика. купить футажи. установка vista. Louis Vuitton handbag, replica bags, designer knockoff handbags. оборудование для отопления. 3D Architech - Новости 3D графики. Cholesterinwerte senken. PornoEra.com порно бесплатно, порно онлайн, жестокий секс. интернет реклама москва