> On Dec 29, 2016, at 16:34, Dave Abrahams via swift-evolution 
> <swift-evolution@swift.org> wrote:
> By that measure there should be no encapsulation; we should make
> everything public, because somebody might need it someday.
> 

I don't know what you mean by "encapsulation" but I will explain what I think 
it means.

>From Wikipedia 
>https://en.wikipedia.org/wiki/Encapsulation_(computer_programming)
In programming languages <https://en.wikipedia.org/wiki/Programming_languages>, 
encapsulation is used to refer to one of two related but distinct notions, and 
sometimes to the combination[1] 
<https://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29#cite_note-1>[2]
 
<https://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29#cite_note-Dale-2>
 thereof:
A language mechanism for restricting direct access to some of the object 
<https://en.wikipedia.org/wiki/Object_(computer_science)>'s components.[3] 
<https://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29#cite_note-3>[4]
 
<https://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29#cite_note-Pierce-4>
A language construct that facilitates the bundling of data with the methods 
<https://en.wikipedia.org/wiki/Method_(computer_programming)> (or other 
functions) operating on that data.[5] 
<https://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29#cite_note-5>[6]
 
<https://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29#cite_note-6>

Objective C and Smalltalk have encapsulation.  iVars are always private.  
Methods are always callable and "private implementation" is provided by 
convention (put private methods in private extensions/categories).  They do not 
have compiler enforced access control.

I'm not a fan of compiler enforced access control.  It has never helped me out 
but it has gotten in my way a number of times. There are plenty of ways to do 
information/implementation hiding without relying on the compiler to play 
nanny.   

My views on what I like in programming languages are largely informed by my 
years of doing C++, Smalltalk, Java, and Objective C (in that order). 

Two of those languages I found rigid, frustrating, and limited and I avoid 
working in them as much as possible.  Two of them I find malleable and 
expressive and seek out opportunities to work in them.

Which is which I leave as an exercise to the reader but the ones I prefer are 
NOT Java or C++ (although I'm fine with using C++ for limited sized high 
performance libraries like audio processing units).

Cheers,
-Todd Blanchard
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to