Home > Archive > Compilers > June 2004 > compiler writing as a career?
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
compiler writing as a career?
|
|
| Brandon J. Van Every 2004-06-06, 8:58 pm |
| I'd like to ask some career-oriented questions about compiler writing,
to see if this is a good direction for me to go in, given my personal
sensibilities.
My background is 11 years of 3D graphics and assembly optimization.
I've always been exceedingly good at ASM code. I'm also an
independent game designer. I'm not interested in the mainstream game
industry; it is too boring, stressful, low-paid, and risk-adverse.
Consequently, I'm trying to figure out other kinds of computer work
that I can stand to do / might actually enjoy doing, that are
lucrative enough to fund my gaming R&D habit. I would wish to be
self-employed.
I don't know beans about compiler desgin. I imagine myself plenty
capable of learning, given my ongoing interest in 'difficult problems'
in 3D graphics and AI. I'm currently learning OCaml to tackle 3D and
AI problems. I'm thinking of adding compiler design, since OCaml gets
used for that a lot, and also isn't quite ideal for 3D graphics as is.
Areas I'm interested in:
- higher level languages that increase programmer productivity
- migrating C++ code to higher level languages
- domain-specific 3D graphics languages
- domain-specific AI languages, although I'm pretty new to AI
- assembly optimization
My prejudices:
- C++ is a regressive language that wastes people's time.
- Java and C# merely clean up some syntax and bring garbage collection to
the masses.
- Java and C# are uninteresting from an optimization standpoint, being
driven by the needs of corporate accounting software.
- all 'grunt coding' is going to be exported to the second and third worlds
over the next decade.
- only those with exceedingly advanced language technology will control
their destiny
I have no interest in working on C++, Java, or C# in any capacity,
besides migrating away from them. I am curious to what degree there's
a market for "more productive, more optimized" higher level language
design and implementation. Who out there has got bucks, and is
willing to fork over money to move on? What does one have to do to
secure such jobs and contracts?
Or is the compiler design market a ghetto of marginally better C++
compilers?
--
Cheers, www.indiegamedesign.com
Brandon Van Every Seattle, WA
"We live in a world of very bright people building
crappy software with total shit for tools and process."
- Ed Mckenzie
| |
| Sandra Loosemore 2004-06-07, 3:57 am |
| "Brandon J. Van Every" <vanevery@indiegamedesign.com> writes:
> I'd like to ask some career-oriented questions about compiler writing,
> to see if this is a good direction for me to go in, given my personal
> sensibilities.
>
> [snip]
>
> I have no interest in working on C++, Java, or C# in any capacity,
> besides migrating away from them. I am curious to what degree there's
> a market for "more productive, more optimized" higher level language
> design and implementation. Who out there has got bucks, and is
> willing to fork over money to move on? What does one have to do to
> secure such jobs and contracts?
>
> Or is the compiler design market a ghetto of marginally better C++
> compilers?
It seems like hardly anybody outside of academia is working on
designing or implementing new high-level languages any more. I've
only seen a few ads lately for jobs involving domain-specific
languages (MatLab, OpenGL shading language, etc). Most of the
compiler jobs that are out there nowadays are for back end work, like
porting GCC to embedded processors, or performance tuning on existing
back ends. This kind of work is generally not tied to any particular
high-level language; instead, you need to know about general compiler
concepts and the internals of whatever implementation you're working
with, be familiar with graph algorithms, and become an expert on the
architecture you're targeting. If you browse through the job postings
on compilerjobs.com or in the comp.compilers archives, you'll get the
general picture of where the jobs are and what skills are in demand.
My perspective on this? I'm an experienced compiler hacker currently
looking for front end or runtime library work. I got kind of burned
out on back end work in my last job and don't really want to do that
any more. My other chief aversion is to Windows rather than any
particular programming language. :-P
-Sandra
http://www.frogsonice.com/resume.html
| |
| Randy Crawford 2004-06-09, 3:57 am |
| Brandon J. Van Every wrote:
> I'd like to ask some career-oriented questions about compiler writing,
> to see if this is a good direction for me to go in, given my personal
> sensibilities.
....
> I have no interest in working on C++, Java, or C# in any capacity,
besides migrating away from them.
Unlike Brandon, I'm interested in compiler career opportunities of all
kinds.
But I've long wondered what happens to a compiler writer *after* the
compiler is built? Clearly a great deal of work goes into creating or
even porting a compiler, perhaps requiring several folks to build the
tool in a reasonable amount of time. But once the tool is
serviceable, what becomes of its creators? Do they usually move
straight into maintenance of the tool, or start building another
compiler for the same firm, or do they have to change jobs yet again?
I'm sure that if you work for one of the handful of compiler vendors out
there, you can afford to buy a house and settle down. But if most
compiler work is in supporting new processors or embedded hardware, it
seems to me that few of those employers would be inclined to keep on a
permanent compiler guy/gal after the compiler for the system is done.
So most compiler work sounds like it's transient.
Is that so? Are compiler builders inevitably high-tech nomads?
Randy
--
Randy Crawford rand AT rice DOT edu http://www.ruf.rice.edu/~rand
| |
| Sandra Loosemore 2004-06-11, 3:57 am |
| Randy Crawford <rand@rice.edu> writes:
> Unlike Brandon, I'm interested in compiler career opportunities of all
> kinds.
>
> But I've long wondered what happens to a compiler writer *after* the
> compiler is built? Clearly a great deal of work goes into creating or
> even porting a compiler, perhaps requiring several folks to build the
> tool in a reasonable amount of time. But once the tool is
> serviceable, what becomes of its creators? Do they usually move
> straight into maintenance of the tool, or start building another
> compiler for the same firm, or do they have to change jobs yet again?
>
> I'm sure that if you work for one of the handful of compiler vendors out
> there, you can afford to buy a house and settle down. But if most
> compiler work is in supporting new processors or embedded hardware, it
> seems to me that few of those employers would be inclined to keep on a
> permanent compiler guy/gal after the compiler for the system is done.
> So most compiler work sounds like it's transient.
>
> Is that so? Are compiler builders inevitably high-tech nomads?
It's not quite that bad. You've probably heard the expression, the
last 10% of the work takes 90% of the time -- and that's definitely
true for compilers. Even after you've implemented all the well-known
optimization passes, it seems like there are always places where you
can squeeze a few percent more in terms of speed or code size or both,
but it gets harder and harder to do and requires more and more complex
and sophisticated program analysis techniques and lots of attention to
the way different compiler passes interact with each other. Plus,
there are new processors coming out all the time, so there is a lot of
work in retargeting existing compilers. Sometimes you need to add new
language features to the front end to support programmer access to
some weird features of the new hardware or for compatibility with
somebody else's compiler. Occasionally you might even have demand for
a new front end for some other language (say, adding Fortran or Java
to a compiler that started out as C or C++). End result is, I don't
know anybody who migrates around doing a new compiler from scratch
every few years, as you seem to suggest.
-Sandra
http://www.frogsonice.com/resume.html
[My rule of thumb is that the first 90% of the work takes the first
90% of the time, and the other 90% of the work takes the other 90%
of the time. -John]
| |
| Chris F Clark 2004-06-11, 3:57 am |
| I've made my living writing/enhancing compilers for about 25 years and
know several others who have done the same. I haven't worked at the
same company for all 25 years (and if fact, most of the companies have
evntually gone out of business or been absorbed by some other
company). However, I have had numerous stints more than 5 years and
one of 10 years and generally I wanted to move on before the company
was "tired" of me.
On the other hand, I haven't always worked on traditional compilers,
for all 25 years. I've also worked on a wide variety of tools, but
all of them have had some compiler component. If your key tool is a
hammer, you can always find a nail somewhere. A great example of that
was the time I worked on something that was marketed as a memory leak
detector, but in reality the key part of the software was a global
optimizer.
Hope this helps,
-Chris
****************************************
*************************************
Chris Clark Internet : compres@world.std.com
Compiler Resources, Inc. Web Site : http://world.std.com/~compres
23 Bailey Rd voice : (508) 435-5016
Berlin, MA 01503 USA fax : (978) 838-0263 (24 hours)
------------------------------------------------------------------------------
| |
| Clayton Weaver 2004-06-11, 3:59 pm |
| I would expect that the requirements->model->code->test development
skills necessary to develop a compiler travel to any problem domain
involving semantic translation (xml, network management protocols with
plugin hooks, abstract state machine compilers for firewalls and
routers, etc).
While experience with specific languages, tool chains, and target
architectures may have a short shelf life, experience understanding
and modelling the problem domains where those tools are used will
likely be valuable forever.
Regards,
Clayton Weaver
<mailto: cgweav@aol.com>
"Everyone is ignorant, just about different things." Will Rogers
| |
| Friedrich Dominicus 2004-06-12, 9:02 pm |
| Sandra Loosemore <sandra@frogsonice.com> writes:
>
> It seems like hardly anybody outside of academia is working on
> designing or implementing new high-level languages any more.
Well we tried:
http://www.q-software-solutions.com/q/
Just we had to stop before it really was finished. The problem is that
hardly anyone is willing to spend money on a new programming language
this days. So I can not see any way to produce a new language which
makes economcal sense. Well it definitly has made sense for Sun to
work on Java. But how many millions (billions?) have been spend on
it's development?
C# makes probably very much sense to Microsoft. They can tailor that
language to their Operating systems, and because nearly everyone has
to deal with Windows, they will need to buy their stuff.
Another advantage of C# for Microsoft, there is no such thing like a
standard for that. It seems Microsoft does not like standards not set
by them ;(. Just imagine Microsoft was not able/willing to implement
an ANSI C99 compliant compiler, but they were able to develop a new
language in that time ....
I can not name one new programming language in the last 10 years which
has brought up a new company like Borland. Feel free to correct me
about this.
Of course the field is totally different in academia. I have the
impression that a lot of efforts have been put into functional
programming languages... I do not think I hurt programmign language
developers in that area, but they do not have the need to live from
selling their language...
There seem to exist at least an area where language development still
takes place. In the case that it really supports the main business. It
seems as if Erlang is an example for such a language which was
specifically build for their needs.
Regards
Friedrich
| |
| glen herrmannsfeldt 2004-06-25, 7:45 pm |
| (snip)
> [My rule of thumb is that the first 90% of the work takes the first
> 90% of the time, and the other 90% of the work takes the other 90%
> of the time. -John]
I always think of it as Brooks's Law, but the real Brooks's Law
seems to be:
"Adding manpower to a late software project makes it later."
I always thought that the 90% plus 90% quote also came from
Brooks's "Mythical Man Month", but I can't find it there.
Does anyone know the origin of this quote?
The way I remember it is that writing software takes the
first 90% of the time and debugging it takes the second 90%.
-- glen
| |
| Brandon J. Van Every 2004-06-25, 7:45 pm |
| Friedrich Dominicus wrote:
>
> Another advantage of C# for Microsoft, there is no such thing like a
> standard for that.
What are you talking about? C# is been an ISO standard for over a year.
http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=36768&ICS1=35&ICS2=60&ICS3=
--
Cheers, www.indiegamedesign.com
Brandon Van Every Seattle, WA
| |
| Jeff Kenton 2004-06-25, 7:45 pm |
| Several related efforts come to mind for processing XML. These are XSLT,
XSL-FO and XML Query, all specified by the W3C, implemented by various
companies, and in reasonably widespread use.
Friedrich Dominicus wrote:
> I can not name one new programming language in the last 10 years which
> has brought up a new company like Borland. Feel free to correct me
> about this.
-------------------------------------------------------------------------
= Jeff Kenton Consulting and software development =
= http://home.comcast.net/~jeffrey.kenton =
-------------------------------------------------------------------------
| |
| Al Grant 2004-06-27, 3:57 am |
| "Brandon J. Van Every" <vanevery@indiegamedesign.com> wrote
> Friedrich Dominicus wrote:
>
> What are you talking about? C# is been an ISO standard for over a year.
> http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=36768&ICS1=35&ICS2=60&ICS3=
What is more, it started as an ECMA standard, and ECMA make their
standards freely available; C# is at
http://www.ecma-international.org/publications/standards/Ecma-334.htm
| |
| glen herrmannsfeldt 2004-06-27, 3:57 am |
| A Pietu Pohjalainen wrote:
> glen herrmannsfeldt <gah@ugcs.caltech.edu> wrote:
(snip)
[color=darkred]
> The original seems to be 'Rule of Credibility': The first 90% of the
> code accounts for the first 90% of the development time. The
> remaining 10% of the code accounts for the other 90% of the
> development time.
The one I was remembering was more like:
"Writing the code takes the first 90% of the time, debugging it takes
the second 90%."
The implication that people tend to underestimate debugging time.
Slightly related, told to me by my first boss in a computer
programming job:
"All computer programmers are optimists."
-- glen
| |
| Brandon J. Van Every 2004-06-27, 3:57 am |
| Sander Vesik wrote:
> Brandon J. Van Every <vanevery@indiegamedesign.com> wrote:
http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=36768&ICS1=35&ICS2=60&ICS3=[color=darkred]
>
> But it very much depends on where you draw the line between the
> language and its standard library ending and extensions
> beginning. With a 'single major vendor' situation, its not clear where
> the proper place is and certainly many are using a lot larger part
> than the standard covers as the minimal subset that defines the
> language and its runtime.
While I was still vaguely interested in C#, I looked at what parts of
the library were standard and which weren't. The core things you'd
expect to be standard, like lists and so forth, were standard. I'm
not worried about core C# libraries being standard. It's as you
expand to a very big, inclusive notion of libraries that one gets the
problem you describe. If you were going to write your own code from
scratch you'd be fine. If you wanted to leverage every obscure thing
in existence, you wouldn't be.
That was true for C++ for quite awhile as well, and arguably still is if
you're stuck with older compilers. Yet we don't worry about C++ being
monopolized.
I think there's a tendency to confuse C# standard libraries for .NET
libraries.
--
Cheers, www.indiegamedesign.com
Brandon Van Every Seattle, WA
| |
| Kevin André 2004-06-28, 8:59 pm |
| > Just we had to stop before it really was finished. The problem is that
> hardly anyone is willing to spend money on a new programming language
> this days. So I can not see any way to produce a new language which
> makes economcal sense. Well it definitly has made sense for Sun to
> work on Java. But how many millions (billions?) have been spend on
> it's development?
It's also very hard to come up with a new language that is much better
than the ones that already exist. And if a new language is not
significantly better than the ones there already are, then probably
(almost) nobody will learn it.
> I can not name one new programming language in the last 10 years which
> has brought up a new company like Borland. Feel free to correct me
> about this.
Can a new language bring up a new company?
--
Kevin André
|
|
|
|
|