Ola Bini attempts to answer a few questions: Why are new languages still being created, Is it worth choosing languages strategically, and Does language actually matter?
Ola Bini works as a language geek for ThoughtWorks in Chicago. He is one of the JRuby core developers and has been involved in JRuby development since 2006. Ola has created two languages: Ioke and Seph. He’s author of Practical JRuby on Rails Projects and co-author of Using JRuby for the Pragmatic Programmers, a contributor to many open source projects, and a member of the JSR292 Expert Group.
Strange Loop is a multi-disciplinary conference that aims to bring together the developers and thinkers building tomorrow's technology in fields such as emerging languages, alternative databases, concurrency, distributed systems, mobile development, and the web. Strange Loop was created in 2009 by software developer Alex Miller and is now run by a team of St. Louis-based friends and developers under Strange Loop LLC, a for-profit but not particularly profitable venture.
Very interesting talk
To provide a flavor, below is the main recursive loop of an experimental HTML parser written with F# 'Active Patterns' (note WS=whitespace; GT = '>'; LT = '<'; Slash = '/', etc.)
let rec (|Html|) inp acc =
match inp with
| WS (ws, rest) -> (|Html|) rest (WS(ws)::acc)
| LT (Exclaim (PI (p, (GT rest)))) -> (|Html|) rest (PI(p)::acc)
| Script (attrs,body,rest) -> (|Html|) rest (Script(attrs,body)::acc)
| LT (Name (n, Attributes (attrs, IgnoreWS restof))) ->
match restof with
| Slash (GT rest) -> (|Html|) rest (Tag(n,attrs)::acc)
| GT rest -> (|Html|) rest (StartTag(n,attrs)::acc)
| _ -> errorOut restof acc
| LT (Slash (Name (n, (IgnoreWS (GT rest))))) -> (|Html|) rest (EndTag(n)::acc)
| Content (cntnt,rest) -> (|Html|) rest (Content(cntnt)::acc)
| Eof _ -> acc|>List.rev
| _ -> errorOut inp acc
When a pattern is matched, the right side of the "->" is executed. In this case the loop is just collecting html tags in a structured way.
More here fshtml.codeplex.com
Re: Very interesting talk
I started with the algorithm paper by Michael Porter and just transcribed that to code, section by section. This is good example of expressability in my opinon.
Details here: fwaris.wordpress.com/2012/10/30/porter-stemmer-...