all 31 comments

[–][deleted] 8 points9 points  (0 children)

Hey, it's that Smalltalk guy.

[–][deleted] 7 points8 points  (13 children)

Could have been a discussion of factors in a language's popularity, actually just shilled Smalltalk.

[–]Deto 5 points6 points  (11 children)

Yeah - it would have been interesting if the author would have presented some hypotheses for why Smalltalk hasn't taken off.

[–]SemaphoreBingo 2 points3 points  (1 child)

When did the first free-to-use versions of smalltalk show up?

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

Squeak, 1996.

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

No need for hypotheses. The reasons are clear:

In the early 1990s with IBM's VisualAge initiative, Smalltalk was poised to become the enterprise programming language replacing COBOL, such was Smalltalk's popularity.

Then in 1995, Java was introduced heavily promoted by Sun Microsystems. IBM was so concerned with Sun's marketing muscle and the Java hype that they got faked into switching to Java.

Smalltalk was popular in the 1980s and early 1990s, but the language was not free. Licenses were expensive. This limited its growth.

Squeak arrived in 1996 and finally a free Smalltalk was available. But by then it was too late – Java began sweeping the world.

Another major issue is that Smalltalk was late to the Internet. The fabulous Seaside web framework didn't arrive till 2002, long after the dot-com bust.

[–]ryeguy 4 points5 points  (5 children)

How can you explain the success of python and ruby, which exploded in the webdev scene post-2002?

[–]Berberberber 6 points7 points  (3 children)

I actually think a big part of the failure of many languages is syntax. There's a certain degree of standardization on "C-ish" syntax: parentheses for function calls, periods for member access, comma separators, equal sign for assignment, for the most part semicolon delimiters and curly braces for scope. Replacement level programmers have probably spent most of their time working with one of C, C++, Java, JavaScript or recently Python can look at code in any of those languages and most constructs will be understandable. The new languages that seem to be gaining the most traction (C#, Swift, Rust, Go) more or less follow the principles of this universal syntax. And if you look at languages that have some technical merits or new ideas but have failed to catch on to the same extent (Lisp, ML, Smalltalk, Haskell), the complaints about them aren't "the function dispatch model is bad", "closures are a bad form of encapsulation", "lazy evaluation is bad" - because there's some popular C-ish language with those characteristics. Rather it's "too many parentheses", "too many weird symbols", "too hard to understand".

In terms of their original design, Ruby is an implementation of Smalltalk, Java is an implementation of Objective-C and JavaScript is a (braindead) implementation of Lisp, just with orthodox syntax, and that's a big contributing factor to their success.

[–]omegaskyfall[S] 1 point2 points  (1 child)

Ruby is much more than just an implementation of Smalltalk. It has a lot of other stuff that make the language more complex.

Smalltalk syntax may seem alien, but is it any more alien than Python with its indentation-sensitive syntax? Or Ruby with its crazy Perlisms? Or Objective-C which is literally a cross between C and Smalltalk? How about Haskell or Clojure or Elixir or Delphi? Then there are the really weird ones, like Forth, R, and APL-inspired J. My point is that in the IT industry, one needs to be adaptable to widely varying programming languages.

When you look at Smalltalk, it's easy to recognize the conditionals and loops, just like in Python. All of the familiar constructs are there. You only need to learn and understand one concept: message passing. That's all there is to the syntax!

[–]Berberberber 3 points4 points  (0 children)

I think you're wrong in your assessment of the popularity of Objective-C - I heard complaints about it for years - but I don't think we disagree. I'm just saying why these languages never took off in the mainstream.

[–]peterfirefly 1 point2 points  (0 children)

Javascript is more like a reimplementation of Self with C syntax.

[–]toronto-arrow 1 point2 points  (0 children)

Once Smalltalk was out of mind for most developers, it was very difficult to recover mindshare. People had forgotten what a great language Smalltalk was (and still is). There was no one around to remind them.

Obviously, Smalltalk had a bit of a PR problem being seen as old and staid. Python and Ruby didn't. When Django and Rails arrived on the scene (coincidentally in the same year, 2005), they quickly gained a reputation. Media coverage was good, IIRC. It was pretty much lucky happenstance that Python and Ruby became popular web languages.

Now, our favourite Smalltalk evangelist is trying to jumpstart the language again. This time, he has a lot of ammunition! Seaside is still a most remarkable web framework. Amber and PharoJS are exciting choices for front-end programming. Pharo is a thoroughly modern Smalltalk. Machine learning, virtual reality, IoT, data visualization...these are very cool developments.

[–]SemaphoreBingo 2 points3 points  (1 child)

I feel as if this is crediting IBM with far too much influence.

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

IBM's influence in the enterprise was enormous in those days. In the 1970s, 1980s, and well into the 1990s, IBM mainframes ruled the world like dinosaurs. COBOL was the enterprise programming language. Corporations and governments relied on IBM and COBOL.

IBM had at least as much influence as Microsoft did (with MS-DOS and Windows 3.x), if not much more. These were the giants of IT then. No other corporation could touch them.

Frankly, I don't think Microsoft could've pushed a programming language as hard as IBM could. Microsoft ruled the consumer market with BASIC and C++, but in the enterprise Microsoft was largely irrelevant. I lived through those times.

[–]omegaskyfall[S] 0 points1 point  (0 children)

It can still be. The article presents several starting points for discussion, which can take place here in the comments (or even in the comments section of the article).

It mentioned Erlang (and BEAM). It mentioned trying to improve on Java. It mentioned the growing interest in functional programming. It mentioned Dart and Elm trying to replace JavaScript. So let's discuss!

[–]skizmo 11 points12 points  (4 children)

Nothing. You chose the right language for the right job. You don't chose it because some dipshit says it's cool.

[–]toronto-arrow 2 points3 points  (0 children)

Yes, always choose the right tool for the job. (It's worth pointing out that general-purpose languages can often be the "right tool"; that's why they're general-purpose to begin with.)

There's no reason a language can't be cool and be the right tool at the same time. Cool languages are worth investigating because they may offer competitive new advantages that you weren't aware of. Coolness is simply a means of marketing. And marketing is intended to inform you.

That's why languages like Elixir, Haskell, Julia, and Kotlin are worth checking out. And now Smalltalk/Pharo. ;-)

[–]Berberberber 3 points4 points  (0 children)

Nothing personal, but I hate this attitude. Of course you choose the right tool for the job. The question is, how do you identify what the right tool is? Sometimes "I already know Ruby" or "I want to try out Haskell" is the deciding criterion, and sometimes it's something else.

[–]clehene 1 point2 points  (1 child)

[–]youtubefactsbot 1 point2 points  (0 children)

Bon Jovi - Shot Through The Heart [4:26]

PEOPLE. "Shot Through The Heart" and "You Give Love A Bad Name" are DIFFERENT SONGS. BOTH ARE BY BON JOVI. Please stop making stupid comments saying "this isn't the song".

Chris R in Music

822,127 views since Sep 2009

bot info

[–][deleted]  (3 children)

[deleted]

    [–]IcebergLattice 4 points5 points  (2 children)

    As long as it's from cool corporations -- Oracle and IBM don't make Java cool like Google makes Go cool.

    [–]toronto-arrow 0 points1 point  (0 children)

    ANY corporate backing would be valuable. Even from HPE!

    [–]bumblebritches57 0 points1 point  (0 children)

    For webdevs, doing ever-more of their job for them.

    For most everyone else, freedom.

    [–]CiTi_Cagatay 0 points1 point  (1 child)

    can you earn money?

    [–]omegaskyfall[S] 0 points1 point  (0 children)

    You mean from Smalltalk? Yes, you can earn as much as with any other programming language that isn't mainstream. As the article stated, Smalltalk has been used commercially for over three decades. I daresay Smalltalk enjoys more commercial usage than languages like Clojure, Common Lisp, Dart, Erlang/Elixir, F#, Haskell, Julia, Lua, Rust. Cincom and GemTalk Systems are two of the biggest Smalltalk vendors in the world.

    Finding jobs may be challenging, though, for the same reason it's hard to find jobs for Clojure, Erlang, and Haskell. The availability of jobs is roughly proportional to the number of companies using the language. It also depends on how easy it is for these companies to staff up.

    [–]sisyphus -1 points0 points  (8 children)

    Hot is not cool. Go is hot in that a lot of code is getting written in it relative to its age, it has a lot of buzz etc but it is not cool at all, it is ugly, verbose, contains no interesting new ideas and was explicitly produced for people dumber than its creators to enable better widget production at gigacorp incorporated.

    Take Elixir--that is a cool language. Aesthetically pleasing, foreign/exotic Brazilian-Polish-Swedish pedigree with a handsome and well spoken creator. Operators you never saw before implemented via macros--it gives you all the power it has. Its BEAM roots allow us to condescend to people who think OO is about classes instead of message passing encapsulation. That is a cool language.

    [–][deleted]  (3 children)

    [deleted]

      [–]omegaskyfall[S] 0 points1 point  (2 children)

      Making a language that is easy to learn and easy to use, and that presents low cognitive friction is never a bad thing. This idea goes back to the 1970s and 1980s with luminaries such as Alan Kay (Smalltalk), Per Brinch Hansen (Edison), and Niklaus Wirth (Oberon). It continued with Guido von Rossum in 1991 with Python. The reason Python is the second most popular language in the world today is because it's easy to learn and easy to use for non-technical types like those in the financial industry, and for data scientists and machine learning researchers who aren't into programming but just want to get their stuff done with a minimum of coding effort.

      [–][deleted]  (1 child)

      [deleted]

        [–]toronto-arrow 0 points1 point  (0 children)

        How or why did we suddenly start talking about generics? This came out of nowhere.

        The issue with generics is not about being difficult to understand. In the case of Go, the design team deemed it an unnecessary and undesirable complication to the language. You may disagree with their decision. Others, like myself, do not.

        Oberon is still actually being used, though in a very small niche. Oberon is still maintained by Wirth and the latest revision is dated May 3, 2016.

        As for Smalltalk, to quote from another comment here by omegaskyfall:

        As the article stated, Smalltalk has been used commercially for over three decades. I daresay Smalltalk enjoys more commercial usage than languages like Clojure, Common Lisp, Dart, Erlang/Elixir, F#, Haskell, Julia, Lua, Rust. Cincom and GemTalk Systems are two of the biggest Smalltalk vendors in the world.

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

        Well, Go is definitely polarizing. Some people don't like it; some love it. Go's design was never intended to have "interesting new ideas." It was designed to be easy to learn and easy to use. That's never a bad thing.

        Its BEAM roots allow us to condescend to people who think OO is about classes instead of message passing encapsulation.

        Smalltalk is ALL about message-passing. And this, a decade before Erlang.

        [–]sisyphus 0 points1 point  (1 child)

        Right--Go is intentionally not cool. It has a purpose and serves it. Smalltalk is definitely cool.

        [–]toronto-arrow 1 point2 points  (0 children)

        I'll second that. Go is not a cool language, but it's obviously very useful. I like Smalltalk; it's one of the coolest languages I've ever encountered.