[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Industry versus academia

Michael Vanier wrote:

>This is a good point.  I have met some hackers who are very talented but
>who can't imagine programming in anything but C.  It's just "real
>programming" to them, and any language that doesn't offer fine-grained
>bit-level control over the machine is simply bogus in their eyes. 
Yes, that's a really good point.  And here's where I think academia can 
make a big difference,
the main caveat being that it's a big difference but it takes a long 
time: by teaching students about
cool new technology, you eventually end up with people in industry (who 
used to be students)
who are familiar with those cool ideas (that are now not so new, since 
time has passed).

For example, when Gosling and company came out with Java, a lot of 
people took a look at
its use of automatic freeing of memory and, instead of recoiling and 
saying "no can do, GC
is far too weird and slow", they accepted it.  I think that would not 
have happened twenty
years earlier, and probably not ten years earlier.  Good new ideas do 
make it out there, but
it's a painfully slow process.

Of course the fact that it's slow isn't all bad.  It did take a while 
for GC's to get as good as
they are now.  Many, many years of hard work went into development of 
better and better
GC's.  Lots of GC's were really implemented and got tested in very real 
circumstances, and
then new ones were tried out and really tested in real circumstances, 
and all this took a great
deal of time and effort and cleverness, and finally we had these really 
studly GC's that performed
quite well, and at that point, people were willing to say, OK, we take 
this seriously.

Same for JIT compilers.  The first one I knew about, and as far as I 
know the first one that fits
more or less the current concept of a JIT compiler, was by L. Peter 
Deutsch for Smalltalk,
done in something like maybe 1980 at Xerox PARC or something.  He 
published this in the
open literature somewhere (like OOPSLA or something I think), and 
eventually other people tried
it, and some did it well and some did it not so well, and with the 
widespread use and implementation
of Java lately there has been a lot more work on it, and finally these 
things are getting pretty darn good.

Other good ideas are being refined even as we speak.  I learned in the 
two LL workshops that
cool, innovative, high-performance implementation techniques for other 
language concepts that
once were considered innovative in the academic world, and are now 
pretty mature by academic
standards but still ahead of their time by industry standards, such as 
full continuations.  Someday
there will be enough people out there who grok and appreciate 
continuations, that the next time
the planets line up right for a new language to emerge, maybe one of 
those people will be one
of the cooks standing around the pot and will pour in the right 
continuation magic.  It's very hard
to say where or when that might happen, but the chances are higher that 
it will happen, and happen
sooner, if more people are exposed to those ideas.  At MIT, for example, 
every computer science
major gets a walloping dose of continuations as part of the required 

>Another point occurred to me: people in industry often have to learn a lot
>of stuff, but it's stuff that's directly related to their jobs (particular
>development environments, tools, etc.).  Generally, they are required to
>learn these things as part of their jobs, since decisions about what
>technologies to use are made by the project manager.  Perhaps they're
>sufficiently busy learning these technologies that they have no time to
>learn less obviously practical skills (like new programming languages).  To
>an outside observer, this might appear to be a lack of interest in learning
>(say) new languages, when it's really just a lack of time.
Absolutely.  As a working programmer/architect guy, I am learning new 
stuff all the time, but there
is so much to learn that I have to pretty much limit myself to learning 
only the stuff that I absolutely
need to know.  Well, maybe I reserve 10% for stuff that I just think is 
cool and might want to know
someday, but not much more than that.  And I actually try to avoid 
learning specific technologies that
might well be obsolete before I ever need to actually use them.  But 
learning new technologies takes
very real time, and time is at a premium.

-- Dan