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

  Рет қаралды 807

Время Медоуказчика

Время Медоуказчика

Күн бұрын

Пікірлер: 5
@sudo-apt-upgrade-brain
@sudo-apt-upgrade-brain 6 күн бұрын
Хорошая структурная подача. Спасибо!
@jarogor
@jarogor 6 күн бұрын
Скорее всего есть разные ниши, где-то концентрированный ООП, где-то ФП стиль, а не то, чтобы полноценные какие-то взаимозаменяемые парадигмы. Ибо вот взять REST API, который постоянно принимает и отдаёт какие-то json структуры, что означает их какую-то сериализацию и репрезентацию внутрь приложения. А следовательно уже ФП пролетает мимо со своим стремлением к отсутствию структур. Он не может полностью это реализовать. Ибо это именно что структуро-ориентированность, всё приурочено к данным доменной области, которая состоит из структур и их связей, что по сути основа БД, вокруг которых всё и строится в итоге. То есть смысл какого-то долгоживущего приложения в его персистентном хранилище, которое полностью структурировано и можно сказать именно это объективное обстоятельство порождает ООП естественным образом. И ещё попробуй из него выпрыгнуть. Поэтому мне кажется, что сама эта расхожая постановка вопроса про самостоятельные парадигмы - неверная. Она ставит на одну полку категориально разные вещи. ФП это скорее просто нишевый стиль, как процедурный какой-нибудь, или аспектный. Он не может заменить ООП, он просто акцентировано выносит поведение на видное место, но работать всё равно придётся со структурами данных. Минимизация переменных для человеко-читабельности не значит минимизацию для машино-читабельности. Сама сигнатура любой функции предопределяет что-то принять и что-то вернуть, её запуск уже порождает ссылки на куче, сборщик мусора и что-нибудь такое. А то, что этого не видно для человека это не значит, что этого нету. Череда функций вызываемых друг другом просто скрывает мимолётное создание переменных от читателя. И чем строже типы, тем больше там скрытого контроля над структурами их входов и выходов. В общем, мне кажется это интересной стилистической особенностью, но фундаментально ООП - единственная парадигма. Просто она для своего существования требует некоторой эволюционной развитости экосистемы, поэтому появилась не сразу, в прадедовские времена языка СИ её не было, но тем не менее решение повседневных проблем языка типа СИ с неизбежностью приводит к ООП. Мне кажется, что это потому, что человеческий язык в фундаменте имеет субъект-объектное, а не функциональное устройство. Мы в ООП отражаем какой-то фундамент мышления. И поэтому нет альтернативы этой парадигме. Но это просто моё мнение из интернета, никто не обязан с ним соглашаться
@antizai.
@antizai. 5 күн бұрын
Морячёк плавает ---------- Ответ 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): Архитектурный паттерн, разделяющий приложение на три взаимосвязанные компоненты. ## Заключение - Парадигмы определяют общий подход к программированию. - Принципы - это рекомендации для написания качественного кода. - Паттерны - это готовые решения для распространенных проблем. Каждая из этих концепций важна для создания эффективного и поддерживаемого программного обеспечения.
@o01122
@o01122 6 күн бұрын
Еще забыл Идиомы.
@denk2k
@denk2k 5 күн бұрын
а еще стили и дизайн
It’s all not real
00:15
V.A. show / Магика
Рет қаралды 17 МЛН
Enceinte et en Bazard: Les Chroniques du Nettoyage ! 🚽✨
00:21
Two More French
Рет қаралды 34 МЛН
D. Harder Problem solution code || Codeforces Round 993(Div.4) #codeforces
1:57
Может ли С++ работать без ОС?
39:58
Время Медоуказчика
Рет қаралды 3,5 М.
Виктор Шопин - От 100 мегабит до 100 гигабит: основы работы медиасистем по IP. Часть 1.
1:46:51
PRAKTIKUM.SCHOOL центр дополнительного образования
Рет қаралды 617
Современный С++. Правда ли, что Си быстрее чем С++?
52:56
Время Медоуказчика
Рет қаралды 2,5 М.
Основы семантики перемещения в с++
18:14
Полевой Дмитрий
Рет қаралды 5 М.