quinta-feira, fevereiro 13, 2003

Elegance Personified: "The Art of UNIX Programming" by Eric S. Raymond

(Original Review, 2003-02-13)

My two cents on Unix, C, Gates, Ritchie, Jobs, Apple OS, Windows, C++, Objective-C, Java, BSD, ...

The toe curling pieces on Jobs were way over the top, rather like Gates, Jobs lifted a lot from other people. Ritchie and co, rather like Tim Berners-Lee, gave the computing world so much, and I do mean gave (let’s not be offensive, not equate the ham Gates with Jobs.)

One problem is that "Software Engineering", whilst requiring some skill amongst participants, and constitutes a trade, isn't as robust a discipline as the Professional Engineering Disciplines. Having said that, I agree that Ritchie when with Bell (remaining with Bell until he retired) made a far greater impact on the computing community than other upstarts (including Tim Lee) - when Jobs left Apple, and developed the NeXT Workstation, its operating system was based on Unix - and when Apple acquired NeXT, its operating system led to Apple OS X based on Unix BSD. Even PC users can now enjoy the benefits of Open Source Computing, and install Linux on their PCs, Laptops and Portable Devices - whereas, even with modern Wintel systems, purists may ignore the sacrilegious Windows environment, and revert to DOS.

Of course, whereas within Bell Telecomms Research Laboratory, Ritchie contributed to the development of both C and Unix, this represents a far more significant contribution than even Tim Lee who, whilst with CERN, simply developed trivial utilities for use by other researchers before being more widely adopted.

I would have thought C a far more important contribution than Unix (sans Linux) looking back. I love the recursive way they, having written Unix in assembler, and then developed C, they re-wrote Unix in C! Elegance personified!

It's unfair to Jobs and Ritchie to compare them with each other. Ritchie was a brilliant backroom boy, and I agree with the praise listed above. Jobs was a product developer, a business man and an evangelist.

It's comparing chalk and cheese. What Jobs did was understand the importance and utility of work by Ritchie or the researchers at Xerox Parc. Without people like Jobs these great inventions remain intellectual curiosities. Without Ritchie there is nothing to develop. You need both and that is why Silicon Valley was successful.

I agree 100%; as I implied before - even Steve Wozniak takes pride in making his friend Steve Jobs' role clear when they worked together at Apple, so I doubt Jobs' friends, family and colleagues will bother about these rather obvious comments that he was no hardcore computer scientist. They were quite a double act.

Be nice to remember Ritchie without referencing Jobs. They both did good stuff but as a programmer even 'tho I'm typing this on a Mac (of course running OS X which is part of the UNIX family tree the OS and that Dennis "created") like 99% if people I don't have a constant Homer Simpson like Ritchie vs Jobs battle going in my head

This is all getting very Lady Di vs Mother Theresa - the silly Indian lady had the nerve to die in the same week as the pretty one who was far more simple to write about - how rude! (JOKE by the way!)
Pouring a mountain-dew hi-energy on the curb. RIP

Dennis Ritchie gave us the tools to build the web, modern computer etc. Steve Jobs was the person who combined the concept of the PC with that of a household appliance, and was adamant right from the start that the PC was to be a consumer device that anyone could use.

The Xerox team were still developing for researchers - they didn't view their system as one for the average consumer. Their mouse had 3 buttons, and a lot of interaction was with the keyboard including resizing windows. If you've ever double clicked then that's the influence of Jobs.

Even fewer people have heard of Alan Kay who was instrumental in PARC in the development of the windowing and objective orientated programming. The point is they were all instrumental to the modern computer. Dennis Ritchie is feted by programmers who work directly with the tools he created and I'm pretty sure he'd be happy about that. Actually, OS X and iOS use the 4.4 BSD-lite codebase, which by definition contains none of Ritchie & Thompson's AT&T code. However, that doesn't take anything away from the status of the man: he was a true genius and innovator. Also, his C programming language and its descendants (C++, Objective-C, Java, etc.) are even more pervasive than Unix: Windows does not derive from Unix (from VMS, if anything), but it is mostly written in C/C++.

I think a few things are worth pointing out:

  1. C has good points and bad points -- some clever ideas, and some mistakes. The lack of proper string-handling tools, and the laxer-then-necessary type system were two mistakes that had an expensive legacy in terms of buggy software, student learning curve, failed projects, etc.;
  2. The K&R book is worth mention as a model of great textbook-writing -- clear, readable and brief, without being oversimplified;
  3. Ritchie, Thompson, et al., didn't give their work away. They were paid very decent salaries. Also, BSD Unix started out as a flagrant breach of license terms and copyright, and had to be rewritten to avoid lawsuits;
  4. Stallman's free software idea has probably caused a degree of stagnation in software development. A free product that works drives most of the competition out of the market, but does not hurt the biggest players, so it creates an oligopoly;
  5. If Jobs hadn't persuaded Apple to buy his company and bring him back into the fold, Apple would probably have bought BeOS which, if anything, was a better platform than BSD Unix/Objective C.

Thank u Dennis Richie for providing me with many years of employment. Using C, C++, and Java, all based on C-syntax. If I had to program in assembler, I'm sure I would have quit long ago. It would be nice if heads of state would come out and praise your accomplishments, but I won't hold my breath.

I am not interested in getting into a language war now, or a platform war. C has its good points and its well-documented bad points. C99, C++, Java and C# all attempt to correct many of the widely acknowledged flaws of the original C, often by borrowing ideas from other languages that were designed in the 1960s (including Algol, Simula and Smalltalk). I'm sure even you do not think that C is perfect.

Bottom-line: What? No code and still 5 stars?? Read it I you want to understand the evolution of the Unix OS and all of its look-alikes, and all of its flavours.

NB: Many eons ago I coded this in the boot script of all Unix user sessions (I was younger then...):

Unix erotica?
%^How did the sex change^ operation go?
Modifier failed.
%make love
Make: Don't know how to make love. Stop.
%sleep with me
bad character
%man: why did you get a divorce?
man:: Too many arguments.

%blow: No such job.