
Pharo MOOC - brudgers
https://mooc.pharo.org/
======
ljw1001
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
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.

~~~
martin-t
Except the pain in pharo doesn't come from the difficulty of learning new
things or self-improvement but from the buggy environment itself. Learning to
save your work every 5 minutes because it might crash any time doesn't make
you a better dev, it just lowers your standards.

~~~
philippeback
Come on, you are just throwing mud around for some reason I do not even want
to know about.

It is hard to lose code with Pharo. I have always recovered everything 99.999%
of the time.

You are happy with VW, fine with me. I cannot stand it.

~~~
martin-t
The reason is Stéphane Ducasse is using his students as unpaid testers[0]. I
can't see any other reason he'd make us use the latest technologies as you
mentioned.

I also don't like the approach "let's write some code that passes tests and
maybe works 80% of the time, and then release a few fixes every week for the
next few months". Some of my classmates had to wait for 2 weeks just to get a
working version of iceberg for the team project. And by working i mean it
managed to clone the project, we kept getting "message sent to nil" and
"object X does not understand message Y" errors for the rest of the semester
and not just from iceberg. Any of those would be trivially caught in a static
language.

Yes, there's a recovery feature. I found it slightly buggy too but it worked
most of the time (and yes, i used it a few times). Still doesn't help when the
whole image gets corrupted and pharo segfaults on startup.

[0]
[https://news.ycombinator.com/item?id=16757107](https://news.ycombinator.com/item?id=16757107)

~~~
ben-coman
Martin, IIUC you are a student that suffered a class using bleeding edge
features. I can understand why you are bitter, but you should not be so quick
to disparage Mr Ducasse. Your faculty was his client, and it seems that
circumstance was outside his control. 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.

~~~
martin-t
Fair point, i assumed using iceberg was his idea, my apologies if it wasn't.
Can't comment on the stability of bloc, other team-members did that part of
the project.

OTOH, please note that iceberg was only the tip of the iceberg (i am a huge
fan of the name), the IDE itself did crash many times and corrupted my image
once. The formatter moved comments into other blocks which changed their
meaning and combined with CTRL+Z it deleted code after cursor in some cases
reproducibly.

One extra funny though harmless bug was that shift+click didn't select a range
of items items in some listboxes. It selected just the new one but left the
old one highlighted. I clicked a few items and sometimes it selected the whole
range. When I released shift and clicked more items, it played back the clicks
i made earlier and selected those items instead. We joked that smalltalk did
not only invent OOP but also command queuing in strategy games. Yeah, it was
mean but we couldn't imagine what code had to be behind the listboxes to cause
this behavior.

So yeah, maybe someone else thought OOP students would make a good typechecker
for iceberg and designed the class accordingly but what i think and say about
pharo still stands.

------
lukego
I chose Pharo for a project recently
([http://github.com/studio/studio/](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
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.

~~~
philippeback
You haven't been looking much then. [http://gtoolkit.org](http://gtoolkit.org)

------
ekvintroj
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](https://www.youtube.com/watch?v=e_e3_3MyTBY)

~~~
ben-coman
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.

~~~
ekvintroj
The framework is called Denotative Objects.

[https://github.com/hernanwilkinson/Cuis-Smalltalk-
Denotative...](https://github.com/hernanwilkinson/Cuis-Smalltalk-
DenotativeObject)

------
jayonsoftware
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

~~~
daveFNbuck
Isn't Pharo a different language from Smalltalk?

~~~
monocasa
That's sort of like asking if Scheme is a different language than Lisp.

~~~
sea6ear
Or maybe like asking if Racket is a different language than Scheme.

~~~
Volt
So the answer is "yes".

------
CodeArtisan
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](https://www.youtube.com/watch?v=ymITEeAOtEA)

------
evv
Random off-topic feedback: the video is not correctly configured in Firefox
(on MacOS). The pervasiveness of Chrome scares me sometimes.

~~~
cosarara
It works here on firefox (linux).

------
philippeback
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
"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
Video lectures are in French.

~~~
sdwa
They are dubbed in English as well.

~~~
zerr
Looking at slides while reading subtitles is really hard.

------
billsix
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](https://github.com/vurtun/nuklear)) over
smalltalk.

~~~
ben-coman
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
Is anyone else having trouble viewing this on their phone?

~~~
protomyth
Oh yeah, it goes really slow and scrolling is broken and really off center. I
gave up.

------
cosarara97
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)

~~~
monocasa
The only people I've heard of using Smalltalk at all other than in dogfood
situations are people using Gemstone.

[https://en.m.wikipedia.org/wiki/Gemstone_(database)](https://en.m.wikipedia.org/wiki/Gemstone_\(database\))

~~~
gaius
JPMorgan have a fairly serious Smalltalk app
[http://www.cincom.com/pdf/CS040819-1.pdf](http://www.cincom.com/pdf/CS040819-1.pdf)

However, only one. Make of that what you will.

~~~
ben-coman
They only have on app because Smalltalk if agile enough they build everything
they need into it as the need arises - and this has been maintained over many
years.

------
JepZ
> 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.

~~~
CodeArtisan
The language itself is simple[1] but the environment and tools aren't.
Smalltalk is a world in itself which is both its strength and weakness.

[https://learnxinyminutes.com/docs/smalltalk/](https://learnxinyminutes.com/docs/smalltalk/)

~~~
JepZ
I am well aware of that as I had my own trouble learning Smalltalk. Yet in
hindsight I like the clean design of the language.

Nevertheless, I find the argument on their website kinda odd and a bit
confusing. I mean, I see a lot of Smalltalk advocates claiming the language is
so simple to learn and at the same time I see a lot of programmers having
trouble learning it.

Maybe it is just wrong to call it 'very easy to learn' just because the syntax
is simple.

~~~
FractalLP
The difficulty for me isn't the syntax, so much as not knowing how to use the
tools. Examples are extreme like other niche languages. You get either hello
world or writing a web server. I'd like to see someone build a YouTube channel
with a lot of very small applications that show adding methods,
classes,debugging, and deployment.

~~~
JepZ
I don't know about Pharo, but I have seen very few IDEs which make it as easy
as Smalltalk environments (e.g. VisualWorks) to do what you asked for as they
provide you with GUI a for all that stuff. Pharo is probably no different.

I think the first important step, is to understand the different columns of
the 'System Browser'. From a quick search that video playlist might help you:

[https://www.youtube.com/watch?v=0xF4fnGaE2w&list=PLqbtQ7OkSt...](https://www.youtube.com/watch?v=0xF4fnGaE2w&list=PLqbtQ7OkSta0ULYAd7Qdxof851ybh-
_m_)

------
mapcars
Some videos don't even have english subtitles, eg 2.1 Understanding Messages
:(

------
martin-t
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](https://gitlab.fit.cvut.cz/taibrmar/sokoban-using-bloc)

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

~~~
bantunes
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?

~~~
martin-t
If he wants to use our class as a typechecker, so be it, i am not gonna be
part of it. (I briefly considered reporting them, but the HTTP-only login on
their bug tracker turned me off)

