18 июня 2020 года в 10:45

Про программирование и программы

Вот, многие сетуют, дескать программы стали просто огромными, уже не килобайты а мегабайты места занимают. А работать стали ещё хуже. В принципе, отвечу почему и кто виноват.
Виновато, как ни странно, ООП (объектно-ориентированное программирование). Когда программирование было "линейным", с функциями в подгружаемых модулях, это было ещё пол-беды. Но с ООП пришла полная феерия. В том смысле, что написанный чертзнакогда и чертзнакем модуль, становится центром всей структуры, иерархически.
Объясню на простом примере типа "Кнопка", класс "TButton". У кнопки есть собственные свойства, функции и обработчики событий, мыши в частности. Допустим, ты решил, что простой кнопки тебе недостаточно и ты решил создать класс-потомок, с определёнными параметрами. Ну и отсебятины чуть добавить в обработчик события onClick. Нет проблем.
Если ты хочешь просто "украсить" кнопку, то не получится. Придётся просто наследовать от более глубокого класса, "TWindow", у которого в отличие от кнопки есть Canvas, рисуй на здоровье. Только события мыши обрабатывать (перерисовывать) надо будет самостоятельно. А лень.

Потом ещё кто-то хочет унаследовать не оригинальную "TButton", а твою кнопку, чтобы добавить ещё отсебятины... Вот в этом-то весь и вопрос (самая засада). Если в твоём потомке будет какая-либо ошибка, то её повторят все потомки твоего класса. Не говоря уже об увеличении размера кода.
В частности, о размере: Известно-ли вам, что компилируемая программа включает в себя все, так или иначе задействованные библиотеки? За исключением конечно тех, которые ты сам выносишь за пределы исполняемого файла и подключаешь как внешние? Вот как-то так. Плюс прибамбасы с иконками и свистелками, туда-же складываются, если внешними библиотеками не озаботиться.
Ну и напоследок, даже стоит отдельной темы, наши доморощенные бухгалтерские приложения. Это вообще просто песня. Недавно вдруг подобное произведение искусства программирования из налоговой отказалось работать. Выдавая совершенно невнятную ошибку, правда с кодом. Погуглил. Оказалось, этой фигне не понравился модуль Excel устаревший. Понятно, что там программисты продвинутые, используют Excel последней версии. А я куда его на старенький двухядерник с гигом памяти запихну?!


Смотри также