Kilon, great reflection.�
We should have Pharo display Pharo Zen as exposed in Pharo Vision:

Pharo Zen

Our values and convictions are condensed in this simple list.

Easy to understand, easy to learn from, easy to change. Objects all the way down.
Examples to learn from.
Fully dynamic and malleable.

Beauty in the code, beauty in the comments.
Simplicity is the ultimate elegance.
Better a set of small polymorphic classes than a large ugly one. Classes structure our vocabulary.
Messages are our vocabulary.
Polymorphism is our esperanto.
Abstraction and composition are our friends.
Tests are important but can be changed.
Explicit is better than implicit.
Magic only at the right place.
One step at a time.
There is no unimportant fix.
Learning from mistakes.
Perfection can kill movement.
Quality is a emerging property.
Simple processes to support progress.
Communication is key.
A system with robust abstractions that a single person can understand.


:D

best

nacho


Lic. Ignacio Sniechowski, MBA







On Wed, Nov 13, 2013 at 11:57 AM, kilon alios <kilon.alios@gmail.com> wrote:
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. ��


On Wed, Nov 13, 2013 at 4:37 PM, Bahman Movaqar <Bahman@bahmanm.com> wrote:
@Sven
> There is not necessarily a right and a wrong way. Design is hard to
> explain, I am not going to try. Sorry ;-)

Of course! �I was just trying to find out the design *norm* for a small
problem; to become familiar with the popular way of thought among
Smalltalk'ers.

@kilon
Thanks. �I think that may be what I need: real world examples.

As I have already admitted, I am not used to Smalltalk way of thinking.
This is the first language I know, that enforces OOP by design, none of
Java, Python, C++ or Scala does. It's ironic; OOP concepts and
techniques were among the first things I was taught back in University
but now the more I think about Smalltalk's syntax and design, the more I
get closer to the conclusion that I didn't use pure OOP many times
during my career. And, I believe, it was simply because the development
platforms never enforced it the way Smalltalk does: in a clever and
camouflaged way.

> But please do have a look at the Chronos library, it even has a
PersianCalender, among many others.

I knew about Chronos. �Someone here, kindly suggested it about 6 months
ago when I asked about such a thing. I'm not trying to re-write
something like Chronos rather I'm trying to get my hands dirty with
Pharo and also re-visit my OOP skills. �Thanks.

--
Bahman Movaqar �(http://BahmanM.com)

ERP Evaluation, Implementation & Deployment Consultant
PGP Key ID: 0x6AB5BD68 (keyserver2.pgp.com)