Сколько Разработчиков И Сколько Программистов...

Возможно, кто-то воспримет эту статью как очередное нытье о том, «как плохо жить».

Но я все равно напишу это в надежде, что это побудит кого-то совершенствоваться.

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

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

Мужчине дали задание, он его даже выполнил — приложение кое-как работало, хотя некоторые баги с удалением объектов наводили на грустные мысли о некорректной работе с индексами списков.

И это плохая примета.

Если человек не умеет работать с удалением из списков, то это, скорее всего, только начало проблем, а дальше следует ожидать худшего.

Так в принципе всё и произошло.

Когда техническое задание было почти готово, полностью оплачено и исходный код передан, я понял, что просто зря потратил деньги.

Напомню, что Android-приложения пишутся на Java — объектно-ориентированном (с некоторыми оговорками) языке.

Или даже некоторые объектно-функциональные (тоже с оговорками) языки программирования, такие как Kotlin и Scala. Наш герой, называвший себя «андроид-разработчиком», не освоил даже процедурное программирование (своего рода «бронзовый век» программирования) и остался где-то на структурном уровне («каменный век»).

Своим каменным топором на палке с единственной функцией «копипаста» он собрал все мое будущее приложение.

О, этот человек — гений копипаста.

Например, каждый раз, когда ему нужно было взять объект по id из списка, он писал цикл.

И когда он наткнулся на список списков, он написал вложенный цикл.

Поэтому мое новое приложение на 80% состояло из «лесенок» петель разной степени вложенности… Все эти циклы были до боли похожи друг на друга, но «разработчик» никогда не думал о создании приватного метода, например, getObjectById. Надо ли говорить, что методы вставки и обновления, каждый длиной в 200 строк, были на 90 процентов одинаковыми? Я начал рефакторить этот «чемодан без ручки» (неудобно носить, жалко выбрасывать — деньги потрачены).

IDEA честно выделила мне дублирующиеся части и предложила включить их в функции.

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

Мне удалось сократить исходный код в 1,5 раза.

Остается загадкой, что помешало сделать это самому разработчику.

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

Пришлось серьёзно поработать над инкапсуляцией и побочными эффектами — статические публичные свойства классов успешно заменили отсутствие глобальных переменных в Java. Например, идентификатор редактируемого объекта был просто глобальной переменной основного действия.

В целом исходный код был раздут как минимум в три-четыре раза.

Напомню вам основную аксиому программирования:

Чем меньше кода, тем меньше глюков.

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

Неудивительно, что из этой аксиомы следует утверждение «больше кода — больше глюков».

Избыточный код — основная проблема копипаста — он примерно квадратично увеличивает количество ошибок в коде.

Для борьбы с этим явлением на заре императивного программирования были изобретены процедуры.

Но наш программист не искал легких путей.

В любом случае, хватит ныть.

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

» И хорошо, если бы перед этим хотя бы разъяснили «черепаховую графику».

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

Но давайте поговорим о чесноке! Ты сейчас сидишь такой умный и думаешь: «Ну это же детский сад! Я бы никогда этого не сделал».

Допустим, все так, и вы не будете писать такой тупой копипаст кода.

Но в какой степени вы усвоили (и применили) другие, более сложные концепции и парадигмы? Ведь любой современный язык является мультипарадигмальным.

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

Не существует какой-либо конкретной технологии или библиотеки, есть только общие парадигмы.

Я убеждён, что любой, кто называет себя программистом, просто обязан знать и применять все перечисленные подходы на любом языке программирования (от CSS до Erlang, от прости господи 1С до Rust).

Итак, что вы знаете (можете в 2-3 предложениях объяснить суть, плюсы и минусы и привести примеры того, как вы этим пользовались в последнее время)? Если для вас есть что-то новое или вы не уверены, что сможете это правильно объяснить, советую на досуге погуглить и немного повысить свой уровень с «разработчика» (в плохом смысле этого слова) до настоящего.

ламповый «программатор».

P.S.: список парадигм не претендует на полноту.

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

В опросе могут участвовать только зарегистрированные пользователи.

Войти , Пожалуйста.

Какую из этих парадигм вы используете? 50% Императивное программирование 93 43,01% Декларативное программирование 80 19,35% Логическое программирование 36 40,86% Структурное программирование 76 59,68% Процедурное программирование 111 45,7% Модульное программирование 85 89,25% Объектно-ориентированное программирование 166 25,81% Общее программирование 48 60,22% Функциональное программирование 112 6,13% Аспект -ориентированное программирование 30 Проголосовали 186 пользователей.

109 пользователей воздержались.

Теги: #жизнь-это боль #парадигмы программирования #помни всё #Образовательный процесс в ИТ

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