TITLE: What Big Software Needs
AUTHOR: Eugene Wallingford
DATE: June 28, 2012 12:37 PM
DESC:
-----
BODY:
Unix guru
Rob Pike,
on "programming in the large":
There's this idea about "programming in the large" and
somehow C++ and Java own that domain. I believe that's
just a historical accident, or perhaps an industrial
accident. But the widely held belief is that it has
something to do with object-oriented design.
Big software needs methodology to be sure, but not
nearly as much as it needs strong dependency management
and clean interface abstraction and superb documentation
tools, none of which is served well by C++ (although
Java does noticeably better).
That is as succinct a summary as I've seen of what people
need from a language in order to write and maintain large
programs: strong dependency management, clean interface
abstraction, and superb documentation tools. I think
that individuals and small teams need them as much as
large teams, but that you experience the pain of not
having them much sooner when you work on larger teams.
The quoted passage is from
Less is exponentially more,
the text of a talk he gave this month about the biggest
surprise he experienced from the rolling out of
Go,
the programming language he and several colleagues created
at Google. He had expected Go to attract C and C++
programmers, because Go was designed to do the things that
C++ is used for. Instead, it attracts programmers from
Python and Ruby. I'm tempted to quote Pike's conclusion,
because it's so succinct, but instead I'll let you read
his blog post yourself.
It was interesting to read this paper the day after seeing
Leo Meyerovich's blog post
on the sociology of programming languages. After reading
Pike's thoughts on the spread of Go, I'm more motivated to
read
the paper
Meyerovich introduces, on the principles for programming
language adoption.
Irrespective of the adoption question: Pike's talk has no
code in it, yet it conveys the spirit of Go better than
anything I had read before.
~~~~
Go logo comes courtesy of
the project's open-source repository
at Google Code.
-----