Definition and motivations of Object Oriented Software Development

26 views
Skip to first unread message

Julian Gamble

unread,
Jul 16, 2012, 7:22:01 AM7/16/12
to fp...@googlegroups.com
Hi fp-oo community, 

Brian - I'm really enjoying the book updates - particularly the section on implementing your own OO paradigm. It got me thinking about how to capture and communicate the essence of the ideas behind it. 

There was a discussion recently on hacker news titled "Why OO sucks." (apologise for the link-bait-y title - there was some interesting commentary.) The top comment included the assertion: 'If you don't know what "open recursion" is and why it's dangerous, you shouldn't be doing OOP.'

This reminded me of a comment by Daniel Spiewak saying "My definition of OO is message passing married with open recursion."

This also lead me to a great discussion of what OO is and isn't:
Here he says that OO is:
 - objects communicating via message passing (from Simula, Erland and Pick)
 - types - records containing function typed attributes that are parametised by a recursive 'self' parameter that provides for 'late-binding'

and he says that OO is not:
 - encapsulation (many OO languages like Python don't support it) - and much of OO as we know it from Java/C# is merely modules/packages
 - protection, 
 - ad hoc polymorphism, 
 - parametric polymorphism 

I write this post because it is easy to appeal to JVM programmers and say "OO is like what you see in Java - maybe with some message passing and representing objects as key-value stores."

I'm interested to hear how other people communicate what is and isn't OO. 

Cheers
Julian

Brian Marick

unread,
Jul 17, 2012, 9:17:10 PM7/17/12
to fp...@googlegroups.com

On Jul 16, 2012, at 6:22 AM, Julian Gamble wrote:
> Brian - I'm really enjoying the book updates - particularly the section on implementing your own OO paradigm. It got me thinking about how to capture and communicate the essence of the ideas behind it.

I'm fairly notorious for being averse to definitions. I grant that is emotional (definitions are so often a power play), but it's also reasoned:

* Every definition includes terms that must also be defined. It's easy to assume there's agreement on a term when there's not, and that often bites people in amusing ways. Even in technical topics, which lend themselves to precision (that is, to fewer and more controlled layers of definitional recursion), definitional clarity is very expensive to attain and (in my opinion) typically only repays its cost when you're doing something like writing a compiler rather than talking to people.

* Definitions are binary categorizations: a person either *is* or *is not* a "bachelor". An object either is or is not a chair. It turns out that categories in the real world are fuzzy and, for any class C, you often cannot find any set of properties such that all elements of C have all those properties of C and no elements of not-C have them all. (See /Women, Fire, and Dangerous Things/ and my own
http://www.exampler.com/testing-com/writings/pnsqc-2005-communication.pdf )

Because of that, I'm not so focused on capturing an implementation of a canonical object-oriented language, but rather on presenting a variety of implementations that let people who are familiar with one of N different variations on the OO theme say, "Wow! So that's how thing-I-care-about X can be implemented."

As far as book-writing goes, I'm somewhat inspired by the idea that effective knowledge is tacit knowledge (see my writeup of medical education at http://www.exampler.com/testing-com/writings/tacit-knowledge.html and Fleck's /Genesis and Development of a Scientific Fact/) My hope is that by approaching a topic from many different directions, and providing many different exercises, readers will get a "gut feel" for a functional approach to programming without necessarily being able to define what that is (since I can't). That gut feel will nicely prepare readers to get useful ideas when they encounter lots of different approaches to FP (or OO).

The danger of my approach is that it can lead to a vague and unorganized smear of techniques and ideas and facts, without any framework that a reader can grasp. I'm grappling with that in Part 2, and I hope you readers will let me know if things don't hang together in a way you think gives you the ability to think practical-but-new thoughts.

-----
Brian Marick, Artisanal Labrador
Contract programming in Ruby and Clojure
Occasional consulting on Agile


Julian Gamble

unread,
Jul 19, 2012, 8:20:24 AM7/19/12
to fp...@googlegroups.com
Thanks for responding Brian - I enjoy your writing style. 

>definitions are so often a power play

This is very similar to observations of post-modernism, "truth claims are a power grab." Whilst I know of examples of what you're saying, I have modernist sympathies - and am not yet ready to throw the figurative baby of absolute truth out with the bathwater. 

>I'm grappling with that in Part 2, and I hope you readers will let me know if things don't hang together in a way you think gives you the ability to think practical-but-new thoughts. 

Looking forward to it. 

JG

Adrian Mowat

unread,
Jul 19, 2012, 8:37:21 AM7/19/12
to fp...@googlegroups.com
Hi Guys

So, for what it's worth, I'm going to respond.

I tend to avoid the my style/language/paradigm is better then yours debate - it's just not worth the brain cycles.

However, FP is gaining a lot of popularity and seems to help people solve problems very effectively and I'm getting a lot out of learning it.  This book is doing a great job for me of filling in the gaps left by other Clojure texts which assume an certain familiarity with functional paradigms.  Hopefully Part 2 will help me continue my learning and I'm looking forward to the next release.

Cheers

Adrian


--
You received this message because you are subscribed to the Google Groups "fp-oo" group.
To post to this group, send email to fp...@googlegroups.com.
To unsubscribe from this group, send email to fp-oo+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msg/fp-oo/-/pm5sejMEyGsJ.
For more options, visit https://groups.google.com/groups/opt_out.
 
 


Adrian Mowat

Tweet: @mowat27

Am I being a bit short?  Here's why: http://emailcharter.org/http://inboxzero.com/

Reply all
Reply to author
Forward
0 new messages