TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

The power of interoperability: Why objects are inevitable (2013) [pdf]

39 pointsby pramodbiligiriabout 1 year ago

5 comments

GuestHNUserabout 1 year ago
I find it sad that this paper mentions two valid critiques of OOP[0][1], yet makes no effort to engage with their specific criticisms. Also, citing Microsoft&#x27;s COM object system as _the_ example of OOP&#x27;s great success must mean that the authors are simply ignorant to how bad COM is and why Microsft has ceased anything beyond legacy support for it.<p>Ultimately, I find the thesis of the paper fundamentally wrong for presuming that OOP is somehow more beneficial than other approaches to dynamic dispatch. Moreover, the use of interfaces in thr paper are more restrictive to code structure, and in turn, are more likely hurt code reuse than help it.<p>Interfaces are an inherently weaker form of the age old Operation Code and data packet paradigm. Take the Widget interface the paper gives as an example (page 5). This interface has now been set in stone. Any additions that would be useful for the widget interface, say OnClick(), will require a breaking change. This is because all code using the old interface will have to be updated and recompiled to satisfy the new interface requirements (even if a widget won&#x27;t functionally change from using said new interface). Meanwhile for code using op codes, a new op code value is defined and nothing in the old code is required to change. (This assumes that this old code will perform a no operation for the new opcode, which historically has been the case for systems that use this method).<p>In fact, Win32 did exactly this opcode and data packet protocol for its message loop to great long term success. They have regularly extended their existing code without breaking backwards compatibility of older versions. The longevity of code in typical OO systems pales in comparison.<p>[0] <a href="https:&#x2F;&#x2F;harmful.cat-v.org&#x2F;software&#x2F;OO_programming&#x2F;why_oo_sucks" rel="nofollow">https:&#x2F;&#x2F;harmful.cat-v.org&#x2F;software&#x2F;OO_programming&#x2F;why_oo_suc...</a> [1] <a href="http:&#x2F;&#x2F;stlport.org&#x2F;resources&#x2F;StepanovUSA.html" rel="nofollow">http:&#x2F;&#x2F;stlport.org&#x2F;resources&#x2F;StepanovUSA.html</a>
评论 #40365379 未加载
评论 #40366166 未加载
评论 #40365398 未加载
评论 #40365892 未加载
评论 #40364461 未加载
评论 #40364654 未加载
评论 #40365231 未加载
KingOfCodersabout 1 year ago
Today we have no interoperability compared to 20 years ago (that existed in Windows or Macos applications).<p>Most applications people use are on the web or mobile today. Every application on the web or mobile (Figma, Notion, ...) is basically a silo or one way street.
评论 #40366200 未加载
mrkeenabout 1 year ago
&gt; 3). Alternative mechanisms can provide interoperable extension only by using service abstraction themselves—and thus are equivalent to what we consider the essence of objects.<p>Since virtually any language can delegate behaviour this way, the above claim is really saying that every language carries the essence of objects. (And I agree - for <i>this</i> definition of objects).<p>So the follow-up question becomes &quot;What&#x27;s so special about about languages which brand themselves as OOP - as opposed to another paradigm?&quot;
评论 #40366735 未加载
manu3000about 1 year ago
Good to read alongside William Cook&#x27;s On Understanding Data Abstraction <a href="https:&#x2F;&#x2F;www.cs.utexas.edu&#x2F;~wcook&#x2F;Drafts&#x2F;2009&#x2F;essay.pdf" rel="nofollow">https:&#x2F;&#x2F;www.cs.utexas.edu&#x2F;~wcook&#x2F;Drafts&#x2F;2009&#x2F;essay.pdf</a>
Log_out_about 1 year ago
Objects are whatever dangles at the interior other end of interfaces. And interfaces are just plugs. Plugs can have sub plugs, etc.. If you explain object orientation with its realworld engineering equivalent it becomes much more obvious.