"What have the Romans ever done for us?" --Reg the Revolutionary, from LifeOfBrian
This is a bit of a challenge to Smalltalkers, and/or a request for education.
What important and widely used pieces of software have been done in the SmalltalkLanguage? Particularly, public domain or OpenSource software, that can be looked at.
Yeah, yeah, I know: the whole modern GUI, WimpInterface was prototyped in Smalltalk at XeroxParc. But, IvanSutherland didn't use Smalltalk for SketchPad, did he?
Hmmm??? SketchPad: 1962. Smalltalk: 1972. So no, naturally Sutherland didn't use a language that wasn't invented for another ten years.
What else?
Oh, yeah: Smalltalk gave us the user interface for Tektronix 'scopes and logic analyzers. I'm afraid I'm not a big fan of them.
What else?
-- AndyGlew
VisualAgeForJava is (was) written in Smalltalk...
Smalltalk is not used for any widely used open-source or public domain programs. Yet.
I agree, dynamic languages with built-in environments are best suited for custom applications such that looking for COTS apps is a poor metric for the utility of a language. (Not that I think SmallTalk is the cat's meow, but it's profile fits other dynamic kit-based tools.)
I believe that euro-clear was done in VW. Millions of trades a day go through that system.
Anyone ever heard of JWARS? No. What is it? JWARS is a Department of Defense project to build a simulation of theater-level war. It is being written in VA Smalltalk. It would have failed long ago, IMNSHO, if it were being written in C++ or Java. http://www.dtic.mil/jwars/
Moved to http://www.jointmodels.army.mil (warning: the JWARS overview uses MicroSoft PowerPoint). -- EricJablow
At least 5 new web startups I know of are using Smalltalk for the servers.
OOCL rewrote there entire mainframe system in Gemstone and VW.
The list is actually quite long.
According to last information, about 9,000 people's paychecks are still being paid by the C3 Smalltalk payroll program, which is now in maintenance mode. It was new development that was stopped, not the payroll program.
Our Smalltalk application is handling over 70,000 paychecks at the moment, that will be 200,000 within a few years due to winning deals with new customers. It's not in maintenance mode. (I do not work for C3.)
My understanding is that Smalltalk's hit was with the business community in the early 90's as a client/server programming language. It continues in this role today, though at a lesser rate. Many telco's use Smalltalk to some degree for logistics or backoffice systems... Manufacturing companies (Texas Instruments, Celestica) use it as well. I believe it is still in use for large logistical operations (FedEx has a distributed smalltalk system, as does OOCL).
More detail would be appreciated. Many software companies list Major Company X as a customer, when it turns out that the application deployment is trivial. In fact, some of my purchases of a 500$ software package have resulted in my employer being placed on such brag lists.
See GemstoneProject for pointers to some large custom Smalltalk applications. Gemstone's revenue is still largely based from their Smalltalk product (though their Java product has been gaining speed).
[Side note: Java's popularity lately seems to be in this same space as Smalltalk. I think the lack of visibility of Smalltalk and Java are related to a common phenomenon: consumer applications myopia. The reality is that Financial/manufacturing/telecom companies are stumbling over themselves in a frenzy to pick up Java programmers. (As an example, IIRC, a major telco (MCI?) announced last Fall that they want to hire 1,000 Java programmers over the next year. Many wall street brokerages are doing new development in Java [or sometimes Smalltalk].)
Perhaps this is why there seems to be a perception that Java is "dying" and that Smalltalk is "long dead" in the trade press and SlashDot community. They seem to think that shrinkwrapped, consumer, or freshmeat.net applications are the bulk of applications being developed. This seems to ignore the fact that most legacy code in the world is COBOL based business systems... but, ignorance is bliss, I suppose.] -- StuCharlton
Actually, according to Cusumano IIRC, the packaged software industry is bigger than the custom software industry, about 2:1, in terms of dollars spent to acquire software. That's not lines of code, but it matters more.
By the way, as a mass market oriented computer guy, I would not say that Java is dead. InternationalBusinessMachines is pumping Java for as much as it is worth. I guess that's business programming, but the upshot is that on a significant fraction of webpages, if you don't have Java you can't see them or place orders. That impacts the mass market.
The other big thing is that Java has standard support for multithreading. Multithreaded CPUs are standard. Java is the most widely available portable way to program such CPUs. C++ has no multithreading standard, and no sign of one. Microsoft's threads may suffice, but does nothing for LINUX.
All of the reports of Smalltalk use seem to be in the custom software arena, typically in business applications.
That isn't my field directly, but my impression as somebody who has sold computers into those fields is that business applications overall are not very performance sensitive (except for large databases, which are usually programmed in C or C++). It seems that business applications require more flexibility, maintainability, and the ability to go in and change the business logic.
Performance matters, but only as a cost reduction: if the code runs faster, you need to buy fewer computers. It is not a make or break issue, compared to the performance sensitive programming problems I am familiar with. (Real time options trading, possibly, but that field seems to be dominated by specialized languages like J and K.)
Q: is this an accurate perception? Are there any examples of Smalltalk used in performance sensitive domains?
A: Smalltalk is not very efficient of CPU time. But most systems do not have the CPU as a bottleneck. The database or the network might be the bottleneck, in which case it isn't important for the programming language to optimize the CPU as long as it lets you optimize disk access or network traffic. Even when the CPU is a bottleneck, most of the time might be spent in a few library routines. This is often true of 3D graphics, which is why the Smalltalk package Jun is pretty reasonable.
Are there any examples of Smalltalk used in performance sensitive domains?
Yes. JWARS has a 1000-1 runtime requirement; we must be able to simulate one day in about 90 seconds.
Computer Associates Interbiz Quick Response Engine, a manufacturing scheduler: http://interbiz.cai.com/Solutions/supply_chain/QRE/default.htm. C++ was considered, but scheduling generates massive amounts of garbage, so the best garbage collector provided the best environment.
Kyma is a commercial realtime music synthesis system that lets you handcraft each waveform. It runs on a set of DSPs which a Smalltalk program dynamically reprograms. You can get it from http://www.SymbolicSound.com
VisualAge for Java is written in Smalltalk. -- rj
When I worked for Cadence (the EDA people, in case there's another one), I wrote part of a large FPGA developement system, which was eventually sold on to Atmel, and was written entirely in VisualWorksSmalltalk (actually initially ObjectWorks).
This seems to confirm that most Smalltalk applications are custom, or at least obscure. This particular case is interesting in being a Real System written by a bunch of Real Programmers rather than a toy DB front end.
From a July 6th 2000 comp.lang.smalltalp posting: We're looking for one or two talented developers to joing us in our San Francisco offices.... using VisualWorks at a leading internet Application Service Provider... well over 5 million page views per day and growing fast... great salary + benefits + options... relaxed, fun environment... topnotch team.
http://www.ezboard.com -- MichaelChean
[Note: It is now 2011. Should we hang on to stuff this temporal when it is this old?]
Both Liberty BASIC (http://www.libertybasic.com) and it's web cousin Run BASIC (http://www.runbasic.com) are written in Smalltalk. Liberty BASIC is written in VisualSmalltalk and Run BASIC is built using VisualWorks and Seaside.
ProjectIndex describes several projects done in Smalltalk. LanguagePissingMatch describes other uses of Smalltalk, including commercially-available (i.e., non-custom) applications.
Smalltalk gave us: MVC (now a widely used paradigm), SUnit (unit testing framework, now basis for TDD, widely used in as xUnit and the basis for Agile), OO language (basis for Java, CPP, Ruby, etc), Seaside (web frame work used in many websites), Aspect Oriented Programming, Refactoring Browser, IDE, Envy (the envy of source code management systems, with method level editions), -- GeirEspenFygle?
ObjectiveCee is C with Smalltalk message passing. So Smalltalk indirectly gave us CocoaApi? and iOS