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: |

Just as the Bitcoin turmoil continues, crypto traders have taken to Telegram to voice their feelings. Crypto investors can reduce their anxiety about losses by joining the “Bear Market Screaming Therapy Group” on Telegram. ‘Ban’ on Telegram Informative With the “Bear Market Screaming Therapy Group,” we’ve now transcended language. A Hong Kong protester with a petrol bomb. File photo: Dylan Hollingsworth/HKFP.
from us


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