News for hackers. Stuff that matters.
Re:Pharo MOOC by jayonsoftware on Wednesday April 04, 2018 @11:33AM (#16755681)
Even if you are not going to develop any major apps in Smalltalk, its a language worth learning. Teaches you a lot about OO programming
Re:Pharo MOOC by btilly on Wednesday April 04, 2018 @02:18PM (#16757407)
I agree that it is a language worth understanding. However the OO model of Ruby is identical. Without the drawbacks of being an image based language. So I'd suggest learning that instead.

For those who don't know what I am talking about, there are several families of languages where the state of your program is kept within an image. The upside of this is that you can integrate everything together in a really neat way and build neat tooling with introspection. The downside is that you have just made what's going on not visible from the filesystem, and have to replace all of the tooling that you're used to. You know, things like your favorite editor, command line programs, source control...

If you switch languages regularly (which most developers do in my experience), being able to use your favorite toolset everywhere turns out to be more important than being able to build an ideal toolset for only one language.

Re:Pharo MOOC by Lordarminius on Wednesday April 04, 2018 @02:51PM (#16757717)
> I agree that it is a language worth understanding. However the OO model of Ruby is identical....

I independently arrived at the same conclusion. The main problem with Pharo is the esoteric tooling; life is too short to struggle with tools.

That said, I consider Smalltalk, Objects and Design by Chamond Liu to be one of the best books I ever read on the subject of object oriented programming. Heartily recommended.

Re:Pharo MOOC by ben-coman on Saturday April 07, 2018 @06:43PM (#16783463)
I guess it depends on the taste of the developer. I really enjoy seeing newcomers posting in the mail list saying that Pharo makes "programming fun again".

But Pharo is all about the deep integration of the tooling. Its what facilitates such a tight Code->Compile->Run->Debug cycle. It can take a while for the penny to drop. If you do a drive-by taste of Pharo you probably didn't get chance to really get into the flow.

Some say... "The only programming languages worth learning are those that change the way you think about programming." And Pharo/Smalltalk tooling does that.

Re:Pharo MOOC by philippeback on Thursday April 05, 2018 @08:40AM (#16764275)
Tooling appears exotical because you are not using it day in day out.

And I actually find things like Spotter, Code Rewriter, GTInspector and Calypso pretty neat.

IntelliJ is not simpler and is closed source. It is neat, true. We even use its icons in Pharo.

Re:Pharo MOOC by btilly on Thursday April 05, 2018 @12:21PM (#16766278)
Tooling appears exotical because you are not using it day in day out.

And that's the problem. The tools are different. They require learning. And once learned, they are only useful for dealing with one language. And that is a language that nobody around me uses.

The result is a barrier to entry. A barrier to entry of a type that I'm not bothering with again unless I have a good reason to.

Furthermore the small size of the community means that I am unlikely to get to choose tools that fit me. I'll be stuck with whatever the personal preferences were of the people who wrote the tooling. Even if I like them, my neighbor probably won't.

You bring up IntelliJ. However I don't use IntelliJ. I prefer vi and command lines. The guy sitting across from me likes Visual Studio. I couldn't tell you how many other IDEs are in use by programmers in the same space as me. No single toolset is going to be to all of our tastes. And it doesn't matter with a filesystem based language, because we are each free to use whatever we want.

Re:Pharo MOOC by flubert on Thursday April 05, 2018 @01:13PM (#16766785)
> I'll be stuck with whatever the personal preferences were of the people who wrote the tooling.

User experience is one area where Smalltalk seems like it could use some focus on. Compare the screenshot of the system browser on pharo.org compared to figure 17.1 (page 293, PDF page 315) of the "blue book":

http://sdmeta.gforge.inria.fr/FreeBooks/BlueBook/Bluebook.pd...

Apparently that layout was perfected in 1980. Has anyone ever experimented with showing more than one method at a time in a window? And taking up less screen real estate with the class hierarchy? Seems ripe for some new thinking here.

Re:Pharo MOOC by philippeback on Thursday April 05, 2018 @04:13PM (#16768457)
I am also using Tmux and Vi an awful lot.

And working on a fuse thing that exposes my running image as a filesystem so that I can such tools as well.

But saying that the tools are different and you cannot be bothered to use them? Look, Visual Studio is a monster beast, with tons and tons of features, including Azure ones. It takes a serious while to master.

And vim also takes a serious while to use well. Especially when we use a couple of plugins.

An engineer knows the tools. Then a specialist masters them. The master makes them. Or changes them.

Pharo allows one to do that. Without strings attached.

Re:Pharo MOOC by xcvbxzas on Thursday April 05, 2018 @06:09PM (#16769220)
I believe the point the parent is trying to make is that when you spend the time to learn Visual Studio, vim, etc. you can transfer that knowledge to multiple languages. With Pharo those tools are limited to, well, Pharo.

The benefits of learning a particular tool are essentially proportional to how often you use that tool. The greater flexibility of other tools such as vim means that the cost of learning it can be amortized over essentially as many projects as you wish. The costs for learning Pharo tooling are only spread over as many Pharo projects you do. If you don't believe you'll be doing all that much in Pharo, it makes it a fairly daunting proposition to invest that time.

Re:Pharo MOOC by dragonwriter on Wednesday April 04, 2018 @03:12PM (#16757916)
> The downside is that you have just made what's going on not visible from the filesystem, and have to replace all of the tooling that you're used to. You know, things like your favorite editor, command line programs, source control...

While Pharo (and Squeak, etc.) have baked in editors and source control, Pharo has integrating with general tools as a design goal. It includes an integrated Git client and can load packages from or move them into a Git repository.

Re:Pharo MOOC by btilly on Wednesday April 04, 2018 @05:20PM (#16759230)
Per https://www.peteruhnak.com/blog/2016/07/25/how-to-use-git-an... as of 2 years ago Pharo did not have an established convenient way to integrate with git. Per https://github.com/pharo-vcs/iceberg the current best solution for that is still an experimental tool, so you have to be careful. Being able to integrate with other version control systems is still off in the future.

Integrating with general tools may be a design goal. Yet it clearly isn't fully there. A filesystem based language does better without even trying.

Re:Pharo MOOC by philippeback on Thursday April 05, 2018 @08:44AM (#16764315)
Not it doesn't.

Iceberg is breaking new ground compared o Kraken/SourceTree etc.

Pharo took the risk of integrating git support in the tools.

It takes a few iterations.

So what? Either one is a user or one is inventing new stuff. When was it you wrote a full wrapper for libgit? And made it available to any app? Yes, any Pharo app now has the ability to use libgit features. Awesome and opening quite some doors.

Re:Pharo MOOC by martin-t on Thursday April 05, 2018 @02:42PM (#16767765)
Pharo devs are not inventing new stuff, they're reimplementing existing stuff, poorly, in their favorite language because said language is incapable of interfacing with the existing mature tools.

Whoever designed the GUI also probably never used even git, or they couldn't stand their own tool. From the top of my head: 1) it shows all commits in a linear list (with broken unicode) completely ignoring branches 2) deletions are green and additions red.

Re:Pharo MOOC by btilly on Thursday April 05, 2018 @01:06PM (#16766726)
Congratulations. You came up with a reason to do a whole bunch of work that you found fun. Work of a kind that is entirely unneeded in other languages. Do you want a cookie?

All developers are users of someone else's software and knowledge. I'm OK with that, and happy to not reinvent perfectly good wheels. You go ahead and enjoy wrapping libgit.

My preference is to understand how to use data to help businesses. For example a decade ago I gave a tutorial on A/B testing which resulted in multiple companies adding many millions to their own bottom line.

It is a big world. There is room for all kinds.

Re:Pharo MOOC by philippeback on Thursday April 05, 2018 @05:39PM (#16768998)
I am busy with serious size Hadoop clusters as well, using a gazillion of technologies (including some Pharo on YARN mind you).

Nobody forces one to use Pharo and I actually find it indeed useful to have an FFI binding to libgit.

Pharo has had git support for years with git filetree. There is no urgent need for a built in tool. Iceberg is an integrated tool which is not even yet released for the version of Pharo it is intended for (7).

The project is useful to test drive UFFI significantly. As such it is a really good test bed for all kinds 7of data structures and callbacks etc. Coupled with the 64 bit VM + image it is even more so.

I am in the Pharo ecosystem as a long play. Expedient solutions are plentiful. But they all lack this QWAN in Pharo that makes it enjoyable to me.

I am interested in understanding how things do work. Pharo allows me to do it in a way that suits me.

Given the count of "me" above, it is clear that I follow my own path and I couldn't care less about popularity.

Truth be told, I find it somewhat useful to have a harder to approach community. It keeps the signal to npise ratio at an acceptable level.

Re:Pharo MOOC by philippeback on Thursday April 05, 2018 @05:42PM (#16769020)
There is room for all kinds indeed.

Yes, I'd like a cookie. But not for libgit, but libstrophe. It was easier (and clean!) to bind with Pharo than with a lot of other technologies. The ability to pin objects is also very usable.

Re:Pharo MOOC by coldtea on Wednesday April 04, 2018 @02:59PM (#16757791)
>I agree that it is a language worth understanding. However the OO model of Ruby is identical.

Smalltalk is much more than the OO model.

Re:Pharo MOOC by btilly on Wednesday April 04, 2018 @05:03PM (#16759054)
And yet if your goal is to learn about OO programming from the concepts of its OO model, then either language is good and Ruby is more convenient.

On the other hand if your intent is to learn about its collection classes, what MVC looked like in its original inspiration, and so on, then you should learn Smalltalk.

There is more to learn than any of us has time for. If you know what you hope to get out of learning something like X, then you should pick the most convenient X around to learn it.

Re:Pharo MOOC by pjmlp on Wednesday April 04, 2018 @04:48PM (#16758900)
Ruby the language, fails quite short of Smalltalk full graphical experience.
Re:Pharo MOOC by shawnz on Wednesday April 04, 2018 @06:12PM (#16759733)
Well, it's not an IDE, so it's not fair to compare it to Pharo which is trying to be both a runtime environment and an IDE. If anything, it's an advantage that Ruby allows you to make choices about the development environment you use.
Re:Pharo MOOC by FractalLP on Wednesday April 04, 2018 @07:39PM (#16760377)
I think it's fair to compare the language+environment which is the only thing that practically matters. Smalltalk has a really nice IDE and fast VM. Ruby doesn't have a native IDE, but does well with things like Vim & Notepad++. Ruby has a lot more modules and Rails. I wouldn't consider Ruby to be very fast being one of the slowest popular languages out there.
Re:Pharo MOOC by ben-coman on Thursday April 05, 2018 @11:41PM (#16770725)
Rubyists might know of Ruby books written by Avdi Grimm, who recorded his early experience with Pharo... https://www.youtube.com/watch?v=HOuZyOKa91o
Re:Pharo MOOC by rjblackman on Wednesday April 04, 2018 @09:30PM (#16761003)
I'd extend that by saying it teaches you what OO was meant to be.. It also shows you a lot of what is missing in modern environments. Imagine being able to run code and create any objects via a kind of command line and while any program is running be able to change it on the fly for experimentation/exploration purposes! I wish .net had something like this!
Re:Pharo MOOC by shawnz on Wednesday April 04, 2018 @11:12PM (#16761485)
VS does have that functionality, although it was only added in VS 2015:

https://johnkoerner.com/csharp/the-c-interactive-window-in-v...

Previously there was the Immediate window but it is limited:

https://msdn.microsoft.com/en-us/library/f177hahy%28v=vs.110...

Re:Pharo MOOC by rjblackman on Thursday April 05, 2018 @12:49AM (#16761863)
unfortunately, it's not really the same as with proper message passing/late binding like in smalltalk.
Re:Pharo MOOC by shawnz on Thursday April 05, 2018 @10:28AM (#16765177)
You could use C# dynamic objects to achieve late binding.
Re:Pharo MOOC by ben-coman on Saturday April 07, 2018 @10:14PM (#16784211)
I'm not familiar with these. Are the properties and methods that dynamically add visible in the code editor?

It seems C# work by subclassing the DynamicObject class. What about dynamically extending all the other existing C# classes?

What if I subclassed a C# Queue as MyQueue and then while my days long simulation was running I wanted add an instance variable 'trackCount' to all existing MyQueue instances? In Pharo all you do is this...

Queue subclass: #MyQueue instanceVariableNames: ’trackCount’ classVariableNames: ’’ poolDictionaries: ’’ category: ’Example’

and program keeps running, this definition is updated in the editor.

Re:Pharo MOOC by rjblackman on Sunday April 08, 2018 @08:22AM (#16785814)
of course you could also build a whole smalltalk environment in C# also, but that really is not the point.
Re:Pharo MOOC by philippeback on Thursday April 05, 2018 @05:44PM (#16769030)
Try a become: in C#
Re:Pharo MOOC by ben-coman on Saturday April 07, 2018 @10:20PM (#16784239)
Gilad Bracha (co-author of the Java Language Specification) on "#become:" in Smalltalk (https://gbracha.blogspot.com.au/2009/07/miracle-of-become.ht...)

btw, see the section here on "Blub Paradox" (http://www.paulgraham.com/avg.html ) which means I'm not really competent to comment of C#'s dynamic objects.

Re:Pharo MOOC by daveFNbuck on Wednesday April 04, 2018 @11:54AM (#16755912)
Isn't Pharo a different language from Smalltalk?
Re:Pharo MOOC by monocasa on Wednesday April 04, 2018 @11:59AM (#16755975)
That's sort of like asking if Scheme is a different language than Lisp.
Re:Pharo MOOC by sea6ear on Wednesday April 04, 2018 @02:43PM (#16757648)
Or maybe like asking if Racket is a different language than Scheme.
Re:Pharo MOOC by Volt on Thursday April 05, 2018 @09:13PM (#16770191)
So the answer is "yes".
Re:Pharo MOOC by FractalLP on Wednesday April 04, 2018 @01:00PM (#16756635)
They are ok with evolving past the Smalltalk-80 standard. Think of it as a Smalltalk language + new things if they are beneficial. Cool project for sure.
Re:Pharo MOOC by dragonwriter on Wednesday April 04, 2018 @02:56PM (#16757770)
Maybe; it's part of the OpenSmalltalk Initiative, and uses the same VM as Squeak, of which it started as a fork; whether it's a Smalltalk-descended language or a Smalltalk dialect is a matter of exactly where you draw the line.
Re:Pharo MOOC by leoc on Wednesday April 04, 2018 @12:01PM (#16755991)
It started out as a fork of Squeak; IDK how much it has diverged since then.
Re:Pharo MOOC by agumonkey on Wednesday April 04, 2018 @12:56PM (#16756584)
Don't know either, but the pharo MOOC I did a few years back only mentioned differences once or twice. I left with the feeling that beside a few, maybe syntax tweaks and new libs, it's 'same' enough.
Re:Pharo MOOC by hota_mazi on Wednesday April 04, 2018 @03:49PM (#16758320)
Smalltalk teaches no OOP that cannot be learned by more modern languages, starting with Ruby (which is already pretty old itself). And at least, these other languages don't impose on you broken IDE's that crash all the time and corrupt your work.

I find little point in learning Smalltalk today, except maybe read a ten minute article to check out its odd syntax.

Re:Pharo MOOC by pjmlp on Wednesday April 04, 2018 @04:50PM (#16758922)
Ruby the language still doesn't have the development experience of 90's Smalltalk environments, not even JIT compilers that work half as fast as Smalltalk ones.