[racket] Racket in Industry Apologia (was Re: Racket Apology)
On 09/30/2011 02:07 PM, John Clements wrote:
> Racket is an experimental language (cf. Shriram's "hothouse"). We are
> *constantly* experimenting with the language, and on another level,
> we have a language that's designed to enable *your* language
> experiments. That's what makes it an exciting language to work with
> and on, and why it has design features that are still years away from
> appearing in mainstream languages.
>
> That's *also* the reason that you'll almost never see Racket used in
> industry. It's a language that doesn't compromise its ideals, and is
> constantly innovating, and if you're a business that's looking for a
> stable language with a broad supply of programmers, Racket would be
> an extremely surprising choice.
I feel compelled to point out that there's a big difference between
"industry" as a whole and "business that's looking for a stable language
with a broad supply of programmers". Just as most businesses aren't the
big corporations everyone likes to rant about, not all (and maybe even
not most?) tech companies aren't big companies where it's acceptable to
throw warm bodies with a passable knowledge of Java or Python at a
problem. Outside of the large companies of the world, Racket's rapid
evolution is not a problem and not even a detriment. It's certainly no
less rapid than the progress in mobile operating systems and client-side
web technologies or the churn in Linux distributions, and unlike the
latter, Racket is actually moving forward, not laterally. If the
language does change incompatibly in a way that affects me and for some
reason I need to maintain compatibility with an old version, it's much
easier to accomplish this in Racket than in almost any other language.
In fact, I don't think there's been a better time to be using Racket in
industry than right now. It is on the whole the programming environment
that demands the least from me in order to do what I want to do. Tasks
that in almost any other environment would be extremely complicated or
tricky are trivial in Racket. Just to give one example, a
colleague/employee who is picking up Racket for a project was positively
giddy at how easy it was to put together a small cross-platform GUI for
the project. Personally, I can't think of another programming
environment which does that as easily. If you can find one, it probably
won't make it as easy to create web applications, or simple command-line
tools, or any of the other things that Racket does so effortlessly
without making demands on my time or sanity. No tool which was truly
unsuited for use in industry would do so many useful things so well.
As far as supply of programmers is concerned, I'm simply not worried
about it. Racket is not particularly hard to learn, especially if you
have prior experience in Common Lisp (as my colleague does) or one of
the typed functional languages. If you can't or won't learn Racket, then
there's no chance that you're going to understand the rest of what we do
either. (We have a lot of C as well, but it's not conceptually trivial.)
When it comes time to grow the company further, I'll be looking for
people who are flexible enough to learn new technologies and create new
things, not people who are skilled at rearranging prefab Java building
blocks. We don't do engineering around here by throwing resources at
problems - and that applies as much to programmers as it does hardware.
--
Brian Mastenbrook
brian at mastenbrook.net
http://brian.mastenbrook.net/