
What I learned at the Emerging Languages Camp - fogus
http://journal.stuffwithstuff.com/2010/07/23/what-i-learned-at-the-emerging-languages-camp/
======
stephenjudkins
The author also presented on his own language, Finch
(<http://bitbucket.org/munificent/finch>). It was a great presentation, and
the language implementation is _incredibly_ easy to read and understand. I
don't see using Finch for any real projects (like many of the languages
presented) but it was inspiring to see so many people presenting well-crafted
labors of love.

For someone interested in programming language design or implementation,
Emerging Languages Camp had a lot to offer. It received universal praise from
everyone I talked to.

~~~
monkey
The author's talk on Finch was indeed awesome. He was very funny and modest
and self-deprecating, but it was obvious to everyone that he was really smart.
And his talk had some of the most quotable bits in the whole conference.

"I'm writing a recursive descent parser by hand because I keep it real." LOL

His listings of the things his language _couldn't_ do were hilarious too.

In response to a question from the audience, he discussed how he designed a
programming language for the first time, which was really edifying and an
interesting discussion of the mental journey. His answer was really good and I
can't do it justice, but it talked about how he solved the problems by working
in little stages. He knew that he could break up a text file into tokens, and
that's how he built a lexer. Next, he realized that a parser was a lot like a
lexer, and recognized groups of tokens, so he could build a parser. So he then
had a tree, and he found that he could walk that tree. As he walked the tree,
he realized he could emit bytecode. It was a really good description, and
better than any single lecture in an entire semester of my college Compiler
Construction class.

The fact that the author didn't even know he was going to be able to speak
until the day of the presentation, and came up with a very polished and
professional and engaging presentation says volumes about his ability. I think
everyone really enjoyed his talk, and it really had a sense of joy and fun and
discovery about it. And it was funny as hell. There is no doubt that we'll be
seeing much more from him.

------
arohner
Good article, but I have to nitpick here:

 _Any well-versed programming language person can tell you about both
recursive-descent parsers and generated parsers. They’ll also tell that
generated parsers are the “right” way to do that.

Most of the time that advice will save you from wasted effort, but sometimes I
think it keeps people from going down paths that may actually be fruitful.
Sometimes the thing that everyone knows is true isn’t. (For example, every
language I know of with a lot of real-world users actually does use a hand-
written parser.)_

Recursive descent parsers are good when 1) you have a simple grammar and 2)
you want fewer dependencies. Most lisps have hand-written recursive descent
parsers because lisp grammar is easy.

Also, MRI ruby (aka CRuby1.8) uses a generated parser.

~~~
joe_the_user
Yes, I like writing recursive descent parsers but I don't know of any in
"industrial" use, beside the lisp parser you just mentioned.

I'd like to know if there are more.

~~~
panic
LLVM's clang uses a recursive-descent parser to parse C, ObjC, and C++
(<http://clang.llvm.org/features.html#unifiedparser>).

 _Clang is the "C Language Family Front-end", which means we intend to support
the most popular members of the C family. We are convinced that the right
parsing technology for this class of languages is a hand-built recursive-
descent parser. Because it is plain C++ code, recursive descent makes it very
easy for new developers to understand the code, it easily supports ad-hoc
rules and other strange hacks required by C/C++, and makes it straight-forward
to implement excellent diagnostics and error recovery._

------
scott_s
Glad I read this, because I learned about Frink:
<http://futureboy.homeip.net/frinkdocs/> and the FAQ:
<http://futureboy.homeip.net/frinkdocs/faq.html>

This guy knows units of measurement.

~~~
jasonwatkinspdx
His presentation was a pleasure to watch. I'd seen the pitch for frink in a
video some time ago, but he's a charismatic speaker that keeps your attention
even if you're roughly familiar with the material.

During the QA portion someone gave him a "gotcha" question only to have the
tables turned when it was made clear the speaker new _far_ _far_ more about
standards and units of measurement than anyone in that room, city and possibly
state.

------
isnoteasy
I would prefer a conference about emerging features in languages, since many
languages only differs in superficial aspects. Is better to located what new
features are needed.

~~~
jckarter
There were a number of talks in that vein. Rich Hickey's talk about his
experimental "pod" feature in Clojure for safe scoped mutation, Joe Pamer's
talk about making F# suitable as a first-class .NET language, and Jonathan
Shapiro's talk about the correctness constraints guiding BitC's design all
focused more on problem domains and the features necessary to fill those
domains than superficial language features.

