Эволюция ИИ, сохраняющего конфиденциальность

Эволюция ИИ, сохраняющего конфиденциальность

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

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

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

Важность конфиденциальности в ИИ

Не секрет, что сегодня ИИ широко используется во многих сферах, в том числе в маркетинге. НЛП, или обработка естественного языка, интерпретирует человеческий язык и используется в голосовых помощниках и чат-ботах, распознавая акценты и эмоции; он связывает контент социальных сетей с вовлеченностью. Машинное обучение использует алгоритмы для анализа данных, повышения производительности и позволяет ИИ принимать решения без вмешательства человека. Глубокое обучение опирается на нейронные сети и использует обширные наборы данных для осознанного выбора.

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

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

Риски традиционного подхода

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

Другая проблема заключается в том, что машинное обучение включает в себя множество заинтересованных сторон, создавая сложную сеть доверия. Доверие имеет решающее значение при совместном использовании цифровых активов, таких как данные обучения, данные вывода и модели машинного обучения, между различными организациями. Просто представьте, что есть объект, которому принадлежат обучающие данные, а другой набор объектов может владеть данными вывода. Третий объект предоставляет сервер машинного обучения, выполняющий логический вывод, выполняемый моделью, принадлежащей кому-то другому. Кроме того, он работает на инфраструктуре обширной цепочки поставок, в которой участвуют многие стороны. В связи с этим все субъекты в сложной цепочке должны демонстрировать доверие друг к другу. Управлять этой сетью доверия становится все труднее.

Примеры нарушений безопасности

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

В отчете о злонамеренном использовании ИИ обозначены три области проблем безопасности: расширение существующих угроз, новые методы атак и изменения типичного характера угроз. Примеры злонамеренного использования ИИ включают BEC-атаки с использованием технологии deepfake, способствующие тактике социальной инженерии. Кибератаки с помощью ИИ, продемонстрированные IBM DeepLocker, показывают, как ИИ может усилить атаки программ-вымогателей, принимая решения на основе тенденций и закономерностей. Примечательно, что TaskRabbit подвергся кибератаке с помощью ИИ, когда ботнет с поддержкой ИИ осуществил DDoS-атаку, что привело к утечке данных, от которой пострадали 3,75 миллиона клиентов.

Более того, рост онлайн-покупок способствует мошенничеству с использованием карт без предъявления (CNP) в сочетании с растущими проблемами синтетических личных данных и кражи личных данных. Прогнозируемые убытки от этого могут достичь 200 миллиардов долларов к 2024 году, а объемы транзакций вырастут более чем на 23%.

Машинное обучение, обеспечивающее конфиденциальность

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

Преимущества конфиденциальности федеративного обучения

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

Повышенная конфиденциальность и безопасность данных

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

Повышенная точность и разнообразие данных

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

Более высокая адаптивность

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

Методы шифрования

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

Гомоморфное шифрование позволяет выполнять вычисления с зашифрованными данными без расшифровки.

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

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

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

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

Заключительные соображения

Вместо заключения специалисты DST Global хотели бы подчеркнуть важность и срочность внедрения передовых подходов к обеспечению безопасности в ОД. Для достижения эффективных и долгосрочных результатов в области безопасности и защиты ИИ необходимо скоординировать усилия сообщества разработчиков ИИ, а также правовых и политических институтов. Укрепление доверия и создание активных каналов для сотрудничества в разработке норм, этики, стандартов и законов имеют решающее значение для того, чтобы избежать реактивных и потенциально неэффективных ответов как со стороны технического, так и политического секторов.

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

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

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

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

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

Надеюсь, эта статья побудит вас изучить эту тему самостоятельно, способствуя созданию более безопасного цифрового мира.

Комментарии
11:13
+2
Хотел бы узнать часто ли используется ООП в создании сайта!
11:13
+4
Понимание таких вещей дает возможность писать логичные программы. По крайне мере для простых сайтов вообще не нужен наверно ООП, а вот если делать какие-то проекты или использовать фреймворки то без этого будет сложнее…

Для сайтов почти всегда хватает обычного модульного программирования. Да и вообще к примеру если за основу брать php — то часто встречал утверждения, что в ней ООП плохо реализовано и мало кто этим пользуется.
ну это уже в какой круг попадешь. У меня знакомые кто в php писал проги все в основном на ООП, а сама тоже обучалась на ооп, да и фреймворки для разработки сайтов тоже модель mvc используют и ооп, ну kohana точно, да и остальные вроде как
11:18
+2
Скажем так — определенно используется. Насколько часто — сильно зависит от платформы. Например, если вы возьмете ASP.NET так там 100% сайтов ООП. Потому как там — без вариантов с самого начала, там даже простое целое — уже класс (class).
11:21
+1
Критика объектно-ориентированного программирования

ООП не раз подвергалось критике. Одно из самых ярких обвинений прозвучало от британского программиста — Джо Армстронга.

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

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

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

ООП предоставляет вам множество способов замедлить работу ваших программ.

А небезызвестный Линус Торвальдс часто критиковал ООП и С++ в частности, упоминая в том числе отсутствие ограничений. Речь о том, что большое количество инструментов и методов позволяет добиваться функционально одинаковых реализаций множеством различных способов. Это можно было бы считать преимуществом, но появляется риск ошибок, обнаружить которые очень сложно. Наследование объектов может привести к тому, что баг «вылезет» в неожиданном месте, далеко от исходной неточности в описании «родителя».

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

Конечно, пропорции в разработке будут меняться. Это уже происходит. Кроме того, рано или поздно появятся принципиально другие, новые подходы — и они могут оказаться недостижимо более производительными, особенно на модернизированном железе.

Тем не менее, пока что ООП остается надёжным, удобным инструментом. Похоже, в ближайшие годы ничего не предвещает серьезных подвижек, так что можно смело использовать объектно-ориентированное программирование и в качестве личного карьерного плана, и для запуска проектов.
Недостатки объектно-ориентированного программирования в WEB.

Я давно и успешно применяю ООП — в сущности с самого момента его возникновения. Собственно, даже начала программирования мне преподавали по обьектно-ориентированным языкам, типа ALGOL-68. Большинстве кода на моем сайте вообще выложено на бейсике — а это на сегодня, вне всякого сомнения, САМЫЙ обьектно-ориентированный язык из существующих на этой планете. Которому пытаются подражать множество других языков, например новоиспеченный СиШарп (в котором даже в прошлом году уже даже появились анонимные типы, существовавшие в бейсике еще с 1998 года). Кое-какие элементы подражания обьектным возможностям бейсика есть и Яве и на прочих более простых языках. Но ни один более простой язык пока не приблизился к бейсику даже по количеству квалификаторов у методов/классов (а тем более по количеству всевозможных сокращений и умолчаний для ускорения обьектного программирования). Для примера вы легко можете любую Ява-прогу протранслирвать в более крученый Шарп. Но не наоборот. А шарп, хоть и использует тот же фреймворк, что и бейсик — но это язык подражатель. В нем постарались в более ли менее стандартном и распространившемся синтаксисе сделать доступ к тем же возможностям, которые были в бейсике (для NET и для COM) всегда. Однако, обратите внимание, что в огромном количестве мест в БилоГейтсовской идеологии применение Шарпа даже не декларируется! Никто не говорит, что VBA не будет, а языком автоматизации офисных приложений будет убогий новоиспеченный Шарп. Никто не говорит что НАТУРАЛЬНЫЕ COM-обьекты (без NET) когда-нибудь можно будет создавать на Шарпе. А ведь создание натуральных COM-обьектов — это базовая технология бейсика (ну и на С++ это тоже конечно возможно, только на C++ невозможно в приемлимые сроки сделать почти ничего из того, что обычно делают на бейсике). Никто не декларирует доступ к WMI из убогого новоиспеченного Шарпа. Никто не делает и не будет делать автоматизацию SSIS-пакетов для SQL-сервера на убогом шарпе. Поэтому бейсик-программисты так презрительно относятся к шарперам — что можно сделать на шарпе? Только облизнуться и расписаться в собственном бессилии, когда надо что-нибудь сделать на VBA, для WSH, для SSIS, создать натуральный COM-обьект и так далее. Проще говоря, даже во внутривидовой микрософтовской конкуренции Шарп — лишь убогое отражение/подражание старого и долго развивающегося бейсика. Шарп занимает ислючительно узкую нишу в билогетсовской идеологии и даже не покушается на безраздельное господство бейсика. Ну не говоря уже о межвидовой конкуренции (прогу на Шарпе с продвинутыми возможностями обьектного программирования вы не оттранслируете ни в какой другой язык, кроме конечно бейсика — но не наоборот — любой более убогий язык можно автоматически преобразовать даже в Шарп, не говоря уже о бейсике). Надеюсь этого пояснения достаточно для не владеющих бейсиком людей — чтобы понять, куда они попали — на страничку к бейсик-программисту. К программисту на самом обьектном в мире языке.

И как вы можете видеть по моим OpenSource и моим рецептам на этом сайте — я достаточно реально владею всеми возможностями этого самого продвинутого обьектного языка в мире. Я постоянно пишу Джеренерики, часто переопределяю в своих классах поведение отдельных методов в нижестоящей иерархии классов, постоянно создаю в своих классах события, я пишу свои делегаты с особыми параметрами, у меня горы многопоточных прог, типа прокси серверов, в которых надо тонко управлять синхронизацией ресурсов, я часто применяю маршализацию из одного потока в другой, а когда обрабатываю нерегулярные структуры — я создаю обьекты унаследованными от единого интерфейса. Часто применяю ad-hoc полиморфизм. Ну и так далее — для определенности начните со странички Практическое применение наследования, полиморфизма, интерфейсов, дженериков и делегатов на примерах в Visual Basic .NET. Перечень практически применяемых мною механизмов обьектного программирования бейсика — огромный. Настолько огромный, что для программистов на более простых языках даже затруднительно обьяснить что вообще такое делегат или дженерик — а тем более сложно обьяснить, чем применение того или иного обьектного механизма отличается у начинающего программиста от применения того же механизма опытным программистом. Но…

Но в этой заметке я бы хотел сосредоточится не на достоинствах объектно-ориентированного подхода (ООП), а на его НЕДОСТАТКАХ.

Увы, их так много, что непонятно чего же все-таки в обьектом программировании больше — достоинств или недостатков. Но о достоинствах вы наверняка прочитаете у кого-нибудь другого, кто попал в программирование СЛУЧАЙНО и занимается им совсем недолго 5-10-15 лет и при первой же возможности постарается выйти из этого дела на пенсию, став архитектором, начальником ИТО, тех.директором и так далее. Как правило, контингент таких мелких, случайных людишек является конформистами и старается максимально ПОДДЕРЖИВАТЬ текущую доминирующую струю.

Психологически, порочный круг, из которого трудно выскочить таким неокрепшим мозгам, состоит в том, что чем вещь ХУЖЕ, тем больше необходимо ее НАХВАЛИВАТЬ и, выпячивая НЕСУЩЕСТВЕННОЕ, умалчивать ГЛАВНОЕ. Иначе никак это НЕ ПРОДАТЬ. Особенно в этом гнусном занятии нахваливания ООП преуспела MS — поставив эту технику (которую трудно вообще-то отделить от мошенничества) на поток и зомбируя таким образом биомассу — УВЕЛИЧИВАЯ ОБЬЕМЫ СВОИХ ПРОДАЖ.

Не думаю, что MS смогла бы настолько набить свои карманы — продолжая развивать и совершенствовать Visual InterDev. Ведь он прост и вообще при минимальном опыте программирования легко заменим нотепадом. И как за это сорвать 50 тысяч долларов? Я сам не парясь его напишу весь за месяц (это же простой рич-текст-бокс с подсветкой!) — и куча народу уже сделала это преотлично и выложила бесплатно свои творения.

Но насколько технологии Visual InterDev лучше Visual Studio 2008 — говорить в среде конформистов почему-то совсем не принято. А мы поговорим об этом!

1. ООП-подходы уменьшают срок жизни программного обеспечения.

Реальность такова, что среда программирования меняется каждые пол-года — год. Возьмем наприме .NET FRAMEWORK. На протяжении последних пяти-шести лет среда сменилась множество раз:

NET 1.1 => NET 1.3 => NET 2.0 => NET 3.0 => NET 3.5

Каждый из созданных в некоторой среде объектов невозможно применить в последующей. Причем это верно даже для близко родственных сред, сделанных с совсем небольшим временным лагом — например попытка использовать на сайте NET 3.5 обьектов (зашитых в библиотеки) и сделанных на NET 3.0 приводит к фатальным ошибкам еще даже на этапе компиляции проекта.

Что уж говорить о не столь близкородственных фреймворках. MS публикует огромные списки функционала, который не поддерживается в последующих версиях его среды относительно предыдущих — например вот такой список msdn.microsoft.com/en-us/netframework/aa497288.aspx

И каким образом откомпилированный под NET 1.1 обьект должен работать в сайте под NET 4.0? А ведь такая библиотека — обьект собственности, стоимостью сотни тысяч долларов и миллионы. И какой срок жизни этой собственности?

Этот вопрос совсем не праздный, Например мой сайт www.gisis.ru использует 72 библиотеки. Часть из них сделана не мною. Давно. Году скажем в 2002-м. Стоимость этих библиотек весьма немалая. Например три программиста с ЗП в в три тысячи долларов, написавшие такую библиотеку за год — дают ей стоимость 3х3х12 = 108 тысяч долларов (без налогов). И кому нужна такая библиотека, если ею уже через полгода невозможно воспользоватся?

Люди давно уволились… И переписать эти обьекты сложнее, чем написать новые…

2. Текстовые скрипты основаны на ANSI-коде — поэтому дешевле, стабильнее и живут дольше.

Итак, изменчивость среды компиляции относительно ANSI-кода — дает нам первый элемент нестабильности и нежизнеспособности ООП и компилированных DLL относительно простых текстовых скриптов, типа простого ASP или PERL.

Хотя, если бы ANSI-кодом заведовала бы MS — она бы нашла поводы, каждые полгода выпускать новый ANSI-код под новую студию, которую надо было бы КУПИТЬ…

3. MS-cреда объектного программирования стоит безумно дорого.

Ну сколько стоят MS-проги я уже писал на своем хомячке. Повторятся ниахота, но это ДЕСЯТКИ ТЫСЯЧ ДОЛЛАРОВ. Зато ZEND в самой продвинутой профессиональной версии стоит $60 — примерно В ТЫСЯЧУ РАЗ ДЕШЕВЛЕ. А нотепад (с подсветкой ключевых слов) которым часто пользуются в средах программировования без ООП — вообще ничего не стоит.

Зафиксируйте для себя в мозгу этот коэффициент — не в два-три раза дороже обьектное программирование простого, А МИНИМУМ В ТЫСЯЧУ!

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

4. Алгоритмически, обьектно-ориентированный подход — всего лишь замена параметризации.

Если обратить внимание на идеологическую сторону ООП-программирования — то вообще-то обьектно-ориентированный подход (наследование, полиморфизм и прочая лабуда) — они все-лишь ЗАМЕНЯЮТ параметризацию алгоритмов. Ну типа как развязки с флагами и IF-ами заменяют GOTO.

Не более. Абсолютно любой алгоритм с наследованием и полиморфизмом можно реализовать БЕЗ ООП, просто параметрами, передаваемыми процедурам. Причем это будет в разы быстрее, чем виртуальзация методов, обработки VTAB и прочая лабудень матрешечного программирования.

5. ООП-подходы усложняют программирование и особенно отладку.

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

Ругаемые GOTO и рядом не валялись со сложностью отладки ООП-матрешек…

6. Проектирование систем, основанных на ООП — дорого. А модификация — еще дороже.

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

Идея тут в том, что ТРУДОЕМКОСТЬ модификации внутреннего функционала тысячекратно превышает трудоемкость использования обьекта в целом. В отличии от такого подхода линейные текстовые скрипты не имеют такой разницы в трудоемкости модификации внутренних алгоритмов и внешне-предоставляемого пользователю интерфейса.

Но это значит, что внешние интерфейсы и внутренние ООП-алгоритмов должны быть очень тщательно проработаны (что автоматически означает трудоемкость их модификации). В отличие от простых линейных текстовых скриптов (с подпрограммами), не требующих такого тщательного проектирования, строгой фиксации интерфейсов между уровнями приложения и допускающих легкую модификацию в ЛЮБОЙ части кода в любой момент эксплуатации.

7. Закрытый функционал объектов — источник багов (и источник наживы).

В среде программистов не вызывает сомнений, что любой ЗАКРЫТЫЙ, потаенный алгоритм — это просто глюк. Это аксиома, на которой стоит криптография, например.

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

Другая сторона закрытости (кроме глюковатости) — такой код является ИСТОЧНИКОМ НАЖИВЫ. В отличие от простых текстовых скриптов, которые доступны ВСЕМ и продавать их практически невозможно. Закрытость и глюкавость — это многомиллиардный плюс для кошелька билла-дебила, ну а для нас?

8. Обьектно ориентированное программирование — это медленно.

Что такое каждый NEW в проге? Это выделение памяти из кучи. Возьмите главу 20 рихтера и почитайте про выделение памяти из кучи. И про алгоритм сборки мусора, который в NET 2.0 содердит аж в 10 000 (десять тысяч раз) БОЛЬШЕ кода, чем в NET 1.1

Какие кучи, какие обьекты, какие сборки мусора? Гугл работает на простых текстовых процессорах (типа PERL) — никогда не слышал ни про какой бред в виде выделения памяти из каких-то управлямых куч — и даже НЕ РАССМАТРИВАЕТ ООП как возможную технологию для примения в своих WEB-технологиях.

Не рассматривает, ИБО ТОРМОЗА…

9. ООП-подходы вообще притянуты к WEB-программированию без оснований.

Что такое Web-программирование? Это ТЕКСТ в ANSI-кодировке, который пришел по протоколу HTTP 1.1 из интернета на Web-сервер. Текст, который должен быть проанализирован и текст же, должен быть отправлен назад и интернет в виде отклика Web-сервера.

И где вы тут видите вообще упоминание каких-то обьектов?

Текст пришел — текст ушел. И множество движков, типа PHP или PERL так и работают. Кто сказал, что надо этот текст надо обрабатывать какими-то обьектами? Которые должны быть ОТКОМПИЛИРОВАНЫ в виде расширения IIS? Что за бред? И что эти обьекты должны итог своей работы СЕРИАЛИЗОВАТЬ ОБРАТНО в текст?

Но MS, паразитируя на рынке информационных технологий, проталкивает этот бред в наши мозги — ВМЕСТО ТОГО ЧТОБЫ ДОВОДИТЬ ДО СОВЕРШЕНСТВА ТЕКСТОВЫЕ ПРОЦЕССОРЫ. И весьма приуспела в этом…

10. Топовые по распространенности языки не имеет ООП-примочек.

Самый распространенный язык — как вы понимаете — HTML. Он не имеет приблуд в виде ООП. (Яваскрипт — не HTML- не путать).

Второй самый распространенный язык XML. Например, каждый мобильник имеет XSLT-преобразовтель для CSS. И где тут обьекты и вся ООП-шизофрения?

И третий по распространенности язык — SQL. Он тоже не имеет никаких матрешечных примочек.

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

11. Управление контентом откомпилированных сайтов весьма сложно и дорого.

Многие мои заказчики были просто в шоке, когда асазнали, что они не могут просто поправить верстку в нотепаде и разместить новости на сайте, сделанном на ASP.NET. Я рассказал им, что надо что-то поменять в базе — или вручную или для этого нужны НОВЫЕ CMS-формы, которые НАДО ПИСАТЬ…

Ну там про утапливание функционала поглубже — рассказал. Типо это пиридавое — если поменять просто так сложно. Типо есть внешний интерфейс обьектов — он и предназначен для замены, и вся изменчивость — должна быть ПРЕДВАРИТЕЛЬНО оговорена и вынесена ВНАРУЖУ обьектов, а что внутрии — то низзя просто так менять…

«Не, ну я понимаю — это ваши программистские игры» — говорили заказчики — «мне надо просто поменять допустим фамилию Иванов на Петров, но сегодня я пока еще не знаю о том, что мне потребуется поменять — как мне это сделать на твоих ASP.NET формах?»

«Ну а как добавить на сайт пару новостей или сменить верстку? Сейчас у нас сидит девочка и в нотепаде правит страничку и размещает там что хочет. Не морочь нам голову — как это сделать в ASP.NET без всех этих заморочек?»

Что на это ответить? Кроме рассказов о необходимости профинансировать разработку CMS? Иногда брали редактор бинарников и правили Иванова на Петрова… Если новоя фамилия без инициалов было не длинее старого с инициалами!

12. Программы делаются для людей, а не для машин.

Если же вглянуть на OOП с иной стороны — cо стороны MAIN-стрим движений в программировании. То что мы увидим? Этот мейн-стрим — это доступность и понятность всяких технических сложностей для человека. Прозрачность технологий. Ясность и предсказуемость действий машин и механизмов.

То, что ЧИТАЕМО и ПОНИМАЕМО человеком ЯСНО и без гимороя — гут, а там где бинарник с загадочными и глючными алгоритмами — это бед. Собственно, именно на этом посыле основано повсеместное распространение XML, HTTP, WEB-служб и даже XAML или WPF и WPF/E.

В этом аспекте — ASP.NET — полное противопоставление XML, HTTP, WEB-служб, XAML, WPF. Обожаю за это MS — у нее ВСЕГДА левая нога шагает в одну сторону, а правая — в другую. На благодаря технологиям зомбирования биомассы — задница все равно на мешке с деньгами!

МS полностью зациклилась.

Наконец-то, даже MS вынуждена признать недостатки своей идеи строгой типизации, которой она так долго гадила нам в мозг — наконец-то MS ввела АНОНИМНЫЕ ТИПЫ, что и есть фактически отказалась от строгой типизации.

Фактически LINQ — это и есть роспись с печатью в собственной неполноценности. В неполноценности идей, на размусоливании которых так долго MS набивала свои карманы. И в неполноценности своих якобы фантастических по мыслительному потенциалу подразделений — типо MS ресеч.

Жаль только широкая публика не оценила по достоинству этот прикол — все маршировали-маршировали в направлении строгой типизации (например хвалили ImageButton, так непохожий на Image и еще более непохожий на LinkButton!), потом хопа — и развернулись в противоположную сторону и стали хвалить переменные, позволяющие указывать и на ImageButton и на Image и на LinkButton. А стадо баранов этого и не заметило и продолжает послушно маршировать за билом-дебилом…

Похоже, МS думает — не имеет значение чем гадить в мозг программистам — лишь бы карманы набивать. А нам остается только удивлятся — с чего вдруг было хорошо ASP, все книги были расписаны от корки до корки ДОСТОНСТВАМИ неоткомпилированных программ на чистых текстах в Visual InterDev, потом вдруг в MS все умолкли про достоинства ASP, и стали говорить, что наоборот хорошо, когда все утоплено из текстов в библиотеки в Visual Studio 2002. Потом оказалось что не только хорошо, когда все ПРОСТО утоплено в библиотеки, а даже хорошо, что все очень-очень типизированно (и даже код заполнения DATALIST полностью отличается от кода заполенения GRIDVIEW !!!), потом вдруг это перестало считаться достоинством, а стало считаться недостатком и появились анонимные типы. Наверное дальше разработчиков анонимных типов и их дебильного LINQ в MS заклеймят как глупцов и давай опять по кругу. Не важно, о чем трещать — лишь бы карманы набивать.

Все это приемлимо лишь для случайных проходимцев, попавших в программирование ненадолго — на 5-10-15 лет и желающих побыстрее соскочить с этого дела. Но для тех, кто этим все занимается достаточно долго, профессионально и с удовльствием — смотреть на это безобразие отвратительно.
Вам может быть интересно
Команда разработчиков компании DST Global представила многофункциональную CMS-систему DST Platform, которая использует технологии искусственного интеллекта. РБК DST Platform использует технолог...
По результатам исследования, которое мы провели ср...
Ученые, которые стояли у истоков создания искусств...
Что такое объяснимый ИИ (XAI)?XAI включает в себя ...
Проекты искусственного интеллекта могут оказаться ...
Интерактивное чтение с помощью MEMWALKER расширяет...
Исследователи из Университета Неймегена (Нидерлан...
Эта статья представляет собой анализ того, как мет...
Перейти вверх