The Ambitions of Scala

In the object paradigm, a system consists of objects with mutable state, whereas in the functional paradigm, it consists of functions and immutable values. At first, these two worlds seem incompatible. But not so for Odersky. In 2004 he released the first version of Scala, a language that combines both. Scala's roots are object-oriented, sharing … Continue reading The Ambitions of Scala


Package Visibility is Broken

In Java, classes and class members have by default package visibility. To restrict or increase the visibility of classes and class members, the access modifiers private, protected, and public must be used. Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N private Y … Continue reading Package Visibility is Broken

Masterminds of Programming

Masterminds of Programming features exclusive interviews with the creators of popular programming languages. Over 400+ pages, the book collects the views of these inventors over varying topics such as language design, backward compatibility, software complexity, developer productivity, or innovation. Interestingly, there isn't so much about language design in the book. The creation of a language … Continue reading Masterminds of Programming

Your Language is a Start-up

Watching the TIOBE index of programming language popularity is depressing. PHP and Javascript rule the web, despite the consensus that they are horrible; Haskell and Smalltalk are relegated to academic prototyping, but unanimously praised for the conceptual purity. How technolgy adoption happens is a puzzling question. Evidences seem to suggest that what matters is to attract a … Continue reading Your Language is a Start-up

Natural Queries

Programming language research is a quest for expressivity. The aim it enable the expression of complex computations in concise and intuitive ways. The problem is that conciseness and intuitivity are usually conflicting. Expressivity is enabled by higher-order constructs which are hard to reason about. On one hand, functional languages enable the expression of complex computations … Continue reading Natural Queries

Understanding the Visibility of Side-Effects

This entry is all about the Java Memory Model and the happens-before partial order it formalizes. The official specification of the JMM is authoritative but unreadable. Fortunately, there are useful resources around that aim at making it more accessible: the wikipedia entry the JSR 133 FAQ Java Concurrency in Pratice Happens-Before The JMM defines a … Continue reading Understanding the Visibility of Side-Effects