[swift-users] Comparing POP to OOP

Dave Abrahams dabrahams at apple.com
Sun Mar 6 00:12:52 CST 2016


on Sat Mar 05 2016, Jon Hoffman <swift-users-AT-swift.org> wrote:

>> On Feb 25, 2016, at 7:35 PM, Dave Abrahams via swift-users <swift-users at swift.org> wrote:
>> 
>> 
>> on Sun Feb 14 2016, zhaoxin肇鑫 <swift-users-AT-swift.org> wrote:
>> 
>
>>> I have not read your blog. But in my opinion, what Apple called protocol
>>> programming is actually so called functional programming. It is not object
>>> programming at all. It uses protocols and structs to avoid object
>>> programming.
>> 
>> I don't think most functional programmers would recognize
>> protocol-oriented programming as what they do.  It is true that one of
>> the main benefits we see in protocol-oriented programming is that it
>> allows one to use *mutable* value types, instead of classes, in
>> polymorphic contexts.  Functional programming is largely concerned with
>> immutable data, where the distinction between value and reference
>> semantics disappears, and it doesn't matter if you're using classes or
>> not.  But the main thing in FP is the use of higher-order functions,
>> which Swift enthusiastically supports, but have nothing whatever to do
>> with protocol-oriented programming.
>
> Your e-mail touches on one of the things that excites me the most
> about Swift.  As you say “But the main thing in FP is the use of
> higher-order functions, which Swift enthusiastically supports, but
> have nothing whatever to do with protocol-oriented programming”.
> Swift isn’t just a Protocol-Oriented programming language or an
> Object-Oriented language or a functional programming language it is
> actually all of them and more.  While other languages attempt to
> support different paradigms, in my opinion, Swift is one of the few
> language that actually does a good job at supporting multiple
> paradigms.
>
> In the conclusion section of my post, I mention that while I pointed
> out a lot of ways that I believe POP is superior to OOP I would not
> say that POP is a clear winner over OOP.  

It would be interesting to see where you think OOP has a distinct
advantage due to fundamental properties of the paradigms (rather
than artifacts of an immature implementation of protocol language
features)

> The winner is actually the programmer because we are not limited to
> one programming paradigm.  We can choose the paradigm that fits our
> needs.  Personally I have use POP in a number of projects and I
> definitely prefer it to OOP or FP but I would not criticize anyone
> that uses the other two because they are very valid paradigms that
> have proven over time.

-- 
-Dave



More information about the swift-users mailing list