
Pharo 4.0 Released - estebanlor
http://pharo.org/news/pharo-4.0-released
======
StevePerkins
Not having heard of Pharo before 10 minutes ago, I wish this website did a
better job of explaining what it is.

 _"... an object-oriented programming language and a powerful environment...
(think IDE and OS rolled into one)"_

An IDE and OS rolled into one? What does that even mean? I had to go to
Wikipedia to learn that this is basically a modern Smalltalk implementation.
So why not just say that on the main page?

I once took a glance at IBM's Smalltalk about 20 years ago (in fact, these IDE
screenshots remind me of the "VisualAge" IDE that eventually morphed from
Smalltalk to Java and was then re-invented as Eclipse). However, I don't know
enough about Smalltalk itself for this website to be informative. Does it
compile to executables, or does it require an interpreter or VM at runtime?
Can applications be built from command-line (or a build script on a CI
server), or is it tightly coupled with the IDE? The Wikipedia article mentions
some web frameworks, but the Pharo website shows screenshots of what appear to
be desktop GUI applications (or maybe data visualizations running inside the
IDE, a la R with RStudio?).

Maybe someone with some hands-on experience could provide a TL;DR, for those
who aren't willing to read the full book just to get a high-level sense of
this?

~~~
kilon
Because if you don't understand "an IDE , OS rolled into one" then you don't
understand what Smalltalk is anyway. Its not easy to explain what Pharo is ,
the same way its not easy to explain what Emacs is , etc. There are may ideas
and workflow integrated into it and its development workflow is radically
different to normal programming languages. "Does it compile to executables"

No it does not , but there is no need. Pharo can be distributed with your
application and it does need to installed its a standalone.

"or does it require an interpreter or VM at runtime?"

its interpreted to byte code and it has a JIT VM. It is always runtime ;)
Meaning everything is live and running even your source code. Compilation
happens under the hood without the user being aware of it.

"Can applications be built from command-line (or a build script on a CI
server), or is it tightly coupled with the IDE?"

There is a command line interface , also any method can be exported to command
line and Pharo can run without a GUI.

"The Wikipedia article mentions some web frameworks, but the Pharo website
shows screenshots of what appear to be desktop GUI applications (or maybe data
visualizations running inside the IDE, a la R with RStudio?)."

There is a web framework which quite popular and actively developed Seaside
that allow you to use javascript , html and the usual suspect. Plenty of
others frameworks exists as well but not so actively developed. Most success
stories in the web site use those frameworks.

"Maybe someone with some hands-on experience could provide a TL;DR, for those
who aren't willing to read the full book just to get a high-level sense of
this?"

you can also drop in IRC for general directions, and ask questions to the
mailing list, the community is very welcomed for newcomers. But give pharo a
try and ask questions and you wont regret it Pharo is a great way and fun way
to create software.

I have made also video tutorial for newcomers

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

I have also made this simple guide to explain what Pharo really is

[http://thekilon.wix.com/pharo-about](http://thekilon.wix.com/pharo-about)

~~~
cgh
How does source control work for Pharo? I know it was an issue with Smalltalk
as your "source" was a modified binary image. Is this the same?

~~~
kilon
You can use Pharo with git and github outside the box if you are using MacOS
or Linux, there are some issues I think with Windows. Pharo uses Filetree
which export source to files and makes commits , pulls , pushs etc.
Gitfiletree allows filetree to be managed by git from inside Pharo without the
use of a terminal but you can still use the terminal if that is your thing. I
explain filetree, git and github in this video

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

------
klibertp
The changelog is here: [https://github.com/pharo-project/pharo-
changelogs/blob/maste...](https://github.com/pharo-project/pharo-
changelogs/blob/master/Pharo40ChangeLogs.md)

Things that I find especially interesting, from new stuff:

> TxModel, a modern text model who works with Athens (Preview)

This is very, very nice. New text model was in the works for quite some time
now and I'm glad it finally landed. Easy and powerful text editing is
important, even in primarily GUI-driven environments. Pharo was a bit behind
the times in this regard, which resulted in, for example, Shampoo
([http://dmitrymatveev.co.uk/shampoo/](http://dmitrymatveev.co.uk/shampoo/)).

> OSWindow, a new way to handle windows and input events (Preview)

This allows for creating OS level windows from inside Pharo. IIRC it's
supported only on Windows right now, but it's a very nice feature and will
make creating apps that "look natively" easier.

> Slots model instance variables as first class enities and enable meta-
> programming on this level.

This looks rather important and I remember reading about it some time ago.
There's a paper about it:
[http://scg.unibe.ch/archive/papers/Verw11bFlexibleObjectLayo...](http://scg.unibe.ch/archive/papers/Verw11bFlexibleObjectLayouts.pdf)
\- I'll need to read it again now that it's implemented.

Then there are updated things, all very nice too. Congratulations to the team
and contributors!

~~~
estebanlor
OSWindow is working nice for the three major platforms, using a SDL2 backend.

------
amarsahinovic
Updated Pharo by Example book
[https://github.com/SquareBracketAssociates/UpdatedPharoByExa...](https://github.com/SquareBracketAssociates/UpdatedPharoByExample)

~~~
kilon
here is the pdf

[https://ci.inria.fr/pharo-
contribution/view/Books/job/Update...](https://ci.inria.fr/pharo-
contribution/view/Books/job/UpdatedPharoByExample/lastSuccessfulBuild/artifact/book-
result/UpdatedPharoByExample.pdf)

------
agentultra
Awesome work!

I gave Pharo a test drive a few months ago and was pleasantly surprised when I
had a little window with a table listing out all of the links and titles on
the front page of HN in an afternoon.

I really enjoyed the experience of "filling in the blanks," style programming
that it introduced to me. I just started by instantiating an object and
calling the entry point method... and landed in the debugger. But I was able
to fill in the missing methods and data-structures until it finally came out
of the debugger and I had a working application.

Can't wait to check out the release notes. I highly recommend spending an
afternoon with it just to see what can be done.

------
estebanlor
Pharo is a pure object-oriented programming language and a powerful
environment, focused on simplicity and immediate feedback.

------
lispm
It still has a strange non-native user interface. Why would I want another
window system in a window in 2015?

~~~
schemezealot
So does iTunes on windows and Qt (since v. 4) on everything.

But I agree the single-window MDI is a major drawback. I keep checking out
Pharo periodically and hoping a UI with multiple, native windows will be
present or at least in the works, but sadly that is not yet the case.

There was actually a project many years ago for Squeak to give it native OS
windows called Cheese, and the Squeak people, if you can believe this,
actually told the author (Boris Shingarov) not to bother, and that if he
wanted native windows, he should go use some other Smalltalk instead. They
actually preferred their ugly, unprofessional, cartoonish UI that nearly
everyone new to Squeak complained about.

I think Pharo is on the right track, but it's sad the developers have to spend
so much time paying off the technical debt the Squeak project ran up.

~~~
kilon
We should not forget Pharo IS a fork of Squeak, it goes to a very different
direction but is based on the same code. GUI wise Pharo inherited its GUI API,
Morphic from Squeak. My personal opinions is that native look interfaces are
dead. Nowdays most apps use custom look especially web applications.

Native looks apps look boring. Users don't like boring applications. At least
I dont :)

The GUI in Pharo is not ideal but we should not also forget that this is a
small community that is able to come up with tons of new cool useful features
in each release because of how R.A.D Pharo is.

~~~
reymus
I disagree, native looking applications, while "boring", at least feel
natural. Every time I use an application with custom controls (which almost
always look pillowy) I feel like it wasn't made by a professional, it tends to
respond different and it just doesn't feel right. I have read again and again
criticism against Java and how it "failed" in the desktop because every time
you used a Java application, it looked like a Java application.

~~~
kilon
I am not going to debate your personal taste, its your right to want "native
looking" interfaces.

There has been a project to bring native interfaces to pharo called Mars

[https://marsonpharo.wordpress.com/](https://marsonpharo.wordpress.com/)

but after the student left none took the project further. So yes its possible
but for now there zero interest for it in pharo community.

~~~
estebanlor
I myself also would prefer native windows, and I time to time continue working
on Mars... but is a side project nobody has actually expressed interest, so I
usually spend my time in other, more required, stuff. But... Mars was loading
in Pharo 4.0, and even if _very_ incomplete, is usable for them who want to
give it a try and finish it (also people showing interest could help me to get
motivation :) )

------
philippeback
Yeah!

Pharo, the 1500HP engine for livecoding.

~~~
seanmcdirmid
Is anyone using a smalltalk for live coding? It seems like the toplap
community [1] who claim to be the home of live coding, are mostly into LISPs.

[1] [http://toplap.org](http://toplap.org)

~~~
fstephany
Basically all Smalltalker do live coding. It's not live coding in the sense of
building a scene or composing music tough.

The parent probably means live coding his app. If you do Ruby, think about
creating your whole program in IRB. You can dump the memory anytime and reload
the dump to continue from where you left.

Coding in IRB means that you have access to all the introspection and dynamic
analysis while you're coding.

~~~
seanmcdirmid
The meaning of live coding is quite specific, I mean, there is toplap and even
a whole conference on it coming up.

Gilad Bracha likes to push live programming in smalltalk via his newspeak
work. No time travel though, which I don't think is supported by any smalltalk
environment yet (you can change code via fix and continue, or objects via
direct manipulation, but code changes do not update objects retroactively). So
the Bret Victor style of live programming probably isn't supportable (without
changes to be model/runtime).

~~~
igouy
>>but code changes do not update objects retroactively<<

Can you explain what you mean by that?

 _iirc_ You can step back through the execution stack in the debugger, change
code or variable values; and when you resume the new code is used and the new
values are used.

------
svc
Great ! Congratulation to the whole Pharo community.

------
jsgrahamus
I installed this for Ubuntu 12.04. When I fired it up, it requested I choose
and build a source file (different from Pharo 3). Then when it started, it
said, "Pharo cannot locate the source file named /usr/lib/pharo-
vm/PharoV40.sources.

Any ideas what to do?

TIA, Steve

~~~
dcassou
Sorry about that. The Ubuntu PPA is not yet up-to-date. Please download
[http://files.pharo.org/sources/PharoV40.sources.zip](http://files.pharo.org/sources/PharoV40.sources.zip)
and extract it in /usr/lib/pharo-vm/PharoV40.sources. You may have to throw
your image away and start a new one.

------
plinkplonk
Did the compiler overhaul happen in this version?

~~~
estebanlor
it happened previous version (3.0), this version we started to actually use it
:)

~~~
plinkplonk
Very nice! I missed that. Thanks!

------
zura
Anyone using this professionally?

~~~
logicchains
[http://pharo.org/success](http://pharo.org/success)

