RMS The Coder
Andrew G. Feinberg writes "Here is a article on the LinuxCare website. " This is a cool interview just because its not dealing with the usual GNU/Open Source/Free Software stuff, but more with code, coding, and lots of other stuff that frankly just isn't political. Enjoy it.
That does sound like a really cool application for LISP, and one where it does make a lot of sense. Now that the ol' memory has been engaged, I have been thinking back to a programming languages class I took a long time ago. We ended up writing bits of a compiler in both C and LISP and I had forgotten how much easier it was to do a number of operations (like tokenizing and parsing) in LISP than in C. (Although part of me still thinks this may be because programming in LISP via EMACS is one of the most solid, easy to use, and just well integrated programming envrionments ever put together. Hmm... I wonder if RMS did that on purpose :) )
DrLunch.com The site that tells you what's for lunch!
I assume you are working with SML/NJ then? There are a few other ML compilers that are pretty good (like ML Kit w/ Regions -- no garbage collection required!), but it is basically what all other implementations are measured against.
I hear people rave about ML. Can you give me some more conrete information on where it might be useful in a real production environment? What types of problems does it solve?
If you are doing any sort of programming language or compiler development nothing beats ML. It's recursive dataype representation and pattern matching (not the same type of matching as say Perl's regexes) make it perfect for the job. Admittedly your average hacker isn't working on a compiler or programming language, but it is also good for many other things as well. I wouldn't recommended it for writing kernel drivers (though there are a couples projects that are writing OSes in ML), or for the same sort of scripty tasks that you would use Perl for. It really shines through when developing application-type software. Part of what makes it so good for this is that is has a module system that allows for excellent seperation of interface from implementation (you can't truly hide "private" implementation information in a C++ for example) this coupled with functors is great for software engineering tasks.
Another element of what makes ML so nice to work with is how concise it is compared to many other languages. It may be possible to do something similar in LISP, but for example the following code will perform regex matching using pattern matching and continuations for flow control (Slashdot has sort of mangled the whitespace):
datatype regexp =
(* val acc : regExp -> char list -> (char list -> bool) -> bool *)
fun acc (Char(a)) (a1::s) k = if (a = a1) then k s else false
| acc (Char(a)) (nil) k = false
| acc (Concat(r1,r2)) s k = acc r1 s (fn s' => acc r2 s' k)
| acc (Epsilon) s k = k s
| acc (Union(r1,r2)) s k = acc r1 s k orelse acc r2 s k
| acc (Empty) s k = false
| acc (r as Star(r1)) s k = k s orelse | acc (Underscore) (a1::s) k = k s
| acc (Underscore) (nil) k = false
| acc (And(r1,r2)) s k = | acc (Top) (s as a1::s2) k = k s orelse acc (Top) s2 k
| acc (Top) (nil) k = k nil
| acc (Not(r)) s k = let (* val accept : regexp -> string -> bool *)
fun accept r s = acc r (String.explode s)List.null
If you've ever written a regex code in C or C++ you can understand just how succient that is in comparison.
Some examples of real world ML use include http://foxnet.cs.cdmu.edu which is a web server written in SML, on top of a TCP/IP stack written in SML too (which is on par with the performance of Digital Unix's native implementaton). CaML, a dialect of ML, has numerous applications written in it, everything from an emacs clone that uses CaML rather than elisp, to Doom and Quake-like graphics renderers.
As I mentioned before, for those with a better understanding of mathematics, particularly logic and how mathematical functions operate, the relationship between ML and logical type theory are particularly beautiful. ML is also one of the first languages to be fully formalized, allowing for proofs of its soundness and completeness.
I would recommend Introduction to Programming Using SML as a reasonable language reference, and ML for the Working Programmer as another interesting text too look at. There are also quite a few other good texts that relate to ML, such as Purely functional Data-structures and Modern Compiler Implementation in ML
you have to get infected to really grok w/ it. good luck!
--thi
This is a very nice talk showing for once, not :)
just the political ideas of Richard Stallman, but
why he deserves so much respect whatever his
positions are: his incredible programming skills.
I really believe he's one of the great minds of
our time. Heck, gcc, emacs, POSIX, what else
gcc sources are a good example. I don't know if he's the one that came up with the idea of compiling to an intermediate form and then having each cpu target translate the intermediate, prepackaged form to machine code, but that's a fabulous idea.
Yet another person who put an easter egg in a C compiler; the other one (putting both a (harmless) backdoor in his C compiler, and code in the compiler that would detect unmodified C compiler sources and insert the hack as the compiler was built) was more creative though.
ROTFL! The irony of this that is that RMS makes a big deal in this article about how he's been so busy getting the BSD license changed so that you don't need to mention contributors, but he then keeps making such a big deal about having GNU mentioned in the context of linux. He's so rigidly idealogical that it is deliciously funny to catch him even slightly hypocritical.
Having had the laugh, though, I would point out that it could still be considered in good taste to mention GNU or FSF given the magnitude of their contribution. Think how upsetting it would be if MS made a distribution and called it "Windows 2001", which they apparently could if they wanted. Yikes!
Man, if that #2 of RMS isn't trying to depict him as Jesus....
:)
(A joke! Laugh!)
is their a compiler with more language/platform support than gcc? I don't think so.
me neither, but what's yer point? it appears that he borrowed the intermediary thing. okay, fine, he borrowed C as well. no problem. so then he went and did more of the intermediary thing than anybody else. well, that's great, especially if you have to target your code to multiple architectures. fantastic, in fact. but there's nothing "brilliant" or exciting about it. it's just dilligence. admirable, commendable, enormously productive and useful dilligence. but if i write a compiler retargetable to three languages on three platforms, and RMS then comes along and does four, that doesn't make him a genius for counting one higher than me. it just makes his compiler more useful.
anyhow, AFAIK stallman is no longer closely involved with gcc. hopefully cygnus will be bringing gcc more in line with the c++ standard. they've lagged behind MS and Borland, which is a hassle with some things. last i checked (egcs 2.95 or something), they still had weirder template problems than MSVC and BCC. all three are still noncompliant with templates, but gcc was the worst on the features i checked. it's also the slowest, but that's not a massive issue. if i use gcc, it's because i need portability, and i waste a hell of a lot less time waiting for compiles on all platforms than i would waste by making msvc-friendly code work in gcc or vice versa, if i had to use different compilers per platform. so it's a win and will remain one, assuming they get off their asses with templates (can't vouch for this, but i've read that templates are considered by far the ugliest c++ feature to implement).
Are there any other operating systems that masquerade as editors? I don't think so.
i certainly by-fuckign-god hope to hell not. emacs is the most bloated piece of godawful cruft i ever saw in my life. same bullshit maximalism that MS is guilty of "integrating" IE/IIS etc. into the OS. sheer cretinism. bad, bad, bad software design. and coming from RMS, the UN*X apostle! it boggles the mind, un*x is about modularity etc., not swiss army bloatware.
You tell me what you're using to generate these auto-rants, and in return I'll trade you a program that'll fix the damn line breaks.
I'm just curious. I'm not going to use it to troll Slashdot: I write my own damn trolls, and I don't need no steenking program. If I did, I wouldn't do it your way anyhow: I'd take a big chunk of the book of Revelation, maybe some Leviticus, a little Hunter S. Thompson, a little Wilfred Owen and Ezra Pound, and a round dozen man pages. I'd then ram all that crap through a Markov chain reassembler, pick my favorite parts, and polish the results by hand to a high gloss reminiscent of fine furniture, esp. the lambent glaze in the eyes of an unhinged escritoire.
Dennis Ritchie isn't much better. But if all ugly people ever invent something as useful as UNIX, they're really forgiven :) Eric Allman (Sendmail) isn't much better. Andreas Beck and Emmanuel Marty (GGI) are a little better if probably not unfamiliar with drugs ;-) Looks to me like we all have a quota that can't go to both programming skills and looks. I take the skills any day tho.
This is referred to as asynchronous logging, and it can't be done on NT.
This is one of my chief nitpicks with that OS.
On the other hand, if you're trying to do something cooperative, such as writing or maintaining free software, it helps to cooperate! For instance, if somebody has a question about some free software, do you care who answers it as long as the answer is good? This idea applies to a lot of other areas, too.
I believe that RMS said that security makes sense in banks and in the military, but makes less sense in the lab. This isn't unreasonable, since presumably people working together in a lab share some sort of common goal.
You're a suburbanite.
BZZZZZZT!
You're right of course, I just wanted to post like a jerk JUST LIKE YOU. Why? Because:
Your people skills are obviously superior.
You are never wrong.
If you were wrong, you would want someone to be as sarcastic as possible pointing out your mistake instead of pretending to be human and merely correcting you.
And Perl is certainly strongly typed--providing you look at it the right way. You could say that Perl has strong typing but late binding, that is, dynamic typing.
Let me explain. If you store an object of type Foo in variable $ob, you are perfectly welcome to store an object of type Bar there later. This is very polymorphic. However, due to dynamic typing, if you call a method that only works for class Foo when the variable is holding a Bar--or vice versa--then you'll take a run-time exception.
The use fields pragma affords you static typing, however, so that you'll get caught early, back at compile time, for certain kinds of incorrect OO operations; viz., improper data attribute access. Perl has a lot more compile-time analysis than you might be used in other so-called "(byte-code) interpreted" languages.
Perl also has sane conformance rules between certain fundamental kinds of values that confuse people. That's not to say it's not strongly typed (again, given the right kind of squinting). For example, using an integer where a float is called for has a particular and completely well defined rule that gets applied. However, using a float where a Foo object is called for certainly does not, and you get zapped with an exception at that point.
There are certainly things you can do if you prefer a less forgiving system. For example, you can promote numeric warnings into fatals within a particular lexical scope via use warnings FATAL => 'numeric'. Or you could use the new lint tool to find dubious context coercions, such as perl -MO=Lint,-context,-undefined-subs myperlprogram.
Dynamic typing and certain common-place default conformance rules means you don't have to worry about a lot of busy-work if you won't want to. It also means you can detect whether an integer is odd using the peculiar $n =~ /[13579]$/. :-)
It's been a long known fact that RMS dislikes host/network security. Consider the following scenario that is not at all unlikely: Joe Hacker/Cracker/whatever doesn't like emacs very well--Joe is a vi God. He uses RMS's poor security setup to infiltrate gnu.org and silently patches the new version of emacs source that is supposed to be oh-so-cool. Hell, he might even do it in a very subtle way, i.e. in the LISP interpreter itself. The result is that after some predetermined amount of time, the home directories of the users go Poof! Hell, the trojan may have even sniffed the root password by then and then the entire system goes poof.
Remember every one of who runs a Linux system or other GNU-based system rely upon GNU to maintain our security. If some ankle-biter decides to screw with my system (good luck), I take the time it takes to recover quite personally. It's one thing to live a read-only life, but a read-write-world life is dangerous for us all.
Oh, and don't bother to point out that the source is open and so it can't happen. The Kerberos 4 source was open for years and years and it was trivially crackable in seconds, until Lodin, Dole discovered that they were using laughable random numbers.
If you think Richard's incessant self-promotion is accidental, you aren't watching closely. :-( He's worse than Perens and ESR combined.
I don't think your Linus-image #3 is Linus. Cool car though.
Howard Owen hbo@egbok.com Everything's Gonna Be OK Consulting
"Even if you are on the right track, you'll get run over if you just sit there" - Will Rogers
I'm not real crazy about functional languages to begin with but the primary reason I never learnt LISP is because I couldn't find a good introduction to the language. Can anyone make recommendations?
How we know is more important than what we know.
Something like the Richter scale (in which an increase of 1 indicates that the earthquake was thirty times more powerful)?
;)
Let's call it the Stallman scale, then. RMS is a 10-Stallman; Theo is about an 8-Stallman, I would guess; Linus varies between a 3-Stallman and a 6-Stallman; Alan Cox is a 1-Stallman; Tom Christiansen is a 7-Stallman.
Logarithmic, of course, so RMS is about 100 times more difficult than Theo, and about 1000 million times more difficult than AC
As is common with interviews, it was most likely a transcript of a recorded conversation; the mistakes are those of the person who retyped it. (See the earlier comment about the error in RMS's statement regarding the #pragma hack.)
umask of 0000 or of 0777? These aren't the same.
What would Richard say?
Bah.. This is the lame stuff we get from Microsoft. You're downloading a file, you've done 200 meg download to a directory that you thought would be fine only to find that your partition with the swap file on it is full and the program you're downloading with spacks it. When I say I want to download a file to xyz directory, I expect it to go there, not into my swap file and then onto the drive when it closes. This aside, when the download stalls halfway through I want to be able to stop the program (that means even if I have to kill it) and have a file there that I can continue the download on. If you are going to add "special" system calls to read a file that is being written to, why not have "special" system calls to check if a file is currently being constructed so you can change the behaviour of your program for half completed files?
:)
Ahh the benefits of a traditional computer science education, where you can sit around and dis terms like "atomic supersede"
How we know is more important than what we know.
Well, fancy that. It's about 10 years past the time for RMS to swallow his pride and confess the real story here: no GPL'd libraries work.
Yep, that'd be a great thing. If I find the time to do it, one day.....
Actually I was already thinking about a "type assistant" that can also do a lot more by attaching not only types but also properties (like: this number never gets greater than n) to variables and have some automated deduction system with some clever heuristics help you show that your code does what it's supposed to do.
But I'll have to finish my PhD first...
"We won't use guns, we won't use bombs, we'll use the one thing we've got more of and that's our minds" - Pulp
He simply jumped on the biggest bandwagon he could find. It's the honest conclusion.
I forget who said it, but I recall once some OSS advocate saying he wished he could just ignore RMS and the GNU project and write them off as the radical wing, but that unfortuntely RMS had written far too much code to be ignored.
I think that's a great statement about how in the OSS/FS world your code does wind up being very much where your mouth is. The more code you write, the bigger say you get.
Personally I love the GNU project, and I am very glad that RMS has written so much code that he can't be ignored.
I'm not sure exactly what you mean by "domain-aware, learning type assistant" but CL compilers that check types are out there already
The compiler in CMUCL (called Python, but not to be confused with the language of that name), for example, has a very nice type inferencer in it already, and when you set your compilation settings appropriately will even warn you where it hasn't been able to infer things so you know what explicit declarations to add
See the appropriate bit of the CMUCL User Manual
(with-gratuitous-plug
Kudos to CmdTaco for posting a story with more content than fluff.
_____________________________________
And "substantiate" should have been "instantiate".
LILO boot: linux init=/usr/bin/emacs
I have still failed to see the greatness of LISP. Since I prefer Emacs as editor I can do very simple things, such as editing my .emacs but not much more.
:)
OK, someone with experience with LISP and e.g. ML (or any other functional language), explain why RMS and others call LISP a superior language? When I studied CS we learned ML and I thought that was a brilliant language. Perl on the other hand is superior when it comes to manipulating text.
Funny, RMS came up with the POSIX name.
I suppose I could just read Conway's book, which has been sitting in the "too-read" pile for a couple of months now.
Anyway, keep 'em coming. Thanks.
Kindly define `scripty task', sir.
This confirms everything I've heard about RMS being argumentative. That guy will never compromise no matter what.
"Linuxcare: That's not unique to LISP though."
"Richard: Well, it is mostly unique to LISP."
"Linuxcare: Right, but you have to count the strings."
"Richard: No, you don't have to count strings."
"Richard: I couldn't block approval of the standard on those grounds, so instead... I posted a notice about the coup in which the evil repressive forces of POSIX....Then a slightly prudish board member convinced me to change it to POSIXLY_CORRECT which I now think was a mistake"
Richard: Do you know about the bug that depends upon the phase of the moon?
Linuxcare: I've heard about this.
Richard: We always liked to talk about the bugs that depended on the phase of the moon. So, when Guy Steele wrote the Rabbit compiler, which is a scheme compiler, he made it print out a comment at the beginning which showed the time it was compiled and so on, but it also put in the phase of the moon. So, you could always look. If you had a bug that depended on the phase of the moon, you could look at the thing and see at what phase of the moon it was compiled, and that might help you figure out what went wrong. Eventually, he got a bug report about a certain program that had been compiled once, and worked, and when it was compiled at another time it didn't work. So, he looked and he discovered that when the initial comments were printed out, the LISP feature that would automatically put in a line break if a line got too long was activated on one occasion, because the phase of the moon took too many characters to print out. So, it triggered that feature, and the last part of the phase of the moon was on another line, and therefore it wasn't marked by comments. So it was just sitting there in a file, whereas at another time the phase of the moon didn't take up so many characters, and the whole thing was properly commented. So, this was a bug that actually depended on the phase of the moon. You can take that as a final thought.
_____________________________________
It's not jr and sr. They are father and son, but they have different middle initials. I know, I've met both of them -- went on a nice sailing trip with the two of them around New York harbor. Bob Morris, the elder, worked for Bell Labs and wrote the bc manual. Robert Morris, the younger, is known for the Internet Worm, for which we both agreed he did much more damage and recieved far less punishment than me in my own celebrated case.
RMS aint as pure as people say (yer.. he's about the purest LISP coder on the planet I bet though).. I once got into a (quick) argument with him over whether or not the code in a microwave/toaster is ok to be proprietory. Can you guess who was against and who was for? Yer.. I said I should be able to recode my toaster.. and as such the toaster manufacturer should supply source. RMS said the code in your toaster isn't the same as the code on your computer. When asked why he said "hardware". When I mentioned that most microwaves were flash upgradable, he said "oh.. then you probably want some microwave with a user programmable interface".. and when I said "no.. I actually want the source to the code they have put in the flash that keeps burning the chicken" the conversation was over. When it comes to microwave ovens RMS aint too harsh with proprietory software. However, when it comes to mobile phones, he appears to be all for a free software alternative.
He's still kickarse cool though.
How we know is more important than what we know.
Oh, Tom's been wrong--just not as often as a whole lot of people wish that he'd been. :-(
From some experimentation, I'm pretty sure a basic perl filter ( s/<.*?>//g; ) is being run on our sigs now. This, frankly, just sucks. And I agree with you, if we had the damn code, poor, poor, CdrTaco wouldn't have to work his little fingers to the bone, and we might have a better solution.
<RANT> /., because usually they're basically whiny and annoying. But on this point, I have to be a critic myself. This is a site which is built on free software, and which claims to be one of the biggest media voices for free software, and yet, as far as I can tell, the software that runs /. is non-free! Good intentions don't count here, Rob-- the code is being kept hidden from us. We don't need a pretty tarball, for God's sake! Just set up a CVS server! I'll host it (cvs1.ompages.com)!! It's time this deplorable situation was changed.
I normally dismiss critics of
</RANT>
"Get away from my house you freak!"
-Neal Stephenson
There is no K5 cabal.
I am not the real rusty.
It was unbelievably cool. It was written in their own variant of MACLISP that they'd written, complete with a compiler that produced C code. Apparently the product is still available in some form from Microsoft (sigh), and I assume it's still written in LISP, so I would say that LISP is in fact a language that's used to develop commercial products.
This natural language interpreter could obviously have been written in C, but whether it could have been gotten to market in time to be of any use is entirely questionable. LISP's ability to manipulate strings of data (not strings of text) in a free and easy way is what enabled that application - without this, it would have been theoretically possible but not practically possible.
What you don't see much, and rightly so, is stuff written in LISP that would be better written in C. You also don't see a lot of programs that, while they would be easier to write in LISP than in C, aren't a lot easier to write in LISP than in C. IMHO, that's too bad, because it means that a lot of geeks that could benefit, as I did, from being exposed to LISP never have that opportunity.
yeah we figured that out a little after we posted. whoever that is, he shouldn't be allowed to touch that car.
But not all software ought to be free. People have to eat.
If it weren't for Richard we wouldn't have Unix in a lot of places. Linus probably would have never written the Linux kernel without gcc and friends.
Would the BSD sources have been freed at all if it wasn't for Richard's nagging of the Berkeley people.
And yes, Solaris does exist on the x86, but who in there right mind would go do such a thing.
So, it may not have been RMS personally writing/porting Unix to the PC but if it wasn't for him, how many of us would be stuck using the crud M$ is selling???
Guile was mentioned in the article, and so I decided to check it out. It seems to be using plain GPL, rather than LGPL. Is this right?
Life's too short.
Talking about Perl having a lot of compile-time analysis isn't that accurate in a Lisp discussion, considering that all Common Lisp systems (except one), and some Scheme systems as well, compile right down to optimized native machine code. And Lisp compilers are interactive, so that you can compile individual functions one at a time; in fact some Lisp systems do not even have an interpreter but compile everything you type at the prompt.
Kindly define `scripty task', sir.
Heh. Yeah, that is kind of vague. It is kind of hard to nail down unfortunately, especially in Unix where there are a lot of small applications. The best I can come up with is that the scale of a program that is an application is an order of mangitude larger than that of a program which is a script. Over time scripts can become applications. Scripts also tend to be written in interperted languages.
Quickly banging out a Perl program to do some system administration task, would result in a script. A carefully planned out and complex Perl CGI, or tool written in C++ would be an application. ML is not really good for the former sort of task, but it great for the later.
I hear people rave about ML. Can you give me some more conrete information on where it might be useful in a real production environment? What types of problems does it solve?
My wife says that Linus is easily the best looking. I think, speaking from an asthetic point of view, that she is right ;) Sorry guys
-- Who is the bigger fool? The fool or the fool who follows him? --
Support real book stores! Unless your local bookstores hopelessly suck, then I guess you're out of luck.
But "real" bookstores are cool, and unduplicable on the net. I go to the web to find out if something is in print, and then I only ever buy over the net if the desired text absolutely cannot be found in my area (Cambridge, MA -- not such groovy bookstore territory as one would expect) (if anybody out there knows a good SF bookstore in Cambridge or in the Boston area in general, I'd be much obliged for a pointer).
Of course, if "real" bookstores just annoy you, you'd have no reason to go out of your way to support them . . . YMMV, as you say, in all things . . .
I think RMS is most thoughtful and most firm in his beliefs in the realm of software, and more generally utilitarian information (as opposed to expressive information). And it's in this very realm that he is most communist. I don't speak about economics in terms of who makes what profit -- I speak of an economics more fundamental. At the base of all economics is distribution. Who makes what, who gets what, how does it get there.
RMS wants us all to make software as we desire and need, and to give everything we have to everyone. It doesn't get there by any centralized organization, but by the trust in goodwill that makes it inevitable that when the first person gives the software away the chain will not be broken -- and it seldom is.
At least, that's what the GPL does, in spirit as in practice. And how could it be more communist? The GPL neither denies nor supports profit. But places the rights of the user (the masses) above the rights of the author (the capitalist). That sounds communist to me. But that doesn't have to be a bad thing.
Maybe RMS doesn't want the means of production to be placed exclusively in the hands of the people, or start a violent overthrow of the ruling class to make room for a dictatorship of the proletariat, but that's just one perspective on communism.
echo "blah" > #temporary_file#
mv #temporary_file# existing_file
There is your atomic supersede. It's in the atomic rename operation..
I cannot honestly believe that you question CSRG's freeing of BSD, or that you attribute this to RMS. Do you not really know these people?
trollin', trollin', trollin'...
I don't want to live in a world where I force others to work for free so that I can steal what they should be profiting from.
Probably not. Pascal compilers did that in the late 70s for machine portability. The Pascal code was compiled to an intermediary called P-code, which was then compiled to machine code by an architecture dependent piece.
The Pascal vendors billed this as a big breakthrough for portability at the time, but I'm sure that earlier examples could also be found.
RMS does, indeed, believe that most things should be open. He is not what one would call a personal privacy advocate. He wouldn't attack you for having your privacy (from what I've read of his thoughts), but he's not big on keeping everything you know and everything you have to yourself. He's not the world's biggest capitalist, that's for sure. :-)
..." model.
I agree with him on many points; I think the world would be a better place if we could trust each other. Mind you, I believe in security; but I believe in it as a trust model, not as an "exclude everyone but
That's why I use programs like portsentry, etc.
- Michael T. Babcock (Yes, I blog)
The point is the incredible leaps you can make with a programming system that allows you to really dynamically program.
Until you understand the amazing things a dynamically typed, dynamically bound language can do for you, you're missing a major productivity builder.
The day I wrote a perl script that constructed and executed part of its own code was like a bolt from the blue.
To this day, most programmers can't get past the ideas of static typing and binding.
All CS students should spend at least some time looking at languages that allow for run time modification of code - its incredibly powerful.
And "Because Guile, which is the new project scheme interpreter..." should be "Because Guile, which is the GNU Project scheme interpreter...".
Perl can also compile down to machine language. But many language, e.g. Python, are very lame at the compile-time phase. Even when Perl is using the interpreter, its compiler does far, far more work than Python's does. This is relevant when you're talking about static analysis, early versus late binding, etc.
At least that's how I interpreted the book, I have no more information than you do.
Perl can also compile down to machine language.
Really? Does the only Perl parser in existence actually do this, or you just speaking theoretically? Perl's definition is so contorted, that I doubt there will ever be any other implementations.
I agree that Python is a bit too dynamic for its own good, but I'd still take it over a rat's nest like Perl any day.
Like someone else already noted: If you mirror it you are in violation with copyright laws(in most cases anyway). To my understanding this doesn't affect caches(otherwise proxys etc. would be illegal - just think about squid). And think about it, how much overhead is the text of say 15 links/day? Maybe 80K / link and you get 1.2M / day of cacheing, which for all practical purposes can be deleted the next day. As a comparison an average page of comments loads easily 100-200K..
Nice paper (well, the 1/3 of it that I skimmed). The goal of a universal config file language is worthwhile, but it will not work if the language looks like Scheme. Quick and dirty languages succeed because they are quick. They are designed (using the word loosely) to require as little programmer time as possible, both to perceive the meaning of a script and to pound out something useful.
In other words, Scheme/Lisp is optimized for being read and written by the machine, while Shell, Perl, etc. are optimized for humans, and humans generally decide which language to use. Sure, if time were never an issue, we should all write beautiful code in a beautiful language like Lisp, but for small and ad-hoc jobs, it is unsuitable.
The ideal thing IMO would be an easy way to create little languages on top of a language with rich semantics, providing them with a way to "escape" into the full language to handle complex cases. Here I think Scheme could excel, but I don't know of any concrete examples where this is done.
Here's a hint - don't moderate what you don't understand.
We think he is Marc Merlin, the guy who takes all those pics at conferences and shit.
Think about that statement: "I've never seen or done anything with more than 50 lines of code...". Especially the 'done' part. I can translate that as 'I don't really know anything about this language'.
Many extremely large projects have been done in lisp. In fact it is particularly well suited for large research projects, because it is so flexible. Need examples? Most early large scale AI projects were done in lisp. Many still are, but also many use variants. AutoCAD. Symbolic algebra systems. Many 'expert systems' (I never did consider them 'AI', but I guess you could lump that in with above). Lot's more if you care to look....
S.
ML doesn't have macros, does it?
Can you think of a reason you would want macros when you have real polymorphism and functors?
> he lives pretty frugally.
Yeah, all he needs is his hotrodded match-grade .45 semi for tactical shooting. He's kind of Buddist that way. ;^)
This shouldn't be too hard to implement
It isn't - but then again Slashdot it not in LISP, so who know?The perlcc tool does this by calling Dr Beattie's code generators. Stop being so ignorant with your idiotic insults and actually learn something, why don't you?
If Sun or HP or IBM made a copylefted operating system using Project GNU's licenses and tools for making copylefted operating systems, then yeah, I'd say they made a GNU system. AFAIK that hasn't happened except in systems built with Linus' kernel.
Can you think of a reason you would want macros when you have real polymorphism and functors?
To write programs that write programs that write programs ? Seriously, powerful macros can encapsulate complex operations to a simpler form, which is easy to use and still remains efficient.
maybe i've just been left in the dark, but i don't really know why ESR is hailed as such an important part of the open source community.
this may seem off-topic, but i don't think it is entirely unrelated to this article. i mean, i know (and further see from the article) that RMS is a major contributor to the opensource and gnu movements. he did most of the coding for emacs and gcc. what has ESR done that makes him so special? i know about the "cathedral and the bazaar" essay, and his other writings, but is that it? although significant, his writings do not seem to be so important to raise him to such high status in the community. someone please clue me in.
p.s. i realize that if i am indeed mistaken, i will probably upset a lot of people with my ignorance. if i am wrong, i would like to apologize in advance. i'm not looking to attack anyone or to be attacked. i just want to know.
I suspect this question will never be seen but I feel a need to ask it anyway.
I don't understand how RMS can advocate both not using security and using strong encryption, how can he reconcile those two beliefs?
(RMS advocated not using security in this artice and has done so elsewhere but a couple months ago he advocated using strong encryption in the UK in response to some new laws passed to help counter IRA resistance).
Discussion about LISP's technical value is beside the point, because the use of LISP in a Free Software project is counter to the ideology of Free Software.
Free Software in the RMS sense is about having the users be able to modify the code to fit their needs. But requiring knowledge of a little known language like LISP defeats this purpose. It keeps the majority of programmers from being able to do their own code modifications, since that would require them to learn a highly non-standard new language.
This is a perfect illustration of RMS' large blind spot. He is for a democracy of the elite, where the elite is programmers in academia. The value of usability - in GUIs (viz emacs totally wierd layout), programming languages (using LISP despite its unusability to the vast majority of programmers), and verbal communications (even the phrase "free software" requires some secret background knowledge) - to his larger goal of a more free society escapes him. If you are interested in devoting yourself wholly to GNU, then you are welcome; otherwise you're second class.
The FSF only accepts contributed code if the copyright is assigned to them with a disclaimer from the contributor's employer, so nobody can come along later and sue for infringement- and so they have standing in court to threaten or sue infringers (should someone redistribute without meeting the conditions of the GPL). This copyright assignment isn't written into the GPL or anything (in particular, you yourself can distribute modified GPL'd works without doing it), it's just a ground rule the FSF has decided they need to apply to their "official" copies of projects.
Wow. You showed him, genius-boy.
The same way he advocates licence-leaking with some kinds of aggregation and not with others. He's not consistent.
The article mentions the PDP-10, later named the DEC-10 (officially the DECsystem 10), but didn't point out that a few days ago was DEC-10 day (the date was Dec. 10), and today is DEC-20 day (date is Dec. 20) -- the DEC-20 was the successor to the PDP10 and included the paging hardware that made virtual memory possible.
He has stated that he is against hiding information from your neighbours, but supports hiding it from the government.
So when he advocates crypto, he is talking about using it to avoid government snoops.
I guess that means he has no curtains.
You licensing mavens are self-destructively obsessed. Just give the fucking code away. Forget the courts. Forget the virus. Just do the decent thing and do unto others as you wish they would do unto you.
You probably mean a GNU command line utility. Linux is the kernel, some of us prefer to call the whole system GNU/Linux.
I use the 90%+ of the same GNU utilities on Solaris, HP-UX, AIX, FreeBSD, etc. Should I be calling them GNU/Solaris, GNU/HP-UX, GNU/AIX, GNU/FreeBSD, etc? I think not. I use GNU utilities on a Linux system, just as I do on any other Unix (derived) system.
Fight of the millenium!
Two such "difficult" people (see splits of EMACS/XEMACS OpenBSD/NetBSD) with so opposite opinions about system security.
Um, cracking involves violating the system's security model, not obeying it. And umask 000 makes files with mode 777, which is world-write. Didn't he deny remote login for himself as penance for giving in to pressure to deny it to others?
To write programs that write programs that write programs ?
I fail to see the need in this case. I can write very elegant code to produce new code without resorting to "macros" in ML.
Seriously, powerful macros can encapsulate complex operations to a simpler form, which is easy to use and still remains efficient.
How is this more powerful and efficent that using normal functions which give you the exact same capabilities? Have you ever written code in ML to know that this is something you need?
Uh.. Slashdot LINKS to the article so that we can all read it. Thus, it is unnecessary to copy two paragraphs of it on the basis that they are interesting. The whole article is rather interesting but for obvious reasons it would make no sense to copy/paste it into a comment.
From reading the other posts, about RMS living as if the community is trustworthy, except when he's forced to do otherwise, because you should trust the community, etc... I got a different view of his beliefs.
Most people think of communism (discounting rabid people who think USSR == Communism) as sort of a global welfare state, where you can sit around and get by, or strive and strive and be held back.
But, if you had a mature community, this wouldn't happen. The same as, in a mature society, like that which Stallman grew up in at MIT, where he could leave his email unpassworded and not lose it.
In a mature society, you could leave your doors open, because everyone would be, if not rich, then at least, not poor. You could leave your email open because people wouldn't trash your machine just to prove a point.
I think RMS honestly lives by the golden rule, treat others as you would have them treat you. He wants open code, so he opens his code. He doesn't want nasty controlling laws, so he promotes ways around these laws, GPG for example.
I'm not saying he's Jesus or anything, but he seems to have decided on what he feels he has to do to live a moral life, and he's doing it, with few contradictions. To see this, you just need to see what his goals are.
The GPL is basically a 'place' to put code you think will benefit people. You have to have written the code, or have it already given to the free world, such as with a BSD or public domain license.
If someone can't make a living because all the code they'd write exists in better form under the GPL, then perhaps they don't deserve to make a living as a programmer.
And the GPL doesn't even prevent you from making money, it just means you need to sell yourself as a glue programmer, and a systems integrator, instead of just a programmer.
Anyone can sell GPLed code, and charge to set it up, they just can't slap their own copyright on it. And for everyone except those with an irrational need to own everything, this is enough.
When people whine about the GPL, all they show is that they can't get by without stealing code, and they don't want to be forced to show this.
LISP is really nice when you're pushing the state of the art. It's a simple, flexible core with lots of hooks for extensions. I once heard it called "the programmable programming language". So if you're writing a big program, you can begin by extending LISP into a domain-specific language. You can even add new kinds of declarations and control contructs.
LISP is very pleasant for hacking if you learn to see past all the parentheses.
Eric Kidd <eric.kidd@pobox.com>
I always thought it was supposed to be "melting snowballs".
Alright, I like RMS and his teachings as much as anyone, and even agree with the sentiment of this statement. If standards aren't serving users in the best way possible, what good are they?
But if it were someone from Microsoft making this statement, let's admit it. We would be jumping all over their throats and making accusations about "embrace and extend". Obviously, since GNU makes free software, there's less worry about them subverting the standards process, but where do you draw the line?
BTW, the POSIX_ME_HARDER part was hilarious. Made my morning. :)
As somebody who was using minix around the time linus wrote linux (and posted the original message to comp.os.minix), gcc and friends were nice, but I don't think their absence would have stopped linus.
There were other compilers (for instance, the one shipped with minix (binary only, but since when has that stopped us)). I think I remember lcc being available around then too.
Having no BSD utilities and no GNU utilities would have been far worse... so whereas I don't agree with your assertion that rms's work was an essential prerequisite for linux, it was (and is) a great achievement... three cheers for rms.
Hmm, wouldn't it be great for Katz to do a whole piece on the Troll Culture?
-- Ender, Duke_of_URL
I think an article like this just reminds us that RMS isn't just a religous fanatic, but he actually writes quality software, and stands up for what we all believe in. Richard Stallman, I salute you.
this sig limit is too small to put anything good h
Thank you for clarifying.
Hmmm, not that I know for a fact, but I do not think that RMS is a NRA member. ESR on the other hand...
After the Y2K consulting business has dried up, perhaps the next big time bug to go after will be Lunar-fourth-quarter.
Anyway, doing unto others as you know they could but won't do unto you would be stupid. Some of us have this notion called fairness, which is where we diverge from both pure communism and caveat emptor capitalism.
That's what work for hire is for. In a world of abundant information and scarce labor, only an accountant could think of imposing more scarcity in an already flawed world just so he can charge for the right to have a copy.
Except, of course, that little security is applied to credit card numbers (they're given to the staff at every retail outlet where the card is used and there'd be no way of telling at what point the number was extracted) and they seem to work pretty well anyway, that's a mark in favour of non-security, not against it.
Ter velcom :)
_____________________________________
I noticed your signature. Actually, Slashdot sigs are still interpreted as HTML. It's just that whenever you edit your user preferences the tags are somehow lost, and you end up with unformatted text in the text box for your sig.
The solution is to go back and re-insert the tags every time you edit your preferences. It's annoying, but it works. (See my signature. ;) )
This is a known Slashdot bug, and if I had the damn code I would fix it.
Vovida, OS VoIP
Beer recipe: free! #Source
Cold pints: $2 #Product
We still need a victim :)
The road to hell ... is paved with good intentions.
Not entirely, I don't think. Besides, I doubt the road to heaven has anything to do with money.
>Kind of odd that RMS says "security sucks" (not a direct quote, of course, but that's what he seems to be saying), then actively promotes crypto and GnuPG. I guess his thinking is that people have the right to choose between privacy and openness, which seems reasonable.
He's explained it somewhere, somewhat like this:
Encryption is protection against the possibly corrupt government, security is protection against your community.
If you need to protect yourself against the community, there is something wrong with the community and you should try to fix that, instead of protect yourself against it.
One thing that surprised me most about the interview was what he said about security and how he doesn't like it. Did I interpret this correctly? Does he really think everything should be open? Maybe I'm missing something..
Is there anyone more familiar with his position who would like to fill me (and others) in?
An important part of the beauty of extending Lisp by macros is that they are expanded at compile-time, so that you can make arbitrarily complex transformations without sacrificing a bit of run-time efficiency.
Thank you for pointing this out to me. I will be more diligent of this fact in future posts on/. Thank you for taking the time to post :)
_____________________________________
Have a poke around the ALU site for more stuff, you should find a list of commercial projects here.
S.
Richard: the C specification which said #pragma was supposed to do something about implementation design.
I'm sure this is a misquote. I'm sure that what he actuially said was: the C specification said #pragma was supposed to do something that was implementation defined.
What that version of the C compiler did was, if it processed a #pragma, it did something implementation defined all right: it exec()ed Rogue.
Imagine: you're compiling an innocent C program, that happens to have a #pragma line on it, and suddenly the compile is gone, and your screen is running Rogue!
I don't even know whether there's a person back there. This response from them was so predictable that they probably just wrote an AI to do it.
The most ironic thing is how much Stallman complains about the old "giving credit where credit is due" clauses on some free licences (like the BSD advertising clause) and then has a major shit fit just because we don't all use "GNU" in the name of a program just because we use his compiler. Tell me how that's not hypocritical, please. He's just grabbing the Freenix bandwagon.
ML doesn't have macros, does it?
or ken?
RMS is an awesome hacker. He runs emacs on an FSF GNU/Linux powered laptop under gdb, so if any bugs crop up he's on hand to debug them and fix them. Most of his time these days is spent spreading the good word of Free Software, if you see him typing he's probably answering one of the many emails he receives a day. I once saw him hacking a minor feature into some elisp, it was an impressive sight. He sometimes has a few days over the Christmas/New Year period to hack, so those Emacs enhancements might not be far away.
Whether you agree with his software politics or love his software politics, there's no denying he is a great hacker. His greatest achievement however will prove to be the GNU General Public License and the continuing crusade to further the cause of free software.
Hmm.. My sarcasm-alert couldn't take the heavy load and disintegrated. Actually I think that slashdot should have a script that automatically copies roughly 30% of the articles linked to so that we can fill the empty comments-part below the post.
My first professional project ( that is a job I was payed for ) was writing a lisp application half matematical, half AI ( namely : find out a collision-free trajectory for a six-degree-of-freedom robot arm in a partially obstructed environment ).
... but this is the time for it : we are at the end of Millenium ( or we are ? ).
I lovingly remember that period. I worked on a machine with a *Lisp processor* and *lisp-oriented OS* ( an Explorer II made by Texas Instruments ). It had common lisp with object oriented extensions. Lisp program could be complied into assembly code.
I also had an high-level, object oriented, AI-oriented, visual programming environment named KEE, by Intellicorp, which made PROLOG and Smalltalk looks as assembler languages. It had a wonderful window-based user-interface toolkit, also.
I just loved programming Lisp ( and KEE, too ).
There is nothing better, if you are doing symbolic programming. It's fine for matemathical applications, too ( but you need a smart interpreted/compiler to avoid the performance drawbacks of functional programming ).
My application ended up mostly matemathical, with a few AI algorithms attempting to save computational efforts. It worked fine, but it accumulated LOTS of memory garbage. So, every time the OS started the garbage collection, my application was kicked off CPU and everithing stopped. I hope today lisp interpreters/compiler handle it better.
Sorry, a bit of memory rummaging here
Ciao
----
FB
Quite the technical article, very informative...
Gives whole new meaning to the phrase "Talking with a lisp."
Thorry, I'll thut up now...
No thanks. I don't smoke anymore.
Here what perlcc does:
This compiler backend takes Perl source and generates C source code corresponding to the internal structures that perl uses to run your program. When the generated C source is compiled and run, it cuts out the time which perl would have taken to load and parse your program into its internal semi-compiled form. That means that compiling with this backend will not help improve the runtime execution speed of your program but may improve the start-up time.
This does mean, that perlcc is not an actual compiler ; it just transforms opcodes in direct calls to subroutines. This is easy to do in any bytecoded languages, and has been done several times for Java bytecode for instance. Needless to say this has very little to do with "compilation" in the true sense, and the Java toys aren't much used.
Stop being so ignorant with your idiotic insults and actually learn something, why don't you?
Actually perlcc is yearlights from the quality of Common Lisp compilers, and does little useful with respect to code execution speed.
First of all, you've a strangely self-serving definition of a compiler. My compsci prof would not agree with you. Secondly, perlcc has three different code generators. It's not just a way to generate subroutine calls in all cases. Consider the CC mode.
Hail Richard, bereft of social grace.
The fnord is with thee.
Blessed art thou amongst antibusinessmen,
And blessed is the fruit of thy doom, the GPV.
Holy Richard, lover of poverty,
Pray for us coders now,
And at the hour of disemployment.
I do care to look. I just don't know what Lisp has to offer from the software engineering point of view that you need in large projects - interfaces and modules, hiding implementation details, strong typing etc. The stuff you find in languages like Ada... It seems that Lisp is great for smaller applications, but I can't really judge it, that's why I mentioned that I've never seen anything bigger than 50 lines. Not to prove anything! ;-) Maybe you have a link...
There's a part I didn't quite understand in the interview. How does Emacs coredump itself at the loading of the program and how does that make it faster to load?
I like the thought of EMACS being able to display images and PostScript inline. I just hope that it will still work with LaTeX...I don't think we have much to fear, though. =)
PKG
------------------------------
Common sense is not so common.
Turambar
------------------------------
Common sense is not so common.
--Voltaire
At last, a substantive piece about RMS. I'd thought /. had turned into an etabloid dedicated to mockery of everything non-Lignux, including RMS. Glad to see I am wrong. RMS is the Jesus of software!
People are always asking "What if Linus got run over by a bus" -- or Alan Cox, or Guido or Larry or even (shudder) ESR.
Most of these people are expendable. Great guys, sure (ESR I reserve judgement on. Sorry. The guns scare me. British.), great guys whos projects will live on thanks to the licences under which they've placed their work, and the openness of the systems they have produced.
RMS, however, is a different matter. He's coded some great stuff, (I'm not an EMACSer myself, mind you) but as the interview states, he's moving into a more managerial role because he has the drive and the conviction to push for libre software. Plenty of people can code -- the FSF employs some of them. Very few people can campaign like RMS can -- and fewer still share his convictions. ESR won't do -- he doesn't feel the same way about freedom of software, he cares more about the bazaar than about the freedom.
SO: what *if* RMS got run over by a bus tomorrow? We need some fault tolerance here.
--
Another thing that RMS did that was really incredibly cool was he worked out how Ada could behave itself just like other computer languages rather than being really quite fierce and hostile. When he helped a bit in the initial design of GNAT (the GNU Ada compiler) RMS worked out that the Ada "library" that is required by the standard could in fact be a lightweight definition consisting of little more than the source code with attached timestamps, and some little supplementary text files, rather than the previous system. In this way GNAT was made a true first class language front-end for GCC without making GCC jump through any hoops or do anything really pointless.
Before GNAT, Ada "libraries" were these monstrous opaque creations that made compilation incredibly slow - the compiler would have to open each library and read the (huge, expanded) semantic information associated with each separate unit mentioned in the current compilation from disk, rather than just going and getting the source code. By the early 90s the old Ada library approach was total junk, as GNAT easily blew away all previous Ada technologies using a combination of a) one of the worlds fastest language parsers (I would guess, certainly the fastest Ada parser ever seen) b) bountiful cpu power and RAM, and c) RMS's new lightweight library design.
These days there is a small but happy free Ada software crowd building up around GNAT, and I believe the GNAT team has been able to contribute a fair amount of value back to the GCC core. RMS helped to make this all possible and vastly improved the lot of a number of underpaid overworked Ada programmers (defence, telecoms, transport infrastructure etc).
If you think LISP is cool, you ought to try out ML which has all the advantages on LISP, plus a real type system, and if you actually have a good grasp of mathematics a beautiful realization of a programming language.
Gosh, what would Richard say? :-)
If you want to try that at home,
try
cat file > file
and boom.
I'm sometimes bitten by that when filtering files with grep an mistyping the second filename.
Yes, the "Cuckoo's Egg" crack was accomplished through movemail and moving a patched kernel over the original. However, this could only be done if emacs was setuid root, which is Bloody Stupid in any case. So don't go blaming Emacs. :)
You know if you really did something like that you should have read the liscence first. Gee I certainly not break the bank on someone elses work and get that close to the fire.
There are usually a couple of people who use the little corruption of the GPL "GPV" and I am guessing you are one of the ones that do except you post anonymously.
If it weren't for programs written under the GPL most likely I wold have to have sprung for a totally new computer because of instability and bloat in my software at least 10 times since I first got my first one some years ago.
There was a really good reason why Stallman decided to write these things: because the ones that they had when he was around were too damn expensive and slow for development purposes and security parameters.
I saw a paper on the internet from about oh 1994-95 or thereabouts when linux was just getting off the ground as a viable OS for at least a few people. It discused reliability of unix commad line utilities. Guess what most of the commercial distributions of unix had at least one if not more major utilities that failed their tests. Not only that but because of him we also have unix on PCs for which I am eternially grateful for someone thinking of so that it could really work.
Slashdot social engineering at it's finest
I'm not sure it will work in a large-scale project.
Well, much of Emacs is (as far as I know..) written in Lisp. Is that large-scale enough for you?
There's also Sawmill, which is a window-manager written mostly in Lisp, with C for the lowlevel routines.
Daniel
Hurry up and jump on the individualist bandwagon!
RMS is clearly the ugliest of the four, and Linus it probably the least.
never noticed it myself
This is a correct version of the above post... call it "oops". :)
/What/ this linked list represents doesn't matter except to the interpreter; it's a list like any other. Applying the car operation to this list would yield the symbol 'map; the cadr (first rest) operation would yield the list '(lambda (l) (car l)).
,nwod eno ekaT"^
Generally speaking, Lisp is superior because it's made out of lists. This is much more important than it looks. Why?
(WARNING: here there be dragons! Below I simplify extremely for the sake of understanding. Please don't bash! Also, note that everything I say about Lisp interpreters also applies to Lisp compilers.)
Take Perl, for example. In Perl, programs are basically one-dimensional character strings, usually read from a file. What the Perl compiler does (either when called to run a program, or an eval() or a s///e) is take that string and parse it into a syntax tree, which is then 'flattened out' into bytecode, which is, in turn, executed by the bytecode interpreter.
In Lisp, on the other hand, programs and data are naturally represented as lists; the strings that you type into the Lisp top-level are parsed into lists as soon as possible (an extremely simple thing to do, by the way), and from that point on the entire environment can use a homoiconic set of primitives (car, cdr, cons, eval, etc.) to handle any data that you may pass to it.
Exempli gratia, let's look at two functionally equivalent programs (defining a program as a representation in computationally concrete form of an abstract mathematical algorithm):
# Perl
map { $_->[0] }
sort { $a->[1] <=> $b->[1] }
map { [$_, $f->($_)] } @ARGV;
; bastardized Scheme
(map (lambda (l) (car l))
(sort (lambda (a b) (<=> (cdr a) (cdr b)))
(map (lambda (e) (cons e (f e))))
*argv*))
You may have recognized the Perl program as a variation of the famous Schwartzian transform, wherein $f can be any key-producing function; with $f = \&-s it becomes a program that orders the filenames passed as arguments by size. The below program is not quite valid R5RS Scheme; the *argv* list, equivalent to @ARGV, is not standard, and the <=> form can be easily defined in terms of the comparison operators:
(define (<=> a b)
(cond
((> a b) 1)
((= a b) 0)
((< a b) -1)))
Likewise, with a bit of creativity, the sort form can also be implemented.
Anyway, how does all this matter? Simple. As data, the Perl program is a 74-element character array; it has all kinds of special symbols and tokens, and turns out to be horribly complex to parse. On the other hand, as data, the Scheme program is very simple: it's a linked list with three elements, one of which is the symbol 'map, and two of which are sub-lists.
It's important to note here that the interpreter is a function like any other; as such, it deals with lists like the ones above. The reader - which parses text into lists - is a separate system.
Originally, the fact that all Lisp programs are lists was considered a huge disadvantage (even by John McCarthy himself), and for years there were attempts to introduce a new Algol-like syntax (called M-expressions) to supersede the list representation (called S-expressions). But, as it turned out, this turned out to be a huge advantage, and Lisp programmers almost universally appreciate SEXP.
Of course, there are many other reasons why Lisp is a superior language, although many of those are implementation-dependent and may also be present in other languages. But having a homoiconic representation for programs and data is by far the greatest advantage.
Note: While we're on the topic of languages with homoiconic representations, I thought I should mention Funges, a family of languages in which programs are represented as n-dimensional, potentially infinite cell-spaces to be traversed by an instruction pointer; each instruction occupies one cell. The written representation of Funge programs follows this; for instance, in Befunge (the 2-dimensional Funge), a typical program might look like
v
>v"Hello world!"0<
,:
^_25*,@
or even better,
9::*\2*+00p0v"."0<
>310p0"," >"llaw eht no "v >#v_ ^
^_210p0"--:" v ,
: v " of beer" < :
- >"selttob"00g.^ < <
1 >00g1-#^_$" elttob erom enO" ^
>00g#^_$" selttob erom oN" ^
^_110p0",dnuora ti ssap
^:-1_010p00g1-00pvv:-1g01_@#g00,*25<
^ <
To the editors: your English is as bad as your Perl. Please go back to grade school.
-----------
"You can't shake the Devil's hand and say you're only kidding."
Somoene put his creditcard number up here and lets see :) (maybe RMS himself, lets see how fast they can suck that mac arthur award dry ;)
It's been a while that I learned the basics of Scheme - what impressed me was lazy evaluation, which enables working on lists whose arguments are created when they're needed. I can't explain it any better, but it seemed a very nice feature.
;-) I'm not sure it will work in a large-scale project.
However, I don't think that Lisp is superior to other languages. I've never seen or written anything with more than 50 lines of code. You can do nifty things, but I'm not sure for which kinds of applications Lisp is best - it can't be good for _anything_
On a more serious note. Maybe there should be a script that automatically moderates down comments that consist by more than 40% (or some other reasonable percentage) of sentences copied from the links presented in the original post. This shouldn't be too hard to implement.
A paper on Scheme as an universal extension language:
/mill
http://www.ai.mit.edu/~shivers/ll.ps
The most obvious approach goes exponential or super-exponential. What algorithm are you thinking of that doesn't force us into a 2**n or worse performance hit? (And yes, n is large.)
All programming languages are equally powerful in a Turing sense, since you can implement an interpreter for anything you like within almost any of them, more or less. However, that doesn't mean that they are all equally powerful in practice, because many languages expressly forbid you from doing things that you might wish to do. RMS was referring to the "natural" power of a language when talking about LISP, which could be defined as the set of everything you can do natively within the normal constraints of a language, ie. without creating a nested interpreter and without bypassing the goals of its designers.
LISP is incredibly powerful using that definition, because it is simultaneously an extremely high level language while giving you access to both very low-level data and very high level abstractions, all handled together uniformly at will. And of course, code is just data, adding yet more flexibility. You just can't beat it in the power area.
However, for most people it's the wrong language to use -- horses for courses. While scalpels and atomic bombs are very effective in their respective areas of application, most cutting and demolition uses alternative solutions, and you don't give these nor any other extreme power tool to your kids as toys.
Tucked away behind the scenes though, LISP is the ideal extension language, offering the inherent power that is needed for an unknowable future. Guile will serve us well there.
"The question of whether machines can think is no more interesting than [] whether submarines can swim" - Dijkstra
He wrote Emacs(Who cares IMO, it's just an awkward editor).
He wrote gcc(year 1992)like Linus wrote Linux.
What else?
I know there is some things out there that were not written by GNU or RMS, but RMS convinced the author to hand the copyright over to him and GNU...
Small nit: NT is not a kernel; it's an operating system. Win32 (I believe) would be the kernel.
It all depends on what you mean. When you say "it's a foobar app" do you mean "it's an app for foobar" or "it's an app by foobar"?
tupelos should have been: tuples
Symbolix should have been: Symbolics
address base should have been: address space
I would suggest proofreading before publishing. (That said, it was an interesting interview.)
You use a linux distribution. So it still would be proper to say that the utils are linux utils. When you have an NT system and you use or create an application you say it's an NT app or such. The same applies to linux. A kernel dosn't make an OS.
Slashdot social engineering at it's finest
That should have been fromdos foo.txt
... is paved with good intentions.
RMS really fails to see why software and money are intertwined.
I believe in open source, because I feel I will regain quite a lot of control from the software houses, and that, in the end, my work will be the scarce resource they will be paying for. I just hate it, when I deploy a solution, to see Microsoft and Oracle make money from it, no effort at all. I can tell you: Linux, Postgress, Python, Apache, and no one will move in with per concurrent user licenses and steal my money.
what happens when the site is down due to the /. effect and some ppl want to mirror the pages ? Also what about the overhead for /. to cache and keep copies of the original and do the comparision ?
-----------
"You can't shake the Devil's hand and say you're only kidding."
Perl uses reference counting for memory management. Objects are destroyed when their reference count reaches zero. This means more work for programmers when their data structures have cyclical references. On the other hand, it's simpler to implement, and handles the common cases fine.
BTW, Perl is not strongly typed. It also has strong support for lists. (There are three fundamental data types in Perl: scalar, vector, and hash.)
Care to post a picture of yourself, nerd-boy?
Geez, didn't mean to start a war here...
I simply meant some generic, nondescript utils that happen to be included in my RedHat distro. Some of those are also also included on my BeOS installation, and some in my Win2k. Period.
Some happened to be GNU, some weren't. Can't please everybody.
Wake up.
I use the 90%+ of the same GNU utilities on Solaris, HP-UX, AIX, FreeBSD, etc. Should I be calling them GNU/Solaris, GNU/HP-UX, GNU/AIX, GNU/FreeBSD, etc? I think not. I use GNU utilities on a Linux system, just as I do on any other Unix (derived) system.
If you meant that you'd pulled the kernel Linux or whatever kernel out of GNU and replaced it with the AIX, FreeBSD, or Solaris kernel, then, yes, it'd be GNU/AIX, GNU/FreeBSD, or GNU/Solaris, I think...
If you replaced the Solaris kernel with Linux, you'd probably have `Solaris/Linux' (or `Linux-based Solaris', which sounds a good deal better. Maybe `Linux-cored Solaris'?);)
Whatever happened to the BSD/Linux project--the quest to create a Linux-based BSD OS?
Hrm. It'd be cute to replace the NT kernel with Linux and get `MSW/Linux'....
-rozzin.
Since we're not searching raw data matches out of raw data it is possible to optimize that quite a bit. For instance, it could only take into account full sentences (or words in groups of n words) and look for those in the links.
Make a table out of the sentences in the comment and then when doing ONE PASS through the text in link simultaneously compare these to it. If there are enough matches the comment gets moderated down.
Since comments are generally fairly short the overhead of going through the links(maybe locally cached copies) before making a comment part of the page is not going to be that great.
Why don't you code a domain-aware, learning type assistant hooked into the eval dispatcher? It wouldn't be able to do strict checking a la ML (nor would you want it to), but when fed off a list of heuristics I bet that it could be made to catch a large variety of type-related mistakes that human programmers habitually make.
"The question of whether machines can think is no more interesting than [] whether submarines can swim" - Dijkstra