Scala is a object-functional programming and scripting language for general software applications, statically typed, designed to concisely express solutions in an elegant, type-safe and lightweight manner. Scala includes full support for functional programming. It cleans up what are often considered to have been poor design decisions in Java and adding a number of other features designed to allow cleaner, more concise and more expressive code to be written. It is intended to be compiled to Java bytecode or .Net. Both platforms are officially supported by the EPFL. Like Java, Scala is statically typed and object-oriented, uses a curly-brace syntax reminiscent of C, and compiles code into Java bytecode, allowing Scala code to be run on the JVM and permitting Java libraries to be freely called from Scala without the need for a glue layer in-between. Compared with Java, Scala adds many features of functional programming languages like Scheme, Standard ML and Haskell, including anonymous functions, type inference, list comprehensions, lazy initialization, extensive language and library support for side-effect-less code, pattern matching, case classes, delimited continuations, higher-order types, much better support for covariance and contravariance than in Java, etc. Scala also provides a unified type system, where all types, including primitive types like integers and booleans, are objects that are subclasses of the type Any. Scala likewise contains a number of other features present in C# but not Java, including operator overloading, optional parameters, named parameters, raw strings, and no checked exceptions.
|May 16, 2013||Development Lead
The National Archives
|July 17, 2012||Research Programmer (MITH)
University of Maryland, College Park
College Park, Maryland