views:

18612

answers:

29

I’ve been looking at Smalltalk (VisualWorks) for the past couple of months - and the more I learn the more I’m impressed. However, I think I must be missing something as Smalltalk doesn’t seem to be popular these days - and perhaps it never was.

What do the people who have dropped Smalltalk in favor of Java, C++, Ruby, etc. know that I don’t or in other words “Why isn’t Smalltalk more popular?”

+1  A: 

Smalltalk lacks the vendor support that Java and C# have (think of that in terms of the companies selling their wares), and the coolness factor that Ruby/Python/etc have.

Maybe Alan Kay will pop in and tell us his reasoning.

Robert S.
As I understand it, it's not so much a lack of vendor support but that most early Smalltalk implementations were expensive and proprietary. There are free/open ones now but C++ and Java "won" in the meantime.
Dana
Think of it in terms of your operating system, enterprise sales, hardware, and so on.
Robert S.
It would be wonderful if Alan Kay told us his reasoning!
KHWP
I wonder if that user really is Alan Kay, I mean how can you be sure?
hasen j
@hasen, one of the SO members met Dr. Kay at a conference and he confirmed it.
Robert S.
A: 

marketing and business.

zsharp
big companies make more money with convoluted framework. what is your reasoning?
zsharp
I never used SmallTalk, so I have no reasoning, I have seen the syntax, but never had a reason to branch out of what I already use...
TStamper
+4  A: 

It differs too much syntactically and conceptually from languages like C.

Switching from a C-like language to Smalltalk might seem too difficult to many people, given that many students and hobbyists grow up learning C-like languages (C, C++, Java, PHP, etc.).

William Brendel
This isn't too much of a hindrance, considering where languages like Python, Ruby and Haskell are going, languages which keep the C syntax to a minimum.
Justice
Python is also extremely different from C and C-like languages ... but that didn't stop it.
hasen j
@hasen: You really think so? Python can be used procedurally, like C. And Python shares some similar syntax, unlike Smalltalk, which is totally foreign to most programmers.
William Brendel
sure you can write C in python, but where's the incentive in that? I mean, dam just write in C.
hasen j
Python is still basically the same kind of imperative language as C, and BASIC. for loops, if..then, it's all there. The radical-OOP aspect of smalltalk "(a>b)ifTrue: foo", instead of "if (a>b) then foo".
Warren P
+49  A: 

Lots of reasons, some of which are:

  • ridiculous licensing fees by the major commercial players
  • inability to use native GUI controls in some original implementations
  • not file-based, so difficult to integrate with other build tools
  • poor documentation - there is still no "classic" Smalltalk book to do for ST what K&R does for C, and on-line help in the IDE consists of comments in the source code
  • dated development environments - the browser/workspace combo was great in its time, but looks tired compared with modern IDEs - text editing is particularly naff
  • ugliness - if a Smalltalker can pick an ugly, small or unreadable font or an nasty color scheme, they will unerringly do so
  • lack of a "killer app" - for C this was UNIX, for C++ Windows programming and for Java et al the Web.

Having said that, I use Smalltalk (Squeak) myself, and enjoy knocking up GUI ideas and tools using it - but only for personal entertainment.

Update as of 29-Jul-2010: Having said all the above, which I stand by, the latest version of Squeak (4.1) is a vast improvement in terms of look-and-feel and performance. It is also MIT licensed, if that matters to you. well worth a look if you are at all interested in Smalltalk,

anon
This seems to be a good summary: I loved the ideas of smalltalk, but all of the above made it so I never did more than play with Squeak.
Godeke
I agree. I've dabbled with Smalltalk and I'm intrigued by it. That seems like a really excellent list of reasons why it's never reached primetime.
Herbert Sitz
wow, not file based? where does all the code end up going?
hasen j
Depends - typically into one single file called "changes", which is difficult for most VC software to cope with.
anon
@Neil Butterworth - typically into a fine-grained Smalltalk VCS which provided versioning all the way from single methods to classes to applications; for small projects typically code was "filedOut" from the image to source code files.
igouy
"inability to use native GUI controls" by design! - Java Swing vs IBM Java SWT was a re-run of the previous emulated widgets vs IBM Smalltalk native widgets split
igouy
@igouy - yeah, I really want to run separate VCS software for all the different languages I use.
anon
@Neil Butterworth - was that a way of saying, gee I didn't know about VCSs optimized for Smalltalk development ;-)
igouy
i think since recently smalltalk has its killerapp: http://seaside.st
nes1983
The changes file really records, well, changes to the image. It contains your code as much as a collection of patches contains your code. You certainly wouldn't put the changes file under VCS.
Frank Shearar
There is work underfoot to make git and Squeak interface: http://www.squeaksource.com/Git.html I don't know how complete it is yet though. Squeak people just use Monticello.
Frank Shearar
Pharo is like Squeak, but with the beating-with-the-ugly-stick bits removed.
Warren P
@Warren Actually, the latest version of Squeak is prettier, and performs better than Pharo, which is too sluggish on my (admittedly ancient) box. I think it may have removed a lot of Pharo's raison d'etre.
anon
The browser/workspace *looks* naff compared to modern IDEs, but remains far, far more powerful. Which IDEs, on an error, drop you into the debugger with the offending piece of code, and allow you to simply continue (not restart, continue) execution once you've fixed it?
wbg
+10  A: 

Let's compare smalltalk with Java to see what went wrong.

  1. Timing. Virtual machines are expensive in terms of speed and memory consuption. When Smalltalk appeared, we were "not there" yet. Smalltalk was a heavy load and it was very difficult to use. Computers were not so as wide-spread as today. Java, on the other side, got in the market "just in time" for a amazing growth of CPU and memory in a already ubiquitous PC.

  2. There was freedom. Smalltalk was about "take it all or leave it all". Java is a language, that can be used in different environments.

  3. Syntax also plays a role. Although Smalltalk is pure OO and beautiful, it is easier for a programmer to learn Java.

Learning
I'd have to dispute point 3 - Smaltalk has less syntax than just about any other language - it was after all intended as a firstlanguage for children to use.
anon
Java looks more like C++, so maybe C++ programmers were less afraid of Java. I agree with Neil that Smalltalk is easier to learn, especially if you are new to programming.
Jules
Less syntax does not mean it's easy to program. Look at Lisp. It has the sparsest syntax I've ever seen but it is not something that children could learn. In fact, most adult programmers I know can't use it.
mpeters
Smalltalk syntax is great. It's a wonderfully expressive language. Java is only easier if your first language was C++, because its syntax is intentionally similar. Otherwise, I think Smalltalk is easier to learn.
Chuck
I would dispute 2 and 3. Java was also "take it all" when appeared; JNI came later. Smalltalk syntax is too simple, IMHO. Consider Python syntax, for example. It's a good middle ground between elegance and practicality - often you just want to write a[0] and Lisp or Smalltalk syntax makes that hard.
J S
a[0] is also hard in java. String.charAt(0)! huh? None sense!
hasen j
#1 in the late '80s there were usable Digitalk Smalltalk implementations on x286 and Mac. #2 depends what you mean by "freedom", Smalltalk gave cross platform freedom #3 back in the day, programmers had a problem learning OO and with Smalltalk they had to learn OO
igouy
It's easier for a c++ programmer to learn Java with their static mindset. As someone who cut their teeth on Python and Ruby, Java is a hideously verbose and impotent monstrosity.
wbg
+3  A: 

There was this module I had in Uni, was called something like Programming Languages, Client-server computing and Concurrency. A certain part of this module was dedicated, as its name indicates, to Programming Languages in general. Smalltalk was mentioned about as much as Algol 60. And you wonder why no-one wants to go the SmallTalk way?

I believe the influence of Higher Education institutions is greater than one would think. We are talking about masses of software engineers/computer scientists/etc... leaving Uni's every year with a Java-centric mental model.

Peter Perháč
+32  A: 

No doubt a controversial answer, and definitely a personal one, but... I don't like zealots.

Most of the Smalltalkers that I've run into on the net try to say how Smalltalk is basically the best thing since sliced bread, and how awful every other language is. I'm not saying that all Smalltalkers act that way - but it's been a very noticeable trend in the ones I've encountered. They've very clearly been looking down on anyone who doesn't use Smalltalk.

That's simply not a good way of persuading people to use a language. It puts me off because I enjoy learning with a community, and I don't really want to be part of a community which looks down on me - even if it's just a vocal minority taking that attitude.

I don't know enough about Smalltalk to comment on it technically at all - and I'd really like to learn it "some day"... but it's lower down the list of languages for me to learn than others where I've had a more positive experience with the community. (F# nearly had the same problem for me, due to someone taking that attitude in the C# newsgroup, but fortunately more engaging personalities have prevailed.) The fact that people do like it so much suggests there are good things about it as a technology - but realistically, I'm a human being rather than a computer. Technical merit is only part of the picture.

Maybe I'm just alone on this, but in general: if you want to show someone how awesome your favourite thing is, and maybe persuade them that they should use it too, starting off by rubbishing their current tool is a bad idea. Operating system zealots (of all kinds) should take note.

Jon Skeet
Java, C#, Google, and the UK all suck. Smalltalk, Objective-C, Apple, and the US are where it's at.
Robert S.
Oh wait, April Fool's was yesterday.
Robert S.
I think you are stereotyping. I would say almost every person I meet wants to promote their language as the best for what ever reason. THe fact that smalltalk programmers are particularly enthusiastic may be because there is more truth to back them up. :)
zsharp
@zsharp: I'm only going on the encounters I've had. There's a difference between saying "I love my language - particularly these features" and "If you don't use my language you're not doing OO properly." The Smalltalkers I've run into have easily crossed the line from evangelism to rudeness.
Jon Skeet
I also don't think I *am* stereotyping, given that I explicitly said that I don't think it applies to all Smalltalkers, but it's just been noticeable in the ones I've spoken with. Those have been enough to cast a shadow over the language. It's something for communities to watch out for.
Jon Skeet
I've never understood the need for some people to identify so closely with one single language - during my career I'v used over 30 different languages and expect to learn a few more before I pop off.
anon
@Jon: I often see this behavior in Python programmers, only with "clean code" rather than doing OO properly. I don't think you are stereotyping, but I also don't think this is why Smalltalk is unpopular.
William Brendel
@William: I don't think it's the whole deal, but I think it *is* significant. I've seen *some* Python programmers like this, but a much smaller proportion than with Smalltalk.
Jon Skeet
I'd be interested to know the reasons for the 2 downvotes, btw. I expressed an opinion as to why I've been put off. *If* the downvotes turn out to be by Smalltalkers who don't like anyone being (fairly carefully) critical of the community at all, it kinda proves my point. Otherwise, please explain.
Jon Skeet
Voted up. This is also the biggest reason why I didn't vote for John Kerry in 04
rotard
+1, because of your last paragraph. I've tried (in vain) to spread this message for years. The problem seems to be human nature... when you tell someone how awesome your favorite is, they immediately get defensive, interpreting it to mean you are saying their favorite isn't equally as awesome.
Grant Wagner
@Grant: If it were only a case of people being defensive, that wouldn't be as bad. I have no problem with people saying how much they love their language/OS/whatever - but it's when they actively disparage others that it's an issue.
Jon Skeet
+1, reminds me of Bertrand Meyer's technique of promoting Eiffel.
Daniel Earwicker
I've had the same experience with Smalltalk evangelism, and moreover all the rhapsodizing about conceptual purity has left me with a strong impression that this is a language that, if I took it up, I would not be able to get anything done in with all that purity getting in the way.
chaos
Agreed again. I don't care if you like something I don't, but as soon as you start calling me names for liking what I like, you've lost all hope of making me a convert. That applies for anything. Politics, religion, OS, language, etc.
rotard
I find it strange that you would stay away from a technology cause the people you met who used that technology were arrogant. I mentally compared it with : If all Ferrari owners I knew were snobbish , would it prevent me from buying one? My answer was different than yours.
Learning
Would you be asking those owners to help you learn to drive? I've always got more stuff to learn than time to learn it in - why would I want to spend my time in a community where vocal members are objectionable?
Jon Skeet
Never looked at ST, but I have the opposite reaction. When I hear about something that doesn't inspire passion (say, Java), why would I want to spend any time on that? Give me something that changes how I think! Virtually everything *is* trash -- I'd be lying if I claimed software was anything else.
Ken
"I'm a human being rather than a computer" - nonsense, everyone knows you're a bot, Jon ;)
Joel in Gö
I have been working on one of the largest Smalltalk projects in Europe in the more than 10 years ago, so I should know something about it ;) And yes those zealots are mostly right. I'm sure you would understand it after trying Smalltalk. That does not mean their behaviour was smart.
kohlerm
This is the same reason that prevents me from switching from MySQL to PostgreSQL.
CDR
@kohlerm: I suspect I could understand the love of the language - but not the attitude that went with it. Again though, this is not to tar all Smalltalkers with the same brush. Just the vocal ones I happen to have run into.
Jon Skeet
Analogy works for me: I wouldn't have an F50 owner teach me to drive, nor a ST advocate how to do OO. I've already learned both. If they know a better vehicle for what I know, I'm game. I'd be a fool to claim my ancient VW and C# are top-of-the-line. Nobody would buy a F50 if it only got you there.
Ken
'zealots'. If smalltalk were popular, they wouldn't be zealots, they'd be managers. "I heard this one technology was the best, and everyone is using it, so you should be too."
Aaron
@Aaron: If they expressed themselves like that, it wouldn't be so bad. That's not nearly as patronising as the ones I've come across.
Jon Skeet
But… But it is true, Smalltalk is that good.
Richard Durr
I suppose I'm one of those zealots you don't like - on the subject of performance tuning, not ST (http://stackoverflow.com/questions/2422289/any-recommended-java-profiling-tutorial/2425217#2425217). It is unfortunate that a method that routinely yields *factors*, not *percents*, has the misfortune to be touted by a borderline-Aspergers person like me :-)
Mike Dunlavey
@Mike: I don't see any particular zealotry there...
Jon Skeet
+4  A: 

Looking at this question as a long-time Smalltalker, earning all my income doing web applications in Smalltalk for 12 years, what can I say about it?

First, is this a relevant question at all? Why Smalltalk needs to be popular? Isn't such small but nice and lively community as we have now a better thing than the big community?

On the other side being more popular is a good selling point. It is hard to persuade customers to go to less popular road, because they feel less safe.

But again, from my experience this is a non issue for the web applications. There almost no one care much what are you running-on, what they care is the result. That's why I think the future of Smalltalk is exactly in the web applications, because here we can explore all its strengths without dealing with that question again and again.

Janko Mivšek
+1, but it depends on who you mean by "no one cares much". Commercial companies need to know they'll be able to get staff to maintain their web apps. It's irrelevant to the *user* but not to the *provider*.
Jon Skeet
It is the provider's problem, right. And provider can train its stuff by itself. That's what most Smalltalk based companies are doing. It is unusual road by nowaday standards, but rewarding.
Janko Mivšek
Why would a provider want to train developers to work in Smalltalk when there are many Java, ASP.NET, etc. devs out there? I am just pointing out that either training devs or hiring one of the handful of 'small but nice and lively community' is more costly than using another technology.
Grant Wagner
This is true if you are looking of just a work market perspective. But if you are looking on a broader one (company as a whole), then it is different. But yes, this is hard to understand if you are not in such company.
Janko Mivšek
First of all, Smalltalk companies are not software factories, to just hire and fire employees at will. On contrary, they are the places where trust and loyalty matters.
Janko Mivšek
Smalltalk shops have the same problem us Delphi shops have: It's hard to find good people. Good doesn't just mean "knows our language", but "can do the job we do around here". I find that when you have small teams building things that would take a large team elsewhere, you can live with the general shortage of grunts. Whereas, with a C# project, you expect a large supply of grunts. And you're going to need them.
Warren P
A: 

I think the reasons may have little to do with technical arguments. For example, the question is framed in terms of "why Smalltalk was dropped in favor of Java". I would ask why Java continues to be mainstream when its project failure rate is one of the highest in the industry (per Gartner, http://www.zdnet.com.au/news/business/soa/Java-and-Net-both-a-disaster-research/0,139023166,120269968,00.htm). Given that kind of evidence, this does not seem to be a rational phenomenon to me, and so I doubt that we (meaning programmers) will find proper, rational explanations to it.

Before we explain "why Smalltalk isn't popular", I think it would be much more interesting to answer "why do the majority of IT shops choose a technology that is associated with failure 70% of the time".

Holy Out of Date Stuff (2002 Gartner Report?)
Warren P
it's as simple as that: if a project manager manages to get through a crisis, he gets promoted (even if it was his own fault initially). Especially if everyone else suffers from the same problems. In contrast, if everything runs smooth, the app runs on every new platform without much trouble, they stop maintenance, let it run for 15 years and then eventually blame the system being legacy !So wouldn't you, as a project manager rather get promoted for being a good "crisis" solver ?(greetings to Andres from the st/x guy)
blabla999
+56  A: 

There are a number of reasons that Smalltalk didn't "catch fire", most of them historical:

  • when Smalltalk was introduced, it was too far ahead of its time in terms of what kind of hardware it really needed

  • In 1995, when Java was released to great fanfare, one of the primary Smalltalk vendors (ParcPlace) was busy merging with another (Digitalk), and that merger ended up being more of a knife fight

  • By 2000, when Cincom acquired VisualWorks (ObjectStudio was already a Cincom product), Smalltalk had faded from the "hip language" scene

  • Since then, Smalltalk has been a small player on the language space, but it's back to having a growing market. There are both commercial offerings (Cincom being the largest player there), and open source (Squeak, which is moving to MIT, and GNU ST, which is GPL).

Not all Smalltalk implementations require an image; while those of us who are sold on an image environment love it, you can use GNU ST with your favorite text editor easily enough.

Ultimately, Smalltalk peaked early, and then had damage done to it by the stupidity of the early vendors in the space. At this point in time, that's all in the past, and I'd say that the future looks pretty bright.

jarober
I would add that early Smalltalk systems weren't really on speaking terms with the host OS. It was like APL: if you can live in this strange world called the "workspace" or "image", everything's great, but if you want to use your usual stuff, you might as well be on Mars.
Norman Ramsey
What about before 1995? Why did it require high-end systems in terms of hardware?
hasen j
@Norman Ramsey - which meant you could copy an image between OS's and everything still [email protected] j - research the RAM that PC's shipped with before 1995
igouy
Also of note: Objective-C incorporates a lot of ideas from Smalltalk into C and is the lingua franca of Mac OS X and iPhone development.
Adam Rosenfield
It is good to point out that Smalltalk vms were very expensive, which made Smalltalk it even less popular.
Daniel Ribeiro
How could Smalltalk possibly have got the traction that Java got? Java was *free*
oxbow_lakes
Smalltalk needed really exotic hardware in the 1970s and early 1980s, which is where it got its reputation. Up until about 1990 or so the cheapest machine that could run mainstream implementations was a Sun workstation or high-end mac. Smaller DOS-based versions did exist in the 1980s (e.g. early Smalltalk/V) but it was really a bit of a toy.
ConcernedOfTunbridgeWells
+6  A: 

Some links to ruminate over:

The classic Worse is Better. Although pertaining to lisp, some of the same points apply. A simple solution that isn't quite right is better than a complex solution that is more difficult to transport across various boundaries.

Python.org This is not to start a language war, but more specifically, to show how easy it is to download, install, and start working on the language. For Linux, it's already there. For Windows/Mac, it's a quick installation away. Each comes with a huge amount of libraries that brings things like XML processing, http capabilities, and documentation for it all. Note the installation page for Squeak, not nearly as user friendly.

Libraries are also very important. Compare XML processing libraries for something like Smalltalk and then compare that to the almighty CPAN. Meanwhile each different version of Smalltalk has it's own library.

A programming language can be seen as many things. Some see it as a way of representing algorithms and data structures. In this case, languages like Smalltalk and Lisp and Haskell excel. It can also be seen as a tool that gets a job done. Even as they may curse the tool they use, they still would use what is needed to get the job done.

zabuni
Squeak is actually very simple to install.
anon
Python is already installed on recent version of OS X too.
+7  A: 

I was using Smalltalk commercially in a small way in 1995. ( I wrote my company's white paper on Java at the same time. IIRC I said Java needed 2-3 years more to mature)

By 1998, Smalltalkers ditched to Java.

Vendor licenses were very expensive. Squeak is magic at the price (nix).

The hardware required was outrageous: we had an early SUN UltraSparc with 1GB of RAM in 1996. It was a smalltalk application server. For one 3-tier application! With <50 users!! (Mind you, every field on every screen populated from the database in its own thread. Made for a very slick UI.)

Libraries are NOT the same between vendors so you get locked in.

Basic features of the environment are different between vendors: reflection is a curly one.

Basically the Smalltalk vendors have balkanized the market since the 1980's and it's still fragmented.

From a technical viewpoint Samlltalk stomps all over most other languages for productivity. NeXT copied the image-based approach of Smalltalk for Objective-C and it's done very well (just look at all of Apple's current products).

Tim Williscroft
Yes - vendors built walls between their implementations instead working to create standards so customers could move between implementations.No - in the late 80's there were very usable Digitalk Smalltalk implementations on x286 and Mac
igouy
How is objective-C image based? It's a c-compiler, not a VM. It is however message-based, and its object oriented programming notion is closer to Smalltalk, than C++'s notions, which are more like Simula.
Warren P
My point is if you read carefully, Objective-C as used by NeXT/Apple. NeXT Step Application builder (granddaddy of Apple XCode) produces a .app file which is the objects in the application serialized. They get de-serialized on application launch. Image based.
Tim Williscroft
The NextSTEP application builder only holds your dialog boxes. Not your code. The "objects" it serializes are stubs for your controller object, and then the forms. The stubs are in there so that connections from the stub to the object can be serialized. It is neat. But it's hardly image-based development. It's not image-based until you store the code in the image. By your logic every windows development tool that can produce an ".EXE" is image based. So is GCC.
Warren P
+1  A: 

Penn State was/is big on Smalltalk. Entire student system and etc was written in it. Here is my reasoning:

  1. Labor - hard to find programmers willing to write/support new stuff
  2. Awful tools. GUI looks like it is still 1996.
  3. Every programmer I met hated Smalltalk. No exceptions to this one and these were folks who did it for years.
  4. Apps written in Smalltalk stagnated into being rewritten in something else. Some were in maintenance mode for about 10 years. By then each department at Penn State grew a staff of developers that do something other than Smalltalk.
  5. Biggest reason is that other products that are supposed to support and advance development cost a lot of money.

If you really want a job doing Smalltalk babysit psu.jobs. They will lock you in the basement, maybe you'll get something to eat and get some sun, but you are not allowed to quit. You'll have a job 4evah...(diabolical echo of ...)

+4  A: 

The Great Programming Industry Reboot sort of answers this. Short version: The first microcomputers couldn't run Smalltalk, and the number of programmers was growing faster than the new ones could be educated by the old ones. The programming culture basically started over in the early 1980s on microcomputers, and then the microcomputer programmers had to spend the next 30 years going through the growing pains that the mainframe/minicomputer programmers had already gone through.

Glomek
+41  A: 

You had to be there in 1995. At this time, there were a few commercial Smalltalks but the biggest was VisualWorks from ParcPlace Systems. The marketers at ParcPlace were idiots - choosing to optimize for max dollers per seat rather than max seats. Any shop wishing to adopt Smalltalk had to pay a couple thousand dollars per developer for a license. Any developer wishing to learn Smalltalk either had to get hired to do Smalltalk or sink serious cash into buying his own license. So it was just plain hard to get a chance to learn it.

Also about this time, IBM was looking for a successor to COBOL for their business customers. They chose Smalltalk (smart) and developed VisualAge and made it so the same program could run without modification from Mainframes to AS400s to PCs. Smalltalk has a friendly minimal syntax and is easy to learn so it seemed a natural replacement for COBOL. The future looked really bright for Smalltalk. The companies that were using it were out-producing everyone else by a lot.

And then Sun showed up with Java. The gave it away free instead of charging for it. IBM took a look at it and figured two things. First they didn't want to enter a marketing war with Sun that was clearly planning to spend a fortune on the Java brand. Instead they decided to try to beat Sun at their own game - have the best Java on the market. Why not, they already had a great VM that ran on their whole stack - they just adapted it to handle the Java bytecode set. In fact, all of IBM's Java tools were actually written in Smalltalk for several years. Thus - if one wants to blame anyone for the rise of Java over Smalltalk - it is pretty easy to place the blame directly at the feet of IBM and their unwillingness to compete.

I love Smalltalk. I love coding in the debugger, being able to archive processes and restore them exactly later if they encounter exceptions, the amazing reliability. The economy of expression and the brilliant class library. There is a new resurgence in Smalltalk development thanks to Squeak. Newspeak, Pharo (which has some really beautiful UI skins), the new cog VM, Seaside and Gemstone, these are all projects working on addressing the historical shortcomings of Smalltalk including the poor OS integration (Newspeak has a slick native widgets integration and Pharo/Squeak have a new external code integration capability called Aliens), and deployment/scalability.

Anyhow, I don't mind that Smalltalk isn't popular. That makes it a secret weapon for me and I am really encouraged to see all the new development projects. Smalltalk is growing and advancing again and this is good because a lot of the best ideas in software (XP, unit testing, refactoring editors, coding assistants) all were developed in Smalltalk first and then filtered out to the rest of the world (generally in diluted forms).

Long Time Smalltalker
The ParcPlace takeover of Digitalk closed out the low-cost entry point for Smalltalk.Lack of library standards and lack of a component story fragmented the market for third-party software.
igouy
Reminds me of the OS/2 story. Such a good system, but not going into competition with M$...
Friedrich
I didn't know VisualAge was originally a Smalltalk environment. That explains a lot about Eclipse today.
Matthew Flaschen
It was very cool. I used VisualAge/Smalltalk under OS/2. You could create parts and connect them visually. It was really great.
Warren P
+3  A: 

Last time I checked I was put off by the documentation. Why on earth should I put colored markers on my mouse just to understand what they are talking about? Is it so hard to call the buttons left, right, middle? See the beginning of Squeak by Example

Instead they are colors and I constantly have to look up what button is meant. This isn't a good idea to get into a flow.

I tested Squeak. And I don't know how somebody could deploy a Squeak application to "normal" people.

stesch
This is improving in Pharo, though. With ToolBuilder and Glamour, you can do decent UIs.
Stephan Eggermont
I also found Squeak looked like a Joke, and find Pharo much better.
Warren P
The latest Squeak (downloaded today), looks about as professional and simple, and minimal when you open the default image as you could possibly want. I'm sure some old-timers out there might miss the Crayola days, but you can always add your favorite bits of garish trim back. :-) Hooray for Squeak.
Warren P
+6  A: 

Two things stand out in my mind:

  • It was designed before Unix won. At the time, isolating yourself from the host OS seemed like a great idea since to have a decent level of integration with all the operating systems in use would be prohibitively difficult, and on top of that would make things that should be simple ridiculously complicated--witness the bending-over backwards that Common Lisp has to do to support things like the VAX filesystem. Now it just looks awkward.
  • Lack of Free implementations. At the time, it hadn't been demonstrated that a language needed a solid community-driven implementation to pick up mindshare; people still thought that selling software was a good way to make money.

They seem like really obvious mistakes in hindsight, but I guess you just had to be there.

technomancy
A: 

Very nice accepted answer. I would add that early Smalltalk systems weren't really on speaking terms with the host OS and its native applications. It was like APL: if you can live in this strange world called the "workspace" or "image", everything's great, but if you want to use your usual window manager or god forbid gnu emacs, well, you might as well be on Mars.

I believe Squeak still takes this approach, which is why I prefer Ruby :-)

Norman Ramsey
+12  A: 

A couple of people have mentioned syntax as a hindrance to adoption. I think there's a particular issue that drives a large number of developers away: lack of algebraic precedence rules.

Any language where the expression 2 + 3 * 4 has the value 20 isn't going to be a commercial success. Yes, the syntax is very regular, and yes, anybody who knows Smalltalk can figure out why expressions are evaluated the way they are. Unfortunately, it runs counter to what you've had drilled into you during your entire primary education in mathematics.

Anyone who's learning Smalltalk and is trying to use it to do basically any kind of calculation at all will run into this problem repeatedly until they learn that they have to parenthesize everything. Because it's only a problem with some expressions, and causes incorrect results, rather than an error message, it'll take them a long time to figure out the first N times it happens.

Some significant percentage of developers will never get over this.

Mark Bessey
It occurs to me that Forth suffered from a lot of the same issues, which may be why *it* didn't set the world on fire, either.
Mark Bessey
At least Forth (and Lisp for that matter) avoid infix notation, so it's visually obvious that different precedence rules apply. :-)
Christian Hayter
That only makes sense for total noobs who haven't yet realised that everything is a message. If you haven't got that far, you're going to struggle with Smalltalk. Perhaps I'm too unmathematical, but I picked that up very quickly compared to the ifTrue: business.
wbg
+4  A: 

Very silly licensing. There was a wonderful version of smalltalk in the 90s that delivered everything that a developer needed - great tools, excellent cross-platform development, good performance, reliability. This was VisualWorks. It was also not particularly expensive. I was prepared to look at it for major projects, after past success with Digitalk Smalltalk. But then, the company producing VisualWorks went bust, and VisualWorks was taken over by a company (who I shall not embarrass by naming) who changed what would have been a simple purchase of a development product into an absurd licensing arrangement which required an on-going and expensive "customer relationship". In doing so, they killed the chances of this wonderful product becoming mainstream. At the same time, Sun were supplying Java for free. Cross platform, multiple supplier (Sun and IBM vms), secure, with a syntax familiar to C developers. They also put a huge effort into optimising the JVM, which means that these days Java can easily compete with C in terms of speed.

These days I develop in Java, groovy and Scala on the JVM. But I miss Smalltalk development.

Steve, you have your history wrong. Through 1997, VisualWorks was over $5000 per developer seat, plus extra for any add on libraries (C Connect, etc), plus a runtime fee. In 1997, runtimes were dropped, and prices dropped some. Revenues cratered and the company went bust.
jarober
Because 1997 was way way way way too late.
Warren P
+2  A: 

Isn't it? According to TIOBE's list, it's #44 right now. #44 in the world seems pretty darned popular, to me! (Porsche is also about #40 in the world, in terms of popularity, but nobody seems to ask "why isn't Porsche popular?".) We've made huge strides in using open, text-based protocols; who cares if somebody else uses the same programming language?

Especially for a computer language that's 40 years old -- how many other languages from the 1950's and 1960's do you see in use today? I see, of the top 50, only 6 others: Logo, Pascal, RPG, COBOL, Lisp, and Fortran. There are a bunch of languages with high instantaneous popularity, but which are very likely to drop off the list in well under 40 years.

I would consider a top-50 language that's been there for 2 (human!) generations to be much more solid than a top-10 language that's been there for only 3 or 4 years. The latter is likely a fad; the former is a proven classic.

Shakespeare and Twain and Poe are not top-50 authors this year, but may well be top-50 authors over the past 40 years, and I think it's pretty likely they're top-10 authors over the past century. They all use an open, text-based protocol (English!), so it doesn't matter that the person next to me on the bus is reading a short-lived fad like Danielle Steele.

Ken
Smalltalk-80 came out in 1980 - that makes smalltalk less than thirty years old and means it post-dates, for example, C.
anon
But Smalltalk had been around over a decade at that point: that's why they needed to call that version "-80"! :-) It's the same age as, or even slightly older than, C: http://oreilly.com/news/graphics/prog_lang_poster.pdf
Ken
Well put Ken, thanks!
Janko Mivšek
"(Porsche is also about #40 in the world, in terms of popularity, but nobody seems to ask "why isn't Porsche popular?".)" Smalltalk is free as in beer. Do you think if Porsches were free they would be 40th popular?
Matthew Flaschen
"For a language that's 40 years old"? We're giving handicaps? Next people are going to be saying that Fortran is actually the most popular language when you consider that it's terrible. Also, if we're counting pre-1980 Smalltalk, we probably ought to count BCPL as C.
Chuck
+7  A: 

I as a Smalltalk programmer in the 90s, and then again more recently. I'm surprised that I can relate to almost every person who wrote on this thread (with a couple exceptions).

Yes, in the mid-90s, the vendors priced themselves out of the budding market, failed to get bundled into Netscape, and basically got themselves booed off the stage.

The particular ingenuity that came from the Smalltalk environment was a product of its inherent strength, which is still there. Smalltalk has the potential for reinventing itself, or more precisely rediscovering its purpose for a new age.

Since Smalltalk isn't very famous, it's hard to land contracts, and the true Smalltalkers often find themselves shuttling from one city to another for engagements. On the other hand, the smalltalk community, for a better or worse, means people actually know each other. In these days, being a part of a community, even a back-biting nerdy one, has its advantages. Professionally speaking, people know who you are. Since Smalltalk tends to attract mavericks and dreamers, like me, it's a good place to be.

+3  A: 

"the more I learn the more I’m impressed"

You can learn some more about real Smalltalk applications from conference experience reports - read through Niall Ross's conference summaries.

igouy
+2  A: 

The huge fricken images.

They're a horrible way to distribute software. Get with the program, make a distributable version of smalltalk that makes executable or at least self bundles and has access to normal GUI toolkits or at least look alike ones.

The only people who can really use the language are those running on servers, a la, those who do not have to distribute it.

You mean like software as a service? You mean like enterprise client-server? http://www.esug.org/data/ESUG2004/ValueOfSmalltalk.pdf
igouy
This is a valid reason that lots of developers run away from Smalltalk. They want to ship a small EXE. Smalltalk doesn't let them.
Warren P
+2  A: 

The primary reason seems to be liter upon liter of misinformation, fermenting to misperception by the galoons. Secondary reason is probably the ParcPlace mis-step of the mid 90's, third is likely losing the one mega-player, as IBM veered off to engage a MS guided war of attrition, getting sucked into the black hole of a collapsing Sun.

Popular - like Paris Hilton?

Or quiet pursuit of craft, immersed in the joy of working with great tools, which likewise persist, improve, and grow, albeit in relative obscurity.

To each his own, I guess.

Having used many, many, many tools over the years, I can say that Smalltalk simply IS worth the price of admission, whatever that price appears to be.

Dig in. Due diligence, and all that. You'll only make things better for all of us. You could even screw it up, make it wildly 'popular', and we'd still come out ahead. Up to you.

Jim Sawyer
A: 

Speaking as someone who has used VisualWorks in school, there are a few things I found annoying. The biggest was the forced (yes, forced) use of the image environment. 2/3 through my project, the image environment crashed while I had a particular window open. That caused the window to come up every time, I opened the environment, despite many efforts to correct this issue. I also found (what I saw as) the weak namespacing and scoping irritating. "Everything is an object" sounds cool until you realize what it means, that 3 + 4 * 7 = 49. And though I understand where duck-typing is coming from, I still strongly prefer static type-checking. The syntax was not that intuitive; I know Java is verbose, but it's actually easy to read and write, especially (obviously) for someone who came form a C/C++ background. This is true even though Java is (almost equally) distinct from C/C++ where it counts (e.g. memory management and object-oriented model).

But I do respect certain aspects, not least the many features it originated, such as strong reflection and powerful closures.

Matthew Flaschen
A: 

This is a much-pondered question. In fall there will be a talk about it by Giles Bowkett at ESUG: http://gilesbowkett.blogspot.com/2009/05/upcoming-presentations-in-fall.html.

nes1983
A: 

In this interview Robert Martin gives his point of view about this discussion: http://pragprog.com/podcasts/show/32.

ClaudioA