Few newbie questoins about Pharo/Smalltalk capabilities

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

Few newbie questoins about Pharo/Smalltalk capabilities

gustav_m
Hello! I don't know if this is a good place to ask this kind of questions,
but I haven't found other places where Smalltalk/Pharo experts hang out.

I'm a designer and unfortunately I know nothing about programming and
computation. I'm trying to change this right now. I'm looking for suitable
technology to learn and so far Pharo/Smalltalk looks very promising. To be
honest, it looks way too good to be true. And that's why I'm here, asking
you guys to disillusion me.

I work in a small department of a large company (unfortunately I can't give
you too much details). Part of my job is to design tools that are used by
our team. Every time I come up with an idea, we need to get a programmer
from other department and we work together to bring my idea to life. So it
would be perfect if I could do the programming on my own.
We are lucky that we are not tied to any particular technology (at least in
our department, for now). Some of our tools were written in Java, some in
Python.

After watching this video [https://youtu.be/AnrlSqtpOkw?t=550] my
imagination just went crazy. It looks like the Smalltalk system would be
also a perfect tool to give presentations to my superiors.
So to me Smalltalk looks like a holy grail. But again, my perception of it
is probably wrong and I might be better of learning, for instance,
Dart+Flutter.

So here is a bunch of questions, I hope someone will find time to answer
(and I do apologize in advance, as I'm sure you may find this questions
infantile and annoying):
1. As a designer I'm an aesthete. Is it possible to change the look of the
windows and the environment to ones liking? Or redesign the whole system to
not use windows at all? How moldable the environment is?
2. How well is Smalltalk/Pharo suited to handle different graphic animation
effects? As a designer I like to use animations to cue users. What about
sound effects?

Also, as a hobby I'd like to try some (3.) generative art and (4.) agent
based modeling. Is Pharo suitable for this kind of things?
From what I saw and read it may be good choice for ABM, but some people cry
about Smalltalk being slow. So maybe I'd be wiser to learn Processing (for
3) and NetLogo (for 4) instead. This would be unfortunate as these are two
another technologies to learn.

5. And the last question- as I skimmed through "Blue Book" I found so called
"Pen" class. However, it looks like it's missing in Pharo. Was it removed?
And if so, why?

I find the language itself, and especialy its minimalism/simplicity, so
elegant, that I'm thinking of printing the famous "postcard example" and
hanging it on a wall. The whole system, however, is humongous! It looks like
learning (to be albe to do anything interesting and non-trivial) will take
ages.

So, what do you think? Should I invest my time here? Or is there a different
technology that I should consider?

Gustav



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html

Reply | Threaded
Open this post in threaded view
|

Re: Few newbie questoins about Pharo/Smalltalk capabilities

cedreek
Hi Gustav and welcome :)

Hello! I don't know if this is a good place to ask this kind of questions,
but I haven't found other places where Smalltalk/Pharo experts hang out.

Perfect place here. You can also use direct for more chatty interaction. 



I'm a designer and unfortunately

Cool, I personally think we miss designers :)

Me I’m a mechanical engineer at first but then assistant professor that is more into information systems now. 

There are lots of computer scientists here, mostly. One difficulty was not smalltalk but the whole universe of programming concepts I had to learn...


I know nothing about programming and
computation.

Not a problem. Thats might be better too to learn Pharo/Smalltalk in general as people having habits in other classical programming languages have their habits (file bases vs. image based).


I'm trying to change this right now. I'm looking for suitable
technology to learn and so far Pharo/Smalltalk looks very promising. To be
honest, it looks way too good to be true. And that's why I'm here, asking
you guys to disillusion me.

I won’t as I’m literally addicted ;-)

The rough edges are we are a small community, hence, even if supportive, you won’t have all libs working fine out of the box. 




I work in a small department of a large company (unfortunately I can't give
you too much details). Part of my job is to design tools that are used by
our team.

Proptotyping  ? Or doing real ones ?

What kind do tools ?


Every time I come up with an idea, we need to get a programmer
from other department and we work together to bring my idea to life. So it
would be perfect if I could do the programming on my own.

Yes at least you could prototype stuff. But this takes time too, so you’ll have to see if your management allow that.


We are lucky that we are not tied to any particular technology (at least in
our department, for now). Some of our tools were written in Java, some in
Python.

After watching this video [https://youtu.be/AnrlSqtpOkw?t=550] my
imagination just went crazy. It looks like the Smalltalk system would be
also a perfect tool to give presentations to my superiors.
So to me Smalltalk looks like a holy grail. But again, my perception of it
is probably wrong and I might be better of learning, for instance,
Dart+Flutter.

So here is a bunch of questions, I hope someone will find time to answer
(and I do apologize in advance, as I'm sure you may find this questions
infantile and annoying):
1. As a designer I'm an aesthete. Is it possible to change the look of the
windows and the environment to ones liking? Or redesign the whole system to
not use windows at all? How moldable the environment is?

Moldable hum funny. 
Look at glamorous toolkit which is based on Pharo (for now) and a new way of thinking the IDE + more than that. Moldability is a central concept for them.
https://gtoolkit.com (look at the video)


Also, we often use web interface. There is the great Seaside framework for building complex web apps. I personally prefer marshaling apps based on web services and alike. Zinc is a great internal framework.

If you want native windows for desktop app, there is a not yet finished but actively developed GTK bindings that allows you to have either windows inside Pharo (SPEC) or natively depending on your OS (with GTK).

2. How well is Smalltalk/Pharo suited to handle different graphic animation
effects? As a designer I like to use animations to cue users. What about
sound effects?

Sounds I don’t know but that certainly doable. For animation at least you should look at Roassal3.
https://github.com/ObjectProfile/Roassal3 (come and see on discord channel).


Also, as a hobby I'd like to try some (3.) generative art and (4.) agent
based modeling. Is Pharo suitable for this kind of things?

Cool :)


From what I saw and read it may be good choice for ABM, but some people cry
about Smalltalk being slow.

It was slow in the 80’s.  :)

So maybe I'd be wiser to learn Processing (for
3) and NetLogo (for 4) instead. This would be unfortunate as these are two
another technologies to learn.

I had to use NetLogo recently and whereas it’s a nice piece of software, I can tell you that I miss my pharo environment once it come to debug and fine tune… 

There is also an ABM in ST, called Cormas that is ported to Pharo (right now).


5. And the last question- as I skimmed through "Blue Book" I found so called
"Pen" class. However, it looks like it's missing in Pharo. Was it removed?
And if so, why?

The blue book is about ST80. Pharo is a descendant, not a lot in common, at least in the design- and the librairies. You won’t find it.



I find the language itself, and especialy its minimalism/simplicity, so
elegant, that I'm thinking of printing the famous "postcard example" and
hanging it on a wall. The whole system, however, is humongous! It looks like
learning (to be albe to do anything interesting and non-trivial) will take
ages.

Indeed it can. Step learning curve. Especially to be able to navigate, browse, etc… but once this step is achieved, this really becomes a joy.



So, what do you think? Should I invest my time here? Or is there a different
technology that I should consider?

You may be quicker productive in other environment, you’ll find probably more example to copy-paste adapt… but if you can grasp the smalltalk philosophy, you may be doomed and addicted for ever and learn a lot during the journey (a real investment for me) ;-).

Take some time to explore and do net get frustrated if not all is working out of the box.
Look at the book here :

I really like all but a particular mention to:


hth, and welcome again,

Cédrick





Reply | Threaded
Open this post in threaded view
|

Re: Few newbie questoins about Pharo/Smalltalk capabilities

cedreek
Forgot to mention the mooc where a version can be found there:

http://mooc.pharo.org

Might be a good place to start.

Cheers,
Cédrick
Reply | Threaded
Open this post in threaded view
|

Re: Few newbie questoins about Pharo/Smalltalk capabilities

Stéphane Ducasse
In reply to this post by gustav_m


On 2 Jun 2020, at 13:00, gustav_m <[hidden email]> wrote:

Hello! I don't know if this is a good place to ask this kind of questions,
but I haven't found other places where Smalltalk/Pharo experts hang out.

You can join the discord channel and talk with people. 


I'm a designer and unfortunately I know nothing about programming and
computation. I'm trying to change this right now. I'm looking for suitable
technology to learn and so far Pharo/Smalltalk looks very promising. To be
honest, it looks way too good to be true. And that's why I'm here, asking
you guys to disillusion me.

What is really interesting with Pharo is that you have less qwirk than in other languages to learn.
It is uniform so once you get it you get all the stack. Now this uniformity can be also difficult 
to grasp. But there are some aspects you can ignore when you start.  

What I really love is that you can touch everything (nearly) you can go super super deep
and change the compiler or the graphics. And this different parts are still following the same 
small model and use the same tiny syntax. 


I work in a small department of a large company (unfortunately I can't give
you too much details). Part of my job is to design tools that are used by
our team. Every time I come up with an idea, we need to get a programmer
from other department and we work together to bring my idea to life. So it
would be perfect if I could do the programming on my own.
We are lucky that we are not tied to any particular technology (at least in
our department, for now). Some of our tools were written in Java, some in
Python.

Sometimes what is frustrating for me is that the widgets are not good enough. 
But for example a group a thales is designing super specific UI for the army
and they do all the requirement engineering and design super ad-hoc User interfaces.
What they particularly love (I can put you in contact with them) is that they can fully 
change Pharo. You would not recognise it when you see their system.
They built a platform for building specific UI and now they are rebuilding it in Pharo. 
I’m about to send a new success story with a visual 
They cannot show the software that they build for the army but did “strange” UI for the submarine
or also tatical system. Here is a sample of the public image that they can send. 

You can also look at Feenk.com because all their stack is based on an alternate graphical layer
that they developed. It is gorgeous. 



After watching this video [https://youtu.be/AnrlSqtpOkw?t=550] my
imagination just went crazy. It looks like the Smalltalk system would be
also a perfect tool to give presentations to my superiors.
So to me Smalltalk looks like a holy grail. But again, my perception of it
is probably wrong and I might be better of learning, for instance,
Dart+Flutter.


Well the problem is really that you should go slowly and learn step by step. 
Because programming is a skill that should be practiced. 
Now what is important to consider is that Pharo is not a black box. 
Once you understand the principle you can morph the complete environment. 
And when you program it you do not program a mere file, you are editing a life environment (which 
can blow on your face if you kill it) but this is super powerful.

So here is a bunch of questions, I hope someone will find time to answer
(and I do apologize in advance, as I'm sure you may find this questions
infantile and annoying):
1. As a designer I'm an aesthete. Is it possible to change the look of the
windows and the environment to ones liking?

Yes 
The super basic is the change the color (I was fed up by the greish and 
in our team people hacking different coloring scheme) but you can also change
the rest.  People in the past did skins and the windows were really different. 

Or redesign the whole system to
not use windows at all?

Yes

How moldable the environment is?

I would say that the limits are your skills. 
For exampel once we wanted to see if we can introduce our own gesture recognition
and we ask a third year student (a good one) to do it. We will now be able to use what he did (you can find this on youtube

have a look at what tomohiro did for fun

look for pharo honeyginger youtube tomohiro



2. How well is Smalltalk/Pharo suited to handle different graphic animation
effects? As a designer I like to use animations to cue users. What about
sound effects?

Have a look the roassal 30 twitter account it is full of animation. 
Milton is posting them regularly and really nice person


Also, as a hobby I'd like to try some (3.) generative art

Look at roassal 30 :)


and (4.) agent
based modeling. Is Pharo suitable for this kind of things?

Yes


From what I saw and read it may be good choice for ABM, but some people cry
about Smalltalk being slow.

Slow compare to what?
Pharo is faster than may be modern language. 

So maybe I'd be wiser to learn Processing (for
3) and NetLogo (for 4) instead. This would be unfortunate as these are two
another technologies to learn.

You should try and be in contact with people and measure. 


5. And the last question- as I skimmed through "Blue Book" I found so called
"Pen" class. However, it looks like it's missing in Pharo. Was it removed?
And if so, why?

The blue book is nearly thirty year old and we removed it. because it was writing in plain 
memory and not of real use. 

To teach programming I wrote a turtle like system 

And I should finish to migrate the site…
but you can check the videos and the graphic art that an old art retired teacher did with it. 



I find the language itself, and especialy its minimalism/simplicity, so
elegant, that I'm thinking of printing the famous "postcard example" and
hanging it on a wall. The whole system, however, is humongous! It looks like
learning (to be albe to do anything interesting and non-trivial) will take
ages.

The point is that you do not have to learn everything.
You have to know the basic and learn how to find your way. 

There is a mooc 
we are about to release new videos for the version 80 but you can take the current version of the mooc on 
(I think that luc changed mooc.pharo.org to use the version 80 - you have dub version and version with subtitles)
https://www.fun-mooc.fr

What I can tell you is that we are not teaching Pharo and it takes in general 2 weeks to a third year students to get 
up to speed. 

You also have the book "Learning Oop “ and "Pharo by example” to start with. 
I’m porting the book to Pharo80

But what I can tell is that you do not have to understand everything. Luckily. 

So, what do you think? Should I invest my time here? Or is there a different
technology that I should consider?

My gut feeling is that playing with Pharo will fundamentally change your perception. 
I often say to people that visit us that even if after they will never program anymore in Pharo, 
they usually will not program the same after. 

So my suggestions
- check the mooc
- be connected on discord and ask questions
- we can also help with some share screen session if necessary (I do that from time to time with students). 
- and evaluate what you will learn
- pick small challenges 
- check roassal30

Pharo is a mid term play. 
in the sense that it requires some investisemnt


--------------------------------------------
Stéphane Ducasse
03 59 35 87 52
Assistant: Aurore Dalle 
FAX 03 59 57 78 50
TEL 03 59 35 86 16
S. Ducasse - Inria
40, avenue Halley, 
Parc Scientifique de la Haute Borne, Bât.A, Park Plaza
Villeneuve d'Ascq 59650
France

Reply | Threaded
Open this post in threaded view
|

Re: Few newbie questoins about Pharo/Smalltalk capabilities

Ben Coman
In reply to this post by gustav_m


On Tue, 2 Jun 2020 at 19:01, gustav_m <[hidden email]> wrote:
Hello! I don't know if this is a good place to ask this kind of questions,
but I haven't found other places where Smalltalk/Pharo experts hang out.

This is the place, and also Discord that others have linked to.
 
I'm a designer and unfortunately I know nothing about programming and
computation. I'm trying to change this right now. I'm looking for suitable
technology to learn and so far Pharo/Smalltalk looks very promising. To be
honest, it looks way too good to be true. And that's why I'm here, asking
you guys to disillusion me.

Your biggest disillusionment going to be less about Pharo versus any other language, 
and more about big ambitions exceed your (currently) small programming skills.
I would encourage you to a step back from wanting to rush into using Pharo (or any language)
for your work tools, and learn to program for its own sake.  This will have a big impact on your level of frustration. 

First...
 - Do the MOOC... http://mooc.pharo.org/
 - Read the Pharo By Example 5 and Learning Object Oriented Programming books... https://books.pharo.org/  
These will give you a baseline programming skill transferable to any other programming language yo find interestin.
And along the way, ask lots of questions on Discord.

Then try Roassal.

Pharo is a really great environment to learn to program in.  At a minimum, learning "just a bit of Pharo" 
will give you an edge communicating with the programmers. We sometimes see refugees from other languages
start using Pharo and exclaim "wow! programming is fun again!"

After watching this video [https://youtu.be/AnrlSqtpOkw?t=550] my
imagination just went crazy. It looks like the Smalltalk system would be
also a perfect tool to give presentations to my superiors.
So to me Smalltalk looks like a holy grail. But again, my perception of it
is probably wrong and


That video was a specific demo years ago that can't be done directly done in Pharo (or I expect any modern Smalltalk),
but Pharo is still as close as you'll compared to language alternatives.  
While it can't be done exactly graphically, similar connections between objects are made in code one level lower.
 
I might be better of learning, for instance Dart+Flutter.

I don't know Dart, but hazard to say that Pharo is a better environment to "learn to program", 
and a lot of those skills will be transferable to Dart later anyhow,
especially the software architectural skills you learn - which might be the hardest part of making a working system.   
 
1. As a designer I'm an aesthete. Is it possible to change the look of the
windows and the environment to ones liking? Or redesign the whole system to
not use windows at all? How moldable the environment is?

Mold-ability is where Pharo really excels compare to other languages.  
Most languages you have an Integrated Development Environment, 
that is separate from the application code you write, 
that is separate from the software you compile and distribute.

With Pharo, the development environment, your application code, 
and your running application are all siblings occurring within the same environment. 
 
 
2. How well is Smalltalk/Pharo suited to handle different graphic animation
effects? As a designer I like to use animations to cue users. What about
sound effects?

Also, as a hobby I'd like to try some (3.) generative art

Look at Roassal.
 
Some people cry about Smalltalk being slow. So maybe I'd be wiser to learn Processing (for
3) and NetLogo (for 4) instead. This would be unfortunate as these are two
another technologies to learn.

"Slow" is very relative and application specific.  The run-speed of an application needs to be balanced
against the speed-to-create the application.  If one language you could create a tool in a month,
and another language you could create a tool twice as fast but it takes six months - which language is better?

Original Smalltalk was "interpreted" only.  Pharo has a "Just In Time Compiler".
For most applications it will be fast enough.  Any application that is not true, 
probably only a small part of you program is the bottle neck, and you redo that small part in a faster language and call it from Pharo. 

 
I find the language itself, and especialy its minimalism/simplicity, so
elegant, that I'm thinking of printing the famous "postcard example" and
hanging it on a wall. The whole system, however, is humongous! It looks like
learning (to be able to do anything interesting and non-trivial) will take
ages.

Any language's library ecosystem can feel huge.  Pharo just happens to build in a lot of things into the Image.
For example the "code" for every GUI element you are looking at is included int he Image (so you can modify it)
which is missing from most other languages.  

It will take time, but so will getting proficiency in any other language. 
 
So, what do you think? Should I invest my time here? Or is there a different
technology that I should consider?

For trivial things, the only other thing I can think of that would suit your needs is Scratch (which was originally written in Smalltalk).
But you may find in confining once you want to get more advanced.  Overall it might be less effort sticking with Pharo.

cheers -ben  
Reply | Threaded
Open this post in threaded view
|

Re: Few newbie questoins about Pharo/Smalltalk capabilities

webwarrior
In reply to this post by gustav_m
Well, one thing that might disappoint you in Pharo is UI libraries.
You'd assume that system that has UI as integral part and relies on it would
have excellent UI framework, but sadly that's not the case.
Old framework - Morphic - is outdated; it's buggy, poorly documented, and
its code is convoluted and hard to reason about. I'd say it has been
abandoned (not supported) for the most part.
New framework (actually 2 frameworks on top of each other) - Bloc/Brick - is
not ready yet. Well, at least actual UI library (Brick).

 
gustav_m wrote
> Also, as a hobby I'd like to try some (3.) generative art and (4.) agent
> based modeling. Is Pharo suitable for this kind of things?
> From what I saw and read it may be good choice for ABM, but some people
> cry
> about Smalltalk being slow. So maybe I'd be wiser to learn Processing (for
> 3) and NetLogo (for 4) instead. This would be unfortunate as these are two
> another technologies to learn.

Pharo's performance is somewhere between classic interpreters (CPython, Lua,
...) and state-of-the-art JIT compilers (JavaScript V8, LuaJIT, ...).
Whether it's slow is a matter of perspective.

But 2 important thing should be noted:

1. If you are doing graphics stuff, a large share of CPU time is spent
drawing graphic primitives, which is done using native library (e.g. Cairo)
and has little to do with language runtime's performance.

2. To optimize performance, profiler is the most important tool. Pharo has
built-in profiler that you can use for any code at any time (even profile
all stuff that's happening right now). Processing IDE, on the other hand,
doesn't even have a profiler.



--
Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html