ООП - это не про устройство мира, а про то, какую модель мы строим для более эффективного решения нашей задачи. Так что возможны варианты. Может быть и функция, которая берет молоток и гвоздь и херачит молотком по гвоздю... 😁
Объектность - свойство не нашего мира, а, нашего восприятия этого мира. Наше сознание так устроено, что для понимания того или иного аспекта этого мира нам удобно, в целях значительного уменьшения информационноиюй энтропии, абстрагироваться от бесконечного множества несущественных деталей и разбить его на объекты, сгруппировав их по неким общим признакам в именованные классы, при этом способы выбора, классификации и наименований этих объектов зависят от изучаемых нами аспектов и точек зрения на них. Это ещё называется системный подход. А миру ваще пофигу, как мы себе его представляем - там в итоге одни кварки, или струны, или что-то может быть ещё, хотя и на это миру пофигу, ибо эти штуки мы тоже придумали, потому что по-другому не умеем.
ООП, по оригинальному определению, OOA&D - Object Oriented Analysis and Design, то есть анализ предметной области и проектирование сложной системы, исходя из идеи, что практически любую систему можно абстрактно представить как целенаправленную коллаборацию взаимодействующих между собой специализированных объектов, самостоятельно выполняющих возложенные на них обязанности и предоставляющих другим объектам контролируемый доступ к наборам своих интерфесов для обеспечения межобъектного взаимодействия в соответствии с определенными протоколами.
Это помогает нашим ограниченным ассоциативным мозгам лучше понять сложную предметную область и представить себе, как могла бы быть устроена любая немыслимая херня - от квантовой механики до астрофизики, как некая абстрактная система, рассматриваемая нами с точки зрения эффективного достижения определенных нами же целей.
Таким образом, критикуемое автором понятие ООП в интерпретации "объектно ориентированное программирование", действительно, формально не определено, и притянутая автором за уши критика мнимых недостатков языковых инструментов, предоставляющих некую, иногда довольно ограниченную, поддержку для упрощения создания артефактов исполняемого исходного кода абстрактных OOA&D-моделей имплементации и развертывания, совершенно неуместна в данном контексте.
Да, похоже 4o без жесткого контроля опять понесло и он перестарался со своим чайлд-френдли стайлом.
Дискуссия важному автору требуется аж академическая, а исходный нейротекст свой он не постеснялся вывалить на публику, даже не читая его, - чисто тяп-ляп, как из Мурзилки.
Ваше заявление про словоблудие - агрессивный эмоциональный ярлык без фактов.
Ваша ссылка на якобы опровержение теоремы Гёделя не указывает на ошибки в его формальных леммах.
Ваш длинный текст про вариантность может быть и полезен, но он не доказывает, что сама вариантность равна ЛСП, он лишь рассказывает про правила подстановки типов.
Мы же с вами обсуждаем поведенческие контракты, инварианты, предусловия и постусловия, про которые формальная языческая (всм языковая, но беспринципная) вариантность вообще не в курсе.
Можно, наверное посмотреть ваши примеры кода, где вариантность нарушает ЛСП, если имеются. Но мне кажется, что вы уже провоцируете холивар. А сейчас наступает время перемирий. Так что я прекращаю огонь. 🔫✌️
Ну там же голословная демагогия, замешанная на манипулировании понятиями типа и интерфейса. Вариантность - это чисто формальная языковая хрень. Полезный, но сугубо формальный инструмент. Он не заменяет поведенческих контрактов, а лишь иногда помогает их типобезопасно выразить. А фундаментальные принципы системного дизайна, и архитектурные, и, как в случае с ЛСП, поведенческие - они же универсальны и не завясят от конкретных средств имплементации.
ЛСП сформулирован давно, на легаси-языке "типов", еще до вызревания современных концепций ООП контрактов, интерфейсов и протоколов, и его суть - не во втискивании реализации в формальные ограничения языков, а в проектировании поведения системы объектов таким образом, чтобы каждый объект, реализующий какой-то интерфейс, независимо от конкретного типа этого объекта, гарантировал и строго соблюдал существенную семантику обязанностей и ответственности этого интерфейса.
Недостатки любых абстрактных систем при желании можно всегда найти и набросать на вентилятор - теорема Гёделя о неполноте в помощь. 😁
Но если мы верим в фундаментальные принципы, а иного способа легализовать их не существует (как завещал великий Гёдель), то мы обязаны их соблюдать полностью. Иначе это будет другая вера.
Так что реальное соблюдение ЛСП - это проектирование контрактов и тестирование инвариантов. И делаться это должно не ad hoc, в процессе кодинга, а на этапе анализа и проектирования системы.
В конце концов, ЛСП - это же не про заклинания и магию языковых фич, а только про здравый смысл.
Ну это же довольно простая концепция. Не ломать об колено в наследниках фичи, определенные в базовом классе. Наследники могут расширять функциональность, но им запрещено изменять семантику обязанностей базового класса или интерфейса. И тогда, мы смело можем использовать наследников и имплементоров, в тех же сценариях, где их предки успешно работали.
Например, для базового класса такси - наследниками могут быть седаны, минивэны, пикапы и прочие авто, может быть бензин, дизель, газ или электро, может быть руль справа или слева, мы все равно получим то, что ожидаем от такси. Но если от такси унаследовать велик или самокат, то будет трабл.
Ну или например, если от иммутабельного квадрата наследовать иммутабельный рямоугольник - это будет трэш. А в другую сторону - норм.
То есть потомки не должны радикально менять свою ДНК, только некоторые признаки могут мутировать.
Для дилетантов, посмотревших несколько видосиков, и познавших кайф от осознания своего всемогущества после запуска хелловорлда, все эти философские рассуждения - набор знакомых, но непонятных слов.
Для того, чтобы делать красиво, нужна лишь мощная внутренняя мотивация, потребность в удовлетворении чувства прекрасного, неустранимый зуд перфекционизма. И тогда ты начинаешь общаться со своими объектами по именам, которые ты им заботливо придумываешь, как своим детям, стараешься не переутомлять их лишними разнообразными обязанностями, справедливо их распределяя между всеми участниками этой эпопеи, сюжетные линии, сценарии и диалоги которой ты уже досконально продумал, как Гомер свою Илиаду и Одиссею, и тебе остаётся только всё это записать понятным литературным языком программирования, чтобы твою поэму было интересно и легко читать, и чтобы читатели были в восторге от твоего мастерства владения словом, в таком же, как от чтения Мёртвых душ Гоголя, когда читаешь фразу, кайфуешь от её звучания, и ловишь себя на мысли, что ещё не дочитав её, хочешь поскорее схватить глазами следующую.
Так что ничего тут нового не откроешь. Как и в литературе, есть настоящие поэты, а есть рифмоплеты и графоманы, так и в программировании - есть истинные мастера, и есть авторитетные говнокодеры. И мастерство это определяют не звания, дипломы и должности. Это внутреннее состояние души. Это не рациональные рассуждения, а трансцендентальное стремление к совершенству, независимо от величины тарифной ставки и социального статуса.
Однако, если уж готовить нормального разработчика, то начинать его глубокое обучение стоит сперва с фундаментальных основ и общих базовых методологий - анализа предметной области, построения архитектур, проектирования систем, использования унифицированных языков типа UML для коммуникаций и всего такого.
Выбор конкретных платформ, инструментов и языков программирования, наиболее подходящих для решения вытекающих из проекта задач имплементации и развертывания, - дело десятое и рутинное.
Зачем сужать область действия этой секретной программы подготовки нейрокиллеров, ограничивать их и опускать до уровня виртуозных питонистов?
Замочить этих дегенеративных нейронок смогут только те естественные мозги, в которых устойчивые концептуальные связи образованы не вероятностями последовательностей словесных токенов, а глубоким пониманием базовых идей на абстрактном невербальном уровне.
Парень претендует на звание пятнадцатилетнего вундеркинда-полиглота.
Такому непростительно не знать родной язык и тупо игнорить проверку орфографии, пунктуации и грамматики публичного текста, которую адекватный чел сделал бы на автомате чрезвычайно легко. Такое вопиющее противоречие между декларируемым и фактическим уровнем скилов этого псевдобоя заставляет задуматься о добросовестности автора.
Так что, либо тут фэйковый парень, либо тут фэйковые успехи, что по сути равносильно.
Ссылок, кстати, ни на один проект нет. Так что оценить творения кодогения не представляется возможным. Скорее всего, эта уловка была умышленно применена автором, чтобы усложнить верификацию содержания его текста.
Наиболее вероятно, что мы, в который раз уже, получили примитивный хайпофэйковый фастконтент от вымышленного персонажа.
Один из вариантов - микросервисы. И это тоже ООП. И сверху, и снизу.
Писали люди на ассемблере и пишут ещё. А нейронкам пофигу, им ещё и проще на ассемблере. Только надо много токенов им дать. 😁
У процессора тоже ООП, только более низкий уровень абстракции и другая предметная область - адреса, регистры, операции...
И на ассемблере можно писать с использованием принципов ООП, если перед кодированием подумать и сделать модель системы.
ООП - это не про устройство мира, а про то, какую модель мы строим для более эффективного решения нашей задачи. Так что возможны варианты. Может быть и функция, которая берет молоток и гвоздь и херачит молотком по гвоздю... 😁
Объектность - свойство не нашего мира, а, нашего восприятия этого мира. Наше сознание так устроено, что для понимания того или иного аспекта этого мира нам удобно, в целях значительного уменьшения информационноиюй энтропии, абстрагироваться от бесконечного множества несущественных деталей и разбить его на объекты, сгруппировав их по неким общим признакам в именованные классы, при этом способы выбора, классификации и наименований этих объектов зависят от изучаемых нами аспектов и точек зрения на них. Это ещё называется системный подход. А миру ваще пофигу, как мы себе его представляем - там в итоге одни кварки, или струны, или что-то может быть ещё, хотя и на это миру пофигу, ибо эти штуки мы тоже придумали, потому что по-другому не умеем.
ООП, по оригинальному определению, OOA&D - Object Oriented Analysis and Design, то есть анализ предметной области и проектирование сложной системы, исходя из идеи, что практически любую систему можно абстрактно представить как целенаправленную коллаборацию взаимодействующих между собой специализированных объектов, самостоятельно выполняющих возложенные на них обязанности и предоставляющих другим объектам контролируемый доступ к наборам своих интерфесов для обеспечения межобъектного взаимодействия в соответствии с определенными протоколами.
Это помогает нашим ограниченным ассоциативным мозгам лучше понять сложную предметную область и представить себе, как могла бы быть устроена любая немыслимая херня - от квантовой механики до астрофизики, как некая абстрактная система, рассматриваемая нами с точки зрения эффективного достижения определенных нами же целей.
Таким образом, критикуемое автором понятие ООП в интерпретации "объектно ориентированное программирование", действительно, формально не определено, и притянутая автором за уши критика мнимых недостатков языковых инструментов, предоставляющих некую, иногда довольно ограниченную, поддержку для упрощения создания артефактов исполняемого исходного кода абстрактных OOA&D-моделей имплементации и развертывания, совершенно неуместна в данном контексте.
А курсор, что, рублями можно оплатить?
Не, тут уже другие - нейроПРОМПТы 😂
Да можно наверное и на JS/TS навайбокодить, а потом уже другим ПРОМПТом перевести на русский. 😂
Да, похоже 4o без жесткого контроля опять понесло и он перестарался со своим чайлд-френдли стайлом.
Дискуссия важному автору требуется аж академическая, а исходный нейротекст свой он не постеснялся вывалить на публику, даже не читая его, - чисто тяп-ляп, как из Мурзилки.
Хех.
Ваше заявление про словоблудие - агрессивный эмоциональный ярлык без фактов.
Ваша ссылка на якобы опровержение теоремы Гёделя не указывает на ошибки в его формальных леммах.
Ваш длинный текст про вариантность может быть и полезен, но он не доказывает, что сама вариантность равна ЛСП, он лишь рассказывает про правила подстановки типов.
Мы же с вами обсуждаем поведенческие контракты, инварианты, предусловия и постусловия, про которые формальная языческая (всм языковая, но беспринципная) вариантность вообще не в курсе.
Можно, наверное посмотреть ваши примеры кода, где вариантность нарушает ЛСП, если имеются. Но мне кажется, что вы уже провоцируете холивар. А сейчас наступает время перемирий. Так что я прекращаю огонь. 🔫✌️
Ну там же голословная демагогия, замешанная на манипулировании понятиями типа и интерфейса. Вариантность - это чисто формальная языковая хрень. Полезный, но сугубо формальный инструмент. Он не заменяет поведенческих контрактов, а лишь иногда помогает их типобезопасно выразить. А фундаментальные принципы системного дизайна, и архитектурные, и, как в случае с ЛСП, поведенческие - они же универсальны и не завясят от конкретных средств имплементации.
ЛСП сформулирован давно, на легаси-языке "типов", еще до вызревания современных концепций ООП контрактов, интерфейсов и протоколов, и его суть - не во втискивании реализации в формальные ограничения языков, а в проектировании поведения системы объектов таким образом, чтобы каждый объект, реализующий какой-то интерфейс, независимо от конкретного типа этого объекта, гарантировал и строго соблюдал существенную семантику обязанностей и ответственности этого интерфейса.
Недостатки любых абстрактных систем при желании можно всегда найти и набросать на вентилятор - теорема Гёделя о неполноте в помощь. 😁
Но если мы верим в фундаментальные принципы, а иного способа легализовать их не существует (как завещал великий Гёдель), то мы обязаны их соблюдать полностью. Иначе это будет другая вера.
Так что реальное соблюдение ЛСП - это проектирование контрактов и тестирование инвариантов. И делаться это должно не ad hoc, в процессе кодинга, а на этапе анализа и проектирования системы.
В конце концов, ЛСП - это же не про заклинания и магию языковых фич, а только про здравый смысл.
А здравый смысл нужно беречь.
Это пока. Скоро они между собой будут договариваться и решать, кто за что отвечает 😁
Это скорее минус 😁
Ну это же довольно простая концепция. Не ломать об колено в наследниках фичи, определенные в базовом классе. Наследники могут расширять функциональность, но им запрещено изменять семантику обязанностей базового класса или интерфейса. И тогда, мы смело можем использовать наследников и имплементоров, в тех же сценариях, где их предки успешно работали.
Например, для базового класса такси - наследниками могут быть седаны, минивэны, пикапы и прочие авто, может быть бензин, дизель, газ или электро, может быть руль справа или слева, мы все равно получим то, что ожидаем от такси. Но если от такси унаследовать велик или самокат, то будет трабл.
Ну или например, если от иммутабельного квадрата наследовать иммутабельный рямоугольник - это будет трэш. А в другую сторону - норм.
То есть потомки не должны радикально менять свою ДНК, только некоторые признаки могут мутировать.
Для дилетантов, посмотревших несколько видосиков, и познавших кайф от осознания своего всемогущества после запуска хелловорлда, все эти философские рассуждения - набор знакомых, но непонятных слов.
Для того, чтобы делать красиво, нужна лишь мощная внутренняя мотивация, потребность в удовлетворении чувства прекрасного, неустранимый зуд перфекционизма. И тогда ты начинаешь общаться со своими объектами по именам, которые ты им заботливо придумываешь, как своим детям, стараешься не переутомлять их лишними разнообразными обязанностями, справедливо их распределяя между всеми участниками этой эпопеи, сюжетные линии, сценарии и диалоги которой ты уже досконально продумал, как Гомер свою Илиаду и Одиссею, и тебе остаётся только всё это записать понятным литературным языком программирования, чтобы твою поэму было интересно и легко читать, и чтобы читатели были в восторге от твоего мастерства владения словом, в таком же, как от чтения Мёртвых душ Гоголя, когда читаешь фразу, кайфуешь от её звучания, и ловишь себя на мысли, что ещё не дочитав её, хочешь поскорее схватить глазами следующую.
Так что ничего тут нового не откроешь. Как и в литературе, есть настоящие поэты, а есть рифмоплеты и графоманы, так и в программировании - есть истинные мастера, и есть авторитетные говнокодеры. И мастерство это определяют не звания, дипломы и должности. Это внутреннее состояние души. Это не рациональные рассуждения, а трансцендентальное стремление к совершенству, независимо от величины тарифной ставки и социального статуса.
Однако, если уж готовить нормального разработчика, то начинать его глубокое обучение стоит сперва с фундаментальных основ и общих базовых методологий - анализа предметной области, построения архитектур, проектирования систем, использования унифицированных языков типа UML для коммуникаций и всего такого.
Выбор конкретных платформ, инструментов и языков программирования, наиболее подходящих для решения вытекающих из проекта задач имплементации и развертывания, - дело десятое и рутинное.
Зачем сужать область действия этой секретной программы подготовки нейрокиллеров, ограничивать их и опускать до уровня виртуозных питонистов?
Замочить этих дегенеративных нейронок смогут только те естественные мозги, в которых устойчивые концептуальные связи образованы не вероятностями последовательностей словесных токенов, а глубоким пониманием базовых идей на абстрактном невербальном уровне.
Ну вот, хороший длинный промпт получился для кодерской нейронки. Она теперь и обучит себя по этому плану, и будет потом нейрокодить лучше всех. 🤣
Любому говнокодеру всегда что-то мешает.
А этот тупо запулил тут вымышленный хейт, чтобы свою телегу пропиарить. Статья ни о чём.
Было бы неплохо, чтобы эти инструкции потом сами бы и выполнялись. Зачем людям голову забивать? Выбрал инструкцию, сказал "Поехали!", и вперёд!
Парень претендует на звание пятнадцатилетнего вундеркинда-полиглота.
Такому непростительно не знать родной язык и тупо игнорить проверку орфографии, пунктуации и грамматики публичного текста, которую адекватный чел сделал бы на автомате чрезвычайно легко. Такое вопиющее противоречие между декларируемым и фактическим уровнем скилов этого псевдобоя заставляет задуматься о добросовестности автора.
Так что, либо тут фэйковый парень, либо тут фэйковые успехи, что по сути равносильно.
Ссылок, кстати, ни на один проект нет. Так что оценить творения кодогения не представляется возможным. Скорее всего, эта уловка была умышленно применена автором, чтобы усложнить верификацию содержания его текста.
Наиболее вероятно, что мы, в который раз уже, получили примитивный хайпофэйковый фастконтент от вымышленного персонажа.