what is your pharo story?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

what is your pharo story?

Torsten Bergmann
Pick one ...


STORY 1:
========

What I like most is that I do not rely on IDE vendors or tools
to do measure things like:

        TestCase allSubclasses size

inspect things like:

        Account allInstances collect: [:each | each value > 10 ]

or script my environment:

        TestCase allSubclasses do: [:each | each removeFromSystem ]

Try all this in any of the other "static" environments.
And yes - one can shoot itself in the foot:

        true become: false

but I like the freedom.


STORY 2:
=======
In any program environment you have to use a debugger. In Smalltalk you
can just save the image and continue the next work day on exactly the
same point you left.

In other environments you usually close the IDE in the evening and
start to debug the program the next day again until you are at
this point, have the stack and variables in the same state.
Lots of wasted time and developer resources in static world...

STORY 3:
========
"Rethinking the typing" as you can see
http://astares.blogspot.de/2006/08/rethinking-typing.html

STORY 4:
========
When I tell people that Smalltalk is not a language - just
a dynamic object system with a language built on top of it.
A method, a class ... anything is an object.

So if you need additions you just implement them without
waiting for the next language spec or vendors.

Need traits, interfaces, namespaces, ... just add them.

Embed other languages: just add them (see Helvetica)
http://astares.blogspot.de/2009/11/helvetia-embedding-languages.html)

New control structures? Just implement them. An example:
Pascal hat a REPEAT UNTIL. C/C++/Java language family and
Smalltalk does not have such a construct.

The difference: in Smalltalk I can just add a new
method #repeatUntil: to BlockClosure if I really need it.

STORY X:
========
...







Reply | Threaded
Open this post in threaded view
|

Re: what is your pharo story?

sebastianconcept@gmail.co
hahaha XD

great stuff

dynamic vs. static isn't an issue anymore

dynamic won hands down already and years ago

the thing now is to expand people's vision of what can be done with it

and these are good points (to talk to engineers)

the audience has other people too so I need more stories from the trenches :)

sebastian

o/
 

----- Original Message -----
From: "Torsten Bergmann" <[hidden email]>
To: [hidden email]
Sent: Wednesday, October 17, 2012 11:19:26 AM
Subject: [Pharo-project] what is your pharo story?

Pick one ...


STORY 1:
========

What I like most is that I do not rely on IDE vendors or tools
to do measure things like:

        TestCase allSubclasses size

inspect things like:

        Account allInstances collect: [:each | each value > 10 ]

or script my environment:

        TestCase allSubclasses do: [:each | each removeFromSystem ]

Try all this in any of the other "static" environments.
And yes - one can shoot itself in the foot:

        true become: false

but I like the freedom.


STORY 2:
=======
In any program environment you have to use a debugger. In Smalltalk you
can just save the image and continue the next work day on exactly the
same point you left.

In other environments you usually close the IDE in the evening and
start to debug the program the next day again until you are at
this point, have the stack and variables in the same state.
Lots of wasted time and developer resources in static world...

STORY 3:
========
"Rethinking the typing" as you can see
http://astares.blogspot.de/2006/08/rethinking-typing.html

STORY 4:
========
When I tell people that Smalltalk is not a language - just
a dynamic object system with a language built on top of it.
A method, a class ... anything is an object.

So if you need additions you just implement them without
waiting for the next language spec or vendors.

Need traits, interfaces, namespaces, ... just add them.

Embed other languages: just add them (see Helvetica)
http://astares.blogspot.de/2009/11/helvetia-embedding-languages.html)

New control structures? Just implement them. An example:
Pascal hat a REPEAT UNTIL. C/C++/Java language family and
Smalltalk does not have such a construct.

The difference: in Smalltalk I can just add a new
method #repeatUntil: to BlockClosure if I really need it.

STORY X:
========
...








Reply | Threaded
Open this post in threaded view
|

Re: what is your pharo story?

Pavel Krivanek-3
Hi Sebastian,

this is the way I use to present Smalltalk:
- open Xerox Smalltalk-80 image (using Hobes)
- show this UI, how scrollbars work, how you have to specify window
regions, basics of window management etc. Tell them few words about
visit of Steve Jobs in Xerox and how it influenced the next
development of personal computers. Almost nobody had an opportunity to
see it in action so you will gain their attention.
- then mention the date in Transcript (31 May 1983). Tell them about
an image, VM, snapshoting, that you resume the program after almost 30
years on different computer architecture in the different millenium
:-)
- tell that Smalltalk-80 is a combination of OS, IDE and programming
language and that you will show some examples
- show 3+4 - print it
- Pen example - do it, open Browser and show them this method
- use explain command on "Pen" - open a class browser on it
- then show: MessageTally spyOn: [Pen example], profiling is quite
interesting property in such old environment
- evaluate 1/0, open debugger, change value of dividend to 2 and
continue with the evaluation
- evaluate 1/0 again, open debugger and then change the method to
return 0 instead of rising the error, continue. Then do several next
divisions by zero to show that you changed behavior of the whole
system.
- evaluate Display inspect and show inspector, inspecting of instance
variables and their modification.
- evaluate String allInstances size
- evaluate (String allInstances asSortedCollection: [:a :b | a size <=
b size]) last inspect (it doesn't have detect: message)
- show an example of become: message, that you changed all references
to the object.
- show the browser capabilities - senders, implementors,
implementations of used messages.
- tell them that all you did you did on system without attached source
codes, that the code you have seen and changed were all decompiled
- finally ask yourself: when Smalltalk-80 was able to do all this
things in the year 1983, what it can do now? ;-)

Cheers,
-- Pavel



On Wed, Oct 17, 2012 at 4:58 PM,  <[hidden email]> wrote:

> hahaha XD
>
> great stuff
>
> dynamic vs. static isn't an issue anymore
>
> dynamic won hands down already and years ago
>
> the thing now is to expand people's vision of what can be done with it
>
> and these are good points (to talk to engineers)
>
> the audience has other people too so I need more stories from the trenches :)
>
> sebastian
>
> o/
>
>
> ----- Original Message -----
> From: "Torsten Bergmann" <[hidden email]>
> To: [hidden email]
> Sent: Wednesday, October 17, 2012 11:19:26 AM
> Subject: [Pharo-project] what is your pharo story?
>
> Pick one ...
>
>
> STORY 1:
> ========
>
> What I like most is that I do not rely on IDE vendors or tools
> to do measure things like:
>
>         TestCase allSubclasses size
>
> inspect things like:
>
>         Account allInstances collect: [:each | each value > 10 ]
>
> or script my environment:
>
>         TestCase allSubclasses do: [:each | each removeFromSystem ]
>
> Try all this in any of the other "static" environments.
> And yes - one can shoot itself in the foot:
>
>         true become: false
>
> but I like the freedom.
>
>
> STORY 2:
> =======
> In any program environment you have to use a debugger. In Smalltalk you
> can just save the image and continue the next work day on exactly the
> same point you left.
>
> In other environments you usually close the IDE in the evening and
> start to debug the program the next day again until you are at
> this point, have the stack and variables in the same state.
> Lots of wasted time and developer resources in static world...
>
> STORY 3:
> ========
> "Rethinking the typing" as you can see
> http://astares.blogspot.de/2006/08/rethinking-typing.html
>
> STORY 4:
> ========
> When I tell people that Smalltalk is not a language - just
> a dynamic object system with a language built on top of it.
> A method, a class ... anything is an object.
>
> So if you need additions you just implement them without
> waiting for the next language spec or vendors.
>
> Need traits, interfaces, namespaces, ... just add them.
>
> Embed other languages: just add them (see Helvetica)
> http://astares.blogspot.de/2009/11/helvetia-embedding-languages.html)
>
> New control structures? Just implement them. An example:
> Pascal hat a REPEAT UNTIL. C/C++/Java language family and
> Smalltalk does not have such a construct.
>
> The difference: in Smalltalk I can just add a new
> method #repeatUntil: to BlockClosure if I really need it.
>
> STORY X:
> ========
> ...
>
>
>
>
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: what is your pharo story?

Sven Van Caekenberghe-2
Great description, Pavel !

On 17 Oct 2012, at 18:36, Pavel Krivanek <[hidden email]> wrote:

> - open Xerox Smalltalk-80 image (using Hobes)

I would want to try that myself ;-)

Where can I get this, please ?

--
Sven Van Caekenberghe
http://stfx.eu
Smalltalk is the Red Pill




Reply | Threaded
Open this post in threaded view
|

Re: what is your pharo story?

Esteban A. Maringolo
In reply to this post by Pavel Krivanek-3
I think that the examples related with stuff invented 30 years ago will depend on the audience.
Most programmers, young ones in particular, have a deep lack of knowledge about the history of technology , they barely know about the tools they use everyday, and they don't have interest in learning about them either. So saying to them that Smalltalk invented BitBlt, is like talking them about punched cards. At least that is my experience.

About the points, one thing that I found really useful is doing actual TDD or programming in the debugger, sometimes I get impressed myself when while having an open debugger I add an instance variable in another Browser (or even in the debugger), and have such modification already available to all the instances I have in the context of debugging (and the image, of course).

Showing how productive you can be is something that also gets the interest of newcomers, unfortunately being productive is not building greater things with the same or less effort, but building the same with less efforts, hence the proliferation of one-liners and viral code snippets to attract naive programmers or people looking for something different, and are lazy to embrace something with a steep learning curve.

Another good point  is that when you develop using Smalltalk you  (or at least I do) feel like you're inside your system, you program "from the inside", it is an immersive experience.
With other tools, even with really advanced IDE's you never get that immersion, you feel like moving levers, and manipulating a machine, and advanced and most of the times decent machine, but the experience is less "humane" (using Tudor's use of the word) and not immersive.

My points are not based Pharo stories, but are backed by 10 years of Smalltalk use, starting with Squeak, and passing through VW, VisualSmalltalk, VAST and Dolphin.

I use Pharo, and enjoy it, though I'm not Kent Beck.

Best regards,

--
Esteban M.


Reply | Threaded
Open this post in threaded view
|

Re: what is your pharo story?

Stéphane Ducasse
+ 1

> I think that the examples related with stuff invented 30 years ago will
> depend on the audience.
> Most programmers, young ones in particular, have a deep lack of knowledge
> about the history of technology , they barely know about the tools they use
> everyday, and they don't have interest in learning about them either. So
> saying to them that Smalltalk invented BitBlt, is like talking them about
> punched cards. At least that is my experience.


Reply | Threaded
Open this post in threaded view
|

Re: what is your pharo story?

jdelgado
I agree, but OTH my experience is somewhat different.

When you teach thisContext and some well chosen examples of what you can do with it,
students usually are amazed. Then you challenge them to do the same in other languages,
and they have no clue of where to start (you know, Java and C++, maybe some Python).

The really great coup de grace is when you tell them that that was invented 40 years
ago. And that the Binding example they thought was so cool is from a 1981 magazine
article (Peter Deutsch's "Building Control Structures..." from Byte aug.'81).

Smalltalk has its merits, and it deserves a place among XXIst century advanced languages.
But it also has a history. And a beautiful one, if you ask...

Bests,

Jordi



> + 1
>
> > I think that the examples related with stuff invented 30 years ago will
> > depend on the audience.
> > Most programmers, young ones in particular, have a deep lack of knowledge
> > about the history of technology , they barely know about the tools they use
> > everyday, and they don't have interest in learning about them either. So
> > saying to them that Smalltalk invented BitBlt, is like talking them about
> > punched cards. At least that is my experience.
>

Reply | Threaded
Open this post in threaded view
|

Re: what is your pharo story?

kilon
personally I found it very depressing when I saw the age of smalltalk. At first it looked me so innovative that I thought it was way more recent than my language of choice at the time python. I even thought that it copied a lot of python. It was a shock to find out its true age.

Now I got this feeling that software technology is moving backward . I want my illusion back please :D 



From: Jordi Delgado <[hidden email]>
To: [hidden email]
Sent: Thursday, 18 October 2012, 21:56
Subject: Re: [Pharo-project] what is your pharo story?

I agree, but OTH my experience is somewhat different.

When you teach thisContext and some well chosen examples of what you can do with it,
students usually are amazed. Then you challenge them to do the same in other languages,
and they have no clue of where to start (you know, Java and C++, maybe some Python).

The really great coup de grace is when you tell them that that was invented 40 years
ago. And that the Binding example they thought was so cool is from a 1981 magazine
article (Peter Deutsch's "Building Control Structures..." from Byte aug.'81).

Smalltalk has its merits, and it deserves a place among XXIst century advanced languages.
But it also has a history. And a beautiful one, if you ask...

Bests,

Jordi



> + 1
>
> > I think that the examples related with stuff invented 30 years ago will
> > depend on the audience.
> > Most programmers, young ones in particular, have a deep lack of knowledge
> > about the history of technology , they barely know about the tools they use
> > everyday, and they don't have interest in learning about them either. So
> > saying to them that Smalltalk invented BitBlt, is like talking them about
> > punched cards. At least that is my experience.
>