BT

Scala Turns Ten Today

by Alex Blewitt on Jan 20, 2014 |

Ten years ago today, Michel Schinz announced the first implementation of the Scala programming language. When announced, it was describe as "a language that smoothly integrates object-oriented and functional programming" and which "is designed to express common programming patterns in a concise, elegant and type-safe way."

The original announcement reads:

We'd like to announce availability of the first implementation of the Scala programming language. Scala smoothly integrates object-oriented and functional programming. It is designed to express common programming patterns in a concise, elegant, and type-safe way. Scala introduces several innovative language constructs. For instance:

  • Abstract types and mixin composition unify ideas from object and module systems.
  • Pattern matching over class hierarchies unifies functional and object-oriented data access. It greatly simplifies the processing of XML trees.
  • A flexible syntax and type system enables the construction of advanced libraries and new domain specific languages.

 

At the same time, Scala is compatible with Java. Java libraries and frameworks can be used without glue code or additional declarations.

The current implementation of Scala runs on Java VM. It requires JDK 1.4 and can run on Windows, MacOS, Linux, Solaris, and most other operating systems. A .net version of Scala is currently under development.

Although the .net version is no longer being maintained, the goal was to provide a common language that would run on both VMs and allow portability between operating systems. However, advances in the JVM's JiT and an increasing dependence on the Java bytecode meant that the .net version was discontinued when Scala 2.10 was released.

Scala has brought functional programming to mainstream JVM languages, and directly stimulated Java 8's upcoming inclusion of lambdas (often incorrectly called closures) and default methods for interfaces. Both of these have been available in Scala since the early days via functions and traits, and their acceptance provided new ways of programming in more concise and testable ways.

With Scala's success came its complexity, as the language features can be used for both great and poor readability. By allowing any Unicode identifiers to be used as method names and functions (including symbolics) the standard Scala library has grown to include emoticons functions such as =:=, :+ and :\ amongst others. Scala's trade-off is to improve writeability at the potential cost of its readability.

Finally, Scala still sees itself as a research language, trying out new features and deprecating older functionality (such as the original Actors package, which brought it fame similar to Go's coroutines). The generated bytecode varies from release to release, which means there is limited open-source projects compiled for anything but the current release of Scala, and although 2.10 has been available for over a year, the transition between major Scala releases is often a painful one.

With this year's release of Java 8 bringing a subset of Scala features to the JVM it will be interesting to see what Scala adds next. Binary compatibility would bring stability to the language but seems as far off now as it did almost a decade ago, but time will tell.

Where do you think Scala will go in the next ten years?

Hello stranger!

You need to Register an InfoQ account or to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Discuss

Educational Content

General Feedback
Bugs
Advertising
Editorial
InfoQ.com and all content copyright © 2006-2013 C4Media Inc. InfoQ.com hosted at Contegix, the best ISP we've ever worked with.
Privacy policy
BT