views:

191

answers:

9

I've always been interested in writing and designing programming languages. Of course, it's pretty difficult to find an employer that will let you write a programming language as part of your job. So I'm looking for the "next best thing".

What fields of programming will let me get some experience solving some related problems? Or what kinds of employers are most likely to view all of my dinky little interpreters as relevant experience?

+4  A: 

None. The bulk of the professionals in that field do not design languages for a living, but retarget existing compilers to new (usually embedded) targets, or work on source2source conversion systems for legacy code, making a few language extensions in the process.

You should really ask yourself if you want this, because, besides from an extremely lucky shot, that is the realistic outlook of what you will do if you go into this industry.

Remember that the big public toolchain industry is not very profitable at the moment, and that maybe a good 100 languages are in largescale pulbic use and continually maintained, after 30 years of programming languages creation.

I know this is is very gloom, but I hope it sets you on the path to chuck the romantic, hobbyist view, and start researching how the real world in this field looks like.

Moreover, having done small hobby projects on your own is not really a pre. You need to show that you can work on large projects in a team, more than that you can create a small interpreter on your own. If you really want to pursue this, I'd recommend:

  • stay in school, and get a bachelor (preferably a master or PHD) in CS.
  • join some opensource team that works on a significant project in the field. gcc, but also the Java world, Tracemonkey (Mozilla), Mono etc. Verifiable experience in real world scenarios is very important.
Marco van de Voort
I don't necessarily disagree with you, but not every company looks for large-scale contributions. In fact, a lot of earlier-stage startups prefer someone who can work independently. That said, I do see your point that I could spend more time working on projects *with* other people.
Jason Baker
Sure, but above a certain level (Bachelor, Master) that is already assumed, not an unique plus.
Marco van de Voort
Are you saying that a degree says you're able to work with other people? I disagree. You're able to work with other students, not people.
Tor Valamo
I disagree. There are probably thousands of DSLs out there. My company alone has 2 house-made DSLs tailored for a specific task, and we're a pretty small company.
nikie
@Marco - I disagree. It's not about education or experience at all. It's more about personality. Some people work better in large teams; others work better in small teams. If I wanted to work at some place like Google, I'd probably need a lot of large-team experience. I'd say that being able to work in such an environment is probably more important than technical prowess. On the other hand, if I want to work for a 2-person startup, chances are they want to know I can get things done and adapt to new situations.
Jason Baker
Tor: No I am not saying that. I said more that they are assumed, and having them puts you under par.
Marco van de Voort
+3  A: 

I think the best way to get into this type of work would be to undertake an advanced degree with a specific focus on language design, compilers etc. It's going to be very tough for you to walk in off the street into a private company and start writing new language features otherwise.

You could also shoot a little higher and on your own, or with a small team, produce something that is much more than just a dinky little interpreter. Show your potential employer that you can produce something useful.

Paul Sasik
+6  A: 

If your interest in language design is irrepressible, get a Ph.D. and make it your area of research. You can count on academia to support all manner of unprofitable activity.

FarmBoy
But I don't recommend this. The cognitive freedom of academia is gained only by giving up many other freedoms. (I used to be a math professor.)
FarmBoy
Can you give an example? What other freedoms?
DR
Well, try the article "Why I am Not a Professor OR The Decline and Fall of the British University", an in-depth expose, written by a professor who quit in 1997, of how and why the academic climate in UK universities because steadily more bleak from about 1989 onwards (I quit in 1989... and am glad I did!)http://www.lambdassociates.org/blog/decline.htm
martinwguy
For one, the freedom to live where you want. You can get a job as a programmer in any reasonably sized city, but academic jobs require a national job search, usually.
FarmBoy
+2  A: 

Actually, there is a fair bit of work going on with visual programming. It isn't exactly traditional programming language work as we know it but there is a need for it. For example, a lot of advanced data analysis tools rely on visual programming tools (Pentaho). You don't have to look too hard to find good practical uses of visual programming.

To get into visual programming languages, you will need to do an advanced degree with an advisor in the area. You will need to do some human computer interaction / interface work in addition to the programming language stuff.

Chris J
+1  A: 

Stay in academia. If you want to develop a new language your chances of being paid to do so are vanishingly small. Newer languages tend to be expressions of a novel problem domain, and you only really encounter the chance to develop them where (a) novel problems are part of the scenery, and (b) no-one is troubled by the necessity to actually earn a living.

Please take your time over it, as well. Speaking as a jobbing developer, the last thing I need is another blasted language to learn :-)

Bob Moore
+1  A: 

I have worked as an embedded programmer for the past ten years. Before that I wrote compilers (and assemblers, linkers, debuggers, etc.) for 20 years.

My co-workers joke that I turn every problem in to a parsing problem. And they're right. I've used techniques that are appropriate for language design many times during the course of my career.

Today, I play around with compiler stuff on the side: http://ellcc.org. It helps me scratch my language itch.

Richard Pennington
Just out of curiosity, how do you turn every problem into a parsing problem?
Jason Baker
You can parse a lot of things in every day programming that aren't necessarily a full blown language. Data files, command lines, symbol tables, debugging information, communication protocols, etc. The tools of a compiler writer can come in handy for many programming problems.
Richard Pennington
+1  A: 

In static analysis there is a lot to do, and the problems that come up are related to those that interest you.

Pascal Cuoq
+2  A: 

An employer that has a rich "domain" (i.e. a complex industry) can benefit from a "domain specific language".

Will they realise this? Unlikely. They'll be too likely trapped in their deep domain (and entrenched legacy systems) to see that a targeted language could help unclog the mire.

But if you bury yourself in a complex industry for long enough to gain rich domain knowledge you may then be able to turn them with your own skunkwork DSL. Slim chance.

Leon Bambrick
+1  A: 

Most currently popular languages came out of a geniune NEED to scratch a particular ITCH. Python came about because some non-C programmers NEEDed to customize inputs their C programs and libraries. Lua came out of the NEED to embed a scripting language in to C programs. Erlang was created to address the NEED of 99.9999999% uptime, hot code loading, and highly concurrent execution. Perl came out of the NEED to easily write programs that parsed text files.

So the very simple question any employer will be asking themselves, and you should ask yourself is. What NEED can I supply a solution to that doesn't exist. Hobby work very seldom shows that you are providing solutions to a NEED, most of the time it is showing that you like to re-invent the wheel for the sake of re-inventing the wheel.

fuzzy lollipop