The Art of Unix Programming 358
The Art of Unix Programming | |
author | Eric S. Raymond |
pages | 560 |
publisher | Addison Wesley |
rating | great and free on the web! |
reviewer | Robert Nagle |
ISBN | 0131429019 |
summary | Instructive for the Student; Profound for the Professional |
On the surface, this book is a gentle introduction to programming; but in reality it is an attempt to explain the Unix aesthetic; at times I felt as if I were reading less a technical guide than an art history book, a chatty account of Gothic Architecture as told by someone who helped build a few churches himself. ESR articulates a set of design principles for Unix, which because of succintness deserve reprinting here.
- Rule of Modularity: Write Simple Parts connected by clean interfaces.
- Rule of Clarity: Clarity is better than cleverness.
- Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
- Rule of Simplicity: Design for simplicity; add complexity only where you must
- Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
- Rule of Transparency: Design for visibility to make inspection and debugging easier.
- Rule Of Robustness: Robustness is the child of transparency and simplicity.
- Rule of Representation: Fold Knowledge into data, so program logic can be stupid and robust.
- Rule of Least Surprise: In interface design, always do the least surprising thing.
- Rule of Silence: When a program has nothing surprising to say, it should say nothing.
- Rule of Repair: Repair what you can--but when you must fail, fail noisily and as soon as possible.
- Rule of Economy: Programmer time is expensive; conserve it in preference to machine time.
- Rule of Generation: Avoid hand-hacking; write programs to write programs when you can.
- Rule of Optimization: Prototype before polishing. Get it working before you optimize it.
- Rule of Diversity: Distrust all claims for one true way.
- Rule of Extensibility: Design for the future, because it will be here sooner than you think.
ESR shows how to follow these general principles while writing Unix programs. The central metaphors of Unix (that everything is a file, and data-streams that can be piped and redirected) are intuitive, and maximize transparency and separation. About pipes, he writes:
A subtle but important property of pipes and the other classic Unix IPC (Interprocess Communication) is that they require communication between programs to be held down to a level of simplicity that encourages separation of function. Conversely, the result of having no equivalent of the pipe is that programs can only be designed to cooperate by building in full knowledge of each others' internals (p 81, Chapter 3)
Interestingly, the real opposing aesthetic to the Unix aesthetic is not Microsoft (which really is a hybrid), but Macintosh:
The Macintosh's unifying idea is so strong that most of the other design choices we discussed above are either forced by it or invisible. All programs have GUIs. There is no CLI at all. Scripting facilities are present but much less commonly used than under Unix; many Mac programmers never learn them. Mac OS's captive-interface GUI metaphor (organized around a single main event loop) leads to a weak scheduler without presumption... Mac OS applications are not, however, invariably monster monoliths. The system's GUI support code, which is partly implemented in a ROM shipped with the hardware, and partly implemented in shared libraries, communicates with Mac OS programs through an event interface that has been quite stable since its beginnings. Thus, the design of the operating system encourages a relatively clean separation between application engine and GUI interfaces.
ESR's criticism right here (and throughout the book) is not necessarily condemnation. In fact, ESR recognizes that Macintosh as a competing aesthetic has a lot to offer that Unix does not. For example, Mac file attributes (in which a file has both data and resource "forks") provide mechanism for richer GUI support. Thus, we have (ESR says) developers "who work from the interface inward, rather than the engineer outward." In contrast, the Unix byte-stream metaphor may make it hard to conceptualize the meaning of operations such as Create, Open, Read, Write and Delete.
With Unix, the Rule of Least Surprise suggests that the developer delegate interface functions to a GUI or to another program. Instead of creating a built-in editor inside an application, the developer should allow the user to choose which editor to use. Instead of making a robust and easy-to-use interface, the Unix developer should produce a command line utility first, and then let someone else create a separate and independent GUI layer. (Rule of Separation). Xcdroast is a perfect example of a GUI layer for the command line program, cdrecord.
The Command Line Interface (CLI) may scare off new users, but it offers endless scripting and batching capabilities for programs (and smooth IPC). Also, it offers expressiveness to developers. "The Unix programmer," ESR writes, "is likely to see defaulting away from expressiveness as a sort of cop-out or even betrayal of future users, who will know their own requirements better than the present implementer. Ironically, though the Unix attitude is often construed as a sort of programmer arrogance, it is actually a form of humility -- one often acquired along with years of battle scars" (p.304, "Interfaces,")
ESR distinguishes between interface complexity and implementation complexity. Unix projects often involve tradeoffs on these two. The Unix developer prefers a lean and simple implementation at the expense of a usable interface; ESR writes:
Programs that mediate between the user and the rest of the universe notoriously attract features. This includes not just editors but Web browsers, mail and newsgroup readers, and other communication programs. All tend to evolve in accordance with the Law of Software Envelopment, aka Zawinski's Law. 'Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones that can'".
The book devotes considerable space to showcasing Unix best practices (which in most cases, means readable config files, limiting the program's scope, providing access to sufficient debug information and making it easy to hack). He offers sensible advice about when to use minilanguages ("don't extend your way to it, one patch and crufty feature at a time"), why to limit the number of available command-line switches (each one increases debug time), why optimization has few payoffs ("Moore's law implies a 26% performance gain just by buying new hardware every six months") and why bottoms-up programming can work better than top down design(because "it gives you time and room to refine a vague specification" when "...you are programming in an exploratory way, trying to get a grasp on hardware or software or real-world phenomena you don't completely understand.").
One of the most instructive chapters was about J. Random Newbie, a fictional programmer fresh out of college who understands basic programming concepts and the value of reuse. ESR presents a scenario of how Newbie nonetheless ends up rewriting rather than reusing, relying more on his own code than that of others. When he changes jobs, "he is likely to discover that he can't take his toolkit with him" and may even find it to be useless at a new job with different proprietary tools, languages and libraries. Thus, ESR writes:
Programmers have reuse (and other good practices that go with it, like modularity and transparency) systematically conditioned out of them by a combination of technical problems, intellectual-property barriers, politics and personal ego needs. Multiply J. Random Newbie by a hundred thousand, age him by decades, and have him grow more cynical and more used to the system year by year. There you have the state of much of the software industry, a recipe for enormous waste of time and capital and human skill -- evenbefore you factor in vendors' market-control tactics, incompetent management, impossible deadlines, and all the other pressures that make doing good work difficult. (p.420, "Reuse")
This book is a good introduction for this newbie programmer (as well as a warning about what to expect). It offers practical advice about which license and language to use, how to set up documentation, how to decipher the standards process, how to check things into CVS and how to submit a patch to an open source project.
The chapter on Unix's history puts the current SCO/IBM controversy into perspective. Unix has always been dogged by exertions of commercial control, and ESR accurately conveys how the software world is constantly swinging back and forth from periods of intensely-creative free-spirited openness to periods of commercial control.
I was struck by several of ESR's observations: that Linus Torvald's "refusal to be a zealot" was a contributing reason why Linux was able to succeed; that both the patch utility and email probably did more to advance the Open Source movement than mere "consciousness raising."
In summary, this book is a great help for the student programmer. It synthesizes a lot of ideas and insights from other programming gurus, and is full of insights, aphorisms and fun digressions (no surprise to readers of ESR's other works). The experienced programmer, on the other hand, might find the book more profound than practical. Invoking the Zen metaphor (and even including Unix koans at the book's end), ESR shows us how the abstract nature of programming provides insight into problem-solving, design and yes, even a kind of enlightenment. The book, available for free on the Net, is probably better to read on vacation or an airplane or as a welcome break when stumped by a programming problem. More practical books on Unix programming exist (I happen to recommend Mark Sobell's), but ESR's book will stay with you long after you have finished reading, providing countless hours for reflection and appreciation of Unix's Unix-nature.
Robert Nagle (aka Idiotprogrammer), believes that plone is the best thing since garage door openers, and is a strong supporter of music sharing. You can purchase The Art of Unix Programming from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
The book is free online, but ... (Score:2, Funny)
Wait... (Score:2)
If you are formless, the most penetrating spies will not be able to discern you, or the wisest counsels will not be able to do calculations against you. ?
With formation, the army achieves victories yet they do not understand how.
No wait, that's the Art of War, not the Art of Unix. Nevermind.
batch files in Windows vs Unix (Score:2, Insightful)
I think in some ways, Windows manages to out-Unix Unix. For example, I find Windows programs to be much more scriptable than their Unix counterparts.
I'm talking mostly about OLE automation. For example, it's pretty easy to write a batch file drives any of the Office suite. Can you drive OpenOffice in a similar fashion?
-ec
Re:batch files in Windows vs Unix (Score:4, Informative)
Re:batch files in Windows vs Unix (Score:2)
I understand that OpenOffice has its own object / component model, with bindings to various langauges, including Java and Python.
See OpenOffice.org [openoffice.org]
Of course, the Windows OS provides COM as a standard for applications to use, and on Unix, each application provides its own incompatible object model. KDE has KParts, GNOME has Bonobo, Open Office has UNO and maybe Mozilla has its own too.
Re:batch files in Windows vs Unix (Score:2)
Can you, for example, write a Windows script (ie, DOS
Re:batch files in Windows vs Unix (Score:2)
Better yet, install Cygwin and write a shell script, just like you would on a UN*X box. Why go to the bother of figuring out a non-portable scripting method when you can learn one language and write scripts that run on Win32, Mac OS X, Linux, *BSD, etc.?
Re:batch files in Windows vs Unix (Score:2)
This is true, but the point was a comparison of the native CLI as a scripting language (.bat vs
Re:batch files in Windows vs Unix (Score:2)
Tell me, how useful are command line arguments to word.exe?
Re:batch files in Windows vs Unix (Score:3, Insightful)
As ESR notes in the book, some of this is a natural result of the fact that process creation under VMS, er,
Re:batch files in Windows vs Unix (Score:5, Informative)
The problem is that Unix is not merely an alternative to Windows, it is fundamentally different.
The optimum solution for the same problem is thus going to be different in both systems. As such, crossover apps aren't representative of how to do things in Unix. They offer the functionality for those that require them. That's a legitimate role and I use such apps where appropriate, but they aren't "Unix."
ESR's book isn't about apps. It's about Unix and how to do things in Unix. Not about how to do things in a Microsofty way in Unix.
OpenOffice is perfectly scriptable, although in a somewhat Unixy way, but that isn't really the point. OpenOffice is a particular app, not Unix. Below the level of the app Unix is designed to be run by scripting. Windows is designed to be run from a GUI with added scripting features.
In many ways the enviroments are inverses of each other, much as the East-West cultural issues.
In the "old days" Unix gurus learned Unix much as they learned their own cultures language and way of doing things. By osmosis. They knew Unix. To them it was simply natural.
Now we have more and more people crossing cultural lines and moving to Unix enviroments from a Windows enviroment. They get lost. They don't know the language. They don't know how to use the toilets. They can't order food in a restaurant, and tend to conclude that the language is inherently chaotic and unlearnable, the toilets are "stupid" and the restaurants unusable.
The people to whom ESR's book is likely to be most useful to aren't actually the Unix people (althoug h they should read it too. They might learn something), it is these people who are crossing over ( or just wondering what the hell it's all about anyway, much as people will read books on Japan even if they don't intend to visit there).
It explains UNIX.
Read it with an open mind.
KFG
Re:batch files in Windows vs Unix (Score:2)
Run KDE and use the command line 'dcop' program. If you're a GUI kinda user, use kdcop (hit alt-F2 and type kdcop). Take a look at how fu
Re:batch files in Windows vs Unix (Score:2)
BATCH is dead! Enough already... (Score:4, Informative)
1. CMD.EXE replaced COMMAND.COM as the scripting shell to use under NT as early as v3.51.
2. If you are still using the
3. If you are running COMMAND.COM under NT/2K/XP then DON'T. When you run COMMAND.COM, the kernel automatically fires up the vdm (virtual DOS machine). This is a 16 bit emulator.
4. The advantages to CMD.EXE scripts are numerous...
a. The engine is 32 bit and small. It typically occupies 1 Meg or less of memory.
b. It has backward compatibility for
c. The functionality of most of the internal command set has been greatly expanded.
d. It uses standard Borne shell syntax with pipes and redirection.
e. Has string functions.
f. Has numeric functions.
g. Has buit-in token-izing, no need for AWK/SED type scripts.
h. Has extensive compatibility with the Windows paradigm of Drives/UNC paths. This is why using Cygwin with UNIX type shells is a worse idea as they don't know anything about Windows. (much like using a screwdrive for a hammer).
i. Allows subroutines and functions.
j. Operates directly on environment variable table without the need for variable shuffling.
k. Process execution with little need for escaped arguments.
l. Directory/Tree recursion-enumeration built-in.
m. The 'FOR' capabilities have been greatly expanded, as well as 'SET', 'CALL'. Look into them.
5. Process management without the overhead of exiting the shell for externals like "find", and "ls".
6. When externals are needed, there is an extensive command set provided for just about anything from regular expressions to process control.
In short, the flexability of the Command Processor under 2K/XP is drastically increased to match just about anything you would use sh,csh,tcsh for. If you are a network administrator I would look into using the command shell. It is included standard. There's nothing to add. You can use it for everything from cron scripts to logon script, and even logon authentication. It is so much simpler than using VB scripting, without the overhead of a huge runtime engine. The scripts run, then end very quickly. I use it for just about everything. Our entire network infrastructure is based on this "glue" scripting that sits at the highest level of proecess management. In many ways using command shell scripting is the "right way" to do things because it frees you from sticky vendor lock-in technologies like systems management server, or Zenworks. You are in control.
See...
http://www.microsoft.com/technet/prodtechnol/wi
I could provide so many more compelling reasons to use the command shell that echo Raymonds sentiments, but I'll just stop here.
+5
ESR's a nut (Score:2, Funny)
Its funny because in 2000, he was still worth several million still from I believe the VA Linux IPO, so he was telling all these propreitary guys how stupid they were for not jumping on the sunny open source revolution. Of course we all know how that turned out....
Anyw
Re:ESR's a nut (Score:2)
They sniff themselves and pee to warn off others?
Re:ESR's a nut (Score:2)
To be fair, at least 2 hours of that was the audience arguing with him. I was there too.
Unixy? (Score:2)
What is going on? Is there a rule somewhere that says all Operating System nouns must have the -y suffix?
MacOSXy, WinXPy, Solarisy? This does not compute.
-Cyc
Re:Unixy? (Score:3, Funny)
Re:Unixy? (Score:3, Funny)
Re:Unixy? (Score:2)
The Art of Inflating Your Ego (Score:3, Insightful)
A book as high and mighty sounding as "The Art of XXX" should be written by an acknowledged luminary in the art...
Re:The Art of Inflating Your Ego (Score:2)
As far as unix goes...damn, I wish I hadn't lost the URL for "the unix haters' handbook". It addresses everything that is wrong with the unix mentality [of which ESR is a poster-child for].
Re:The Art of Inflating Your Ego (Score:5, Funny)
He added color support to Nethack!
Truly a visionary icon of our time!
Re:The Art of Inflating Your Ego (Score:2, Informative)
Re:The Art of Inflating Your Ego (Score:2)
Rewriting networking history (Score:5, Informative)
Wrong.
The Berkeley TCP/IP implementation wasn't the first for UNIX. Not even close. It was the third. There was TCP/IP for UNIX years before Berkeley. 3COM had their UNET product, and there was a BBN implementation. UNET needed considerable rewriting, (much of which I did) but it ran quite well.
But the Berkeley implementation was free, and the 3COM implementation cost about $2000 per CPU. Because BSD was Government-subsidized, it won out.
Re:Rewriting networking history (Score:2)
And nowhere in the paragraph you quoted does it say that it was. Nice strawman you set up there, but you could have bragged on your rewrite of UNET without it.
Re:Rewriting networking history (Score:3, Insightful)
Berkeley was Government-funded to develope it and give it away. That doesn't happen any more. Under the Bayh-Dole Act, universities can now own intellectual property rights in works developed with Government funding. The head of "intellectual property" at UC Berkeley said last year that if they'd had those rights back then, "they would have owned TC
Re:Rewriting networking history (Score:4, Interesting)
Gee, remember when fsck came along? It was a lot easier than icheck, dcheck, ncheck, and your last resort: adb. Sysadmins really had to know their stuff before fsck.
Bruce
Re:Rewriting networking history (Score:3, Informative)
Whatever (Score:3, Insightful)
Look, I've already read "Zen and the Art of Motorcylce Maintenance" and "The Inner Game of Tennis." Do I really need another watered down screed on half-understood principals of Eastern philosophy crammed down my throat to become a better UNIX programmer? Most of the concepts that books like this borrow from Zen are so painfully obvious that it really serves as little more than padding for a poorly thought-out thesis which would only populate about 50 pages (at best) if not for the endless ramblings about holistic thinking.
Okay, UNIX, like everything else, is all part of the Buddha. Very profound. We all marvel at your wisdom. Now stop wasting our time.
Re:Whatever (Score:2, Informative)
Zen and the Art Of Motorcycle Maintenance isn't about Eastern philosophy (nearly all of it is based in Western Classicism) and doesn't pretend to be either. The frontpiece of the book even includes a disclaimer to that effect.
Other than that, I agree with you. ESR is a shameless pseud whose knowledge of real Zen buddhism would fit on the ba
Re:Whatever (Score:4, Funny)
All there is to know about Zen fits on the back of a postage stamp.
Re:Whatever: funny (Score:2)
Re:Whatever (Score:2)
Hat off to you!
Cheers,
Re:Whatever (Score:2)
from http://catb.org/~esr/writings/taoup/html/unix-nat u re.html
Re:Whatever (Score:2)
Parsimony? (Score:2)
.begin FLAMEWAR
ahem, cough cough emacs cough cough
.end
Re:Parsimony? (Score:2)
All these TLAs are becoming a real PITA, IMHO. HAND.
Re:Parsimony? (Score:2)
from the reviewer: a short correction (Score:3, Informative)
Fetchmail, Fetchmail (Score:4, Interesting)
OK, he's familiar with the program, but the effect is, at times it really looks like it's all he's familiar with. I mean, if the design principles it illustrates are so prevalent, it shouldn't be hard to find other examples that avoid this obvious slant, no?
Re:Fetchmail, Fetchmail (Score:2)
He wrote the damn thing, he should be familiar with it.
It's not that he's just blowing his own horn either (although that may be part of his motivation), but that it's a good program that exemplifies a programming style, is relatively complete, is readable enough for students, and is widely used.
It's also convenient enough for (possibly unfair, but humorous) criticism whenever ESR is within earshot.
Pity it sucks so bad (Score:3, Interesting)
I got sick of patching fetchmail for one buffer overrun after another. Unfortunately, there's nothing else out there that will do what it does, so until someone gets fed up with and rewrites it, we're stuck with it.
I especially like how the passwords are stored in cleartext in the various rc files, if you want fetchmail to run as a daemon. Yeah, real secure design there.
Fetchmail is a great victory for how open source can successfully work to rescue old code and turn it into something new and viable.
Eric S. Raymond's credibility (Score:3, Interesting)
"Microsoft will not have an enterprise ready operating system, because Windows 2000 will not ship in a useable form. (At 60 million lines of code and still bloating, its development is out of control.)"
"Windows 2000 will be either canceled or dead on arrival. Either way it will turn into a horrendous train wreck, the worst strategic disaster in Microsoft's history."
"the most likely scenario for late 2000/early 2001 has Linux in effective control of servers, data centers, ISPs, and the Internet,
Raymond is a true visionary. He can almost see beyond his own nose. Why anyone takes him seriously is beyond me.
Pipes (Score:3, Interesting)
This is bogus:
It's just as easy to define and use a serialization format for IPC via shared memory as it is do so for IPC via pipes. Sure, if you just copy objects from the stack or heap to shared memory without any abstraction (such as a vtable), then all programs will have to know about the common representation, but that applies equally to stream-based IPC mechanisms such as pipes or sockets.
Honestly, kids, don't bother with this book. Read K &R, Steele, Stevens, Richter, and Stroustrup instead.
"Arg list too long" (Score:2)
I have been bitten by this several times over the years on various Unices, where a script that has been running fine will one day break when another file is added to a directory. Of course it can be fixed with xargs etc. but if it is a complex, otherwise stable script written by so
Re:"Arg list too long" (Score:2)
Re:"Arg list too long" (Score:2)
another review (Score:4, Insightful)
In general, I have a problem with Raymond's pose as an anthropologist or sociologist of the open-source movement. Sociology and anthropology are supposed to be sciences, and scientists are supposed to try to be impartial and base things on empirical evidence, not preconceived beliefs. To me, Raymond's descriptions of the open-source culture read too much like a utopian fairy tale. The truth is that sometimes open source succeeds and sometimes it fails.
PDF? (Score:2)
Re:PDF? (Score:2)
Re:PDF? (Score:2)
Maybe you have to have a low slashdot UID for it to work.....
Uhhh (Score:2)
I admire ESR's ability to write these rules that are concise and profound.
In my real life UNIX world, despite my heavy use of the command line, there's a lot of GUI stuff managed by systems with less philosphical purity.
Put X, KDE and Gnome up agains the list of Rules and it's hard to say they their successes originate in their observance of the rules. Perhaps their failings may be correlated to their deviance from the rules.
What Unix Gets Wrong (Score:2, Insightful)
Re:What Unix Gets Wrong (Score:2)
COM/OLE predate CORBA. Just FYI.
ESR is a pompous asshole (Score:2, Interesting)
Mod me down if you wish, but ESR is a blunderi
no authority (Score:2)
Avoid wearing a suit? (Score:5, Insightful)
Buh? How is sending the message to CEOs that you don't share their values/priorities (not to mention that you have no experience in making line-item purchasing decisions, even to the extent of getting yourself a decent suit) supposed to convince them that you're worth listening to? Seems to me that they've taken the time to develop the business plans ... it's up to you to convince them how your product will fit into those plans, not that it hovers around in some everything-is-dandy fantasy land, ignorant of how 90 percent of the world does business.
Seriously, can somebody explain his rationale on this one?
Re:Avoid wearing a suit? (Score:2)
It was a little tongue in cheek, but not ridiculous advice. There was a slashdot story a year or two ago about whether wearing a three piece suit for an interview indicated that you were professional or utterly clueless about the geek
Re:Avoid wearing a suit? (Score:2)
Re:Avoid wearing a suit? (Score:2)
I agree to an extent. Somebody else brought up the argument about whether one should wear a suit to a job interview, and I indeed would not. If nothing else, I can't afford to buy a new wardrobe just to fit in at the workplace. My habit for interviews is to dress nicely, but not to dress "up" from how I'd dress on a normal workday.
But this seems to be an entirely
No mention of Plumbing? (Score:2)
Plumbing is a new mechanism for inter-process communication in Plan 9, specifically the passing of messages between interactive programs as part of the user interface. Although plumbing shares some properties with familiar notions such as cut and paste, it offers a more general data exchange mechanism without imposing
Worse is Better (Score:3, Interesting)
Well worth the read, even if you aren't familiar with / think you don't like Lisp. There's another page [dreamsongs.com] with links to followups too.
Re:Worse is Better (Score:2)
You forgot the other possibility, know Lisp and don't like it...
Re:Worse is Better (Score:2)
We have considered this possibility and found that the members of this community can be put into one-to-one equivalence with the empty set. Or in other words, if you really know lisp, you like it and, if you don't like lisp, you don't really know it.
read online version (Score:2)
Banned by SurfControl! (Score:2)
Without presumption?!? (Score:3, Insightful)
Uh, I think the phrase you're looking for is "without premption". I'll assume this was the reviewer's typo, and not ESR's original text...
Take it with a lump of salt (Score:3, Interesting)
Really, it just blew me away how biased he was in some areas. For example, about two years ago, I was reading the draft edition. In his section where he was discussing various operating systems, he compared Windows to UNIX. He made some very broad, very negative statements about Windows that simply weren't/aren't true. The link at the bottom of the page asked for corrections and suggestions, so I sent him a short email with some additional information. He replied, and admitted that he didn't really know much about Windows since he didn't use it very much, and that the information was all second hand. I pointed out some factual errors, along with references to back up the corrections. The discussion seemed very positive at the time. However, now that the book has gone to print, I have looked over that section to see how it turned out. Not much has really changed -- some of the most blatant mistakes have been corrected, but many factual errors of which he was fully aware remain in the printing edition. Most importantly, the tone of the section is very authoritative and negative towards the technical aspects of Windows, when ESR admits that he really doesn't know much about it.
I guess that tells me what I wanted to know about the book. It may have some wonderful insights about the "UNIX way" (which is actually pretty cool), but the author isn't interested in making me wiser and better informed -- he's pushing an agenda. His statements are heavily slanted towards what he wants people to believe, and he is willing to bend the facts to strengthen his case.
Personally, I think he would have no trouble defending his position with solid facts. There is a lot of good in the "UNIX Way" of doing things. He shouldn't need to twist things to get his point across. This simply discredits him, and by association, discredits the Open Source movement in general.
There are plenty of books out there about UNIX, more than I'll ever be able to read in the limited amount of time I have for bedtime reading. I'm not going to spend my time on one that I can't trust to give me the straight facts.
Re:Since OS X is Unix... (Score:2)
Re:Since OS X is Unix... (Score:2)
Either you have Mac Carbon/Cocoa programs that have virtually zero Unix integration, or you've got Unix programs that have the really rough, incomplete GUI front-ends typically found on a Unix system.
Just compare the functionality Windows "MMC" GUI for IIS versus the lame Start/Stop button for OS X's Apache server. A sysadmin might prefer the OS X/Unix config file approach, but regular users can't make he
Re:Since OS X is Unix... (Score:2)
If you're holding up MMC as the paragon of GUI virtue, you are on serious crack, and I'm really pissed that you're not sharing.
I remember way back when SQL Server Enterprise Manager was a standalone piece of software. Then it became MMC-ified and became an even more bloated, unstable piece of poo.
I remember way back when User Manager for Domains was a standalone piece of software. Then it became MMC-i
Re:Since OS X is Unix... (Score:2)
Re:Since OS X is Unix... (Score:2)
Re:Since OS X is Unix... (Score:2)
OS X now ships with X Windows support built in, so I don't really see the big problem. Also, it's possible to use a cross-platform GUI library. For example, Audacity was written using the wxWindows toolkit, and runs natively on Linux, MacOS X (without X Windows), and Windows.
What I have against MacOS X is that it's new and relatively buggy, and they want you to pay $130 every few months for an upgrad
Re:Since OS X is Unix... (Score:2)
Re:83% of UNIX Programmers are Virgins (Score:5, Funny)
That's because they are smart enough to avoid getting women pregnant. You think because you're married and had 3 acciden^H^H^H^H^H^H^Hkids, you're somehow better than a virginal UNIX programmer?
I say, leave the promiscuous mode off. Celibacy all the way. Making babies just gets in the way of coding. Of course, this may lead to the extinction of the UNIX programmer, but fortunately there are a few that are foolish enough to leave their keyboards. And also I think it could easilly be argued that UNIX programming is a trait acquired from one's environment, and not necessarilly an inherited trait.
In any case, a little known fact is that some UNIX programmers like to receive blowjobs while coding. While, technically, they remain virgins, they still indulge in pleasures of the flesh, without the stress and responsibility involved in full intercourse. Now what percentage of these are receiving it from women, is a statistic I don't know if we want to address. Lets just say.. umm.. Do we consider Mac OS X programmers to be UNIX programmers?
Re:83% of UNIX Programmers are Virgins (Score:2)
Speaking as a fledgling OS X programmer, I can say that I strongly support receiving blowjobs while writing code. Therefore, I would argue that OS X programmers
Re:Thank you. (Score:3, Interesting)
I bought the dead tree version as way of saying thanks to ESR. It's a great read, though far more qualitative than quantitative.
I thought his treatment of the various personalities (RMS, Linus) was fair, and his notes about where Unix got it ronngg was interesting. Clearly biased, yet not grossly so.
My theory, though, is that all of the "better" aspects are generally lost.
Couple of trivial examples, the idea of having logical and physical file systems highly inte
Re:Thank you. (Score:2)
What market are you talking about? Where I am currently sitting (behind a Windows NT PC, one of about 12,000 at my place of work) the market has said we want a floppy named "A:\", a hard drive named "C:\", a CDROM named "D:\" and 6 network "drives" named "F, G, H, J, Y, Z:\".
Of course, this is plain stupid. The market doesn't want that, but there's nothing else on the market.. well there is, but it's not widely adopted
Re:Thank you. (Score:2)
I didn't argue otherwise.
and a much richer API to call from them too
Can't say I care about a "rich API", the idea in a command-line based system is that every subsystem exposes it's "API" through it's command-line arguments (c.f. function call in "real programming").
There's nothing you can't do in Windows that you can do in Linux
There's nothing you can do on one turing machine that you can't do on another turing machine.
but the other way around, we
Re:Thank you. (Score:2)
Re:Thank you. (Score:2)
The increasing level o
Re:Thank you. (Score:2)
Re:Thank you. (Score:2)
It's annoying to wake up from being a unix programmer and enter a reality in which clean almost zen like computing practises are sacrificed on the altar of money. While many people might consider that "the
Re:Thank you. (Score:2)
I wouldn't say ESR has anything to do with that one way or the other, but please don't show your ignorance by denigrating it.
The CATB essay was a polemic aimed at the GNU Emacs development team, by the way. They were the 'Cathederal' developers Raymond was chiding.
Re:Bah. (Score:2)
Oh, how very droll.
Your first paragraph invokes a book written in no small part by Microsoft apologists. Your second describes sins
Re:Bah. (Score:2)
Your assessment of my second paragraph is so wildly inaccurate, one can only conclude you are blinded by anti-M$ hatred to the point of having nothing intelligent to contribute to any conversation which remotely involves them.
In short, you are th
Re:Bah. (Score:2)
After further thought, it seems I need to repudiate my own post:
The fact that UNIX is still here doesn't necessarily prove anything about the technical merits (or not) of UNIX.
I've been a UNIX user for two decades, and I enjoy it. However, I, too, have used "better" systems. A quick Google for 'ewhac' will reveal many, many posts by a
Re:Bah. (Score:2)
Typical slashdot jackass.
'jfb
Re:Bah. (Score:2)
Who We Are
We are academics, hackers, and professionals. None of us were born in the computing analog of Ken Pier's East Africa. We have all experienced much more advanced, usable, and elegant systems than Unix ever was, or ever can be. Some of these systems have increasingly forgotten names, such as TOPS-20, ITS (the Incompatible Timesharing System), Multics, Apollo Domain, the Lisp Machine, Cedar/Mesa, and the Dorado. Some of us even use Macs and Windows boxes. Ma
Fair enough (Score:2)
My point mainly being, because there is no ego gratification in re-using code written by someone else, most people tend to not re-use code. I backed this up by pointing to the overwhelming number of applications and os's written by people hoping to be the next RMS, when there is scads of code just laying around waiti
CPAN = why php beats out perl (Score:2)
Re:CPAN = why php beats out perl (Score:2)
VA is fairly irrelevant, granted (Score:2)
It was when the investors saw that they were being scammed by madmen [catb.org] and scammers [perens.com] and pulled out that the economy collapsed.
learn your history, it was only a couple years back, dumbass.
Re:same price and free shipping (Score:3, Informative)
http://www.amazon.com/exec/obidos/ASIN/01314290
The referres is: ccats-2010-20
Wonder who thinks spam is Informative.
Re:bahahaha (Score:2)
That has nothing to do with OSS versus propretary [sp?] models and everything to do with corporate profit and the achievement thereof at any cost.
When the US is another bananna republic in 10 years, it will be because of GWB, not RMS.
Re:Wow...where's the value? (Score:2)
In response to your comment-- yes there are a ton of software development books on the market. While many are valuable in expositing general rules of software development, regardless of platform, I have encountered nothing in the realm of high-level development ideologies for UNIX-based systems.
The difference is in the long and convoluted history of UNIX and in the common use of 20+ year old tools on a dai