Live data from Hacker News

Pharo, the Modern Smalltalk

medium.com

111–120 of 178 posts

Re: Pharo, the Modern Smalltalk

#111
post #100

Earlier quoted context omitted.

This may not be immediately apparent, but I discovered that Smalltalk did not fit into the 'programming language' concepts in my head. I think of a typical bytecode VM language as [source code] -> [interpreter] -> [running program] Instead Smalltalk is more like [running program] + [auto persistence] + [editing tools] So you don't modify large gobs of source code files, you modify the running program from within - ak…

So, how do you distribute the program you've just written? That's the issue I have with image based languages.

Image + VM is the short answer.

Slightly longer discussion here: https://pharo.fogbugz.com/default.asp?W78

Really, not much different than any interpreted language, where you do source + runtime; the image just replaces the source.

Re: Pharo, the Modern Smalltalk

#112

Is there a snippet of example code to look at? I browsed the pharo.org website, but couldn't find an example to give me a taste. I even tried googling "pharo example" and with a brief look at the results didn't find an example. Today, there are hundreds of programming languages competing for attention. It is in your interest to put an example front and center of why one should spend time looking into yet another prog…

I love this site for quick syntax intros: https://learnxinyminutes.com/docs/smalltalk/

Re: Pharo, the Modern Smalltalk

#113
post #38

Earlier quoted context omitted.

That image environment sounds scary to me. I used to do a lot of hardware development, and what I love most about software is that you can always restart from the clean plate (by restarting the program) and/or undo your previous work (with version control). From what I understand, none of this applies to Smalltalk. You always modify code on the fly, so you may end up with properties which exists, but no current code…

That can happen, but typically you're not keeping state around for huge periods of time (though you can if you want ), it's just a convenience while you rapidly iterate on the design of the code. Once you've got code that seems to hang together well, it's time to start thinking about what the right way to instantiate the objects, to consistently bring them to a correct state. Unit tests are useful for this, and with…

All this works perfectly well in Common Lisp too.

Re: Pharo, the Modern Smalltalk

#114
post #85
post #61

Earlier quoted context omitted.

I get what you mean about that for Lisp (although, if I'm not mistaken, early LISPs were more like SBCL than Allegro or Symbolics in turns of user environment), but what Scheme version ever offered such a rich environment as the Lisp or Smalltalk examples mentioned above?

Dr. Scheme, nowadays known as Raket.

Nitpick, but:

PLT Scheme (language) → Racket

DrScheme (environment) → DrRacket

Re: Pharo, the Modern Smalltalk

#115
post #91

Earlier quoted context omitted.

I've always found the 'image' environment to be far more interesting than the language of Smalltalk itself. If you do find just code snippets, you're missing out on what I, at least, see as the most significant feature of the whole thing. The way it goes about defining the code is clunky, but the overall structure of 'images' and the workflow involved with them is fascinating. I could easily see something similar bei…

Opposite feeling here - mutable/persistent images kept me away from Smalltalk.

Because you have had experience with them, or because you haven't had experience with them?

Re: Pharo, the Modern Smalltalk

#116

Smalltalk’s use of live coding is easy and elegant; not even Common Lisp, Forth, nor Java (hot swapping) can lay claim to that. Does anyone understand what this is talking about? I may not understand exactly what is meant by "live coding", but I think I do it in Common Lisp (via SLIME) all the time. How is it better in Smalltalk?

This is certainly an exaggeration, but I think they are referring to the integration between the language and UI elements, which can be easily changed live. The difference is that the Smalltalk UI was designed so that you can swap the code behind it during a development session and save the result in an image file, while other toolkits use a more traditional build-and-display approach.

Re: Pharo, the Modern Smalltalk

#117

Earlier quoted context omitted.

Lots of other languages work/worked that way. System images were a common feature of many Lisp systems and some Forth systems in the 1980s.

The image is just one reason why compiling an SBCL executable results in such a large file. It has state as well...or so I've read.

[deleted]

Re: Pharo, the Modern Smalltalk

#118
post #79

Earlier quoted context omitted.

This may not be immediately apparent, but I discovered that Smalltalk did not fit into the 'programming language' concepts in my head. I think of a typical bytecode VM language as [source code] -> [interpreter] -> [running program] Instead Smalltalk is more like [running program] + [auto persistence] + [editing tools] So you don't modify large gobs of source code files, you modify the running program from within - ak…

> [running program] + [auto persistence] + [editing tools] How do you use TDD when coding like this?

See "Chapter 9 SUnit" in [pdf] "Pharo by Example"

http://files.pharo.org/books-pdfs/updated-pharo-by-example/2...

There are pictures :-)

Re: Pharo, the Modern Smalltalk

#119

Earlier quoted context omitted.

Well, I'll be that guy, I don't care what inspired Bjarne, Simula created the idea of an object, but it wasn't until Smalltalk that object orientation became a paradigm: Smalltalk created OO, not Simula. Object != Object Orientation, Simula was and is a procedural language with objects bolted on after the fact. C# is a Java clone so I need only address your Java misstatement, Java was far more influenced by Objective…

If you look at the actual semantics of classes and objects in C++ and Java, they're arguably closer to Simula than they are to Smalltalk. In C++, this is even more evident by the fact that even some of the syntax is reused, such as "virtual" (although in Simula it originally meant what we today call "abstract"). The difference between the two is that Smalltalk methods semantics are message passing . In Simula, method…

I just provided direct quotes from one of the creators of Java, sorry but you're simply wrong to argue you know better what inspired them than they did. Java is a decedent of Smalltalk via Objective C, that is simply a fact. It's well known and accepted they took syntax from C++ as deliberate attempt to entice C++ programmers into Java, that is not evidence they didn't base their inspiration on Smalltalk.

And I quote..

> When I left Sun to go to NeXT, I thought Objective-C was the coolest thing since sliced bread, and I hated C++. So, naturally when I stayed to start the eventually) Java project, Obj-C had a big influence. James Gosling, being much older than I was, he had lots of experience with SmallTalk and Simula68, which we also borrowed from liberally.

Re: Pharo, the Modern Smalltalk

#120
post #100

Earlier quoted context omitted.

This may not be immediately apparent, but I discovered that Smalltalk did not fit into the 'programming language' concepts in my head. I think of a typical bytecode VM language as [source code] -> [interpreter] -> [running program] Instead Smalltalk is more like [running program] + [auto persistence] + [editing tools] So you don't modify large gobs of source code files, you modify the running program from within - ak…

So, how do you distribute the program you've just written? That's the issue I have with image based languages.

It varies from one Smalltalk language implementation to another.

For MS Windows based Dolphin Smalltalk -- "The Lagoon Deployment Wizard strips out redundant components from your image and shrinks your code down to a tight, single click EXE file. Alternatively, you can choose to additively compose your application by building it up from the raw Dolphin boot image."

Post reply on HN