drscott ([personal profile] drscott) wrote2004-03-25 10:12 pm

Programming for Old People

I'm trying to start a little programming project using C#, and I'm having a real hard time getting back into it. I haven't done any serious programming since a short term job at Reasoning Inc., where I wrote optimization tools for a really complex piece of software to analyze ancient COBOL (or other) programs for Y2K fixing. That job culminated in a month-long stint in the fishbowl lab on the ground floor of Sun HQ in Palo Alto, where I demonstrated the product showed linear speedup on Sun's then-new 63 processor machine. This was not too surpising, since a typical project had hundreds of independent files which could be analyzed by an unthreaded process, but it made for a good joint press release, which was all that mattered back in 1998.

I don't think I've said anything about my former career as a programmer and language person. At MIT I took most of the important software courses and was a member of the "Scheme Team," the group centered around Harold Abelson and Gerry Sussman. I had written a Scheme interpreter that fit into about 25K of memory, leaving enough space in the typical 64K CP/M PC of the day (c. 1983) to do most of the problem sets for the course. Hal had me working on an IBM PC version when TI came out with theirs, making mine unecessary.

I interviewed for Apple (wanting to do a Scheme for them about the time the Mac came out), but ended up at BBN Labs doing multiprocessor versions of Scheme and Lisp for their Butterfly multiprocessors -- here's my office BBN Butterfly (only 16 processors (M68000s) in this one) and a shot of my desk. Yes, kiddies, even peons had their own offices back then....

BBN Butterfly, 1985 BBN office, 1985

After finishing up the Butterfly Lisp Reference Manual, I left BBN in a snit when my ideas for resource optimizing compilation weren't pushed with DARPA, and landed at Symbolics. The Lisp machines made by Symbolics had probably the highest-level programming environment available until quite recently -- it took almost 20 years for common programming environments to catch up. Before the company collapsed (due largely to a DARPA decision to have everyone save money by delivering AI systems on Sun machines), I escaped to Northeastern University's Ph.D. program in CS, which was a bit beneath me by then.

I had an early mid-life crisis after two terms at Northeastern and ran off to British Columbia to start my own business. While there I was heavily involved in the email list for Dylan design, having many a wrangle with Larry Tesler over certain mistakes in orthogonality and the foolish effort to make the syntax more C-like ("for marketing purposes.") Dylan was delayed too many times, then lost the publcity war to Sun's Java -- which is too bad because it was much better in most ways, at least from a programmer's point of view.

So it's been over 5 years since I've done any programming beyond Excel macros, and here I am trying to get going with Microsoft's C# package, which borrows a lot from Java and Dylan and yet seems C-ish in its surface syntax. All those old programming neurons seem to be asleep, or perhaps they've been garbage-collected. Or maybe I'm just too old.

every language wants to be lisp

(Anonymous) 2004-03-26 12:13 am (UTC)(link)
My impression of C# is "yet another Microsoft ripoff", of Java in this case. I've been learning Objective C (which was an influence on the object system of Java) in order to write a molecular design tool for my Mac. Objective C is smaller/cleaner than C++, and more dynamic, though you can't do operator overloading to provide, say vector addition via +.

Python is quite interesting for a number of reasons, one being its syntactical elegance and another its support for higher-order functions (e.g. it has map and lambda)
see http://www.norvig.com/python-lisp.html
and see what Eric Raymond has to say about it:
http://www.linuxjournal.com/article.php?sid=3882

-sc

Re: every language wants to be lisp

[identity profile] dr-scott.livejournal.com 2004-03-26 11:16 am (UTC)(link)
The reason I ended up with C# is the Microsoft subsidy -- they give it away (almost) with the Visual Studio programming environment, which is very good. So as a cheap way of doing Windows applications and debugging some code to be transferred to Java and other platforms (particularly browsers and PDAs) it's fine for now. The stuff that I am doing is very simple and doesn't require too much Lisp-y stuff -- just a database and some simple calculations.

I'd be using Python (or similar) if I was in a Unixish environment. Unlike some of my past A-Life work, though, OOP is not central to this application.

[identity profile] furrbear.livejournal.com 2004-03-26 09:31 am (UTC)(link)
Those neurons haven't been GCed, just rolled out... to tape.

At least that's the way it feels to me sometimes.

That a VT100 on the left end of your old desk?

[identity profile] dr-scott.livejournal.com 2004-03-26 11:27 am (UTC)(link)
A VT100-family terminal. BBN was a VAX and KL10 Unix/TOPS-20 shop, having originated TENEX, and did a lot of the base work on Unix TCP/IP.

And I guess I'll have to start looking for those tapes. Now where did I put them? ... :) [coughing from dust]

[identity profile] excessor.livejournal.com 2004-03-30 01:45 pm (UTC)(link)
I would imagine that your office got pretty warm with all those newfangled computers running.