I’ve wanted to talk about Smile for a long time now.
Smile is a programming language. A decade ago when I named it, it stood for “Syntax Makes Interpreting Lisp Easier,” but don’t tell anybody there’s a Lisp in there, because it doesn’t look, act, or feel like Lisp.
So let’s start at the beginning.
Smile is a programming language.
It is built on extremely solid theoretical foundations, on a cross between the untyped lambda calculus and a message-passing model. The core of the language is built on very simple concepts, rigorously applied at every level to build mathematically-provable abstractions. It’s a language that is designed to make computer scientists giggle with glee at its elegance and simplicity.
It is also a programming language designed for practical use. Real use. By real programmers. Who need to get real things done. It comes out-of-the-box with strong support for strings and files and regular expressions and crunching and slicing and dicing data so that you can solve real problems with it in just a few lines of code. The language syntax is simple and easy to learn, for common problems it reads a lot like languages you already know, a little Python here, a little Ruby there, a little JavaScript over there. That’s by design: You don’t want to waste your time learning another language’s bizarre idiosyncracies. Hello, World shouldn’t take you ages to divine; it should be obvious to any moderately-capable programmer what every character in it does:
#include "stdio" Stdout print "Hello, World.\n"