ESR's Art of Unix Programming Updated 96
SRS Webby writes "Eric Raymond has updated his The Art of Unix Programming page with two new chapters - Chapter 3: Unix's Zoo of Languages and Chapter 4: A Developer-Friendly Operating System." This is actually fairly old, but its a nice slow friday. Personally I'm resolving this
by re-reading every Penny Arcade.
Stuck in an old Paradigm... (Score:1)
EDMAS? (Score:1)
Emacs stands for `EDiting MAcroS' (pronounce it
Wouldn't that make it 'EDMAS'?
Re:Now what *I* don't get... (Score:1)
Re:Offensive Site?!?! (Score:1)
The block's probably for the gun page [tuxedo.org]...
Your Working Boy,
- Otis (LICQ: 85110864)
Re:PHP is for Perl losers who don't do their homew (Score:1)
Actually, I did Perl first, hated the fact that I had to comment every damn line in order to figure out what I had done when I came back to it 3 months later, and went to PHP. At the time, those were my choices -- anybody using Python was doing so out of pure faith, since it was still basically "Guido's dream".
I have since been sufficiently prosthelytized by Python devotees to look at it. I like it well enough, and now install it on all my computers, even tho I don't use it (yet).
Dunno why you say PHP is a knee-jerk reaction to Perl. It's more like an effort to bring the nice parts of Perl (lots of modules and usability) with a Web focus (rather than systems administration) to Apache. I like PHP, but I'm not married to it.
I like Tcl, but for different reasons -- I mostly like its syntax and the fact that it's so easily embedded in other programs. Plus, I use AOLserver, so I *have* to like Tcl :)
Re:Other web comic suggestion...Sluggy Freelance! (Score:1)
************************************************ ** *
Re:Not as good as I had hoped. (Score:1)
(jfb)
Re:Unix'Zoo of Languages (Score:1)
Re:Offensive Site?!?! (Score:1)
Re:Chapter 5: Amazing Stories (Score:1)
Given that a skilled programmer can easily earn (note for idiots
Regards,
LL
Re:C++/Java? (Score:1)
Assembler really is good to know for some knowledge about what the computer can do. (Or rather how.)
Personally I've only done some rather brief studies of assembler, but I did that on MIPS and I think that was a good idea. It's properly constructed and not patched together like x86. My point being that most normal persons will get more benefit out of studying a sane architecture than jumping on x86 at once.
And while you're at studying assebler why not look at the actual internals as well? Patterson & Hennessy's Computer Architecture (Review at ArsTechnica [arstechnica.com].) books.
He doesn't grok Java (Score:1)
Re:Offensive Site?!?! (Score:1)
Re:Offensive Site?!?! (Score:1)
Re:Now what *I* don't get... (Score:1)
Tom Swiss | the infamous tms | http://www.infamous.net/
Uh, Rob... (Score:1)
It's = it is. Its = possessive of it. Mmmmkay?
Alternately, do what true a penny arcade fan would and play Bejeweled [msn.com].
Re:quality of a program (Score:1)
Stock vi, no assignable key bindings? (Score:1)
From the article: "Stock vi doesn't have mouse support, editing menus, macros, or assignable key bindings."
Hmmm. this is nitpicking, but, what about ":map"?
I seem to remember using ":map" with a fairly ancient SunOS stock vi, circa 1987 or so. I thought that was the "stock" vi, since Bill Joy wrote vi, and was at Sun from the beginning. And ":map" definitely does key bindings, and if you bind a key to something that
does a shell command, (e.g. ":r!somecommand"), that's pretty much a "macro" (whatever that is), right?
Well, I'm sure I'm not the only one to notice.
Re:Unix'Zoo of Languages (Score:1)
Stupidly using variable++ instead of ++variable in array references, or vice versa.
Decreasing the reference count of an object temporarily, then increasing it again after performing some action. Usually when I'm "pretty sure" that it will have a reference count of >1, it's annoying to see it segfault when it tries to increase the reference count back to 1.
Ignoring structure padding
Off-by-one (fencepost) errors with sizes of dynamically allocated memory locations
A variaty of strlen()+malloc() problems, e.g., where I meant malloc(strlen(foo)+1), I could use
malloc(strlen(foo+1));
malloc(strlen(foo));
malloc(strlen(foo)-1);
I think off-by-one errors are the second main source of C program bugs. They can occur in programs which use no dynamic memory allocation at all, and are extremely difficult to detect. ALL HAIL ELECTRICFENCE!
Another common problem is using something like this:
if(foo) {
do_something();
do_something2();
}
else
do_elsething();
do_elsething2();
Of course, an editor with automatic, syntax-based indentation will help with the above problem and ones like it.
Macros that evaluate their arguments twice are also prime suspects. Imagine something like this, where trace evaluates its argument twice.
trace("unref return val: %d", object_unref(object));
Oops, you just destroyed your object if it had a reference count of 2.
Re:Personally... (Score:1)
Personally... (Score:1)
Things in Unix are meant to be fast; just ask any Linux user why they run Linux, and they'll tell you that they enjoy the power and speed compared to WinBlows. But the fact that Emacs takes a long time to load up (at least on my P75 machine), has a list of unnecessary features that could rival M$ Word, and simple things like saving a file require 2 commands (ctrl-x ctrl-s) all adds up to a lack of speed, a lack of elegance, and a lack of design.
------
That's just the way it is
Re:Now what *I* don't get... (Score:1)
Dilbert is good. Maybe it's as if different people are tuned to different frequencies, and each comic is a transmitter.
clueless about Java (Score:1)
as programmer and it became even less after
reading these articles. Take, for example, Java.
The guy is clueless! First of all Java is NOT alternative to C, maybe C++. If you look at current patterns of Java usage it becomes more
and more established enterprise server-size application language, not "Web-Language" for applet as he states.
Re:Personally... (Score:1)
Eight Megs Always Constantly Swapping
now that doesn't sound to fast to me *s*
IMHO, the intention of emacs wasn't to create the leanest meanest console editor, thats vi. Emacs is an environment.
Emacs is awesome as an environment, for general usage you can almost never leave it, turn off X, run emacs, you may get a surprise. Doing that simple thing saves me a hefty amount of my wearables battery power, and it just flies along even on a slower CPU than what I'd normally use.
sinfest (Score:1)
nuff said.
Re:Now what *I* don't get... (Score:1)
I'll give it a shot: "Red Dwarf" plots often deal with time warps, while reading "Family Circus" makes you think you've entered a time warp. Or that small square section of the newspaper in which "Family Circus" has appeared for the last, what, 40 years? has been in a time warp. Or its creator, Bil Keane, has spent that time in isolation in deep space with no real human contact, hence the rehashing of the same mind-sucking jokes.
Yeah, it's a slow friday alright.
--
you could also (Score:1)
read Acid Reflux: http://acid.purrsia.com/
read Ever Crest: http://beta.evercrest.com/
read Flem: http://impure.org/flem/comic/new.htm
read Dr. Lobster: http://www.drlobster.com/
Mega Tokyo is about a pair of gamers who get stuck in Tokyo by accident.
Acid Reflux is a fantasy story about a goddess who has to reclaim her universe after her older sister neglected it.
Ever Crest is this awesome Everquest webcomic with actual art and a storyline, not words superimposed over screenshots of the game or nonstop pics of some blue female character's butt.
Flem is this goth-type strip, it's hard to characterize, but it's pretty damn cool.
Dr. Lobster is impossible to characterize, either you like it or you don't. It's awesome if you get into it, and the creators are cool.
This is all quality stuff people. You wouldn't see it in your local newspaper's funnies section, but that's because those old farts wouldn't know funny if it assaulted them with a clue-by-four. Even if you don't like all of them, I guarantee you'll at least bookmark one of them...
--
Peace,
Lord Omlette
ICQ# 77863057
Re:Perplexing comments on CVS versus RCS. (Score:1)
I agree that the difference in disk space is now irrelevant.
Another solution to boredom? (Score:1)
nakednews [nakednews.com]
naked news realmodem [nakednews.com]
KCD Applet [kuleuven.ac.be]
Oh wait, what's that last one doing there? Cursed klipper. Seriously, another suggestion would be to pour hot grits...
Re:C++/Java? (Score:1)
Scheme (Score:1)
quality of a program (Score:1)
While the sentiment is probably correct, there is something about sacrificing the quality of a program because your(the coder's) time is so important.
Re:quality of a program (Score:1)
Re:Evaluation of Java (Score:1)
Also, the usefulness of Java as an application programming language (Java on the desktop) is severely hindered by the fact that Sun hasn't solved the packaging / delivery problem; that remains a matter of platform dependant conventions and idiosyncracies, only now you have the added burden of catering to the requirements of some abstract "Java platform" layer.
Guess it's back to C for me.
Re:HEY MODS! (Score:1)
Considering the signature line, referring to the Camel, I would find it disgusting if someone else than the real Heidi Wall would use that name for trolling.
Why don't you take the post at face value and that's it and answer politely, be it troll or not.
Re:Evaluation of Java (Score:1)
Swing is terrible to use. After using Qt for a while Swing seems unnecesary complex and hard to program with.
On chapter 3 and programming languages (Score:1)
I would like to raise two other issues. The first is that languages with powerful typing schemes make it impossible to code a very large class of errors. In particular, if you ever find yourself using a cast (especially to/from void* or Object or whatever), which you have to for collection datatypes in C, Java, etc., then you're opening yourself up to a bugfarm. In C the compiler just assumes you know what you're doing whereas in Java it has to carry out a costly runtime check. The solution is polymorphic types (or "generics" to be vulgar) which do away with all this horridness while retaining type safety that is verifiable at compile time. [Please, nobody mention C++ templates...]
The other thing is that destructive assignment, upon which all imperative languages are based, makes life much harder for the optimizing compiler and harder still on the programmer who can never be quite sure whether a particular function call won't change the state of his program (believe me, this is a major source of bugs). The solution is not to use destructive assignment - that is, write in a purely functional style.
Modern functional languages such as Mercury and ML give you all this and are extremely efficient and have very good C and/or general foreign language interfaces. It is a myth that these languages are slow (they wipe the floor with Python and are strongly competitive with C++). The common experience amongst functional programmers is that (a) once the compiler accepts a program, nine times out of ten it does exactly what was intended and that (b) programs work, and work correctly, with something like 20-40% of the coding/debugging effort required in imperative languages. I strongly urge people to investigate these so-called academic languages for themselves, rather than jumping on whatever this year's flawed language bandwagon happens to be.
Re:On chapter 3 and programming languages (Score:1)
First, you really wouldn't want to write an app's core in C, you'd only write small, critical code sections where you couldn't coax adequate performance out of the host language compiler.
Secondly, while several good graphical development environments exist for many "academic" languages, many programmers still prefer to use make, vi/emacs and command line tools. That said, Microsoft is very keen to have Visual Studio integration for these languages and there are several projects in the pipeline to do just this. That, coupled with the fact that many of the compilers in question are also being targetted at the .NET platform, will make it much easier for programmers and groups to experiment with these languages with, hopefully, a minimum of risk and effort.
I think the two main obstacles to a wider uptake, other than the above, are (a) a widespread belief that these languages are slow, too weird, too strict, integrate poorly etc., and (b) the lack of decent introductory material that isn't aimed at reasonably theory-savvy postgrads. But we're working on that, too!
Re:On chapter 3 and programming languages (Score:1)
Re:On chapter 3 and programming languages (Score:1)
If good support exists, and you can write an app's core in C for speed, why do you think it is that functional languages haven't caught on? Every programmer would rather program than debug, right? And certainly Microsoft wouldn't turn down an opportunity to make money (selling a Visual Scheme etc).
Re:On chapter 3 and programming languages (Score:1)
But thx for the info. I will do more playing with those languages when i can.
Now what *I* don't get... (Score:1)
I will freely admit that senses of humor are individualistic. But there are still some fundamental laws of nature that must be maintained. For instance, I doubt that "Red Dwarf" and "Family Circus" have much overlap.
So how can it be that someone who reads Penny Arcade ALSO likes User Friendly (IMO, one of the least funny comics in the known universe and the publishing of which is one of the many signs that that Linux Journal has stopped being a technical journal and started being a VB Developers Journal clone)?
--
Non-meta-modded "Overrated" mods are killing Slashdot
Re:quality of a program (Score:1)
Programmers == $total_dollars_spent++;
iotw... It's -often- more cost-effective to have a developer create an application that takes 60% of the time to create and runs at only 80% of the speed. The lost 20% can be made up at less cost by faster processors, more memory, RAID hard drives, etc, especially in server-centric, web-related projects.
The quality of software as it relates to stability is another issue all together -- It has only a little to do with the language and much more to do with the commitment, general experience, and familiarity of the developer(s).
Re:you could also (Score:1)
Life on Forbez [keenspace.com]
-----
Re:Evaluation of Java (Score:1)
Re:Java is not viable in most software apps (Score:1)
No. Eric is a jack-ass of all trades.
Re:Now what *I* don't get... (Score:1)
Nice, by stating that you consider UF to be the least funny comic you already invalidated yourself as a comic critic. You'd make a nice Troll though....
Re:Now what *I* don't get... (Score:1)
Re:Offensive Site?!?! (Score:1)
Re:Offensive Site?!?! (Score:1)
It's just Eric Raymond's homepages. The text of the jargon file is there, various open source advocacy stuff (like The Cathedral and the Bazaar), stuff on fetchmail etc... There are a few pages of libertarianism/gun advocacy but nothing wildly offensive, I would have thought.
Re:Not as good as I had hoped. (Score:1)
Java is not viable in most software apps (Score:1)
Java is a good idea in principle but not in practice. Java's problems stem mostly from its unusable runtime environment. I'm currently involved in rewriting a Java application in C++ because customers refuse to use that 40MB monster that runs like maple syrup on an 800MHz Pentium. JVM is just too big to be usable and Swing is just not usable for anything other than teaching windowing principles. Even simple dropdown lists will not scale beyond several hundred items before becoming unusable speedwise.
Garbage collection, often touted as Java's biggest advancement over C++ make Java completely unsuitable for a whole slew of applications. Even the "softest" realtime apps will get an unbearable penalty from the garbage collector spontaneously "kicking in" at more or less random intervals. Even a simple MPEG1 player app eperiences jitter and playback glitches due to garbage collection issues. The only place where java's performance is acceptable is server side apps because the memory footprint is less of an issue and because "the web is always slow" attitude that web users became used to.
Java does not have serious development tools. I've yet to find a reasonable Java debugger. The supposedly "excellent" Borland's JBuilder cannot hold a candle to Visual C++ especially when it comes to debugging features.
Last but not least problem with Java is its image. Because of its simpler syntax it quickly became attractive to all kinds of rookies and cowboy programmers and underachievers trying to make big money "hacking" Java after having only marginal exposure to any other programming languages. Hence java programs usually exhibit very low quality compared to C++ based software. This gives the language a bad name to such an extent that many software shops won't even hear about writing anything in Java purely on the grounds of prejudice. Java is was a neat idea executed very badly.
Am I the only one thinking that ESR writes about stuff that he doesn't have sufficient experience in? His "dissection" is controversial at best and plain wrong and misleading in all actuality as it skips over important aspects of programming languages concentrating mainly on whether braces are more important than indenation. Eric is a jack of all trades, master of none and it shows throughout his book very well.
Good night.
Re:On chapter 3 and programming languages (Score:1)
Many of them do, although as always, it depends on what you want to do. For Scheme, consider something like DrScheme [rice.edu]. For Common Lisp, both Xanalys [xanalys.com] and Franz [franz.com] have good commercial environments. And these are just examples. Further, it's usually fairly easy to use at least C code from these languages, so the amount of code available is greater than it might look at first. I don't know as much about the statically-typed side of things, but from what digging around I have done there, I think that there is often a reasonable amount of stuff available there too.
At any rate, I certainly find that my Xanalys Lispworks environment gives me everything that I need to do a lot of the programming that I need to do.
Re:HEY MODS! (Score:1)
A) The replies from this person are always the same: mechanical and kiss ass toward the subject. It's like someone who blindly agrees with everything from an idol. Atleast that's the way they appear to me, and I'm sure I'm not the only one who feels this way. Someone pointed out on a serious note that it's like she's someone in disguised posting for karma, then to go on a trolling spree; while this is probably not the case, you have to agree her replies are ALWAYS the same, always in agreement with the general purposed consensus we're supposed to all have here on the given article/topic.
B) While it tries to make a valid point, she is denouncing in the post a vast majority of Linux advocates as no-nothings in terms of programming... that certainly isn't positive or fair, and it's based on what, pray tell? Her fucking Slashdot reading? Furthermore, is a strong programming background required to atleast be knowledgable regarding the strengths, programming or non-programming, of a particular OS/environment?
In conclusion, I agree with modding her down to troll, and think they should continue to do so.
Re:Brilliant. (Score:1)
What are you basing this statement on? Your perception of the open source community from the web sites you read?
The references are all O'Reilly? (Score:1)
Re:C++/Java? (Score:1)
because it is quick (relatively) to program.
of course the memory / speed constraints limit
its feasibility in larger projects. 2
Unix'Zoo of Languages (Score:1)
I love Eric's writing style. "the vast invisible dark mass of COBOL financial applications," indeed!
I'd be interested to know what Larry Wall thinks of Eric's assertion that Perl was specifically designed to replace Awk. I don't know Larry myself, but I've sure gotten the impression that he designed Perl specifically to handle some tasks that Awk couldn't handle. I don't think he actually set out to design a language that all Awk users would switch to. Maybe I'm wrong...
The big question, though, is whether any SlashDotters can fill in Eric's first "fixme" note and point to any studies listing the breakdown of bug types in C code. As a longtime C coder, I'd agree that the majority of errors I've made and seen in other's code had to do with memory management, but is it really 90%? There are certainly a lot of OBO errors and misunderstanding of specifications and version control errors and algorithmic mistakes and just plain typos, too. Do those all aggregate to 10% or less of the total C bugs? Hard to believe.
C++/Java? (Score:1)
Re:Brillient!!!!!! (Score:1)
What Unix could learn from other systems (Score:1)
Deutch proposes ways that UNIX could have some of the advantages of the Lisp and Smalltalk environments that he worked on at PARC while still remaining Unix.
Perplexing comments on CVS versus RCS. (Score:2)
The comments about the disk space requirements of CVS versus RCS are strange and irrelevant in the days of 40GB drives being affordable to consumers.
I use CVS even for things that consist of a small handful of text files and are developed only by me. Even with one developer and a small project, it's useful, for instance, to be able to go back to a release and easily make a bugfix branch.
Re:Personally... (Score:2)
While I certainly wish that Emacs were a little leaner, I am not about to give up any of it's features (well, at least any of the ones *I* use), nor am I willing to give up it's flexibility.
Besides, it's not that bad. Heck, it's not half as bad as Mozilla (or Visual Studio for that matter). And the fact that I can use basically start it once and use it as a "daemon" for ages is sort of cool, it's not like it is prone to crashing.
Every once in a while I dust off gvim and give it a whirl as a programming environment, and I find it an impressive piece of work, but once you have gotten used to running your whole life from inside of Emacs, even gvim is pretty spartan.
Re:Personally... (Score:2)
Although tinier, I would also complain about the startup time of all shell scripts except perhaps /bin/sh -f. A lot of Unix design relies on executing these scripts fast, and the original systems did start up these interpreters relatively fast (ie it took less time to start than to run a typical command).
Re:Propogating a misconception. (Score:2)
A very simple counter-example, where enforced policy is causing trouble. Since you mention some amazing command-line parsing interface, I think this is a good example of this! In this case I think Windows does things right and Unix does them wrong.
Unix does do some interface to enforce policy: the shell splits commands at the spaces and does glob expansion and quoting. Windows does not, it passes the typed line unchanged to the program.
Yes, this results in some inconsistency of Windows programs, but really very little. Most programs call some function when they encounter a word with '*' or '?' in it. Most of the inconsistency is people working around their stupid decision to use the directory seperator '/' to introduce switches. This is trivial to do beacuse Windows does not enforce such policy, but like you said it results in inconsistency. But I still feel the result is better than if we were forced to use '/' to introduce switches.
But one of the immediate questions people familiar with DOS asked about Unix is "where is the 'rename *.A *.B' command?" Unix people, being sometimes illogical in their defense, will go on about this being undesirable or bad computer science, but the real answer is that Unix's "policy" is preventing a very logical user interface design!
Another good counter-example is X. X admittedly sucks, but the suprising thing is that this primitive thing, designed in 1983 or so, is able to reproduce the GUI that MicroSoft and Apple are writing now. If Unix had done "policy" like you said, we would all be forced now to use the Athena toolkit. The fact that all the applications correctly respond to the "reverse video" configuration option might impress you, but I think most people would immediately dismiss Unix as crap!
Re:Evaluation of Java (Score:2)
Wow. That's not inflammatory at all.
Just kidding, really, but I've heard both sides of this argument, and I dunno which to believe. "#ifdefs rock!" "#ifdefs suck!"
Thus, I just write everything in PHP and Tcl... :)
Re:Couple of flat out errors (Score:2)
There are two things you can do if you're lazy and somewhat allergic to new and delete, like I am.
1) Use the Standard Template Library. This isn't empasized enough in C++ courses. If you learn it and use it properly, you will drastically cut down on the news and deletes that you need to use in your programs. The STL containers own their objects, so you can stick an object (not a pointer or reference to an object) into a container and forget about it. When the container disappears, the object will be destroyed. This doesn't negate the necessity for a programmer to think about memory management, but it eases the burden greatly. Be careful though, stupid implementations can result in a lot of time wasted in the copy constructor.
2) Use the truly excellent Boehm garbage collection library. This page [hp.com] has all the good information about it.
C++ isn't perfect, but what language is?
Re:Evaluation of Java (Score:2)
I hope not. Swing produces the most ungainly and bloated GUIs I've ever had to work with. I'd rather see someone who knows JNI port Qt or xwWindows to Java. Until then, I'll stick with AWT if I have to use Java for GUI programming at all.
ObJectBridge [sourceforge.net] (GPL'd Java ODMG) needs volunteers.
Chapter 5: Amazing Stories (Score:2)
Come meet the boy who saw his $41,000,000 turn into $650,000! Are those tears of sadness running down his cheeks, or has he gone insane?!
Cheers,
Re:Couple of flat out errors (Score:2)
I hope that will be taken as "explanatory" rather than as "flamebait", but I have to say it regardless of how anyone takes it.
--
Sometimes Slow is Fast Enough... (Score:2)
Yes, Java suffers in terms of performance when compared with C++. But then again, C++ takes a performance hit when compared with C, or assembler. Yet people still use Java, and other "slow" languages such as Perl and Python.
Ten years ago, the general rule was to use the tool that gave you the best performance possible, because CPU cycles and memory were expensive. Now CPU cycles and memory are very cheap. For many tasks, it is cheaper to spend a few thousand dollars to throw a faster computer at the problem, or let the computer crunch at a problem for more time, than it is to spend tens or hundreds of thousands of dollars of extra development time to pay experienced gurus to rewrite in C++, C or assembler, hand optimize the code and fix all the bugs that inevitably come from developing in that way.
But I'm not a language zealot. I believe in using the right tool for the job. Sometimes it's Python + Tk, other times it's Java, or Perl with CGI.pm, or C++ or assembler. For my current little project (a ray-tracer for a graphics class) I chose C++. The job is CPU intensive, so I rejected Java, Python, all the other interpreted languages. I also refused to do the job in straight C because the algorithms and data structures are so complex I found the extra tools (classes, encapsulation, the limited but still better than C tools for memory management, the STL) to be a necessity. But that's just for this little project. I'll choose something else for the next project.
STL Rocks!!! (Score:2)
Re:Evaluation of Java (Score:2)
But Java avoids a lot of the problems older languages like C have to solve with #ifdefs by providing (1) standardized primitive types and (2) a standard library that behaves the same everywhere, be it under Irix, Tru64, Linux, Windows, OS/390 or EPOC.
Example: An int is always signed, always 32 bits. The Java Language Specifiication thus is a very important document for any Java programmer. Answers 20 percent of all questions in Java newsgroups
Re:Evaluation of Java (Score:2)
Translation: Java is fast. By fast I mean adequate. By adequate I mean slow.
(credits to whomever I stole this from.)
Re:Offensive Site?!?! (Score:2)
ESR has some stuff on his personal pages that someone might take offense too, stuff about firearms, anarchy, paganism, polyamory, and so on.
Who makes your filtering software? Being an armed anrchist pagan hacker, I'm offended by someone labeling that content as offensive.
Tom Swiss | the infamous tms | http://www.infamous.net/
Re:Explain to me why it is pagan to be responsible (Score:2)
Um, you seem to be laboring under a mighty misapprehension about the word "pagan". (Or maybe you're a lame-ass troll, but for the sake of potentially being educational I'll assume not.) Might I suggest ESR's Neopagan FAQ [tuxedo.org]?
You're also laboring under a mighty misapprehension about the word "socialist", for which I'd recommend some reading about libertarian socialism [blackened.net].
And if I were afraid of gun owners I'd be unable to look in the mirror without my knees quaking.
Tom Swiss | the infamous tms | http://www.infamous.net/
Re:Stuck in an old Paradigm... (Score:2)
First, CASE is nothing like automatic routing, since the key element of programming is semantics, while the key element of routing is, well, routing.
I have. 100,000 lines of automatically generated crap which bore little resemblance to my actual intent as stated in the CASE model has been a hindrance, not to mention now being saddled with a number of silly idioms which I will be months removing.
You might like an IDE. I don't. I understand my tools. Most of the people I know who like IDE's like them because they don't understand the tools, or even some of the more important aspects of program construction.
It's friday, so -- I'll flame. Advocating CASE and IDE's is a demonstration of your unmitigated ignorance.
Re:Propogating a misconception. (Score:2)
Yea I know that takes some clever system design. I never said it was easy, just that it was possible.
Second, who said you one would have to use Athena? I'm a big fan of binary interfaces. This is one thing OpenGL gets right. All OpenGL apps are compiled to for the OpenGL ABI. The actual code that gets called varies from implementation to implementation, and in the Windows world, is entirely different for different cards. Yet it still works... wow! Actually, it's not wow, just good design. In the X case, one could have a standard API that all apps would have to write to (maybe a version controlled one like DirectX, so the API could expand) and different implementations could be plugged in at will. Again, it takes good design, but the longevity of UNIX has shown that some well designed stuff does stand the test of time in good shape, so it's not impossible.
Propogating a misconception. (Score:2)
It is simply untrue. It should read
"But the cost of this approach is that application developers get to set policy"
Because UNIX does not enforce policy, policy gets enforced in other places. Specifically, it gets enforced in end-user apps. The problem is, that in this way, the only thing that happens is that an inconsistant/hacked up policy is exposed to the user, instead of a consistant one.
Think about it. Who gets to decide what toolkit you use? Not you, the user, but the app-developer who decides to use GTK. Who decides what desktop you use? Not you, but the Rasterman, who decided to make Enlightenment the only accelerated window manager. Who decides what command-line switches you use? Yep, whoever wrote the program.
The whole, fundemental, problem is that by not enforcing policy at the system level you simply allow the app-developers to decide it. You do didly for the non-programming user.
Consider this, instead of simply providing a text-stream for command line arguements, you provide a strictly-defined messaging interface. The app is just passed a set of messages that describe the command line. Then, the user can choose whatever command line format they want, and can depend on a dynamically loaded system add-on to convert the data.
Take the whole paradigm of message passing. It is an extremely strict interface, yet it allows the user huge flexibility. Take a GUI app for example. Instead of enforcing hotkey policies like Windows, UNIX leaves the developer free to do what they want. Instead, if apps were required to responed to strict message sets to use hotkeys, then the user could send a message from a remote server in Australia to activate the features, or map hotkeys to whatever buttons they chose, IN ANY APPLICATION.
It is a paradox. The more policy you enforce at the API level, the more freedom you give to the user. Yes its hard. Yes it takes a lot of forethought. Yes, it *can* be done. Force developers to use a particular API. Then give the user the freedom to chose any implementation of that API they wish. Force developers to use a standard set of services. Then give the user the freedom to mix and match, replace and rebuild those services as they see fit.
penny arcade honor system in place (Score:2)
And giving accordingly [amazon.com], I hope.
If you enjoy reading PA [penny-arcade.com], why not show Tycho and Gabe you appreciate the laughs?
-the wunderhorn
Re:Now what *I* don't get... (Score:2)
free as in...? (Score:2)
BTW, it would be cool if any Slashdotters wanted to review Raymond's books on The Assayer [theassayer.org].
The Assayer [theassayer.org] - free-information book reviews
Re:Personally... (Score:2)
Sure, there are utilities that will do almost any emacs thing to a file, but after editing in vi or nano do you really want to have to type all those shell commands in when a couple of keystrokes in emacs will run make or let you check your tested source back into the CVS repository? Typing C-x C-s is certainly no more difficult than doing ESC
Yes, emacs is large, and it has a lot of features (some of which are only useful as entertainment), but that's the point. Saying emacs is big and bloated if all you take advantage of are the text editing features is like saying a RDBMS is big and bloated if all you use it for is sorting and grouping lists. I mean, the OS itself takes forever to load compared to emacs, but no one complains about that because it does so much stuff.
That said, if you don't take advantage of any of the features that emacs offers, then no, it's not the tool for you. I have the same opinion of most of the uses I see Word put to. Incredible waste of power (and in the case of Word, money and freedom).
ESR temporarily had a LOT of money... (Score:2)
Does anyone remember a while back when ESR got some shares in VA Linux for his contribution to the company and the open source movement? Did he sell his shares at the allowed time (I believe June of last year?)? Insider trading info seems to indicate that he hasn't, and if not that $32 million has dropped to about $600,000.
More details of it can be found at yafla [yafla.com]. Note in particular the text on the link on "potential wealth disappear"
Cheers!
Re:ESR temporarily had a LOT of money... (Score:2)
Here's a more direct link for those who don't want to follow the yafla [yafla.com] link (which is a story on the ".COM stock collapse which is how that is relevant).
http://linuxtoday.com/stories/13512.html [linuxtoday.com]
Re:Offensive Site?!?! (Score:2)
"Unix's Zoo of Languages... We dissect nature along lines laid down by our native language..."
-thomas
Re:Tcl given serious short shrift (Score:2)
Yeah, unless you consider Perl and Java to be "widely offered." (I would.)
Tcl given serious short shrift (Score:3)
This article has some glaring errors with respect to Tcl. Tcl has offered binary file I/O since release 8.0 (released in March '99; current release is 8.3). It also offers Unicode support, something not widely offered elsewhere, and a syntax that does not look like line noise.
Finally, Tcl is one of the few languages (on any platform) with a completely open source IDE, including a debugger: TclPro! See SourceForge [sourceforge.net] or Scriptics [scriptics.com].
PennyArcade (Score:3)
PennyArcade is great. here's the code to stick it in your slashbox:
<A href=http://penny-arcade.com/view.php3> <IMG src="http://a332.g.akamai.net/7/332/493/v1/www.pe
And in case you live in a box (albiet one with an internet connection), go check out the onion, at http://theonion.com. It's hilarious.
And if you want to stick it in your user defined slashbox:
<A href=http://theonion.com><IMG src="http://graphics.theonion.com/universal_pics/
Easy to have a lazy Friday... (Score:3)
Re:C++/Java? (Score:4)
Although I definitely prefer to code in C++ myself, I agree with decision to teach Java as a first language rather than C++, which has too many complications to make sense as a teaching language. If you're trying to get to grips with the basics of programming, you've got enough to worry about already.
However, if you *really* want to get to grips with the basics of programming, I really think its best to learn some simple assembly code. Nothing else can give you an adequate understanding of what goes on after the compiler has done it's job, even if you never use assembly commerically.
Couple of flat out errors (Score:4)
Tcl: Has had a clean, well documented interface for adding new functionality in C longer than Python or Perl. It was one of the original features of the language. That's how Tk is implemented.
Offensive Site?!?! (Score:4)
The response when I try to get:
http://www.tuxedo.org/~esr/writings/taoup/chapt
Is:
RESTRICTED - You have attempted to access a restricted site. This restriction is to prevent you from inadvertently bringing offensive/non-business related material into the workplace.
The proxy's access control configuration denies access to the requested object through this proxy.
Seeing as how I'm working with Unix systems I find the idea that this is either Offensive or Non-Business related rather amusing.
The only thing I can think of is that all of www.tuxedo.org is blocked, but I'm not sure why.
So what is it?
Evaluation of Java (Score:4)
Other web comic suggestion... (Score:4)
Penny Aracade [penny-arcade.com] has changed a lot over the past 6 months, and I'm not sure if it's for the best. But the last three have been a return to old values so we'll see what happens. Plus, the entire controversy around their sudden unplugging might make them return to the old good stuff. `8r) Now, if the stupid ads built into their comic didn't freak out firewall constantly... `8r/
Oh, and cause I can: Wang!
--
Gonzo Granzeau
Not as good as I had hoped. (Score:4)
While The Art of Unix Programming is a fun to read, I think that it's actually pretty devoid of useful content. With a name starting with "The Art Of...", I was hoping for something more technically oriented. Knuth set the standard with his classic The Art of Computer Programming; perhaps a discussion of standard Unix APIs, services, etc is what I wanted. (But I guess Richard Stevens covered this already in Advanced Programming in the UNIX Environment.)
Instead, we're getting a slightly gussied up advocacy piece, which really isn't much more than a retread of The Cathedral and the Bazaar, with a dash of superficial advice thrown in. As a UNIX programmer, I've found the existing chapters to be useless--I already believe in the UNIX way, and there's nothing concrete in there I don't already know. There are little hints of goodness, but so far, no topic has been covered simply enough to be useful to a novice, or in sufficient depth to be of value to an expert.
I guess I'm not in the intended audience--this really is a book for people relatively new to UNIX. But I wish Raymond had chosen a title which was more honest and less pretentious. I guess the "Who should read this book" is honest on what the book covers, but I was still disappointed. Perhaps the title "The Art of..." set my expectations too high.