Притча О Программистах И ​​Кодировщиках

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

В том веке многим людям приходилось писать программы на разных языках для разных программных платформ.

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

информационных технологий, и его называли не иначе как программистом-джедаем.



Притча о программистах и ​​кодировщиках

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

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

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

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

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

Клиент доволен, деньги у кодера есть — все довольны, на первый взгляд. Дальше происходит, как правило, следующее: проходит совсем немного времени и клиент хочет что-то изменить в своей программе, и, как правило, многое.

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

Подрядчик смотрит на код и не понимает, как работает эта мешанина результатов поисковых систем, и начинает мучительно переписывать код, срывая сроки даже на «элементарные изменения».

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

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

началось.

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

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

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

Приложение с удачной архитектурой и качественным кодом может успешно эксплуатироваться и развиваться на протяжении значительного периода времени с минимальными затратами заказчика на изменения и поддержку.

И тогда возмущённые программисты пожаловались: «Мы знаем все эти фундаментальные принципы! Они все бесполезные и глупые! И Вселенная ответила им: «Возможно, это и так, но, возможно, вы их не понимаете, и поэтому не знаете, как их применить».

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



Часть 1. Простота кода



Пример 1:
  
  
  
   

if ($u->g) $u->reg($u->email, $u->nm);

Просто строка кода, написанная программистом, но то, что она делает, совершенно не очевидно и требует как минимум комментариев.

Теперь та же строка кода, написанная программистом:

$user->email = $email; $user->name = $name; if ($user->isGuest) $user->register();

Думаю, все вопросы отпали, и комментарии уже не нужны.

А вот как раз имена переменных и функций даны правильно и однозначно.



Пример 2:


//… $sql = 'SELECT * FROM usr LIMIT 10'; //… /** view */ if ($n<10) echo .

;

Вроде код более-менее понятен, хотя настораживают магические константы типа 10, к тому же код встречается в разных файлах и часто повторяется.

Как бы это написал программист? Да что-то подобное:

class User {

Теги: #техники программирования #ООП #паттерны #программирование #ООП

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.