Survey of Tools &
Languages in the “Outside
SDE 1993 – 2004
Programmer at Microsoft
FoxPro, Quill, RichEdit, MIBU / Sendit
(Swedish sub), Spot watch
Discovered Linux by accident after I left
Just finished a book describing its
advantages, and remaining challenges
Tools is a huge part of this!
NEW YORK TIMES:
“Keith Curtis, an 11-year veteran
of Microsoft, believes deeply that
free software is the future of
He takes a programmer’s
approach in Software Wars,
attempting to systematically build
a case that software can help
pave the way for a 21st-century
renaissance in many fields
ranging from artificial
intelligence (cars that drive
themselves) to the human journey
into space (space elevators). For
Mr. Curtis, free software is all
about leveraging our collective
My book in 1 slide
Case studies of Wikipedia, Linux kernel
The payoff is things like AI, cancer
Proprietary software is pervasive, even in
Tool and Languages
Ended up being a big part of my research
and thinking during the book-writing
IANALL: I am not a language lawyer
C# was a life-changing experience after 7
years of C/C++ & COM at MS
I last wrote production code in C# 1.0
But I spent months learning all the details...
Side note about C# 3.0
I saw AndersH's Lang.Net C# 3.0 talk
It started off fine, until...
“We take the projection of the lambda
function, and return it as an anonymous
delegate to the closure of the expression
seems like Code and Pray if your IQ < 160
Reminds me of COM / ATL
Important idea I discovered
All non-GC, non-kernel mode code should
Everyone (here) knows the advantages, but
there isn't any coherent effort on this task
Lots of excuses: inertia, perf, snobbery, etc.
My book spends 25 pages on this topic!
Tools chapter in 1 slide
Memory is important: the state of a
GC is the only way to have reliable code
I detail memory leaks and buffer overruns
GC is necessary, if insufficient, for
the reliable code that we seek.
I say that using C instead of Lisp was the
greatest mistake in the history of
Lisp invented GC in 1959!!
GC changes programming
GC requires a bunch of infrastructure,
which enables a bunch of features
COM Feature Name .Net Feature Name
Reference Counting Garbage Collection
BSTR Unicode strings
Type Libraries metadata + IL
IUnknown Everything is an Object
DCOM Remoting & Web Services
GC changes programming
Increased reliability & security
Same binary on multiple platforms
Increased usability and functionality
Flows from increased maintainability
Code sharing will increase dramatically
Lack of this is the Achilles' heel of software,
esp. free software!
Underpinnings are all C/C++
FireFox, OpenOffice, Apache, MySQL,
Gnome, KDE, etc.
Just like Microsoft
IE, Office, IIS, SQL Server, Shell
VS.NET? C# compiler?
Linux versus Windows
Warring armies of patient cavemen,
fashioning their world with stone tools
I think the battle between Linux and
Windows boils down to a tools battle
Leadership Older code
Money More complicated
One platform (.Net)
.Net is small in
scope (no physics
Army of millions Tools situation is a
years younger Many duplicate
and 10x smaller
More code overall
Understood by a
worldwide No push in this
.Net is limited by what MS envisions
Outside the walled garden is a barren
Linux isn't moving away from C/C++
very fast, and there is no clear place to
What is out there on the
Sun screwed the pooch
Java have been free from Day 1
Sun focused on JCP, JSR
Sun fragmented Java
Wikipedia documents 34 Java runtimes (not
including embedded ones!)
Sun sued Microsoft for adding features
In C, adding features was encouraged:
Making it free hasn't noticeably changed
Built by a community (unlike Java!)
Mono works well on Linux
I run Mono apps every day, Java: never
Core language and class libraries have
little community input
Mono is richer than .Net, but also
somewhat of a barren wasteland outside
¡¡Enormous!! FUD about Mono...
Causes programmers to choose Java, etc.
Mono FUD (Examples)
“Maybe they are not going to sue for having an implementation
of .Net, but because they own a patent which is used in the
implementation. That is a different issue.”
“The problem with Mono will probably not occur tomorrow but
at a later point in time. Or maybe they want a lot of people to
install Mono and use it to have influence on Linux (I think
Microsoft would like to get money from everyone that installs
“I see Mono as a threat for Linux, and that can easy be solved
by not installing Mono.”
“For me, C#/Mono is not the right platform, not because it is
technically bad, but simply because I don't like MS being
around and potentially blocking things one day, or simply
ruling it from behind with suspect purposes toward free
Mono FUD 2
<them> Mono is dangerous because it is covered by patents
<me> So are lots of Linux apps. Why is Mono special?
<them> They’re MICROSOFT patents!
<me> There are lots of Microsoft patents in things. Why is Mono special?
<them> It is inconvenient for me to acknowledge that those exist, so i will
pretend they do not. However, Mono is special because it goes out of its way
to emulate patented Microsoft software!
<me> Really? Don’t things like Wine do that too, without such bile-filled
reaction? And unlike Wine, Mono implements a published standard
<them> The standards are a trap! They can charge you for patent license
<me> True. But they’ve said they won’t. And that’s more than you’ll get
out of most people who own patents which are, to all extents and purposes,
violated in Free Software projects
<them> But if you start to rely on Mono, then Microsoft can disable you
down the line when they suddenly sue!
<me> And that’s different from loads of other software in GNU/Linux how
exactly? Smarter people than me or you have a “don’t worry about maybes”
<them> But Mono is dangerous because it is covered by patents!
Most popular language on Linux after C/
Language with a rich community
Gaming, scientific community, etc.
Almost every non-trivial piece of C/C++ has
Under the radar...
No standard IDE & debugger
Considered too slow for serious apps,
even by fans
Python runtime is written in C
IronPython runs slower than CPython?!
Also doesn't support Pyd wrappers
There are some JITs but they are
On the Web
On the Web
It is PHP's world, we just live in it
You all might laugh at the language, but it is
infinitely better than C
Simple, rich, reliable, with a big community
and set of libraries
Java, .Net, Ruby inside enterprises
Ruby's success is b/c of Rails
Shell scripting: glue for the OS
Perl: Slashdot written in it
Lisp, Scheme, OCaml: never seen it
It's just a survey, what do you expect?
Mono FUD hurts C#
Sun should dump Java
We need better tools to automatically
wrap C/C++ codebases
More important than Linq, etc.
Check out Boost / Py++
Is 99% interpreted good enough?
If Mono copies .Net and gives it away...
Buy my book to learn lots more ;-)
Microserfs: Install Ubuntu 9.04