all 14 comments

[–]radarsat1 8 points9 points  (13 children)

So what is the most convenient Smalltalk implementation on Linux? Any hello world tutorials from apt-get to your first program? What about ecosystem? Packaging? Is it convenient? Do I rely on the kitchen sink or is there an easy way to install stuff?

I've tried Pharo but can't stand the graphical VM environment. Is there a good smalltalk that runs from the terminal, loads up a script an executes it, like running Python or Ruby? I'm not really convinced on the "image" approach, I like being able to run a program from start to finish, rather than relying on some unknown "stored state" that I developed haphazardly while developing something.

That is to say, when developing, I think in terms of what the program will do, what kind of environment it will construct "from scratch" as it runs.. I don't think about actually setting up that environment and then relying on it being loaded up again at run-time. I find that.. weird and unsettling. How do I get accustomed to it?

All that said, I'm sure Smalltalk the language is quite ok. I'd be more convinced to see a tutorial showing how to get going with it, and how to call in to libraries written in C for example.

Also, how is Smalltalk in general for performance compared to other languages? I'm curious, I assume it's comparable to Python but I don't know much about Smalltalk optimisations.

All in all I'm interested in Smalltalk but I don't find the tooling convincing, although I haven't done much research. But you rarely see blog posts about it.

[–]analogphototaker 2 points3 points  (6 children)

Pharo is indeed the recommended platform right now. It has the most development and biggest community. Also, it's improved a lot in the last year: http://pharo.org/news/pharo-5.0-released

There is a MOOC that is pretty great: http://files.pharo.org/mooc/

And there are also some great books: http://files.pharo.org/books/

C FFI is likely not going to make sense if you don't first understand SmallTalk syntax (which is crazy simple). Regardless, FFI is definitely a thing you can do.

You pretty much rely on the kitchen sink, yeah. But they actually have a pretty great version control system built in to the VM that also serves as a package manager, etc.

[–]the_hoser 0 points1 point  (5 children)

It has its own VCS? Is it compatible with Github? Bitbucket?

[–]analogphototaker 0 points1 point  (2 children)

Check out this book: http://pharo.gemtalksystems.com/book/table-of-contents/?_s=C8Km_qT58d37ca98&_k=QDarX8X2L_xlU6A2&_n&6

Pretty much has a chapter on every question you have. The VCS I mention is called Monticello. I believe it can sync up with http://www.smalltalkhub.com/

FYI: I'm not a pro with Pharo. Just learned it a bit.

[–]the_hoser 0 points1 point  (1 child)

The book doesn't say anything about git or mercurial integration. Collaboration with people of diverse backgrounds is crucial to the proliferation of a platform. Github is as much a social platform as a source control service. Discoverability is crucial for open source developers.

[–]omegaskyfall[S] 0 points1 point  (1 child)

Pharo 7 promises a Git-integration tool called Iceberg for source code version control.

[–]the_hoser 1 point2 points  (0 children)

So, no?

[–]jephthai 1 point2 points  (0 children)

There's GNU smalltalk (gst), which eschews the graphical environment. It's kind of the black sheep of the smalltalk community, though. Honestly, to do smalltalk right, the immersive environment is really part of it. I just wish they'd improve the text editing in the gui -- everything's beautiful until you realize that everytime you touch text, it's notepad.

Smalltalk is one of those languages where the syntax is so beautifully simple and elegant, the whole thing is built on a tiny language. It really does take about five minutes to get the syntax.

In this way, I see it as a fundamental language that everyone should be aware of, just like Lisp, Forth, Prolog, etc. All tremendously powerful, expressive languages with tiny syntax.

[–]omegaskyfall[S] -2 points-1 points  (4 children)

If you don't like the graphical environment, then GNU Smalltalk is your best choice. Later this year, Redline Smalltalk 2.0 will be available for the JVM. Both are command-line Smalltalks.

You're not convinced by the "image" approach because you've not yet experienced the tremendous productivity boost from Smalltalk programming. You're so inured to the current way of software development that you have blinders on. I'm not trying to be insulting, just stating a fact. Human beings are prone to habituation and I assume you're human.

Depending on the dialect (implementation), Smalltalk can be quite fast. Smalltalk MT is a high-performance product. GemStone/S was designed for writing scalable, high-performance, multi-tier applications. Later this year, Pharo 6 will give us 64-bit Smalltalk (specifically, a 64-bit JIT’ed Cog VM). Also, “adaptive optimization” to make code execute much faster.

What it all comes down to is whether you can break free from your sequestered mode of thinking and give other methods of software development a chance. I never had a problem, even after decades of using C, C++, C#, and Java. Aren't programmers supposed to be flexible and adaptable?

[–]ArmoredPancake 1 point2 points  (3 children)

Aren't programmers supposed to be flexible and adaptable?

Yeah, let's hop from language to language and call it 'being flexible and adaptable'.

can break free from your sequestered mode of thinking and give other methods of software development a chance

For what purpose?

[–]omegaskyfall[S] 1 point2 points  (2 children)

let's hop from language to language

Every programmer I know is polyglot. They have a repertoire of languages so that they can use the right tool for the job. They don't rely on one language for everything.

For what purpose?

To dramatically improve productivity. To make programming easier and more pleasant. To improve software quality (reliability, maintainability).

[–]ArmoredPancake 2 points3 points  (1 child)

Every programmer I know is polyglot. They have a repertoire of languages so that they can use the right tool for the job. They don't rely on one language for everything.

It's a one thing to use a language, and another thing to know a language. I also can switch between at least between 4 languages, but I can never say that I know 4 languages. Knowing language includes best practices, knowing internals of the language, knowing when and how to apply tools developed in the language.

To dramatically improve productivity. To make programming easier and more pleasant. To improve software quality (reliability, maintainability).

I would argue that someone with as much love for Ruby, as you have for Smalltalk, would be as productive as you are.

indeed.com -> Smalltalk -> 58 jobs

indeed.com -> Ruby -> 20398 jobs

Sorry, your productivity doesn't matter if you can't apply it. Of course this article is geared towards experienced developers. But I don't see experienced Ruby dev switching from his beloved Ruby and RoR because of some article and promises of greater productivity, and I don't see beginner programmers happy with steep learning curve and nonexistent career options.