Live data from Hacker News

Pharo 12

pharo.org

51–60 of 116 posts

Re: Pharo 12

#51
Many comments in the vein that pharo is weird and different from what they're used to. I'd say programming is such a young field programmers should dedicate time to try out the weird stuff that they aren't used to, opportunities to rewire your brain for better.

Let's not get stuck in a local minima on how to do programming. There could be better ways not yet popular enough. Smalltalk came out of an environment of innovations that were ahead of their time.

EDIT: while doing the Pharo mooc, I was able to create a DSL for what I understand to be D&D dice representation without using special metaprogramming syntax of the language or parsing and tokenizing strings. Just plain old OOP of the Smalltalk/Pharo flavour. This were just basics btw

Re: Pharo 12

#52
post #48
post #33

Earlier quoted context omitted.

I don't think that's necessarily what the OP is saying. I agree with OP. Finding documentation to learn to use this absolutely obscure system is near impossible. I seen an announcement about a Pharo release a couple years ago and was like "huh, that sounds cool." Proceded to download it and had no clue about anything. It is not at all like any other IDE. Learning it might not be hard, but when the IDE is absolutely d…

When it starts up there's a welcome-window, in it or like a few clicks down there's a tutorial called ProfStef that gives a quick tour through some data types and ways to execute code. I think that's a pretty neat introduction to the very basic basics.

Interesting, I'll have to take a look at that when I have some time. I may have missed that the first time around. Thanks!

Re: Pharo 12

#53
post #5

Is not calling it a Smalltalk implementation still a marketing decision, or has Pharo diverged sufficiently from Smalltalk-80 to become incompatible?

+Traits, +Slots, different class definition syntax and its processing, different file API, full block closures, different source file syntax, ByteArray literals, different comments syntax, many differences in the standard and UI library, etc. No, Pharo is not Smalltalk-80.

I think incompatible Smalltalk implementations were one of the bigger barriers to Smalltalk adoption. In contrast, Java standard libraries have been a huge benefit.

Re: Pharo 12

#54

How does Pharo compare to Squeak? I'm interested in doing more with Smalltalks but Pharo just does not play nice on Fedora 40 with Wayland right now

Cuis [1] is a simplified fork of Squeak, trying to make it more closely resemble the original Smalltalk-80 (while using a custom version of Morphic). Squeak itself initially tried to not be bound by Smalltalk-80 heritage. Now, it focuses on preserving of the experiments that Alan Kay, Dan Ingalls, and others did, being very conservative in this regard. Pharo forked to have a system that can actually evolve.

Pharo should generally work on Wayland, so there will be more things going on, probably.

[1] https://cuis.st/

Re: Pharo 12

#55
post #51

Many comments in the vein that pharo is weird and different from what they're used to. I'd say programming is such a young field programmers should dedicate time to try out the weird stuff that they aren't used to, opportunities to rewire your brain for better. Let's not get stuck in a local minima on how to do programming. There could be better ways not yet popular enough. Smalltalk came out of an environment of inn…

Smalltalk had a moment at the transition from green screen to PC's, fumbled the everything is a string internet, and never showed-up for the multicore + GPU party.

Meanwhile the nasty statically type checked languages lowered the pain level with non-nullable and type inference for local vars.

Re: Pharo 12

#56
post #7

Weirdest programming language/IDE/Runtime/everything I've ever attempted learning. The sheer oddity + lack of real world example code floating around made it feel impenetrable. To put it into perspective, picking up Rust and writing entry level but real world applications was a walk in the park after coming to terms with the ownership system.

Squeak / Pharo are alternate timeline technologies. Maybe the one where Betamax won and Al Gore read the intelligence briefing. Their lineage goes back to the Alto when people were imagining what interacting with computers even meant, and what metaphors from the real world make sense to apply to collections of bytes. Rust is radical in some ways, but it's fundamentally a creature of the vaguely Unixy paradigm we all…

> Their lineage goes back to the Alto when people were imagining what interacting with computers even meant, and what metaphors from the real world make sense to apply to collections of bytes.

I would argue that this lineage of computing isn't as arcane and out-of-reach as people might think.

Much of the "obvious" promise of Smalltalk / object-based runtime environments — specifically, all the UI stuff it enabled — was too expensive / high-overhead initially, for it to have much penetration in the microcomputer or the mainframe/batch processing space; thus relegating those specific ideas to academic experiments in workstation productivity.

But fancy object-based UIs weren't the whole of what this lineage of computing was about. Microcomputer and mainframe systems were built as descendants of this lineage, repeatedly, and many of them were even in common use; but it might be harder to recognize them as such. It's the less-obvious, more low-level/internal architectural things they inherited.

If you ignore the specific assumption of a UI or "strict" OOP, and instead just consider this lineage as anything fitting these criteria:

1. systems that booted into a live runtime bytecode VM, usually de-hibernating the VM state from a memory image;

2. and then exposing a shell that was more of a REPL than a command language, allowing interoperation with the data that defined the state of the VM on a high level,

3. where the "operating system" within the runtime is fully exposed to you (rather than being a black box with a whitelisted FFI API); but where each data structure within that "operating system" is protected due to the common runtime of the OS + userland, enforcing ADT-defintion-time abstraction layers in the way it allows clients (including the REPL) to interact with any given object/ADT...

...then you could say that all of the following are part of the lineage:

• BASIC — especially the BASICs on microcomputers that booted to BASIC, or had BASIC on ROM, and never ran DOS (published software for these computers, was usually just precompiled BASIC bytecode!)

• Object Pascal / Delphi

• Emacs

• most SQL databases, but especially Ingress

• MOOs (object-oriented MUDs)

• Plan 9, despite its Unix roots. (Especially applicable insofar as you could consider "a runtime and OS as toolkit, and applications as LEGO with clear exposed seams that the user can pick apart and remix" an additional criterion.)

You can usually recognize these systems, because there's no way to get anything like a machine-code monitor / debugger on them; instead, the runtime itself usually exposes bytecode-level (or interpreter-level) monitoring / debugging, in a way that doesn't allow you to break the runtime's assumptions through it.

Re: Pharo 12

#57
post #51

Many comments in the vein that pharo is weird and different from what they're used to. I'd say programming is such a young field programmers should dedicate time to try out the weird stuff that they aren't used to, opportunities to rewire your brain for better. Let's not get stuck in a local minima on how to do programming. There could be better ways not yet popular enough. Smalltalk came out of an environment of inn…

I don't like Pharo because they changed it too radically from Squeak, which I DO like very much.

Re: Pharo 12

#58
post #19

Earlier quoted context omitted.

Syntax is the easy part. The real difficulty is in trying to make sense of the whole ecosystem, including the strange runtime-IDE-hybrid approach.

Yes last time I checked they had their own versioning system as well... it's one thing to learn a language but having to learn a whole new set of tools put me off in the end. I guess I can see the argument that the Smalltalk files are not plain text but rather images (or something), but having to basically download a second OS within the OS just to write Hello World was off putting. I realise that that's also can mak…

> to learn a whole new set of tools

The tools are how we find functionality that can be re-used and re-purposed to do what we need. A lot of exploring and reading existing stuff, less writing new stuff.

> Smalltalk files are not plain text but rather images (or something)

Mostly Smalltalk files are plain text files!

There's a plain text log file with a replayable record of what you've been doing. There's a sources file with the source code. There are plain text file outs and change sets.

There's the VM like the JVM — not a plain text file.

There's the image, a cache of byte code (like Java .class files, Python .pyc files) and application state — not a plain text file.

With a previous Pharo version:

    $ bin/pharo --headless Pharo10-SNAPSHOT-64bit-502addc.image hello.st
pharo is the VM.

Pharo10-SNAPSHOT-64bit-502addc.image is the image.

hello.st is a plain text file.

    $ cat hello.st
    Stdio stdout 
        nextPutAll: 'hello world'; 
        nextPut: Character lf.!
    SmalltalkImage current snapshot: false andQuit: true!

Re: Pharo 12

#59
post #56

Earlier quoted context omitted.

Squeak / Pharo are alternate timeline technologies. Maybe the one where Betamax won and Al Gore read the intelligence briefing. Their lineage goes back to the Alto when people were imagining what interacting with computers even meant, and what metaphors from the real world make sense to apply to collections of bytes. Rust is radical in some ways, but it's fundamentally a creature of the vaguely Unixy paradigm we all…

> Their lineage goes back to the Alto when people were imagining what interacting with computers even meant, and what metaphors from the real world make sense to apply to collections of bytes. I would argue that this lineage of computing isn't as arcane and out-of-reach as people might think. Much of the "obvious" promise of Smalltalk / object-based runtime environments — specifically, all the UI stuff it enabled — w…

Don't threaten me with a good time!

And I still to this day enjoy combining your #3 (emacs) with your #5 (MOO) via e.g. https://github.com/toddsundsted/rmoo

You might appreciate my project: https://github.com/rdaum/moor

(Though it's in a bit of a slow period because of Real Life(tm))

Re: Pharo 12

#60
post #40

Earlier quoted context omitted.

Pharo uses green threads https://www.pharo.org/features https://en.wikipedia.org/wiki/Green_thread

That feels very limiting. It's one thing to have a program run only on one core, but you're supposed to have your entire dev environment, including editor and debugger inside the VM. Won't that end up with the env freezing on compute heavy tasks?

Yes, you can lock the UI quite easily if you're not careful.
Post reply on HN