TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
Lang Net
1. Survey of Tools &
Languages in the “Outside
World”
Keith Curtis
SDE 1993 – 2004
keithcu@microsoft.com
http://keithcu.com
http://xkcd.com
2. About me
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!
3. My book
NEW YORK TIMES:
“Keith Curtis, an 11-year veteran
of Microsoft, believes deeply that
free software is the future of
technology.
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
intelligence.”
4. My book in 1 slide
Case studies of Wikipedia, Linux kernel
& desktop
The payoff is things like AI, cancer
research
Proprietary software is pervasive, even in
universities
8. Tool and Languages
Ended up being a big part of my research
and thinking during the book-writing
Some caveats:
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...
9. 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
tree.”
seems like Code and Pray if your IQ < 160
Reminds me of COM / ATL
10. Important idea I discovered
All non-GC, non-kernel mode code should
be killed
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!
11. Tools chapter in 1 slide
Memory is important: the state of a
process
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
computing.
Lisp invented GC in 1959!!
12. 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
IDispatch Reflection
DCOM Remoting & Web Services
Why?
13. GC changes programming
Increased reliability & security
Increased portability
Same binary on multiple platforms
Increased maintainability
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!
14. Linux desktop
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?
15. 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
16. Microsoft
Advantages: Disadvantages
Leadership Older code
Money More complicated
code
Marketshare
Smaller army
One platform (.Net)
Backward
compatibility
constraints
.Net is small in
scope (no physics
engine, etc.)
17. Linux
Advantages Disadvantages
Army of millions Tools situation is a
fragmented mess
Codebases 10
years younger Many duplicate
codebases
and 10x smaller
More code overall
Understood by a
worldwide No push in this
community direction
Gaining momentum
18. Boiled down...
.Net is limited by what MS envisions
Outside the walled garden is a barren
wasteland
Linux isn't moving away from C/C++
very fast, and there is no clear place to
go
19. What is out there on the
free desktop?
Java
Mono
Python
Etc.
20. 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:
“__inline”
Making it free hasn't noticeably changed
its trajectory
23. Mono
Built by a community (unlike Java!)
Mono works well on Linux
http://www.mono-project.com/Screenshots
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.
24. 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
Linux).”
“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
software.”
25. 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
fees!
<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”
attitude.
http://www2.apebox.org/wordpress/linux/51/
<them> But Mono is dangerous because it is covered by patents!
26. Python
Most popular language on Linux after C/
C++
Language with a rich community
Gaming, scientific community, etc.
Almost every non-trivial piece of C/C++ has
Python wrappers
Under the radar...
28. Python, downsides
No standard IDE & debugger
Considered too slow for serious apps,
even by fans
Python runtime is written in C
Dooh!
IronPython runs slower than CPython?!
Also doesn't support Pyd wrappers
There are some JITs but they are
“research” projects
29. 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
30. The rest
Shell scripting: glue for the OS
Perl: Slashdot written in it
Lisp, Scheme, OCaml: never seen it
31. Conclusion
It's just a survey, what do you expect?
Okay...
32. Some thoughts
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...
33. Thanks!!
Buy my book to learn lots more ;-)
Microserfs: Install Ubuntu 9.04