EMACSWAY_LOG Telegram 415
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Знатный холиварчик титанов получился на тему FP vs OOP. Не без интересных исторических подробностей. https://twitter.com/Grady_Booch/status/1302678071049216000?s=19 #FunctionalProgramming #OOP
В последнее время часто обсуждается OOP в разных чатах. У меня на эту тему уже поднакопилось немного информации, которой можно поделиться.

Для многих людей отправной точкой понимания OOP являются известные письма Alan Kay (стоит сразу отметить, что этот вопрос - дискуссионный, но мы беспристрастно рассмотрим различные точки зрения):

- http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html

- http://www.purl.org/stefan_ram/pub/doc_kay_oop_en

Я выделю главное из них:

📝 "OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things."
- Alan Kay

📝 "I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages (so messaging came at the very beginning -- it took a while to see how to do messaging in a programming language efficiently enough to be useful)."
- Alan Kay

Интересный момент - на его мышление значительное влияние оказал язык LISP, впрочем, в то время языков было не так уж и много.

Почему Alan Kay? Потому что он считается автором термина Object-Oriented, хотя история самой OO-парадигмы уходит, как мы увидим, несколько глубже (вплоть до https://wiki.c2.com/?SimulaLanguage , и даже https://wiki.c2.com/?SketchPad ), а Alan Kay придумал только часть этого термина ( https://wiki.c2.com/?HeDidntInventTheTerm )

На эту тему есть страницы на сайте Ward Cunningham (как всегда, информация с его сайта бесценна):

- https://wiki.c2.com/?DefinitionsForOo

- https://wiki.c2.com/?NobodyAgreesOnWhatOoIs

- https://wiki.c2.com/?NygaardClassification

- http://wiki.c2.com/?AlanKayOnMessaging

- http://wiki.c2.com/?AlanKaysDefinitionOfObjectOriented

- https://wiki.c2.com/?AlanKayOnObjects

- http://wiki.c2.com/?MessageOrientedProgramming

- http://wiki.c2.com/?ObjectOriented

- https://wiki.c2.com/?ObjectOrientedProgramming

- https://wiki.c2.com/?ObjectOrientedPurity

- https://wiki.c2.com/?OoFitsOurMentalAbilities

И интересное видео от David Wast:
- "David West OOP is Dead! Long Live OODD!"
https://www.youtube.com/watch?v=RdE-d_EhzmA

Grady Booch упоминает две фундаментальные статьи, оказавшие значительное влияние на становление OOP:

📝 "His is one of the influential papers [David Parnas' 1972 paper]; the work by Liskov on abstract data types was also very important"
https://twitter.com/Grady_Booch/status/1302747652426145793?s=19

Вот они:
1. "On the Criteria To Be Used in Decomposing Systems into Modules (1972)" by D. L. Parnas
http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.132.7232

2. "Programming with Abstract Data Types (1974)" by Barbara Liskov, Stephen
https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.136.3043
и
"Abstraction mechanisms in CLU." by B. Liskov, A. Snyder, R. Atkinson, and C. Schaffert. Communications of the ACM, 20:564–576, 1977.
https://web.eecs.umich.edu/~weimerw/2011-6610/reading/liskov-clu-abstraction.pdf

Более подробно историю OOP вы можете посмотреть в главе "2.2 Foundations of the Object Model" книги "Object-Oriented Analysis and Design with Applications" 3rd edition by Grady Booch and others. Там он приводит еще несколько статей, сыгравших значительную роль в истории OOP.

Есть еще интересная история от Ward Cunningham:
- https://wiki.c2.com/?InformalHistoryOfProgrammingIdeas

И история OOP от его пионеров - основателей Simula:
- https://web.archive.org/web/20021210082312/http://www.ifi.uio.no/~kristen/FORSKNINGSDOK_MAPPE/F_OO_start.html

Как уже говорилось ранее ( https://www.tgoop.com/emacsway_log/393 ), самая большая проблема в разработке - это неясность намерений автора. С OOP - тоже самое. Информации много, но мало кто понимает, какую проблему оно призвано решить. Непонимание его целей приводит к некорректному его применению, что, в свою очередь, приводит к недовольству его применением. Непонимание его целей не позволяет оценить эффективность его применения.

Поэтому, мы начнем с цели OOP в следующих постах.

#OOP #SoftwareDesign



tgoop.com/emacsway_log/415
Create:
Last Update:

В последнее время часто обсуждается OOP в разных чатах. У меня на эту тему уже поднакопилось немного информации, которой можно поделиться.

Для многих людей отправной точкой понимания OOP являются известные письма Alan Kay (стоит сразу отметить, что этот вопрос - дискуссионный, но мы беспристрастно рассмотрим различные точки зрения):

- http://lists.squeakfoundation.org/pipermail/squeak-dev/1998-October/017019.html

- http://www.purl.org/stefan_ram/pub/doc_kay_oop_en

Я выделю главное из них:

📝 "OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things."
- Alan Kay

📝 "I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages (so messaging came at the very beginning -- it took a while to see how to do messaging in a programming language efficiently enough to be useful)."
- Alan Kay

Интересный момент - на его мышление значительное влияние оказал язык LISP, впрочем, в то время языков было не так уж и много.

Почему Alan Kay? Потому что он считается автором термина Object-Oriented, хотя история самой OO-парадигмы уходит, как мы увидим, несколько глубже (вплоть до https://wiki.c2.com/?SimulaLanguage , и даже https://wiki.c2.com/?SketchPad ), а Alan Kay придумал только часть этого термина ( https://wiki.c2.com/?HeDidntInventTheTerm )

На эту тему есть страницы на сайте Ward Cunningham (как всегда, информация с его сайта бесценна):

- https://wiki.c2.com/?DefinitionsForOo

- https://wiki.c2.com/?NobodyAgreesOnWhatOoIs

- https://wiki.c2.com/?NygaardClassification

- http://wiki.c2.com/?AlanKayOnMessaging

- http://wiki.c2.com/?AlanKaysDefinitionOfObjectOriented

- https://wiki.c2.com/?AlanKayOnObjects

- http://wiki.c2.com/?MessageOrientedProgramming

- http://wiki.c2.com/?ObjectOriented

- https://wiki.c2.com/?ObjectOrientedProgramming

- https://wiki.c2.com/?ObjectOrientedPurity

- https://wiki.c2.com/?OoFitsOurMentalAbilities

И интересное видео от David Wast:
- "David West OOP is Dead! Long Live OODD!"
https://www.youtube.com/watch?v=RdE-d_EhzmA

Grady Booch упоминает две фундаментальные статьи, оказавшие значительное влияние на становление OOP:

📝 "His is one of the influential papers [David Parnas' 1972 paper]; the work by Liskov on abstract data types was also very important"
https://twitter.com/Grady_Booch/status/1302747652426145793?s=19

Вот они:
1. "On the Criteria To Be Used in Decomposing Systems into Modules (1972)" by D. L. Parnas
http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.132.7232

2. "Programming with Abstract Data Types (1974)" by Barbara Liskov, Stephen
https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.136.3043
и
"Abstraction mechanisms in CLU." by B. Liskov, A. Snyder, R. Atkinson, and C. Schaffert. Communications of the ACM, 20:564–576, 1977.
https://web.eecs.umich.edu/~weimerw/2011-6610/reading/liskov-clu-abstraction.pdf

Более подробно историю OOP вы можете посмотреть в главе "2.2 Foundations of the Object Model" книги "Object-Oriented Analysis and Design with Applications" 3rd edition by Grady Booch and others. Там он приводит еще несколько статей, сыгравших значительную роль в истории OOP.

Есть еще интересная история от Ward Cunningham:
- https://wiki.c2.com/?InformalHistoryOfProgrammingIdeas

И история OOP от его пионеров - основателей Simula:
- https://web.archive.org/web/20021210082312/http://www.ifi.uio.no/~kristen/FORSKNINGSDOK_MAPPE/F_OO_start.html

Как уже говорилось ранее ( https://www.tgoop.com/emacsway_log/393 ), самая большая проблема в разработке - это неясность намерений автора. С OOP - тоже самое. Информации много, но мало кто понимает, какую проблему оно призвано решить. Непонимание его целей приводит к некорректному его применению, что, в свою очередь, приводит к недовольству его применением. Непонимание его целей не позволяет оценить эффективность его применения.

Поэтому, мы начнем с цели OOP в следующих постах.

#OOP #SoftwareDesign

BY emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.


Share with your friend now:
tgoop.com/emacsway_log/415

View MORE
Open in Telegram


Telegram News

Date: |

Administrators Members can post their voice notes of themselves screaming. Interestingly, the group doesn’t allow to post anything else which might lead to an instant ban. As of now, there are more than 330 members in the group. To upload a logo, click the Menu icon and select “Manage Channel.” In a new window, hit the Camera icon. Ng was convicted in April for conspiracy to incite a riot, public nuisance, arson, criminal damage, manufacturing of explosives, administering poison and wounding with intent to do grievous bodily harm between October 2019 and June 2020. The best encrypted messaging apps
from us


Telegram emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
FROM American