I dont know exactly what you mean by eforced OOP by
design. Pharo design principles are not written in stone, just
good habits people picked along the way and they are to be found
in python as well. Python actually takes OO very deply , sure if
, else, while are language constructs but rest assured that
everything else is an object. For example unlike Pharo , python
allows to do procedural programming , but python functions are
objects in disguise . You could say that python functions work
similarly (but not the same , since closures are not supported
in python) to Pharo blocks.��
Ruby is even closer to Pharo, supporting blocks, message
passing etc. Also those kind of languages take clean design in
code, very seriously. Just go to python interpreter console
and do "import this" and you will see the zen of python unfold
before your eyes emphasizing the good design principles you
will find many smalltalkers talking about. Another language
taking these principles very seriously is Lisp, actually
Smalltalk took a lot from lisp in terms of overall design and
direction.��
Of course clean code in the end is a choice , there is no
enforcement, you will find plenty of ugly code in Pharo,
Python, Ruby and Lisp . There is no capital punishment for
coders that don't follow these principles. Many coders care
only for getting the job done and feel like they dont have
time to worry about how clean their code is. Its a free world,
or so we hope.��
On the other hand everything should be put into context and
never taken as the Holy Bible or Holy Grail. ����