C#: Парадигмы vs Принципы vs Паттерны программирования - видео HD

C#: Парадигмы vs Принципы vs Паттерны программирования - видео
00:16:41
Обнаружено блокирование рекламы на сайте

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

12n.ru 18446 роликов

Парадигмы vs Принципы vs Паттерны программирования - видео.

Глубокое погружение в различия между парадигмами, паттернами и принципами программирования. Разбираемся детально:
— Что такое парадигмы и почему их несколько
— Чем принципы SOLID отличаются от паттернов проектирования
— Как появились эти концепции и почему C++ сыграл ключевую роль
— Как применяются эти концепции в современных языках (C++, Java)
— Почему некоторые принципы работают не во всех парадигмах

## Ссылки
github.com/yellow-footed-honeyguide

#программирование #разработка #паттерны #solid #cpp #rust
RSS
@sudo-apt-upgrade-brain
20:43
Хорошая структурная подача. Спасибо!
@jarogor
21:15
+3
Скорее всего есть разные ниши, где-то концентрированный ООП, где-то ФП стиль, а не то, чтобы полноценные какие-то взаимозаменяемые парадигмы. Ибо вот взять REST API, который постоянно принимает и отдаёт какие-то json структуры, что означает их какую-то сериализацию и репрезентацию внутрь приложения. А следовательно уже ФП пролетает мимо со своим стремлением к отсутствию структур. Он не может полностью это реализовать. Ибо это именно что структуро-ориентированность, всё приурочено к данным доменной области, которая состоит из структур и их связей, что по сути основа БД, вокруг которых всё и строится в итоге. То есть смысл какого-то долгоживущего приложения в его персистентном хранилище, которое полностью структурировано и можно сказать именно это объективное обстоятельство порождает ООП естественным образом. И ещё попробуй из него выпрыгнуть. Поэтому мне кажется, что сама эта расхожая постановка вопроса про самостоятельные парадигмы — неверная. Она ставит на одну полку категориально разные вещи. ФП это скорее просто нишевый стиль, как процедурный какой-нибудь, или аспектный. Он не может заменить ООП, он просто акцентировано выносит поведение на видное место, но работать всё равно придётся со структурами данных. Минимизация переменных для человеко-читабельности не значит минимизацию для машино-читабельности. Сама сигнатура любой функции предопределяет что-то принять и что-то вернуть, её запуск уже порождает ссылки на куче, сборщик мусора и что-нибудь такое. А то, что этого не видно для человека это не значит, что этого нету. Череда функций вызываемых друг другом просто скрывает мимолётное создание переменных от читателя. И чем строже типы, тем больше там скрытого контроля над структурами их входов и выходов. В общем, мне кажется это интересной стилистической особенностью, но фундаментально ООП — единственная парадигма. Просто она для своего существования требует некоторой эволюционной развитости экосистемы, поэтому появилась не сразу, в прадедовские времена языка СИ её не было, но тем не менее решение повседневных проблем языка типа СИ с неизбежностью приводит к ООП. Мне кажется, что это потому, что человеческий язык в фундаменте имеет субъект-объектное, а не функциональное устройство. Мы в ООП отражаем какой-то фундамент мышления. И поэтому нет альтернативы этой парадигме. Но это просто моё мнение из интернета, никто не обязан с ним соглашаться
@o01122
23:30
Еще забыл Идиомы.
@antizai.
12:46
+1
Морячёк плавает
— Ответ gpt: Парадигмы vs Принципы vs Паттерны программирования

Парадигмы, принципы и паттерны программирования — это три ключевых концепции в разработке программного обеспечения, каждая из которых играет свою роль. Давайте рассмотрим их подробнее:

## Парадигмы программирования

Парадигма программирования — это общий подход или стиль программирования, который определяет, как разработчики организуют и структурируют код. Основные парадигмы включают:
1. Императивное программирование: Описание шагов, которые необходимо выполнить для достижения результата (например, C, Java).
2. Декларативное программирование: Описание того, что нужно сделать, без указания, как это сделать (например, SQL, HTML).
3. Объектно-ориентированное программирование (ООП): Организация кода в виде объектов, которые содержат данные и методы (например, Java, C++).
4. Функциональное программирование: Использование функций как основных строительных блоков, акцент на неизменяемость данных (например, Haskell, Scala).
5. Логическое программирование: Основывается на логических выражениях и правилах (например, Prolog).

## Принципы программирования

Принципы программирования — это общие рекомендации и лучшие практики, которые помогают разработчикам создавать качественный и поддерживаемый код. Некоторые из них включают:
1. DRY (Don't Repeat Yourself): Избегайте дублирования кода.
2. KISS (Keep It Simple, Stupid): Стремитесь к простоте в дизайне и реализации.
3. YAGNI (You Aren't Gonna Need It): Не добавляйте функциональность, которая не нужна в данный момент.
4. SOLID: Набор принципов для проектирования объектов в ООП (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion).

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

Паттерны программирования — это проверенные решения распространенных проблем, которые возникают в процессе разработки. Они могут быть как высокоуровневыми (архитектурные паттерны), так и низкоуровневыми (проектные паттерны). Примеры:
1. Singleton: Гарантирует, что класс имеет только один экземпляр и предоставляет глобальную точку доступа к нему.
2. Factory Method: Определяет интерфейс для создания объектов, но позволяет подклассам изменять тип создаваемого объекта.
3. Observer: Определяет зависимость «один ко многим» между объектами, так что при изменении состояния одного объекта все зависимые объекты уведомляются и обновляются автоматически.
4. MVC (Model-View-Controller): Архитектурный паттерн, разделяющий приложение на три взаимосвязанные компоненты.

## Заключение
— Парадигмы определяют общий подход к программированию.
— Принципы — это рекомендации для написания качественного кода.
— Паттерны — это готовые решения для распространенных проблем.

Каждая из этих концепций важна для создания эффективного и поддерживаемого программного обеспечения.