> 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.al...@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 <bah...@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) > > > > > >