Информация об изменениях

Сообщение Re: Мнение: объектно-ориентированное программирование — ката от 12.09.2019 11:10

Изменено 12.09.2019 11:35 Pauel

Re: Мнение: объектно-ориентированное программирование — катастрофа на триллион д
Здравствуйте, кт, Вы писали:

кт>Перевод статьи «Object-Oriented Programming — The Trillion Dollar Disaster»

кт>Рассказывает Илья Суздальницкий, senior full-stack-разработчик

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

кт>Но это не так. Люди начинают уступать под тяжестью абстракций и сложного графа беспорядочно разделяемых изменяемых объектов.

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

Вообще, не совсем ясно, почему функциональное противопоставляется ООП.

Каждый взрослый язык общего назначения имеет слоёную архитектуру.

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

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

На верху, соответсвенно, или модульное программирование, или его развитие, ООП.

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

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

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

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

кт>Перевод статьи «Object-Oriented Programming — The Trillion Dollar Disaster»

кт>Рассказывает Илья Суздальницкий, senior full-stack-разработчик

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

кт>Но это не так. Люди начинают уступать под тяжестью абстракций и сложного графа беспорядочно разделяемых изменяемых объектов.

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

Вообще, не совсем ясно, почему функциональное противопоставляется ООП.

Каждый взрослый язык общего назначения имеет слоёную архитектуру.

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

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

На верху, соответсвенно, или модульное программирование, или его развитие, ООП.

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

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

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

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