Jukka Lehtosalo

Interests (and motivation)

I'm interested in combining the benefits of scripting languages and statically-typed object-oriented languages within a single programming language. I'm also generally interested in improving programmer productivity and software quality via improvements in languages and tools. I try to focus on approaches that are applicable to a wide range of software development contexts instead of more specialised or theoretical approaches.

Before starting at the Computer Laboratory, I worked for 9 years for Finnish software companies, first as a software engineer and later as a development manager. I was involved in diverse projects ranging from information retrieval systems, pattern recognition and natural language processing to enterprise and mobile application development, with multiple platforms and programming languages. We used scripting languages when they were appropriate and statically-typed languages in other situations. However, having multiple quite different languages that do not interact very well with each other felt wasteful. Often a single program could benefit from different kinds of language in different stages of development and in different program components.

At the start of a new software development project, requirements are typically changing rapidly, and there is a desire for rapidly shipping working code. The development investment starts delivering income (or savings) only when the code is in production, and often there is a big advantage for being the first product in a new market segment. Using a dynamically-typed language such as Python or PHP early in a development project enables the desired flexibility and high productivity. This initial phase is, however, typically followed by a long maintenance phase, when fewer changes are introduced to existing code, and stability is the main concern. This, along with increased project size and complexity, makes static typing offered by languages such as Java, C# or Scala preferable. Thus gradually adopting static types as a development project matures can reduce the net cost of software development, but only if this is possible without costly rewrites.