[swift-users] Comparing POP to OOP

Dave Abrahams dabrahams at apple.com
Thu Feb 25 18:29:00 CST 2016

on Sun Feb 14 2016, Jon Hoffman <swift-users-AT-swift.org> wrote:

> Numerous tutorials that I have seen take a very Object-Oriented
> approach to the protocol-oriented programming (POP) paradigm.  By this
> statement I mean that they tell us that with POP we should begin our
> design with the protocol rather than with the superclass as we did
> with OOP however the protocol design tends to mirror the superclass
> design of OOP.  They also tell us that we should use extensions to add
> common functionality to types that conform to a protocol as we did
> with superclasses in OOP.  While protocols and protocol extensions are
> arguably two of the most important concepts of POP these tutorials
> seem to be missing some other very important concepts.
> In this post I would like to compare Protocol-Oriented design to
> Object-Oriented design to highlight some of the conceptual
> differences.  You can view the blog post here:
> http://masteringswift.blogspot.com/2016/02/pop-and-oop.html
> <http://masteringswift.blogspot.com/2016/02/pop-and-oop.html>

While I agree that simply translating classes into protocols misses the
point, it seems as though your post still only deals with the
dynamically-polymorphic half of the protocol world.  I don't see any
generics in there at all, for example.  If you're really going for a
comprehensive view of POP, you need to get into that stuff too.


More information about the swift-users mailing list