top | item 16754872

Pharo MOOC

240 points| brudgers | 8 years ago |mooc.pharo.org | reply

107 comments

order
[+] ljw1001|8 years ago|reply
I've used Pharo, and, way back, programmed professionally in Cincom (then ParkPlace), IBM VisualAge, and whatever the Windows version of Smalltalk was called was called (Visual Smalltalk?). Also tooled-around a bit in Squeak.

All three of the professional environments were very good. When Pharo kicked off, it was supposed to have been people building a free Smalltalk you could use to build real world software, as opposed to the research-oriented Squeak community. They didn't stick to that path, tho.

As another post described, Pharo is a mess, and it doesn't get more reliable from release to release. It's too bad. The idea that any Smalltalk environment today is state-of-the-art is just misguided. I would rather use Intellij IDEA any day.

Smalltalk is still a beautiful thing, tho.

[+] philippeback|8 years ago|reply
It is like fitness. One just hates it when it aches all over the place and then quits. Or keeps on moving through the pain/grind and grow a lot in all kinds of ways.

And saying that VA or VW give a better user experience when coding vs Pharo, I beg to differ.

[+] nstricevic|8 years ago|reply
> As another post described, Pharo is a mess, and it doesn't get more reliable from release to release.

Can you share this post, please?

[+] lukego|8 years ago|reply
I chose Pharo for a project recently (http://github.com/studio/studio/). I am enjoying using it in production. The Glamorous Toolkit framework (Inspector and Spotter) is saving me a huge amount of work.

I see Pharo as two universes: the stable (now Pharo 6) and the development (now Pharo 7.) I work on the stable one and I don't concern myself at all with what is happening on the development one. The yearly release cycle of development-to-stable feels about right to me.

I have had to spend some time working out how to fit Pharo into my wider project build system, and how to store Smalltalk source code on Github as part of a larger repository such that you can handle merges etc. This made me curse a lot. It worked out fine in the end though.

I have been working on this for one year now and I haven't had problems with Pharo bugs or instability.

[+] analognoise|8 years ago|reply
I couldn't even tell what the Glamorous Toolkit was or how to use it; what's the best resource for it? I remember checking out the website when it was released but couldn't make heads or tails of it.
[+] ekvintroj|8 years ago|reply
I see many comments talking about teaching objects with Pharo, we used to use it in the UNQ (a university in Argentina), now we use another Smalltalk flavour, because of the complexity of it. It's called CUIS, developed in Argentina too, the first days we use a framework that uses some similar to prototypes, so the students can start learning objects without the overhead of classes and inheritance. And then we switch to the classical class hierarchy way.

It's a nice tool! https://www.youtube.com/watch?v=e_e3_3MyTBY

[+] ben-coman|8 years ago|reply
Yes, Juan and community have done a good job with Cuis. Cuis is a fork of Squeak same as Pharo, and all three use the same OpenSmalltalk-VM. Both forks arose to deal with a large technical debt in different ways. Cuis has been paring back class sizes while Pharo has been focused on a full source-code only bootstrap from a null-Image (i.e. no carried over state in an Image, that is one of Smalltalk's typical criticisms), replacing old subsystems, as well as adding new features. I'd say Pharo is more ambitious and we are starting to see the payoffs for this.

btw, which was the CUIS prototype framework you used? There should be little reason it couldn't be made to run on Pharo.

[+] jayonsoftware|8 years ago|reply
Even if you are not going to develop any major apps in Smalltalk, its a language worth learning. Teaches you a lot about OO programming
[+] btilly|8 years ago|reply
I agree that it is a language worth understanding. However the OO model of Ruby is identical. Without the drawbacks of being an image based language. So I'd suggest learning that instead.

For those who don't know what I am talking about, there are several families of languages where the state of your program is kept within an image. The upside of this is that you can integrate everything together in a really neat way and build neat tooling with introspection. The downside is that you have just made what's going on not visible from the filesystem, and have to replace all of the tooling that you're used to. You know, things like your favorite editor, command line programs, source control...

If you switch languages regularly (which most developers do in my experience), being able to use your favorite toolset everywhere turns out to be more important than being able to build an ideal toolset for only one language.

[+] rjblackman|8 years ago|reply
I'd extend that by saying it teaches you what OO was meant to be.. It also shows you a lot of what is missing in modern environments. Imagine being able to run code and create any objects via a kind of command line and while any program is running be able to change it on the fly for experimentation/exploration purposes! I wish .net had something like this!
[+] daveFNbuck|8 years ago|reply
Isn't Pharo a different language from Smalltalk?
[+] hota_mazi|8 years ago|reply
Smalltalk teaches no OOP that cannot be learned by more modern languages, starting with Ruby (which is already pretty old itself). And at least, these other languages don't impose on you broken IDE's that crash all the time and corrupt your work.

I find little point in learning Smalltalk today, except maybe read a ten minute article to check out its odd syntax.

[+] CodeArtisan|8 years ago|reply
Pharo is great for doing Test driven development:

1. write a test

2. run the test

3. test fails; debugger pop up

4. implement/fix the method inside the debugger

5. repeat at 2 until the test succeed.

it's usual that a coding session is entirely done in the debugger which is like an interactive coding environment where absolutely everything is inspectable.

demo: https://www.youtube.com/watch?v=ymITEeAOtEA

[+] evv|8 years ago|reply
Random off-topic feedback: the video is not correctly configured in Firefox (on MacOS). The pervasiveness of Chrome scares me sometimes.
[+] cosarara|8 years ago|reply
It works here on firefox (linux).
[+] lambda|8 years ago|reply
Works for me on Firefox on macOS.
[+] keithnz|8 years ago|reply
works fine for me using firefox on windows
[+] philippeback|8 years ago|reply
I have been using Pharo since its 1.x releases and deployed commercial solutions using it.

Very stable. Quite powerful.

And it was/is a pleasure to work work with it.

One has to invest time and effort to master it. I would say that this is best suited to people who actually know what they are doing. Syntax is easy but frameworks are very advanced. So, do not go there without support.

I see comments that are not that kind to Pharo. I do to care to be honest. I do not think that Pharo is for the masses.

It has imperfections but nothing is at the core. And things are moving forward very well.

As a Pharo consortium member I vote with cash and usage.

[+] pronoiac|8 years ago|reply
"Pharo is a pure object-oriented programming language in the tradition of Smalltalk. It offers a unique developing experience in constant interaction with live objects. ... When programming in Pharo, you are immersed in a world of live objects. You have immediate feedback at any moment of your development on objects representing web applications, code itself, graphics, network."
[+] zerr|8 years ago|reply
Video lectures are in French.
[+] sdwa|8 years ago|reply
They are dubbed in English as well.
[+] billsix|8 years ago|reply
Smalltalk was the first language I loved. It was great to write, but I had difficulty understanding the structure of other's code. Even with that great integrated debugger, I couldn't figure out how Morphic actually worked.

These days for graphical programming, I prefer C with nuklear (https://github.com/vurtun/nuklear) over smalltalk.

[+] ben-coman|8 years ago|reply
Many people find that about the depths of Morphic. It has high technical which Pharo is addressing by creating a new system Bloc (its getting close, but not there yet). Then Morphic will be deprecated.
[+] smaili|8 years ago|reply
Is anyone else having trouble viewing this on their phone?
[+] protomyth|8 years ago|reply
Oh yeah, it goes really slow and scrolling is broken and really off center. I gave up.
[+] shock|8 years ago|reply
Works well for me on Firefox/Android besides the video making the page wider than the screen width. What trouble are you having? Which browser/OS?
[+] jchook|8 years ago|reply
Came to comments to see what this even is.
[+] cosarara97|8 years ago|reply
This is kind of an offtopic question, but regardless: Is there any application written in smalltalk in the debian repository? (or any other linux distro)
[+] JepZ|8 years ago|reply
> It is very easy to learn...

> This Mooc is demanding but rewarding...

So the language is easy to learn and yet the course to learn it is demanding? Interesting logic...

Nevertheless, probably a good exercise for anybody who wants to learn what real Object Orientation is about and who didn't learn Smalltalk yet.

[+] mapcars|8 years ago|reply
Some videos don't even have english subtitles, eg 2.1 Understanding Messages :(
[+] martin-t|8 years ago|reply
I had the "pleasure" of attending an OOP course at uni taught by Stéphane Ducasse. I didn't learn much OOP but i learned that pharo is an utter piece of garbage.

The IDE randomly crashes, corrupts images (all your work is in the persistent image) and randomly ignores clicks making it insanely frustrating to use. Git integration is "WIP" which means it sometimes silently deletes files or you just don't get it to work at all. Branches are not implemented, glhf resolving conflicts on a team project. Oh, and it saves your passwords in plain text.

Error messages will keep opening until you kill the "IDE" and undo will sometimes delete half your code with no way back (maybe that's why you're supposed to keep methods small?). It's a bit ironic that Mr. Ducasse calls himself an "expert on software quality".

Here's our final project, the weekly reports document our "learning" experience: https://gitlab.fit.cvut.cz/taibrmar/sokoban-using-bloc

Most students had similar feelings and the response to the course was overwhelmingly negative.

[+] bantunes|8 years ago|reply
On your log you wrote, about the bugs you found, "no, i am not gonna bother reporting it, i am a user, not a TestCase" - Maybe that's why Pharo is so buggy?
[+] philippeback|8 years ago|reply
From what I read on your project, it was quite daring to expose you to Bloc and Iceberg and the latest Pharo.

I wouldn't have.

Because these things are still in flux.

These things are interesting and are the way forward. But not ready for end users.

But this has exposed you to the realities of creating new things: it is not as clean as one would want nor are users that cool when facing them. In a unusual environment like Pharo, it gives a kind of blurring effect since a user has a hard time distinguishing between solid ground and treacherous new terrain.

I would advise you to look back at Bloc and Iceberg when Pharo 7 is released.

The occasionnal freeze of the environment is indeed a pain and a new user would cringe more than once. I actually have a REPL server running in my images to restart the UI when such stuff occurs. Not the realm of a newcomer for sure.

Pharo is great for my uses. It is not the best tool for everything, granted. But when dealing with complex domains, I haven't found anything close.

[+] ben-coman|8 years ago|reply
I'm double posting since I think its important to rebut with some background around this criticism. I can understand being bitter from bleeding edge subsystems being used for a class, but the content seems to have been decided by the faculty. From our mail list...

Stephane Ducasse wrote:

> I told them NOT to use github.

> I told them that Bloc was alpha. They got a large list of topics and could have picked another one.

> Now of course we should improve and they too.

This is not saying that everything in Pharo is perfect, but in future could you please frame your criticism to indicate your pain with Pharo was with alpha features.

[+] FractalLP|8 years ago|reply
Thanks for putting this out there. I found some weird things as well when using it, but just figured it was me. I was hoping your notes were from 2014, but it looks like you just went through all this.

Another problem with Pharo is the confusion with Bloc, Morphic, and Spec. With C# you have WinForms and that is pretty simple and Java has Swing. With Pharo, I can't seem to find a decent way to build a GUI. Is Spec supposed to replace Morphic?

[+] zerr|8 years ago|reply
What about other Smalltalks? Some are used in industry, so probably should be more reliable.
[+] crististm|8 years ago|reply
The entry log from 2017-12-27 is appalling: one true namespace to rule them all and wreak havoc!