"Smalltalk is not a language, it is an object computer"

Wow, that nails it quite nicely.

And it feels a lot like that, especially with tools like GT-Playground.

Now, the most complicated bit is for me to get the user to discuss with the
object computer through the UI in a satisfying way. Getting the right UI
for delivering the value is taking a very long time.

Phil

On Thu, Sep 11, 2014 at 5:42 PM, Trygve Reenskaug <tryg...@ifi.uio.no>
wrote:

>  Hi kilon alios,
> I want to go deeper than any programming language. "What is a computer?"
> Almost all programming languages build  on the von Neumann architecture
> with data processing as " The execution of a systematic sequence of
> operations
> performed upon data." I believe this is unnecessarily low-level and
> complex  for general use. Much closer to the human mind is to build on an
> object computer  where the unit of storage is the object rather than the
> bit or byte. Data processing becomes "the systematic exchange of messages
> between objects." Lots of stuff that's of no interest to the general user
> is then hidden under the hood.
>
> The users of immediate importance may be power users. Computational
> chemists are my favorite examples. What shall be their mental model, what
> do we teach them and how do we form our programs such that they can
> understand and modify what goes on on the computer?
>
> I foresee that (virtual) object computers will supersede our current
> computers for general programming. They will be supported by experts doing
> systems programming on various levels from virtual machines down to
> microcode and hardware. When this is achieved; Java, Ruby, C++, C, Haxe,
> etc. will no longer be used for general application programming. (Smalltalk
> is, of course, not a language but an object computer.)
>
> The "pythonic" culture should permeate more than Phyton, it should  be
> behind all we do. Thanks for sharing it.
> C. A. R. Hoare says it succintly:
>    " There are two ways of constructing a software design:
> -        One way is to make it so simple that there are  obviously no
> deficiencies
> -        The other way is to make it so complicated that there are no
> obvious deficiencies."
> and
>     "The first method is far more difficult…."
> also:
>     "The price of reliability is the pursuit of the utmost simplicity"
>
> I think we are in agreement about the need for readable code. But I
> disagree when you say "We need very complex solutions to very complex
> problems". I believe we can attain simple solutions to very complex
> problems.  If the complexity is in the user's mental model then a direct
> mapping of this model into code will be simple as seen from the user's
> point of view. If the program is more complex than the user's mental model,
> the program should be simplified.
>
> It would be helpful if you would suggest an example where Phyton leads to
> more readable code than say Pharo.
>
>
> On 07.09.2014 12:29, kilon alios wrote:
>
> Python has no competition. Sure there are languages that are more popular
> than Python for their own reasons. There have been simpler languages before
> python, there have been more popular languages, more cross platform
> languages etc etc but Python fills a gap that no language was able to fill
> before it , easy to use very powerful well documented libraries. Python is
> a language that you can teach to a kid now and make a living later on using
> until his or her old age. Its not because the language is simple , its
> simple enough but not the simplest. Its because the culture surrounding the
> creation of libraries . That culture has a name its called "pythonic"
>
>   Beautiful is better than ugly.
>     Explicit is better than implicit.
>     Simple is better than complex.
>     Complex is better than complicated.
>     Flat is better than nested.
>     Sparse is better than dense.
>     Readability counts.
>     Special cases aren't special enough to break the rules.
>     Although practicality beats purity.
>     Errors should never pass silently.
>     Unless explicitly silenced.
>     In the face of ambiguity, refuse the temptation to guess.
>     There should be one-- and preferably only one --obvious way to do it.
>     Although that way may not be obvious at first unless you're Dutch.
>     Now is better than never.
>     Although never is often better than *right* now.
>     If the implementation is hard to explain, it's a bad idea.
>     If the implementation is easy to explain, it may be a good idea.
>     Namespaces are one honking great idea -- let's do more of those!
>
> this kind of ideology is why Python has been so successful. It has also 
> inspired jokes like this
>
> http://xkcd.com/353/
>
> it may look funny and it says thinks about overestimating the simplicity of 
> those libraries but python does feel at times as simple as this, as simple as 
> importing antigravity.
>
> So if a kid comes to me and ask me "what language should I learn" , I will 
> recommend a language that is fairly easy to learn , has powerful library , 
> easy to use libraries , well documented and its a language that will able to 
> keep using even if his or her needs change, forever. For that only Python is 
> the language that has been able to succeed and I think its adoption will 
> continue to progress in educational institutions pretty much everywhere on 
> the planet.
>
> Referring to the rest of your post I dont agree that we need to separate Data 
> from Code, I think quite opossite that a kid needs to be taught why Code and 
> Data are one and what that means in practice. I also don't agree that OO or 
> functional programming or any other programming paradigm I am aware of are 
> the future. They are simple solutions for simpler times. The coding community 
> at large the way I see it is in denial hoping to apply simple recipes to 
> solve complex problems. We need very complex solutions to very complex 
> problems , we need tools that can interact with the user in many diffirent 
> ways.
>
> Pharo is definitely showing the future, the close integration of IDE , 
> language and environment. But thats is just the start, the next step is 
> powerful tools that can deeply interact with code and solve automagically 
> logical coding problems. Obviously all that has to be wrapped to an easy 
> enough interface for the user even if the solutions is very complex.
>
> Fortunately this where the rest of the coding world is heading. For example 
> iPython is one of the most popular python projects right and it offers a 
> highly interactive environment for python coders that shares a lot of 
> similarities with Pharo though the implementation is very different.
>
> So the future is no longer languages , is no longer IDEs , its not even 
> environments but tools that are produced in these environments that can 
> vastly automate coding and hide the increasing complexity of coding 
> solutions. Maybe one day a child will be able to describe to a computer what 
> kind of software he or she needs and the computer automatically generate the 
> code for it. That day is not close enough but is where we are heading.
>
>
>
> On Sun, Sep 7, 2014 at 12:34 PM, Trygve Reenskaug <tryg...@ifi.uio.no>
> wrote:
>
>>  I have for some time been pondering two problems.  One is to identify
>> the fourth R in *R*eading, w*R*iting, a*R*ithmetic, and p*R*ogramming.
>> There are many contenders for the kids' first step. I believe the English
>> government has chosen Phyton as a first language. Scratch has a certain
>> popularity, there are many others. My concern is "what comes next"? I want
>> the kid to gradually build a mental model of what computing is all about.
>> Learn a little, do a little, lean more, do more, etc. up do old age. This
>> goes much deeper than any programming language. It's a bit as learning to
>> read. Personally, I "broke the reading code"at an early age. Since then, I
>> have been learning more and more. What I read today would have been
>> incomprehensible to me 75  years ago.  But my basic mental model of what
>> reading is all about has remained unchanged. I have never had to unlearn
>> anything.
>>
>> I suggest that true object orientation (not class orientation) can form
>> the foundation for the human mental model of computing. Internalize it and
>> live with it forever.
>> -------------------------------------
>> The other problem is to find a better example for DCI presentations. It
>> should
>>
>>    1.     Be executable and have a cool demo effect.
>>    2.     Its domain model should be obvious from the demo.
>>    3.     It should have very few and  very simple Data classes.
>>    4.     It should have a Context that is clearly and obviously
>>    separate from the Data.
>>    5.     It should scale to any number of Contexts (use cases) without
>>    changing the Data classes.
>>
>> -----------------------------------------
>> *Last night I got an idea for an example: A waltzing couple. (See the
>> attached for a picture and Wikipedia for a movie of the use case).*
>>
>> The program needs one simple class for a moveable shape and a DCI Context
>> for each dance (waltz, foxtrot, tango, ... for two role, polonaise for
>> more.)  The example will clearly demonstrate the wisdom in separating what
>> the system IS from what the system DOES since the simple Shape class would
>> be overloaded with instance methods for all dances.
>>
>> What do you think?
>>
>>  --Trygve
>>
>
>

Reply via email to