Emerging Programming Languages. Alex Payne, CTO Simple Bank.

Evolution of programming languages does not end. Not talking about R, D, Groovy, Fantom, Lua, Scala, Clojure, F#, Haskell, Erlang.

There are different languages for different jobs.

Starting with most boring to least boring:

A Better Java

Kotlin

  • Java++ (or Scala–?) from JetBrains
  • Static
  • OOP
  • Generics
  • Closures
  • Scala with the complicated parts removed

Gosu

  • “A pragmatic language for the JVM”
  • Static
  • OOP
  • Generics
  • Closures
  • Like Java and Scala after a wild night out with Ruby.

Ceylon

  • Redhat’s updated Java
  • Static
  • OOP
  • Generics
  • Interceptors
  • Keywords more explicit than Java, more readable

A Better JavaScript

Stratified.js

  • “JavaScript + structured concurrency”
  • Concurrent
  • Asynchronous

CoffeeScript

Clojurescript

  • Clojure -> JavaScript
  • Dynamic
  • Functional
  • Lisp style

Dart

  • Google’s JavaScript replacement
  • Classes
  • Generics
  • Optional typing
  • JavaScript with classes

Roy

  • Functional code into JavaScript from Atlassian
  • Monads
  • Type interface
  • Pattern matching

Web Development

Opa

  • A unified platform for web apps
  • Source-to-source
  • OOP
  • Metaclasses
  • Produces ocaml
  • Has XML literals assigned to variables

Ur/Web

  • DSL for web applications
  • Functional
  • Static
  • Metaprogramming

Systems Programming

Go

  • Revenge of the 1970s
  • Compiled
  • Concurrent
  • Garbage collected
  • From bell labs
  • Modernized C
  • Focused on fast compiling and a pleasurable development experience
  • Go has a community model that other languages could borrow from

Rust

  • Safe
  • Concurrent
  • Practical
  • Compiled
  • OOP
  • Functional
  • Static
  • Amalgamation of maintaining years of C++ code bases
  • Looks like C++ but like Scala plus an “everything and the kitchen sink” functional programming language

OOC

  • C + Objects + More
  • Compiling to c99
  • Source-to-source
  • OOP
  • Metaclasses
  • Compiles to c99 so can be used anywhere

Dynamic Programming

Fancy

  • A dynamic language on Rubinius VM
  • Dynamic
  • OOP
  • Actors
  • Looks like Ruby and Python with JSON inside

Slate

  • A modern Smalltalk
  • Dynamic
  • Prototypes
  • Streams
  • Macros

Elixir

  • “Modern programming for the Erlang VM”
  • Dynamic
  • Protocols
  • Records
  • Macros
  • “A lot of people look at Erlang and their monocle falls out”

Technical Computing

Frink

  • “Make physical calculations simple”
  • Embeddable
  • OOP
  • Unicode
  • “It’s a calculator, but a really smart calculator”
  • A language and a database with facts about our physical world embedded into the language.
  • Definitions of gravity, pounds and feet right in the language without having to import a library.
  • If you read one documentation this week, make it the Frink documentation
  • Embeddable in JSP
  • Ported to mobile devices
  • Being pushed in every direction

Julia

  • “High-level, high-performance technical computing”
  • Dynamic
  • Compiled
  • Parallel
  • “Think of the language you wish you were writing in when you’re writing in R”
  • Julia tries to be a dynamic, readable language for people doing dynamic computing.
  • Julia is much faster than R for calculations
  • Not as advanced as R at the moment

Faust

  • A language for DSP and synthesis
  • Functional
  • Source-to-source compiled
  • Language for manipulating audio and doing synthesis
  • Can build interfaces for things like virtual guitar pedals
  • Compiling down to C++ under the hood
  • Tax-funded research product in France

Querying Data

Bandicoot

  • A language for set algebra
  • Functional
  • Persistency
  • Distributed
  • A database that comes with a language, a language that comes with a database.
  • Language tied to the persistency model: could be the downfall of the language or the winning feature

Quirrel

  • A language for analytics
  • Declarative
  • Functional
  • Composeable
  • Light-weight, functional language

Makes You Think

Wheeler

  • “Different and special”
  • No variables
  • No functions
  • No objects
  • Build up patterns and transitions between patterns
  • Wheeler builds a graph of all the things it knows about and when you call them the graph is traversed.
  • Programing languages can be whatever you want them to be, maybe they won’t be practical but they will change how you think about working with a  computer everyday.

Kodu

  • Programming for kids on XBOX
  • Visual
  • Interactive
  • Iterative

Explosion in platforms partially responsible for explosion of languages: Java, CLR, JavaScript (V8, etc), Rubinius, LLVM, Erlang VM, PHP, XBOX

Explore, experiment, commit, loop.

You need a strategy for how to use these languages and put in use rather than just as a curiosity.

Have an ambient awareness of where the programming world is going.

This is a group project that requires input from everyone.

Loop it: go through the process every few years to see what fits best fits your problem set.

emerginglangs.com

@ermerginglangs

Slides and full video from talk available from Chariot Solutions.