The trouble is that what you are dealing with is a graphical interactive programming environment. Sure, you can run it from the command line like /bin/perl, but to understand what you are dealing with you have to open it up and try it on its own terms.
If you aren't interested in a novel immersive programming environment then you can safely ignore Pharo too.
I was curious and so downloaded and ran the default image, and I'm beyond captivated by it, but I have to agree that neither the link nor the homepage do a good job of enticing me to do so, or even hinting and what can I expect.
If I didn't feel like setting up and checking out random projects I stumble upon, I would have never even seen what Pharo is about, given the abundance of marginally different programming languages that pop up on HN.
So yeah, I also think Pharo's best "Hello, World" is just opening it and trying out stuff, but maybe it should try to sell itself, at least a little, for the uninitiated?
Maybe lots of little gifs?
I was just looking for a basic examples to get some sense what Pharo is about and what the look and feel are. Without downloading and installing it, I wasn't aware that there is a pretty nice interactive tutorial built in.
Maybe convey better how Pharo is distinct from other languages/environments and how to get going?
Pharo is indeed very easy to get started, but the website makes it appear harder than it actually is.
The books are all free in PDF form and the lead developer also has another website somewhere where he hosts old Smalltalk textbooks which are largely still relevant.
They certainly could work on conveying this better, but it is open source and likely not a high priority.
For me it was just the initial perception I got. E.g. I only realized that the books were free after you told me. And yes, this is due to me evidently being too lazy doing an additional click. I don't mind paying for books, but not as a first step.
I did download and tried Pharo because I was intrigued by it from another person, if I just were to land on the website from some random link, I likely wouldn't have.
I think there could be some small changes in wording and presentation that would get a long way for people without any prior knowledge of the language. For example if you compare it to Rust (just content, not design wise)
Pharo might be the first project I've seen whose actual usability an user-friendliness is behind that of their presentation :)
Guessing this is a hard problem. People have been working on marketing Smalltalk for almost 50 years now. If there were an easy solution I reckon they'd have found it by now :)
Then try these one-liners in the Playground... https://medium.com/concerning-pharo/elegant-pharo-code-bb590....
Then (and I know its a video) but maybe serverless PharoLambda would interest you... https://www.youtube.com/watch?v=YUbd0-FX6pI
The question is not about a Pharo commandline that exists as part of the Pharo GUI.
The question is about an OS commandline like "GNOME Terminal" with stdio.
— How to run a Smalltalk source code file as a script
— How to use stdio, How to use file handles
— How to load Smalltalk source code from files, save, deploy , and invoke on remote machines
Until `virtualized` has seen that basic stuff can be done, why should they care?
A Smalltalk implementation.
> So starting from those kinds of questions is missing the point…
The questions `virtualized` asked are simple and clear.
Telling `virtualized` that they are missing the point — instead of answering their questions — makes the community seem arrogant.
However, virtualized stated that they gave up after five minutes because they couldn't find a hello world example similar to programming languages they're presumably familiar with, because they didn't want to watch a video or read a book. So explaining that the Smalltalk environment is different, and thus it doesn't make a lot of sense for Pharo's website to advertise with a command line example, is appropriate, since that implementation is GUI-based.
It would be akin to complaining about RStudio's site because someone couldn't quickly find how to run a hello world R script from the command line, when RStudio is about the IDE.
Pharo's website does attempt to "advertise with a command line example" — and then fails to show that the example works.
I kind of like these systems because they remind me of when computers were weird and different and had legitimate tradeoffs. People’s expectations of computers were still rooted in a physical model of interacting with the world. Computers were still very much trying to prove that they were relevant to the “real world.”
COMMAND LINE:
/opt/src/vw8.3pul/bin/visual nbody.vw_run.im -nogui -evaluate "BenchmarksGame program" -a 50000000
PROGRAM OUTPUT:
-0.169075164
-0.169059907
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...https://i.imgur.com/JwgJ66z.png
You create a new image and then start piecing things together from there. GNU Smalltalk is probably what you want if you want to stick to the CLI. That said, it's not exactly a representative example when you want the same program that prints to stdout or something.
I'm curious to know about this aspect of it because my first step after the hello world is usually to figure out how to host the thing.
Edit: this would be more useful: https://stackoverflow.com/a/17259369
That said, Smalltalk isn't something you use from the commandline typically, or only during deployment or for applying external automation. The GUI environment is fairly key.
The website front page does not show a Pharo program being invoked from the OS command-line and using stdio.
""" $ curl https://get.pharo.org | bash $ ./pharo Pharo.image eval "42 factorial" """
— nobody hit the Enter key?
— the program does nothing?
— the program does something but there was no output?
— there was output but not to stdout?
etc etc
$ curl https://get.pharo.org | bash
$ ./pharo Pharo.image eval "42 factorial"How many would be able to say that `Hello, world` was correct?
You can load and run a smalltalk source file, at the OS command-line, something like —
./pharo Pharo.image st helloworld.st
You can pre-load smalltalk source files, save a memory image, and use default startup behavior to run the saved bytecode — ./pharo helloworld.image
> deploy that to another machineIt's just moving files (VM + bytecode image) so — rsync, ssh
iirc something like —
FileStream stdout nextPutAll: 'Hello, world'; cr.also a hello world will never ever give you any idea about smalltalk/pharo.
don't be impatient, this is a system worth playing with, it's quite ~amazing.
I finally found out that the magic invocation was to open up a window by clicking on the background, and navigating to Tools -> Playground, and running `Profstef go.` But they certainly didn't make it easy.
[0] https://ci.inria.fr/pharo-contribution/job/UpdatedPharoByExa...
Run PharoLauncher and Load a Pharo image instance.
Once the Pharo Desktop IDE appears type CTRL+O+T to open Transcript - the system log console abnd type CTRL+O+W to open playground - Playground is a window into which you can type. It can be used for any purpose, but is most often used for typing Pharo expressions and equickly executing them.
(There are windows /icon menu entries for these as well)
In playground window type:
Transcript show: 'Hello World'
and press the play 'do it' icon at the top of the playground window to evaluate itYou should now see Hello World appear in the transcript window.
What you just did was send the Transcript objects show method the message 'Hello World'
Lets do a slightly more complex Cut and paste the following code into the Playground window and click the play button. The first part installs the Roassal visualization framework. It only needs to be run once. The second part uses ROassal's Mondrian API which offers facilities to describe and render graphs. Mondrian allows mapping of metric values and properties into visual dimensions, such as shape and colors. Cut and paste the second piece of code into playground and hit play doit icon to evaluate. In the view panel you should see a simple tree class browser of the installed classes in the Pharo image with size of class coloured and scaled to represent number of source code lines in each class. Note lines in speach marks are comments.
"-------------------------------------"
"install Roassal visualization engine"
"-------------------------------------"
Gofer it
smalltalkhubUser: 'ObjectProfile' project: 'Roassal2';
configurationOf: 'Roassal2'; loadStable.
"---------------------------------------------------""- Make a Simple interactiver Class Tree Browser -"
"---------------------------------------------------"
myBrowser := RTMondrian new.
myBrowser nodes: Collection withAllSubclasses.
myBrowser edges connectFrom: #superclass.
myBrowser normalizer
normalizeSize: #numberOfMethods;
normalizeColor: #numberOfLinesOfCode.
myBrowser layout tree.myBrowser