Python

Важен ли ООП в Machine Learning на python?

Гор Дацкв
Гор Дацкв
1 192
ООП в ML нужен, как корове - пятая нога.
Если говорить о реализации нейронок, то нейронка - большая система уравнений. Там нужны массивы, списки, операции из теории категорий (морфизм, катаморфизм и др) и методы численного решения уравнений.
Если говорить о скармливании данных этим нейронкам, то снова - речь об обработке больших списков и других структур данных.

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

И отступив ещё на шаг, попробуй найти определение ООП. Не беспорядочный набор размытых терминов (наследование, инкапсуляция, полиморфизм), что прозомбированные дилетанты спрашивают на собеседованиях в проекты покраски травы в зелёный цвет, а формальное математическое определение. Довольно быстро выяснишь, что его не существует. Есть ООП в стиле Simula, есть ООП Smalltalk, есть ООП Страуструпа, есть ООП Go (без наследования и классов), есть ООП CLOS (Common LISP Object System) - который даже не является императивным.

Многие прикладные реализации ООП комбинируют математические концепции и сиюминутные "озарения" авторов, в результате которых на свет появляется очередной уродец вроде "Си с объектами" Страуструпа, названный "C++" после большого количества доработок, так и не устранивших исходные проблемы дизайна языка. Например, вместо качественно проработанной системы типов Хиндли-Милнера язык получил наспех выдуманные правила приведения типов, со множеством противоречивых умолчаний, с которыми комитет C++ борется уже 4-й десяток лет и не может побороть. А объём информации, которую надо загрузить в голову для понимания вот этой страницы, сопоставим с Большой Советской и Российской Энциклопедиями, вместе взятыми: https://en.cppreference.com/w/cpp/container/vector/vector
Самое интересное, что настрой автора языка передаётся программистам. Я видел десятки C++-проектов, и для них всех характерна разработка по методологии "бегом и с минимальным пониманием задачи".
Александр Захаров
Александр Захаров
87 571
Лучший ответ
Гор Дацкв Благодарю за ответ!
Абсолютно неважен. Вся нейросеть - целиком - реализуется готовой сторонней библиотекой, написанной совсем другими людьми и не содержащей ни одной строчки Python-кода. А ML-специалист (хорошо знающий высшую математику и ничего не смыслящий в программировании) - лишь говнокодит примитивную интерфейсную прокладку, передающую данные в эту библиотеку и получающую из неё результат обработки.

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

P.S. Библиотеки, реализующие нейросеть, можно легко подключить к подавляющему большинству современных языков программирования - начиная с PHP. И часто встречающиеся заявления, что преимущество Python состоит в богатстве библиотек - откровенная ложь.
ООП это просто концепция. К результату работы программы она имеет мало отношения. Просто считается что "так удобнее". Но если не хочешь писать на ООП, пиши в процедурном стиле, осудят за это только конченые зануды
Да, ООП (объектно-ориентированное программирование) может быть полезным в Machine Learning на Python для более организованного и структурированного кода, управления моделями и данных.
Гор Дацкв Интересно, юзали ли ООП в соурсах GPT