Gregory Seidman wrote:
...
> 3) duck typing allows unintended objects to be used in unintended ways
> 
> 4) the ability to add/replace methods in existing classes allows library
>    internals to be inspected or modified
Also I consider myself a bad programmer I want to share my opinion on this:

4) is about social security. the private and protected stuff I know of java and all those things enable the tool language to be used by management to enforce devision of work.

the management and team leaders can create a work model and thus can set define who is responsible for what within the tools of work - the programming language.

this opens a discussion I cannot join cause I am not working in larger companies with high distances between management and workers (=programmers).

I think what java (and possible c++, but i don't know) offers can be archived in another way - but well, not by using ruby itself. Further I think it is the wrong place to implement such "security" features in work processes cause it can HINDER and reduce efficiency, creativity, output. I think working with a modular application model in mind may solve this. If you got commercial software written by software giants (this is where, i think, these "security" models, added onto the object-orientation-model cause it was just possible, apply) you can instead of taking your time to develop and implement a language-side "security"-model take your time and specify interfaces between parts, modules, of your software. different teams will work on different modules then which will run in different VMs communicating via inter process messaging or via databases for example.

maybe my view is very narrow, but well, maybe it helps.