Live data from Hacker News

Pharo 9

pharo.org

111–120 of 232 posts

Re: Pharo 9

#111

Earlier quoted context omitted.

It has basically two reasons. First, it is to prevent conflicts like: "Pharo is Smalltalk, look, it is written on its web page! How do dare you to change this? You are allowed to improve this if and only if all the other Smalltalk implementations do that too!" [exaggerating]. Pharo has many differences from standard Smalltalk (different File API, class definitions, traits, slots, small grammar changes...). The second…

Interesting, thank you. It still seems weird to me, though. I feel Smalltalk is mostly mentioned with positive connotations (as opposed to, say Cobol) and would guess more people have heard of Smalltalk than Pharo and it would help orientation. So I was assuming something nefarious :) Is there an overview of the differences somewhere?

I sometimes ask young programmers or people interested in old computers if they know Smalltalk and what they think of it. Try it too, you might be surprised at the results.

I don't know of any such list of differences, and I don't think it's of much use either.There is ANSI Smalltalk, which is very limited and most implementations go well beyond its scope, so you have to compare each implementation separately anyway.

Re: Pharo 9

#112

Are there any perceived shortcomings of Smalltalk that caused it not to take hold?

To really take advantage of its strengths, one needs to adopt to a completely new IDE and way of working, which puts a lot of people off.

On the other hand, if it were adopted to behave like all other environments, there would be objections again, "It's exactly the same as what I'm using now. So why switch?"

It should be added that Pharo addressed most of the small problems that the original Smalltalk had.

Re: Pharo 9

#113
post #53

This is really exciting - congratulations to the team and all the contributors. For those who already know "what smalltalk is all about" but are looking to get into Pharo and get something done, I recommend Pharo by Example and Deep into Pharo - between those two books, any developer should be able to figure out the workflows Pharo expects you to employ to be productive. My only advice would be to go in without preco…

> My only advice would be to go in without preconceived notions based on your years of using other languages. And the community is super helpful.

Honestly, if more people went into every language with that mindset, there'd be a lot less bickering and problem a lot more getting done in the world.

Re: Pharo 9

#114
post #70
post #41

Earlier quoted context omitted.

Personally I do not give a flying hoot about fashion. The only thing that matters to me is how one particular tool helps me to make what I want. I've never "bet" on any tech. To me those are just tools. Nothing to get excited about. Not trying to rate any particular language here.

I think OO has fallen out of fashion because there's a perception it can more easily lead to confusing code. While one can write confusing code using FP, it's not as easy to do.

I really do not care why is something in fashion / not. There are many software paradigms and one simply has to know which one is the best for particular situation. Trying to bring everything down to a "there can be only one" level is not very wise. Unfortunately for some reasons many programmers get really religious about language / framework / paradigm / whatever.

Also writing confusing code is incredibly easy in any language / paradigm. One just has to be inexperienced thinker.

Re: Pharo 9

#115

Are there any good general examples for Pharo in the wild? I've seen it a few times in some niche industries used as a replacement for Visual Basic or some proprietary 4GL stack.

An interesting project for devs is Glamorous Toolkit ( https://github.com/feenkcom/gtoolkit ) as an experiment/exploration of better dev tooling.

That IDE looks amazing, but it looks like I'd need to be proficient in Smalltalk to use it for any language. Watching the video on the site and it's impressive what the presenter is doing with live representations of code.

Re: Pharo 9

#116
post #4

Just a heads up the pharolauncher does not seem to be working for me, at least for pharo 9. Manual download of vm + image 64bit works but 32 bit does not. I have been making pharo raylib bindings and plan to make a video soon about why Smalltalk is an interesting choice for game development, it's a very 'live-coding' feel, i.e. you run your game while the editor is still live, you have free reign to at any time modif…

Yeah, I'm having trouble with Pharolauncher too on Windows. Trying to launch any image (downloaded in launcher, or manually) results is an error. e.g.

  Retry?
  Error downloading 'https://files.pharo.org/get-files/90/pharo-vm-Windows-X86_64-stable.zip'
  Cancel
  Retry
(The link is a 404, so that's something)

Edit: "Templates: Pharo image (stable)" works (32bit v8)

Re: Pharo 9

#117

Are there any perceived shortcomings of Smalltalk that caused it not to take hold?

So, Smalltalk is radically different from other programming languages, and has a very different vision for what it means to program.

Imagine that you download the binary for the programming language, and then you don't know what to do with it so you double click it or try to execute it from the shell, and you are very surprised to see a window open up, showing something looking like a blank desktop.

What is this? You go off to read some tutorials, they show you some ways to click inside the window and so forth.

It slowly dawns on you: this is your program. It is running as we speak. You are livecoding it, those button clicks are mutating it to do new things. The reason it's not doing anything is you haven't written it yet, and it's inviting you to, and when you do it'll recompile and show you the new thing instantly.

So your programming languages have always been designed like a circuit board or a 3D printing rig. Lots of files of blueprints, and then the robots will assemble it for you. Smalltalk is different, the mental model is more like clay or Lego, the thing is already built and running in front of you, what are you going to mold it into being?

This different vision means that usually you are editing text not from vim or emacs or VS Code, but from the editing widgets inside of the programming language. Those are part of the clay, and are editable too. Similarly, Smalltalk version control was typically exposed inside of the running system rather than outside.

My favorite example of this, the thing that is maybe the most outrageous if you're in a normal programming language, is Object.become().

This is a runtime dependency injector. “I want to instruct the programming language to take all of the traffic that it was sending to that object, and send it to me instead. I will become that object.” If you are used to Java where my constructor instantiates some dependency object and I save it to a private variable in this object, surely you see this as a safety violation. “What do you mean, that anybody who gets a reference to this object can tear it out of my private property and replace it with some other subclass? I made it private so I could control when that field gets set! How dare you?” It’s not, of course.

And this is available for every object in the system, which is why you can do this modeling by clay. They tried to write as much of Smalltalk as possible in Smalltalk and so you can just see the source code of the programming language in the source code browsers that you can call up from this window, and you can live edit any of that, and Smalltalk will compile your new object and swap it into where the built-in object was.

Put a different way, it's not a safety violation because this is how modern development with microservices and kubernetes actually works. Security is people's ability to surprise you, measured in dollars: part of this definition is, Smalltalk developers are not surprised by their ability to do this. Every “object” is thought of as a separate server with an API, and of course I will replace old servers with new ones and tell the load balancer to send traffic my way.

Re: Pharo 9

#118
post #107
post #105

Earlier quoted context omitted.

language developers consistently underestimate the importance of "Algol-like syntax" in allowing mainstream adoption.

Actually language developers consistently underestimate the importance of large corporations pushing languages no matter what developers think about them. Smalltalk lost the day IBM decided to join Sun. https://en.wikipedia.org/wiki/VisualAge > VisualAge Micro Edition, which supports development of embedded Java applications and cross system development, is a reimplementation of the IDE in Java. This version of Visua…

Java was free and open source and based on files rather than an image.

Re: Pharo 9

#119
post #94

Earlier quoted context omitted.

hm, does Pharo have native-looking GUI now?

Well, let's say "better" :-) There was a Smalltalk with a native Windows GUI (Dolphin) but the developers couldn't seem to make any money out if it.

"ParcPlace VisualWorks Smalltalk emulates all the supported operating systems GUIs in Smalltalk …

Digitalk (now ParcPlace) Visual Smalltalk uses more of the underlying operating system GUI, for better performance but at the price of only supporting a common subset of GUI controls …

IBM Smalltalk maps the Motif GUI widgets onto the underlying operating system widgets.This means you get a very rich kit to build your GUI, but the widgets operate at near native speed. You have the best of both worlds."

p87 "VisualAge for Smalltalk" 1997

http://www.redbooks.ibm.com/redbooks/4instantiations/sg24482...

aka What's the difference between Swing and SWT,

Re: Pharo 9

#120

Are there any good general examples for Pharo in the wild? I've seen it a few times in some niche industries used as a replacement for Visual Basic or some proprietary 4GL stack.

An interesting project for devs is Glamorous Toolkit ( https://github.com/feenkcom/gtoolkit ) as an experiment/exploration of better dev tooling.

And, frankly, this just reinforces my overall opinion of Pharo. Pharo is really amazing, they've been working on it, actively, forever, and make great strides.

But I'm convinced that Pharo is an amazing development environment and eco-system designed to make amazing development environments and eco-systems. All of the folks are putting work in to improving IDE to make a better IDE.

They're on their, what, fourth(?) iteration of the "widget" set that folks still find difficult to use and under documented. As recently as Pharo 7, when I last looked in any depth to the matter, their rendering model is straight out of the 80s. Vastly less capable than Java2D or Canvas in the browser. It's my understanding it's on their todo list, but I don't know how far they've advanced on this.

What focus there is on applications seems to mostly come from Seaside, the web server application framework.

If you look at their "success" page, most (not all) are web apps.

It would not surprise if someone, somewhere, is fusing Pharo and some Electron-esque rendering front end and using it to create a "desktop application".

And it's not unreasonable to say "Well, web is where it is, desktop is dead." There's certainly arguments in that direction.

In the end, it's moot. The devs have their itches to scratch. Nature of the game. Their itches are not my itches, and an "advanced" rendering model and modern widget set is something I want to use, not write. So, I'm at their mercy waiting for whenever that day may, if ever, come.

If was interested in writing IDEs, then perhaps Pharo would be a place for me. Instead I'm interested in writing hobby desktop apps, and it's not there yet.

Post reply on HN