BT

New Early adopter or innovator? InfoQ has been working on some new features for you. Learn more

Scala Turns Ten Today

| by Alex Blewitt on Jan 20, 2014. Estimated reading time: 2 minutes |

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?

Rate this Article

Adoption Stage
Style

Hello stranger!

You need to Register an InfoQ account or or login 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

Login to InfoQ to interact with what matters most to you.


Recover your password...

Follow

Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.

Like

More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.

Notifications

Stay up-to-date

Set up your notifications and dont miss out on content that matters to you

BT