Nikola Tesla was a brilliant inventor and visionary who died largely forgotten.
His contributions to the world were enormous, but people still remember Edison and Franklin and da Vinci and Bell. For decades, attempts to honour Tesla with a New York museum at Wardenclyffe failed repeatedly. Only recently has this borne fruit.
Here are some of Tesla’s contributions:
- invented the first alternating current (AC) motor
- developed AC generation and transmission technology
- created the Tesla coil, a high-voltage transformer which came to be the genesis for the cathode ray tube, radio transmitter, radar, and many other technologies
- invented X-ray technology
- invented dynamos and the induction motor
- invented the first working radio
- invented the fluorescent light bulb
- invented the remote control
- invented wireless transmission of electricity
- designed the first hydroelectric generating plant at Niagara Falls
In 1887 and 1888, he was granted more than 30 patents for his inventions.
When Tesla died in 1943, he died penniless and forgotten.
Smalltalk was the brainchild of Alan Kay, a true visionary who led a brilliant team at Xerox PARC.
Today, Smalltalk is greatly underestimated. Although Kay never thought of Smalltalk as the central focus of his vision, it remains a powerful force for the advancement of programming technology. More than four decades later, no programming language has yet to catch up to Smalltalk in terms of simplicity and elegance, minimal cognitive friction, object-oriented purity, elegant live coding and debugging, enormous programmer productivity, and professional respect.
At Slant and StackOverflow, Smalltalk is revered: read The Wisdom of the Crowd.
Capers Jones of Namcook Analytics has shown Smalltalk’s tremendous advantage when it comes to programmer productivity.
Smalltalk’s live coding IDE and runtime are amazingly powerful without the arcane complexity that you find in modern IDEs like Visual Studio, Eclipse, and Xcode. Here’s a demonstration:
Smalltalk continues to evolve and improve in remarkable ways through the Pharo project. Here are some great innovations:
- NativeBoost — having an inline assembler is definitely not a common feature in a dynamic language. NativeBoost has since evolved into Unified Foreign Function Interface (or UFFI).
- Moose is a set of code visualisation tools containing many means to visualise and analyze code.
- Amber, which uses Pharo as the reference language, is a fantastic front-end web programming tool.
- PharoJS is another terrific front-end web programming tool.
- Continuations are a wondrous feature in the Seaside web framework.
- Fuel — a way to serialize live objects, and for transporting your objects around.
- Oz — allows one image to manipulate another one. Very good for debugging an image that has crashed and is unable to open/load.
- Pharo Launcher lets you manage your Pharo images (launch, rename, copy and delete) and download image templates (i.e., zip archives) from many different sources to create new images from any template.
- SmalltalkHub is Pharo’s Github, but unlike Github it is fully open source and all Smalltalk.
- Phratch is a port of Scratch to Pharo — this is important because Scratch has been ported to HTML5 and this is an effort to keep Scratch Smalltalk-based. Phratch is an excellent platform for teaching kids how to code.
- Shampoo — good support for Pharo in Emacs; you can replace the Pharo GUI with Emacs and enjoy the benefits of this most powerful editor.
Like Tesla, Smalltalk has a wonderful legacy. Its beautiful implementation of object-oriented programming has directly influenced the design of nearly every object-oriented language we use today: Java, Python, C#, PHP, Ruby, Perl, Objective-C, Groovy, Scala, Dart, Erlang, CLOS.
Smalltalk introduced the world to the language virtual machine. (No, it wasn’t the first but it was the best-known.) This is the same tech that underpins Java and .NET.
Smalltalk pioneered JIT (just-in-time) compilation.
From Smalltalk came the first modern IDE (integrated development environment), which included a text editor, a system or class browser, an object or property inspector, and a debugger.
Smalltalk was the first language tool to support live programming and advanced debugging techniques such as on-the-fly inspection and code changes during execution in an easily usable form.
Since Smalltalk-80 (in 1980), it had first-class functions and closures which, oddly enough, make Smalltalk quite good for functional programming. Quite remarkable for a “pure” object-oriented language. (How long did it take Java, Python, C# and C++ to get this feature?)
Smalltalk introduced the software architectural pattern MVC (Model-View-Controller).
To a large extent, Smalltalk was responsible for giving us test-driven development (or TDD) and extreme programming (or XP), which are both very influential in today’s standard agile practices.
Smalltalk made “duck typing” a household word. Duck typing is where “type checking” is deferred until runtime — when reflection capabilities are used to ensure correct behavior. We find duck typing in many languages today, including Java, Python, Go, Groovy, Objective-C, and PHP.
Smalltalk pioneered the development of object databases of which GemStone/S is a great example.
Smalltalk gave us the first refactoring browser.
Smalltalk was instrumental in developing the graphical user interface (or GUI) and the “what you see is what you get” (WYSIWYG) user interface.
People don’t realize this, but Smalltalk is every bit as extensible as Lisp! Read Lisp, Smalltalk, and the Power of Symmetry. Who needs Lisp macros?
Apple’s success owes a lot to Smalltalk. It’s true!
- Objective-C has been the foundation of macOS and iOS, and Objective-C is essentially a cross between C and Smalltalk.
- MacOS evolved from NeXTStep which was built with Objective-C.
- Steve Jobs was inspired by Xerox PARC’s GUI and WIMP to completely realign Apple’s strategy; the GUI was a direct outflow of Smalltalk work.
Whew! Nikola Tesla would’ve been proud!
More than four decades later, Smalltalk still enjoys far more commercial usage than any of the upstart languages we hear so much about (for example, Ceylon, Clojure, Crystal, D, Dart, Elixir, Elm, F#, Haskell, Haxe, Julia, Nim, Rust). Cincom, Instantiations, and GemTalk are major Smalltalk vendors. Between them, they have many prominent Smalltalk users:
- Florida Power & Light
- Texas Instruments
- Telecom Argentina
- Orient Overseas Container Lines
- Siemens AG
Just to name a few. In my home country, Smalltalk is used by Communications Security Establishment (CSE), Canada’s national cryptologic agency.
Pharo itself has prominent users, too, for example:
In the early 2000s, the U.S. joint military used Smalltalk to write a million-line battle simulation program called JWARS. It actually outperformed a similar simulation called STORM written in C++ by the U.S. Air Force. That by itself is an astonishing testament to the capabilities of the language.
Here’s a commercial virtual reality application done in Smalltalk: 3D Immersive Collaboration. Magnificent!
Smalltalk is being used to fight Ebola!
Smalltalk is used in wide-scale data visualization for medicines in 16 countries.
Smalltalk was so good for business use that in the early 1990s, IBM chose Smalltalk as the centrepiece of their VisualAge enterprise initiative to replace COBOL. Unfortunately, Java came along in 1995 and put an end to that. And as we all know, today Java is the enterprise standard programming language.
In fact, according to a 1995 IDC report, OO language market shares were:
- C++ — 71.3%
- Smalltalk — 15.1%
- Objective-C — 5.7%
- OO Pascal — 4.2%
- CLOS — 2.5%
- Eiffel — 1.1%
- all others — 0.2%
Here’s a page from Computerworld, November 6, 1995, showing Smalltalk and C++ duking it out:
Let’s look at a few universities and research groups that use Smalltalk (Pharo):
- University of Bern, Switzerland, http://scg.unibe.ch
- Uni. of Buenos Aires, Argentina
- Vrije Universiteit Brussels, Belgium
- Uni. de Bretagne Occidentale, France
- Uni. Catholic of Argentina, Argentina
- Federal University of Espírito Santo (UFES), Brazil
- Uni. of Chile at Santiago, Chile
- Czech Technical Uni., Czech
- CULS Prague, Czech
- DCyT — Universdad Nacional de Quilmes, Argentina http://www.unq.edu.ar
- Ecole des Mines de Douai, France http://ia.mines-douai.fr
- ENSTA Bretagne
- University of Hagen http://www.fernuni-hagen.de/ps/lehrveranstaltungen/k01814/
- HackBo, Hackerspace en Bogotá, Colombia. http://hackbo.co
- Ivan Franko Nat. Uni. of Lviv, Ukraina
- Université de Montpellier, France
- IAE Savoie Mont-Blanc, France
- Uni. de Maroua, Cameroon
- Aalborg University, Denmark
- Northern Michigan Uni., USA
- Uni. Policnica de Catalunya, Spain
- Uni. of La Plata, Argentina
- Uni. of 20 Aout 55-Skikda, Algeria
- Uni. Technologica Nacional at Buenos Aires, Argentina
- Uni. Technologica Nacional at Cordoba, Argentina
- Uni. Nacional de San Martin, Argentina
- Tomsk State University, Russia http://www.csd.tsu.ru
- Université de Louvain la neuve, Belgium
- Université de Yaounde, Cameroon
- Universite di Cagliari, Italy
- Lafhis (AR)
- Institute of Veterinary Genetics IGEVET (AR)
- Software Composition Group (CH)
- CAR (FR)
- RMOD (FR)
- Ummisco (IRD)
- Reveal (CH)
- Pleiad (CL)
- OC (FR)
- CEA-List (FR)
- Laboratório e Observatório de Ontologias (BR)
- Uqbar (AR)
- CCMI-FIT (CZ)
- Lab-STICC Lab-STICC UMR 6285
- Agile Group (IT)
As you can see, Smalltalk is incredibly strong in industry and academia!
So in the end, I am puzzled why Smalltalk gets so little press coverage, why Smalltalk is as forgotten as Nikola Tesla. These two deserve better fates.