[HN Gopher] Pharo 11
       ___________________________________________________________________
        
       Pharo 11
        
       Author : xkriva11
       Score  : 253 points
       Date   : 2023-05-11 11:56 UTC (11 hours ago)
        
 (HTM) web link (pharo.org)
 (TXT) w3m dump (pharo.org)
        
       | api wrote:
       | Pharo looks like a blast from the past in a good way. It harkens
       | back to the era when a lot of work was put into carefully
       | designing language, IDE, and UI/UX environments cohesively with
       | an eye toward using the computer to maximize human capability and
       | productivity.
       | 
       | Then we dumped all that and abandoned it and moved to today's
       | visually and ergonomically inconsistent hodge podge. It mostly
       | happened because of the web but also because the velocity of the
       | industry increased to the point that it felt like a waste of time
       | to think deeply about anything. It'll just be obsolete next year.
       | Slap it together, get it out the door, repeat.
        
         | splitstud wrote:
         | [dead]
        
       | 101008 wrote:
       | I used Pharo in my Object Oriented course at the Univeristy (for
       | my CS degree) and I was really surprised for this paradigm. We
       | saw Haskell and Pharo and I was really happy to discover new
       | things from a language point of view. It is hard to say that Java
       | or any other imperative language is OO after seeing
       | Smalltalk/Pharo.
       | 
       | About the question if it's used in production, the teacher for
       | that segment of the course was a specialist who worked on big
       | companies and showed us examples of being used and we were
       | (again) blown away.
       | 
       | I never fully understood it (although I passed that course), but
       | it's one of the things I'd like to know it better: not for usage,
       | but out of curiosity.
        
         | sigzero wrote:
         | What book did you use?
        
           | 101008 wrote:
           | I don't remember using a book for this part of the course.
        
         | travisgriggs wrote:
         | > It is hard to say that Java or any other imperative language
         | is OO after seeing Smalltalk/Pharo.
         | 
         | This.
         | 
         | It so frustrates me to see people trash talk on "OOP" in HN and
         | other forums, where I know people never really got to really
         | realize what it could really be about. Just hacky
         | approximations.
         | 
         | I'm sure that functional silver bullet will avoid this cycle
         | some how. /s
        
           | capableweb wrote:
           | I think that's true for most paradigms.
           | 
           | Most people see .prototype and the end-all-be-all of
           | Prototypal Inheritance and base everything they think they
           | know about it, from how a frontend from the early 2000s was
           | coded.
           | 
           | They work through some lisp book in school, have an exam and
           | think that's all lisp development can give you.
           | 
           | Same for functional programming, where most "we love
           | functional programming" companies just compose some small-ish
           | functions in a chain and call it a day.
           | 
           | Everything that is initially niche, finds a good fit and
           | becomes "mainstream" or even a bit popular, tends to be
           | mushed into some other paradigm while getting there.
        
           | koito17 wrote:
           | This is one of my biggest frustrations about online
           | programming discussions. The vast majority of complaints
           | about OOP I've seen online are really complaints about Java
           | and C++, and many of the problems are simply not present in
           | Common Lisp or Smalltalk.
        
         | m_mueller wrote:
         | I'd be interested in some of these industry use case stories if
         | you could share something.
        
           | e12e wrote:
           | I believe the core of Gemstone is smalltalk - it's an object
           | database/runtime and supports java as well - they also
           | sponsored/made maglev ruby (now dead?):
           | 
           | https://gemtalksystems.com/about/customers/
        
           | CraigJPerry wrote:
           | Not the OP but JP Morgan's Kapital system which underpins
           | their credit hybrids business was smalltalk.
           | 
           | I say was because i believe it's been deco'd in the past few
           | years but i don't know for sure, when i worked at JP it was
           | still a core breadwinning system.
        
           | 101008 wrote:
           | Most of them were financial industries, and a gov body in
           | charge of tax processing and that stuff.
        
           | andrewl wrote:
           | They have an extensive list at https://pharo.org/success/.
        
       | 542458 wrote:
       | The "fusion of a developed program and development environment"
       | idea is very cool.
       | 
       | One (maybe dumb) question though:
       | 
       | > Simple & powerful language: No constructors, no types
       | declaration, no interfaces, no primitive types.
       | 
       | Are constructors and primitive types really the sort of things
       | that people find to be unnecessary complexity?
        
         | zabzonk wrote:
         | you can (and often do) have constructors in smalltalk:
         | https://stackoverflow.com/questions/36878787/making-a-constr...
         | - i think the stuff you quoted was probably written with little
         | thought.
        
         | Cthulhu_ wrote:
         | Constructors are tools to put an object in a starting state,
         | but there's alternative solutions; in Go, factory functions are
         | pretty common.
         | 
         | Primitive types reminds me of Java, which doesn't have
         | primitive types per se (everything is an object under water),
         | but they're adding it soon (or already have) for performance
         | reasons.
        
           | jolux wrote:
           | Java does have primitives/unboxed types (int, long, boolean,
           | etc) what they're adding is support for unboxed/value classes
           | created by users. This should help reduce the duplication
           | between int and Integer and so forth.
        
         | emaringolo wrote:
         | Many languages need constructors (and static methods) because
         | the class is not an object.
         | 
         | In Smalltalk the class is the sole instance of another class
         | (MetaClass), so a "static method" becomes a "class-side"
         | method. And so it is inheritable.
         | 
         | The meta relationship is hard to understand (at first), but it
         | is part of what causes the parsimony in all the interactions,
         | and the "everything is an object".
         | https://stackoverflow.com/questions/57898036/is-it-true-that...
         | 
         | Primitives (as in int, double, etc.) are a different subject,
         | and although an Integer or a Smallinteger is a specially
         | optimized object, it has the overhead of being an object (as in
         | "Boxed" Integer in other languages), instead of some bytes at
         | some memory location.
         | 
         | Most of the times you don't need the optimized version, and if
         | were the case that you do, then it's when you optimize that
         | piece of execution specifically (maybe making an external call
         | to a more low-level, optimized version).
        
         | scotty79 wrote:
         | Primitive types are really annoying.
         | 
         | If they were about what user needs not about underlying
         | hardware they'd be fine.
         | 
         | I dont care about int, long, float or double.
         | 
         | I care about number to represent whole amount, or fractional
         | amount or approximate amount with operations that work
         | accordingly lile approximate comparison of approximate numbers.
         | Approximations for when I care about approximation error and
         | for when I don't. Number that are limited to the ranges I care
         | about not some arbitrary MAX_INT. Numbers that have units so
         | that I won't accidently assigned a length to a variable that
         | should hold mass.
         | 
         | So yeah, as they are primitive types do introduce unnecessary
         | complexity and none useful complexity unless you want to work
         | close to the metal.
        
           | canadianfella wrote:
           | [dead]
        
       | guestbest wrote:
       | I really wish Apple's ObjC went more into the self/smalltalk
       | route in its language and IDE rather than invent swift as a
       | replacement.
        
       | MadcapJake wrote:
       | > Ephemerons Production Ready.
       | 
       | Does anyone have any insight into this development? What impact
       | on GC performance?
        
         | xkriva11 wrote:
         | Some materials:
         | 
         | https://github.com/pharo-project/pheps/blob/main/phep-0003.m...
         | 
         | https://thepharo.dev/2021/04/07/a-taste-of-ephemerons/
         | 
         | But I do not know if Guille has some benchmarks.
        
       | web3-is-a-scam wrote:
       | As a rails developer - my introduction to Pharo started with this
       | video:
       | 
       | https://youtu.be/HOuZyOKa91o
       | 
       | If you're not a ruby/rails developer you can still see how
       | awesome it is, but for rubyists specifically it can really be
       | quite mind blowing.
        
         | xkriva11 wrote:
         | > ...There you go. Now you've seen a little bit of Smalltalk
         | and now you hate your Ruby development environment. Have a nice
         | day!
        
         | AllegedAlec wrote:
         | Until I watched this I never understood class definitions in
         | Pharo. His "we tell the TestClass to create a subclass of
         | itself" blew my mind.
        
         | VaxWithSex wrote:
         | I switched from Ruby to Smalltalk in 2008 for this specific
         | reason.
        
           | web3-is-a-scam wrote:
           | Do you actually work in smalltalk or is it just your hobby
           | language of choice?
        
             | VaxWithSex wrote:
             | I wrote my Bachelor and Master thesis with it. I thought
             | about working at HRWorks, but then decided to do Python and
             | now TypeScript. I'm learning Rust now, just because how the
             | closures look a bit similar to Smalltalk since I miss it so
             | much.
        
         | xept wrote:
         | I feel anxious looking at the multitude of windows. Do you get
         | used to it?
        
           | klibertp wrote:
           | No. This is easily the weakest part of Smalltalk IDEs. And
           | with Morphic-based ones, you can't even fix it with a tiling
           | window manager or something, since it's just one window for
           | the rest of the OS. There's no way of organizing the windows
           | in groups, no automatic placement, no virtual desktops. The
           | best you can do is simply get into a habit of culling
           | unnecessary windows. It's emotionally hard to close windows
           | you spent 10 minutes searching in for the code you might (or
           | might not) need in the future, so I made a simple sidebar[1]
           | that I use to bookmark useful stuff. With it, I can close
           | windows with impunity.
           | 
           | [1] https://klibert.pl/statics/smalltalk/sidebar.png
        
           | zabzonk wrote:
           | it's not much more overpowering than other ides - just close
           | anything you are not interested in.
        
           | igouy wrote:
           | Yes and then you learn how use them together.
        
       | jadbox wrote:
       | What do people use Pharo for? Is anyone here using it for a
       | product?
        
         | andrewl wrote:
         | There is a list at:
         | 
         | https://pharo.org/success/
        
         | sigzero wrote:
         | https://pharo.org/success/
        
           | notwhereyouare wrote:
           | I work for one of the companies on that list and can attest
           | we still use smalltalk/pharo.
        
             | sigzero wrote:
             | Very cool. Smalltalk is one of those "I'd like to learn"
             | languages for me.
        
               | zabzonk wrote:
               | it would take you about half an hour. absolute minimal
               | syntax and fairly obvious semantics.
               | 
               | of course, learning how to use it properly might take a
               | little longer :-)
        
               | melvinroest wrote:
               | I disagree with this.
               | 
               | You need to know more method signatures to write any
               | program in it. For example things like: someCollection
               | do: [ :someArgument | "some code" ]. Stuff like that.
               | It's still a lot less than most languages though.
               | 
               | I found that this really helps [1] and I find it more
               | representative of how difficult the language actually is.
               | The postcard example is a bit contrived.
               | 
               | [1] https://gist.github.com/jdevoo/8e8866cd6087e05790841d
               | 0f20b2e...
        
               | VaxWithSex wrote:
               | sigzero doIt.
        
           | dgellow wrote:
           | > ATMs in Moscow streets
           | 
           | > From 2008 to 2015 ATMs deployed in Moscow streets were
           | developed and run using Pharo. People use them to pay for
           | services with cash and cards (phone, internet, taxes,
           | parking, etc)."Pharo was a really enabling technology. We
           | developed user interfaces using advanced flow control based
           | on continuations and mixed prototype with class-based
           | programming. We supported various kind of equipment and a...
           | 
           | > 2 March 2017
           | 
           | https://pharo.org/success/ATMsInMoscowStreets.html
           | 
           | That's a surprising success story!
        
         | gladimdim wrote:
         | I use it for my interactive-fiction backend and to host save
         | files for another game.
         | 
         | Nothing fancy, just a web server getting file and saving them.
         | Like a KV-storage.
         | 
         | I have deployed it to dogital ocean on 2017. I have not TOUCHED
         | it since then. Still running good. And I can access the Pharo
         | GUI via the web VNC just from my browser with full access to
         | the IDE and dev env.
         | 
         | The cons: I forgot how to run that docker image. If it fails I
         | am in troubles reminding myself how to run it one more time. 6
         | years have passed...
        
           | gladimdim wrote:
           | On contra, my dart telegram bot runs on the same machine. I
           | have to restart it weekly. Even when the load is 0. LMAO
        
           | all2 wrote:
           | Your bash history should be helpful here.
        
           | bantunes wrote:
           | You can use this tool to figure out how to run again any
           | currently running container https://github.com/lavie/runlike
        
         | asicsp wrote:
         | See discussion for Pharo 10:
         | https://news.ycombinator.com/item?id=30917420
        
       | simplify wrote:
       | Can Pharo also store data in its language runtime (which is long-
       | running if I understand right)? If so, does that make it its own
       | type of database?
        
         | xkriva11 wrote:
         | Yes, it is sometimes used as a database, and there is Gemstone
         | [1] which brings it to another level.
         | 
         | [1] https://gemtalksystems.com/products/gs64/
        
       | bandrami wrote:
       | 36 years ago a very young me took a programming class in 3rd
       | grade where learned "Small Talk", which was going to be how
       | everybody worked with computers in the future.
       | 
       | I still credit most of my skill at programming to the fact that I
       | was introduced to that and Forth in elementary school. I also
       | miss those C64s....
        
         | bogwog wrote:
         | Wow my _highschool_ didn 't even offer programming classes. The
         | closest thing to a computer education were some classes that
         | required us take online tests to obtain Microsoft Office and/or
         | Adobe Photoshop "certifications" before we could graduate.
        
           | bandrami wrote:
           | My high school didn't either, just my elementary school. The
           | mid-1980s were a different time....
        
             | actuallyalys wrote:
             | I think I caught the tail end of that in the 90s. I
             | remember taking a class from the local parks and recreation
             | department where we programmed a little robot in (I think?)
             | LOGO.
        
       | dysoco wrote:
       | I have not used Pharo yet, but I've used Cuis Smalltalk for a
       | college class and it was one of the most fun experiences while
       | writing code that I had since my first steps back when I was a
       | kid. I'm pretty eager to learn more about Smalltalk and write
       | something meaningful in it.
       | 
       | To anyone who has not yet tried it I suggest heavily that you do,
       | even if it's just for the sake of having fun, it just can be a
       | bit confusing at first since it's a pretty different environment.
        
       | jventura wrote:
       | I got curious, downloaded and installed it on my computer.
       | Checked the docs, and the next step was to download a stable
       | image. Downloaded 11 (stable) and started it. Then blank stare to
       | screen! What should I do? Lots of things to click on, and no text
       | editor..
       | 
       | Searched for a tutorial on the website, and found nothing! I
       | don't want to spend 30 minutes to look at some random videos of
       | Virtual Reality in Thames or whatever, or read "Pharo for
       | Rubyists" (I use mostly Python). I just wanted to explore a bit,
       | and maybe if it seemed interesting, tomorrow I would continue
       | exploring it. But now I've deleted Pharo!
       | 
       | Warning to other project maintainers: just show a tutorial, or an
       | hands-on doc, so that newcomers may get a feeling of what it is.
       | This is especially important for relatively unknown projects like
       | this.
       | 
       | Some projects that have done it right:                 -
       | https://www.djangoproject.com/start/       - https://go.dev/
       | (Search for Try Go in the main page)       -
       | https://www.python.org/ (Carrousel showing some aspects of the
       | language)       - https://play.rust-
       | lang.org/?version=stable&mode=debug&edition=2021       - others I
       | can't remember now..
        
         | harshreality wrote:
         | I had no prior experience running Pharo. I wanted to see what
         | all this was about, so I downloaded and ran the launcher (the
         | windows one, since that's what I'd expect most people to be
         | using). It starts with no images. Does Launch work anyway? No.
         | How about New? That lets me select pharo versions. What happens
         | if I pick regular pharo 11? It looks like it's downloading.
         | What happens if I Launch that? Success.
         | 
         | Once the image is run, a "welcome" window appears (which you
         | can get back to, if you already closed it, through the Help
         | menu). The first two panes are a brief description and theme
         | setting. The third pane is how to learn pharo, which lists a
         | few resources and then tells me I can learn Pharo by clicking
         | on the ProStef link. I do.
         | 
         | ProStef tells me to highlight the text below and right click
         | and select "do it". It takes me a couple tries because I'm
         | curious what happens if I select one word or the other.
         | Learned: the entire expression has to be highlighted before
         | telling Pharo to run it works, and both words were part of the
         | expression.
         | 
         | The tutorial proceeds fairly obviously from there, teaching
         | print and inspect. Some additional experimentation reveals that
         | selecting the entire page runs everything, kind of like you
         | might be used to in an IDE that sends things to a repl, and
         | double clicking before the first character on a line selects
         | the whole line.
         | 
         | If you're expecting the sort of tutorial where a guide not only
         | tells you what to do, but shows you what to do before you do it
         | to avoid any ambiguity, so that all you have to do is mimic it,
         | ProfStef isn't that, but mimicry is a weaker form of learning.
         | I'm not sure I'll like Pharo, but the tutorial looks like it
         | starts okay to me. The launcher takes a moment to figure out,
         | but if it's so difficult how do you get anything done that
         | you've never done before?
        
         | bowsamic wrote:
         | No offence but why should such a project obey your laziness?
        
           | jacquesm wrote:
           | Because the project competes for attention with a million
           | other OSS projects out there and lowering the barrier to
           | entry for newcomers is good practice for projects that want
           | to stay alive.
        
           | klibertp wrote:
           | No need to, but the project should be honest about it: "this
           | is not for lazy people! You'll spend a weekend just trying to
           | boot the VM, and once you're done the hard part starts right
           | there! So, go away, you unwanted user, you."
           | 
           | Put something like that on the front page and you're good to
           | go.
        
             | bowsamic wrote:
             | Again, why should the project have a special notice just
             | for lazy people such as yourself? This is an extreme level
             | of entitlement: "I'm not interested in your project and you
             | should tell me that"
        
               | klibertp wrote:
               | Ah, yes. "Entitlement"...
               | 
               | I'd say: to show that its authors have a _sense of
               | decency_ , at least. But let's not assassinate the lads
               | any more than this.
        
         | [deleted]
        
         | whartung wrote:
         | Because Pharo is an environment and tool designed and built by
         | those who want to build Pharo.
         | 
         | While there are certainly folks doing other things in it, the
         | Pharo project focuses on the problems of improving the Pharo
         | project to make it easier to develop Pharo.
         | 
         | As with many OSS projects, the developers are there to scratch
         | their itches, which is Pharo, not just random programming
         | projects.
         | 
         | You'd like to think that these goals, improving the development
         | experience, would be generic enough to "lift all boats". I
         | mean, they do solve a lot of issues with Smalltalk distributed
         | development, distribution, source code control, etc. But, to be
         | honest, those are all advanced cases and, while part of the
         | development experience, don't do much to attract developers who
         | are doing distribute "IDE" development.
         | 
         | I've tried several times to work with Pharo as a tool for
         | random GUI apps, and found the experience quite frustrating.
         | But, clearly, the Pharo developers continue to make progress,
         | its just that whatever their destination is, it's not congruent
         | with mine, so I dabble and leave.
         | 
         | If you want a more friendly approach to Smalltalk (which,
         | you'll note, Pharo does not claim to be -- there's no mention
         | of Smalltalk on their front page), then take a look at Squeak.
        
           | igouy wrote:
           | Then take a look at Cuis-Smalltalk.
           | 
           | https://github.com/Cuis-Smalltalk/Learning-
           | Cuis/blob/master/...
        
           | zabzonk wrote:
           | squeak is very similar to pharo (which is based on squeak)
           | but pharo is a lot more user-friendly and looks nicer. they
           | are both smalltalks - i agree that pharo trying to pretend
           | otherwise is a bit strange.
        
             | pjmlp wrote:
             | Because in a similar vein to Dr. Scheme => Raket, Pharo has
             | moved from its raw Smalltalk roots.
        
         | [deleted]
        
         | agumonkey wrote:
         | I would not try to compare pharo with the usual mainstream
         | ways. It's a different world. There's a very very good mooc to
         | explain various aspects of both language and
         | environment/culture. It's really worth a try (and I say that
         | after hearing a lot of high praises about Smalltalk, I wasn't
         | disappointed)
        
         | mock-possum wrote:
         | Yeah I did the same the other night - same experience. It's
         | like releasing a modern game and expecting players to read the
         | manual to learn how to play. We know how to effectively teach
         | users to use - there's an entire field of study devoted to
         | usability and accessibility.
         | 
         | I don't have time to waste on something that ignores the last
         | 40 years of progress in that realm.
        
           | capableweb wrote:
           | What's to say they have "something" to waste on making a
           | foolproof way of getting started for people who aren't even
           | curious?
           | 
           | They're not selling a product here, they're releasing
           | software they've written in their own spare time. If you
           | can't spare 30 minutes for running through the tutorial, why
           | should they spend more time catering to you rather than
           | spending it on more interesting problems?
        
             | klibertp wrote:
             | > why should they spend more time catering to you rather
             | than spending it on more interesting problems?
             | 
             | Of course, if you're content with your community stagnating
             | and nobody ever using that software, then there's really no
             | reason to put that effort in.
             | 
             | I remember similar arguments about Linux installers. Why
             | should they cater to people who _don 't even know fdisk_?
             | We have kernel to work on, UX of an installer - with
             | obvious, immediate impact on adoption and getting new users
             | - is boring in comparison. Having installed Fedora last
             | week I can attest that this line of thinking, fortunately,
             | went away in Linux as far as installers go. The chances of
             | it going away in the Pharo community, however, are slim at
             | best.
        
         | jdthedisciple wrote:
         | Why does this seem so common in niche projects like this one?
         | 
         | I often see GitHub repos that _seem_ very interesting and even
         | quite liked but as a newcomer you 're just supposed to figure
         | everything out blindly by yourself.
         | 
         | P.S: Thanks for saving me the time to download and try out
         | Pharo.
        
           | capableweb wrote:
           | Because lots of software released as FOSS is not made to
           | attract people to start using it without spending at least
           | some time reading and understanding it.
           | 
           | Lots of FOSS is written that way, especially corporate PR
           | FOSS, where engagement and other things are important,
           | because otherwise the cost/value calculation doesn't work out
           | yadda yadda.
           | 
           | But lots of other FOSS is released just because someone wrote
           | something, and then just put it out for others to use, if
           | they're curious. They don't owe you anything, and spending
           | time working on the onboarding UX, tutorials or guides might
           | detract from what they wanted to do: entertain themselves
           | solving a problem they care about.
        
           | wslh wrote:
           | Yes, it should be called "Onboarding UX" and nowadays , it it
           | fails, make someone forget completely about that piece of
           | software until there is another emotional event such as
           | browsing it in HN and have feedback from a friend.
        
           | kragen wrote:
           | why should people spend their time trying to convince you of
           | the value of their project? they already know if it's
           | valuable; why should they be interested in your opinion?
           | 
           | if it's a commercial product, they might get your money, but
           | most projects on github aren't
        
             | jdthedisciple wrote:
             | I mean sure, I have nothing to say against that.
             | 
             | I'd just think if you write something like a programming
             | language of all things you'd _want_ others to use it and
             | have a pleasant experience getting started.
        
               | noizejoy wrote:
               | > I'd just think if you write something like a
               | programming language of all things you'd want others to
               | use it and have a pleasant experience getting started.
               | 
               | You might be surprised how many different nuances exist
               | in what motivates humans.
               | 
               | I have even avoided to share code in public repositories,
               | because I didn't want to be bothered by feedback like
               | yours, because I didn't bring the documentation up to a
               | level that someone farther away from my little niche need
               | and use case can understand it.
               | 
               | While such feedback isn't going to kill me, it's
               | nonetheless one of a million tiny little cuts that my
               | life is more pleasant without.
        
             | IshKebab wrote:
             | Because they want other people to use it obviously. Why
             | share it with the world at all if that's not the case?
        
               | kragen wrote:
               | why would they want to keep it to themselves? maybe if it
               | contains trade secrets or defamation or copyright
               | infringement? but probably most code doesn't
               | 
               | i don't want other people to use my open source code
               | unless it's more useful to them than the alternatives,
               | and i think they're a better judge of that than i am;
               | trying to convince them to use it would imply i think i'm
               | a better judge of it than they are
               | 
               | i'm always happy to talk with them about it, but i'm not
               | coming from an advocacy perspective, and i think people
               | who are are bad
        
           | gjvc wrote:
           | _P.S: Thanks for saving me the time to download and try out
           | Pharo_
           | 
           | Unnecessarily snarky
        
             | jdthedisciple wrote:
             | Not meant personally, but sure my apologies.
        
         | zabzonk wrote:
         | pharo, like other smalltalks, doesn't really have much of a
         | text editor - that's not how you write smalltalk code. instead,
         | you use the browser, which has a text pane, to change/add
         | things to classes (or indeed to objects). you have to think a
         | bit different. and how do you expect to learn anything if you
         | won't read or watch a tutorial?
        
           | jdthedisciple wrote:
           | Serious question: Can you create medium-size to large
           | applications without a text editor?
        
             | tvink wrote:
             | It's actually one of the best parts of it.
             | 
             | Extreme TDD is amazing - you write a test, run it, and when
             | it fails you basically fill in the chunk of code right from
             | the error window and continue. It's not always super
             | obvious how to get into the flow, but I found that although
             | I didn't feel productive enough with the Pharo ecosystem, I
             | _really_ miss the smalltalky development flow which
             | foregoes using text files to organize code.
        
             | zabzonk wrote:
             | yes, pharo is basically written in pharo.
             | 
             | please note you _do_ have to type in code in text, but not
             | monolithic amounts of it as you would in (say) a C++
             | program.
        
             | kragen wrote:
             | it's not that it doesn't have a text editor; most smalltalk
             | windows have five or six text editors
        
               | jdthedisciple wrote:
               | Oh boy, how does one keep their sanity like that?!
        
               | Jtsummers wrote:
               | The primary way of editing code in Pharo, Squeak, and
               | similar implementations derived from Smalltalk-80 (but
               | not all, some use the more familiar idiom of "many files
               | in many directories") is to use one of the built-in (to
               | the Smalltalk environment) browsers.
               | 
               | Select the package, class, and then method (or the
               | options to create new ones) and the method will be in an
               | editor pane for you. Start changing it, and the change is
               | immediately applied once saved. No need to rebuild the
               | world and restart the image. (Of course, that leads to
               | some fun things where you can redefine True/False and
               | break the image right there on the spot. Pharo seems to
               | do a good job of blocking you from changing things like
               | that so easily.)
               | 
               | Smalltalk code "lives" in a database. You interact with
               | that database. The code is also serialized to a file if
               | you happen to want more conventional access, but that's
               | not the normal route. Though serialization to files is
               | how Pharo and others allow you to interact with git and
               | collaborate with other people.
        
               | kragen wrote:
               | you use the windows to keep them organized, same as in
               | any other gui
        
           | jventura wrote:
           | > how do you expect to learn anything if you won't read or
           | watch a tutorial?
           | 
           | I wanted to follow a tutorial (or another guide) to learn
           | about Pharo, but couldn't find any, at least in the official
           | docs. That's the point I'm making!
        
             | jacquesm wrote:
             | Think 'emacs' not 'C'. Smalltalk based systems are compete
             | runtimes, a tutorial for Pharo is here:
             | 
             | https://ceronio.net/2017/07/first-steps-with-pharo-
             | smalltalk...
        
             | crdrost wrote:
             | That is a fair criticism! It is partially (maybe 20%)
             | mitigated by the fact that this is a different lineage of
             | computing and so you were going to hit a huge wall
             | _somewhere_ and when you got it _here_ you reached out to
             | the community and found folks like me to help you. But 80%
             | of the point definitely still stands, this is a big change
             | and there is not much documentation for you.
             | 
             | In this lineage of computing, you do not edit text files
             | and then run a compiler and then run your tests and then
             | cross your fingers and ship to prod. That is, if you like,
             | the "Frankenstein" approach, you cobble together dead body
             | parts into a chunk of dead code and then reanimate it with
             | a lightning bolt. And it has eaten the world so uh can't
             | really bash it.
             | 
             | But another lineage is preserved in spreadsheets and
             | smalltalks, where that general outlook is considered a
             | little barbaric and you want to instead be surrounded by
             | your living, breathing program, with everything available
             | to inspect and tinker with and test and replace. You run
             | the image and _you are launched into your running program._
             | Yeah it doesn 't do anything yet, because you haven't told
             | it what to do... but here you are, ready to mold and model
             | the compute like clay into whatever your imagination
             | desires. The first few pots you throw, you're lucky if they
             | don't collapse on you.
             | 
             | My standard example of the mentality difference is
             | Object.become. Imagine I tell the standard Java developer,
             | "we search through all of memory, find all private and
             | public variables pointing to _that_ object, and instead
             | point them to _this_ object..." They will look at you like
             | you are nuts! But that's essentially the underlying
             | functionality needed for "you can edit the method and the
             | entire system will start using your new method."
             | 
             | So things like versioning and inspecting and editing are
             | generally baked into the image rather than external tools
             | because you want to be able to debug and undo your changes
             | _in vivo_ ... There is going to be an impedance mismatch,
             | and the community can certainly make it easier on you for
             | sure but there is going to be a lot of unlearning no matter
             | what.
        
               | igouy wrote:
               | > My standard example
               | 
               | Ummm I daresay the vast majority of Smalltalk programmers
               | never have (and never will) use become:
        
             | capableweb wrote:
             | Did you download "Pharo Launcher" from
             | https://pharo.org/download ?
             | 
             | Smalltalk in general is about a fully integrated
             | environment, so everything lives inside of the environment,
             | including applications, docs and also the tutorial.
             | 
             | Once you launched the Launcher, you create a image (latest
             | stable, official distribution), launch the image, press the
             | "Next" button until you see "You can learn Pharo by
             | clicking on the following expression:" which launches the
             | tutorial. That's about it.
             | 
             | And I did that the first time just now, without having any
             | experience doing so in the past, or knowing 100% where to
             | go. Everything was easily guessable. But I did know since
             | before what a Smalltalk environment usually looks like,
             | even though I haven't used Pharo specifically before for
             | this.
        
         | klibertp wrote:
         | Well, they're consistent at least. It was exactly the same when
         | I first tried Pharo, at version 2.something IIRC. Same in Pharo
         | 5, 7, 9 (increments of 2 purely coincidental) and now with 11.
         | 
         | I love Smalltalk. The language is great, incredibly powerful
         | even though it rests on just a few simple concepts. The design
         | and architecture of some of Smalltalk libraries is marvelous
         | and should be made into UNESCO world heritage site for OOP
         | design. PetitParser is unmatched in the ease of creating _and
         | extending_ parsers, not even PyParsing comes close (Raku
         | grammars are close but use another metaphor for actions,
         | ScalaParsing is... somewhat related but limited). The idea of
         | _finally_ working with a live codebase instead of its dead
         | carcass[1] is frankly groundbreaking - and older than me,
         | apparently. The Smalltalk debugger is a work of art, and the
         | idea of working with images that contain the  "whole world" in
         | them is actually very appealing if you ever had to write a
         | Dockerfile.
         | 
         | However, while Pharo may well be the most "advanced"
         | Smalltalk(-like) environment, it's also one of the worst. On my
         | Linux machine releases after 5 refused to as much as display
         | anything - I got an empty window and the VM seemed to hang and
         | never started properly. Glamorous Toolkit version did work,
         | even though they share most of Pharo code. The churn in UI
         | toolkits, the constant rewrites of everything, the utter lack
         | of any kind of documentation (including on classes!) of
         | installable packages, deprecation of tools that work (ofc after
         | breaking them) in favor of tools that don't, yet leaving the
         | former in place just to confuse users (b/c what other goal
         | could it have?) - that's Pharo in a nutshell.
         | 
         | A few years ago I went to complain about the lack of backward
         | compatibility and the fact that a tool, Package Manager, that
         | used to work perfectly well, stopped working altogether. I
         | learned that nobody under the Heavens cares more about backward
         | compatibility than Pharo community (praphrasing: "look, we're
         | even developing all-new annotation/pragma based system for
         | marking and automatically fixing incompatibilities!") and that
         | nobody uses the package manager anyway because they use...
         | something else, I forgot, but anyway - the new thing was
         | nowhere in the menus, while package manager stayed in the same
         | place it was before. I gave up when I got no response after
         | asking "how the heck should I, the user, know about deprecation
         | of a tool if it's not indicated anin any way in the UI". What I
         | got instead of an answer was a bunch of name calling and the
         | usual suggestion for me to go and fix it myself.
         | 
         | I still love Smalltalk. If you love it too, but feel that - at
         | least with Pharo - that feeling is not mutual, go grab Visual
         | Works (no affiliation). Personal license is restrictive, and
         | the version you get is 6 years old at this point. But. It comes
         | with thousands of pages of PDFs with _up to date_
         | documentation, manuals and guides. It comes with a stable,
         | battle-tested UI framework, not based on Morphic but
         | integrating seamlessly with your env windows (btw:  "Pharo can
         | do it too", say Pharo users, "it's just that nobody cares about
         | such things") while still allowing all the dynamic
         | introspection Smalltalk is known for. The infra for versioning
         | and sharing code is idiosyncratic - you need to spin a local
         | Postgres instance - but solid and surprisingly (if you come
         | from git) powerful. There's a _working_ package manager and you
         | can install and run code from the nineties, something that 's
         | just absurd to attempt in Pharo, despite all the "caring" about
         | backward compatibility. Yes, the VM is closed source, but it at
         | least starts up properly.
         | 
         | It's a bit underwhelming in the performance dept, which made me
         | reconsider starting one project with it, but by that point I
         | already built my own little Smalltalk environment after fixing
         | a lot of glitches (because, other than the VM, the source of
         | _everything_ else is available and you can modify it as easily
         | as any other code) and I honestly felt really comfortable in
         | it. It 's incredibly similar to Emacs in terms of power and
         | workflow, but with proper widgets and no need to worry about
         | terminal users.
         | 
         | I also tried using GNU Smalltalk for a project, but that's
         | basically dead at this point, with a lot of things unfinished.
         | I still managed to build quite nice shell PoC in it. I also
         | tried Smalltalk/X-jv, and it was kind of ok, but VW looked more
         | polished and I didn't need the other langs integrations that
         | Smalltalk/X does, so I stayed with VW. Cuis is also a nice
         | attempt, but I wanted to break out of Morphic, so I didn't
         | investigate it too deeply.
         | 
         | TLDR: Smalltalk is not just Pharo, there are Smalltalks that
         | are not like Pharo, that don't treat users like unneeded
         | baggage, that take integration with modern GUIs seriously, that
         | have a lot of advanced tooling that's actually useful and
         | needed. Oh, and also, there are Smalltalks that are not
         | actively hostile to keyboard shortcuts! Give one of them a
         | chance, you'll be surprised!
         | 
         | [1]
         | https://blog.bracha.org/exemplarDemo/exemplar2021.html?snaps...
        
           | igouy wrote:
           | > On my Linux machine releases after 5 refused to as much as
           | display anything
           | 
           | That seems close to misrepresentation, Pharo works OK.
           | 
           | https://benchmarksgame-
           | team.pages.debian.net/benchmarksgame/...
           | 
           | Pharo 9.0.21 on quad-core 3.0GHz Intel(r) i5-3330(r) with
           | 15.8 GiB of RAM and 2TB SATA disk drive; using Ubuntu(tm)
           | 22.10 x86_64 GNU/Linux 5.19.0-29-generic
        
             | jacquesm wrote:
             | GP says it didn't work for them as did the GGP, why would
             | you suggest that this is 'close to misrepresentation' when
             | it is simply two datapoints that may be different from the
             | experiences of others (for instance yourself).
        
               | igouy wrote:
               | jventura did not say Pharo didn't work. jventura said
               | they didn't know what to do.
        
         | LispSporks22 wrote:
         | "Learn Pharo" is right there in the Welcome screen when you
         | started it.
        
         | igouy wrote:
         | I do sympathize with your experience. It reminds me that one of
         | the frustations when experienced programmers encountered
         | Smalltalk back-in-the-day was often expressed as -- Where's the
         | program?
         | 
         | Maybe you wanted to step through like this (and then go explore
         | by yourself):
         | 
         | https://cuis-smalltalk.github.io/TheCuisBook/Writing-your-fi...
         | 
         | https://cuis-smalltalk.github.io/TheCuisBook/A-brief-introdu...
        
         | madmulita wrote:
         | http://books.pharo.org/
        
         | alex_smart wrote:
         | Pharo by Example is a good book to start with.
        
           | tvink wrote:
           | Not really, it assumes smalltalk knowledge.
        
         | estebanlor wrote:
         | you see a welcome wizard when you open it. it has pages, as the
         | arrow show clearly (maybe this is not understood?)... and the
         | 3rd page is literally a pointer to resources to learn pharo
         | (including a small tutorial called ProfStef and an online
         | MOOC).
        
         | AllegedAlec wrote:
         | The Pharo Launcher has an _in IDE_ tutorial window that opens
         | when you first open the image . Apart from links to documents
         | it also contains an interactive in-development environment
         | teaching you the basics.
         | 
         | One of the images is the Pharo MOOC. The website has links to
         | several documents to get you started.
         | 
         | No offense but you kind of have to look _around_ it to not find
         | the ways in which the Pharo team attemps to get you underway.
        
           | [deleted]
        
           | pianoben wrote:
           | Most people have Expectations about the way things work -
           | code in a text editor, write tests, run them. Check code into
           | Github. Go to a website to find documentation.
           | 
           | Pharo defies all of those conventions (well, maybe not
           | Github, but even _that_ is unusual). People just aren 't
           | accustomed to in-IDE tutorials. It doesn't even _occur_ to
           | people that such things might exist.
           | 
           | It's hard to notice that which you never even imagined
           | possible.
        
             | rbanffy wrote:
             | One of the most frequent criticisms of Smalltalk is that it
             | doesn't play well with others. It's an IDE, but it's also a
             | runtime, and, in a sense, a whole OS, with its own programs
             | and development tools, in a virtual machine (running on
             | your computer or, in ancient times, on bare metal).
             | 
             | It IS alien to those who come from text editors and IDEs.
             | 
             | OTOH, it makes our usual development environments look
             | crude in comparison. In fact, Smalltalk 80 still has that
             | effect.
        
               | TeMPOraL wrote:
               | You can always check out Lisp and its ecosystem. It too
               | doesn't "play well with others", but in modern times, it
               | positioned itself half-way between Smalltalk and
               | mainstream stuff - it _still_ makes our usual practice
               | look crude in comparison, but it lost a lot of magic that
               | come from fully embracing in-image living. The barrier to
               | entry for outsiders is much lower though, and you can use
               | git with it in a straightforward fashion - not in...
               | whatever it is that Pharo does.
        
           | IshKebab wrote:
           | In my experience if you think you've made something clear but
           | people still don't see it, it's because you didn't really
           | make it clear. There's no use blaming users for not looking
           | hard enough even if you think it is really obvious.
        
             | igouy wrote:
             | As-in _meet people where they are_.
        
       | bogwog wrote:
       | I wonder if anyone has experience with this and Amber
       | (https://amber-lang.net/) and can compare the two? The languages
       | at least appear to be very similar, but the latter uses a web
       | browser rather than a fully custom UI like Pharo has. I assume
       | you can't just open a Pharo program in Amber (or the other way
       | around)?
        
       | CodexArcanum wrote:
       | I always feel like I should be doing more with Pharo. I love
       | smalltalks and there's something really fun and playful about
       | working with it, even those with a more "professional" shine on
       | them like Pharo. I've been experimenting with Godot recently and
       | I feel like there's a lot of that spirit in modern gamedev, where
       | the tool is written in itself and gives you all of the same parts
       | to play and build with.
       | 
       | I guess I don't really know what my usecase for Pharo is, like
       | what niche is it filling? Maybe I need to build my next
       | web...thing with it and see how it works out?
        
         | melvinroest wrote:
         | IMO it's a good tool for web scraping. The reason: you can do
         | web scraping with Parasol (i.e. Selenium [1]) and then if you
         | need visualization tools then you can immediately use Roassal
         | [2]. The thing is: Pharo and the fact that it's more GUI-
         | oriented than other programming languages, allows for data
         | visualization a bit easier. Also: you don't need to know
         | database specific. You can just store the data and save the
         | image. Super useful for small web scraping projects.
         | 
         | Another use-case is: open-source software where you want to
         | encourage users to just open up "the damn code engine" and hack
         | straight into it, seeing it change on the fly. Like, can you
         | just right click in Windows on a pixel and change the code that
         | underlies it? In Pharo you can! Commercial parties would find
         | this horrible, but it's amazing for full open-source software.
         | Note: I don't think any other language is capable of this!
         | 
         | For web apps, B2B works quite well. B2C, I see scalability
         | issues.
         | 
         | [1] https://github.com/SeasideSt/Parasol
         | 
         | [2] https://github.com/ObjectProfile/Roassal3
        
         | xkriva11 wrote:
         | What about trying the Godotalk [1]?
         | 
         | [1] https://pharoweekly.wordpress.com/2021/02/03/godotalk/
        
       | Decabytes wrote:
       | I love Pharo and have written about it on my blog, but one of the
       | most frustrating things about it is how the documentation in the
       | various books have fallen behind the language.
        
       | falcolas wrote:
       | My first time seeing Pharo. First impressions are that it reminds
       | me strongly of Smalltalk with the single-source IDE and runtime.
       | 
       | Not a bad thing, just an observation.
        
         | falcolas wrote:
         | Aah, it's intentional. :)
         | 
         | > Pharo features
         | 
         | > A dynamic, pure object-oriented programming language in the
         | tradition of Smalltalk
        
         | KMag wrote:
         | I believe Pharo evolved from Squeak SmallTalk. I'm not sure if
         | they started calling it a new language because of the number of
         | extensions on top of SmallTalk-80 or if they introduced any
         | breaking changes from SmallTalk-80, or if they just didn't want
         | to be bound to strict conformance going forward.
        
         | sigzero wrote:
         | "Pharo is an open source, cross-platform implementation of the
         | classic Smalltalk-80 programming language and runtime."
         | 
         | So not surprising.
        
       | pkphilip wrote:
       | The primary challenge with Pharo is the complexity of using this
       | in a multi-user type of environment where the image is shared
       | between people. How does one do that?
        
         | throwawayForMe2 wrote:
         | I did commercial team Smalltalk development using the Digitalk
         | toolset, for a team of around 16 people.
         | 
         | You start with a base development image, loaded with the
         | toolset and frameworks for the project. No one modifies this
         | image.
         | 
         | You share the app code through a source control tool. We used
         | Team/V. Start up the project base image, open the repository
         | browser, load the project packages. Make changes, commit source
         | back to the repository. No saving of the image for development.
         | 
         | So shared, but never changed base image for the project, and
         | app code sharing through the source control repository.
        
         | xkriva11 wrote:
         | Pharo source management is based on Git, so the workflow is not
         | special. We build the development images on the CI so every
         | developer can download the already prepared image with the
         | latest commits, but that is just for convenience.
        
           | melvinroest wrote:
           | Though there is the issue of: the changes in your image are
           | not necessarily the changes in your local repository and the
           | syncing of both can sometimes cause annoying issues. In most
           | cases I've learned to work around it, but it wasn't plug and
           | play straighforward.
        
       | e12e wrote:
       | So, is Cuis Smalltalk left behind? For a while it seemed to maybe
       | be the path forward for a lean, Free Smalltalk?
       | 
       | https://cuis.st/
        
         | jecel wrote:
         | Both Cuis and Squeak (from which both Pharo and Cuis were
         | forked) are still actively developed. Pharo does have the
         | largest presence in the two major Smalltalk conferences (FAST
         | in Argentina and ESUG in Europe) but there is no need to worry
         | if one of the other options is more aligned with your needs.
        
         | frou_dh wrote:
         | Pharo is anything but lean, so I don't think their relative
         | merits have changed at all.
        
       | jiffygist wrote:
       | I downloaded the launcher and there are two minor annoyances:
       | 
       | 1. The font is blurry (upd: solved by increasing "SDL2 Screen
       | Scale Factor Base DPI" in settings)
       | 
       | 2. ~/Pharo/images is being created even though I changed all
       | paths in settings
       | 
       | Anyone knows how to solve this?
        
       ___________________________________________________________________
       (page generated 2023-05-11 23:01 UTC)