Concepts of Programming Languages

(Sean Pound) #1

How did you get from writing
a shell program to collabo-
rating with Microsoft? Tripod
and Ruby are the same thing.
After I signed a deal with Bill
Gates, I changed the name of
the prototype from Tripod to
Ruby. I then used the Ruby
prototype as prototypes should
be used: as a disposable model
for constructing release-quality
code. Which is what I did. MS took the release version
of Ruby and added QuickBASIC to it, creating VB. All
of those original innovations were in Tripod/Ruby.


RUBY AS THE INCUBATOR FOR VISUAL BASIC


Let’s revisit your interest in early Windows and
that DLL feature. The DLL wasn’t a thing, it was a
facility in the OS. It allowed a programmer to build
code objects that could be linked to at run time as
opposed to only at compile time. This is what allowed
me to invent the dynamically extensible parts of VB,
where controls can be added by third-party vendors.
The Ruby product embodied many significant
advances in software design, but two of them stand
out as exceptionally successful. As I mentioned, the
dynamic linking capability of Windows had always
intrigued me, but having the tools and knowing what
to do with them were two different things. With Ruby,
I finally found two practical uses for dynamic linking,
and the original program contained both. First, the
language was both installable and could be extended
dynamically. Second, the palette of gizmos could be
added to dynamically.


Was your language in Ruby the first to have a
dynamic linked library and to be linked to a
visual front end? As far as I know, yes.


Using a simple example, what would this enable a
programmer to do with his or her program? Pur-
chase a control, such as a grid control, from a third-
party vendor, install it on his or her computer, and have
the grid control appear as an integral part of the lan-
guage, including the visual programming front end.


Why do they call you “the father of Visual
Basic”? Ruby came with a small language, one suited
only for executing the dozen or so simple commands
that a shell program needs. However, this language was
implemented as a chain of DLLs, any number of which
could be installed at run time. The internal parser
would identify a verb and then pass it along the chain
of DLLs until one of them acknowledged that it knew
how to process the verb. If all of the DLLs passed,
there was a syntax error. From our earliest discussions,
both Microsoft and I had entertained the idea of grow-
ing the language, possibly even replacing it altogether
with a “real” language. C was the candidate most
frequently mentioned, but eventually, Microsoft took
advantage of this dynamic interface to unplug our
little shell language and replace it entirely with Quick-
BASIC. This new marriage of language to visual front
end was static and permanent, and although the origi-
nal dynamic interface made the coupling possible, it
was lost in the process.

SOME FINAL COMMENTS ON NEW IDEAS

In the world of programming and programming
tools, including languages and environments,
what projects most interest you? I’m interested in
creating programming tools that are designed to help
users instead of programmers.
What’s the most critical rule, famous quote, or
design idea to keep in mind? Bridges are not built
by engineers. They are built by ironworkers.
Similarly, software programs are not built by engi-
neers. They are built by programmers.

“MSDOS.exe was the shell program for the first few
releases of Windows. It was a terrible program, and
I believed that it could be improved dramatically,
and I was the guy to do it. In my spare time, I
immediately began to write a better shell program
than the one Windows came with.

67

Free download pdf