First, not that it matters really, but you're just wrong about source level debugging. It was present in Lisp Machines much earlier (two or three major releases and a half dozen years) than you realize. It wasn't turned on for Lisp for unknown reasons, but it was there and the sources were available to users. We didn't suddenly implement it for Release 8--rather, we had a discussion where someone said "Hey, how come we have this source level debugging and no one uses it?" and someone else said "I dunno. I guess no one ever turned on the variable." So we turned it on. It probably had a bug or two, but if someone had set the variable earlier and reported those bugs, they'd have been fixed earlier. It wasn't like customers didn't have the sources. And source debugging was turned on and in-use for the Lisp Machine's "foreign languages" (Fortran, Ada, and I think one or two languages, maybe Pascal?). I remember seeing a demonstration when I arrived to work at the company in 1985.
Second, you're also wrong about what killed Lisp Machines. A combination of poor real estate deals (buying a 10-year long-term lease on space that didn't turn out to be needed and that cost many millions of unneeded dollars), guessing that the Mac would beat the PC and building the plug-in board for the wrong platform first (and then not getting to doing a PC one), improper pricing (e.g., charging the same $10K per seat for delivered database application royalties as was charged for development, failure to effectively counter Sun's drop in workstation prices), bad marketing (failure to recognize that Lisp Machines were being identified by market analysts as a separate market category from personal computers, failure to recognize that "you won't need as many employees" was not an attractive thing to say to a manager intent on maintaining the size of his power structure), confusion over whether to focus on hardware or software (where the software turned out to be the more commercially robust arena, but the hardware got most of the money), and bad management (failing to reduce the number of products when money ran short) killed the company. The Lisp language did not cause the problem. The number of Lisp software developers was tiny compared to the size of the company, most of which was hardware sales and production and infrastructure geared toward sale of iron. The company failed to adapt fast enough to dropping prices and new sales strategies. If anything, the power of the language kept the company afloat because years after the hardware could no longer keep pace, users were still willing to use slower machines with that software just to get its pleasant programming environment. I have one in my house right now and still use it for some work and some household things; I don't still use my Mac Plus...
And you're wrong if you think the demise of Lisp Machines killed Lisp. There are probably more implementations of Lisp now, in all kinds of price ranges, commercial and free, than there were at the time Symbolics went under. Lisp has been through some hard times, but has weathered them, and seems to be on the mend. Some Lisps and Lisp companies have undergone belt tightening, but few market segments have been spared that in the modern economy--it filters out bad management and spits up the technology to those who can manage it better. Even if all the companies went away, and that doesn't seem to be happening, there are still free implementations. Lisp is just not dead.
To be honest, I don't really understand why it's important to someone to declare a language or community dead while there are people using the language and happy with it. To assert that this is "dead" is simply insulting to those people. If you don't want to use the language, I think that's fine. But beyond that, it seems rude, pointless, and destructive to take a posture of such definitive negativity that can't possibly aid you in any way and can, by confusing people with misinformation, injure others.
No, the string "hello world" is not active and so is not a hello world program. It only works interactively because the Lisp read-eval-print loop prints the results of evaluation.
But for program delivery, most commercial customers would not accept the read-eval-print loop as an application top-level. And in that case, a string would just sit there lifeless and not automatically display itself anywhere.
The reason I said to do
(defun hello-world ()
(write-line "Hello, world!"))
is that you also have to usually dump the program out as an exe, and you usually do that by doing something like the following (the syntax of which varies from vendor to vendor):
(save-image "my-app.exe":start-function 'hello-world)
Of course, if you don't want to name the function, you can usually do something like the following instead, but I didn't want people confused by LAMBDA in describing hello-world...
(save-image "my-app.exe" :start-function (lambda () (write-line "Hello, world!")))
Don't try this save-image in your Lisp since as I said its syntax varies from vendor to vendor and I made up this syntax as a neutral compromise between various vendor syntaxes. Instead, consult your vendor documentation for details.
Re: Lisp has unwind-protect, and Scheme has the similar but slightly more powerful dynamic-wind, designed to allocate and free resources whenever execution enters or leaves a particular expression.
unwind-protect's job is wholly unrelated to that of dynamic-wind. Neither subsumes the other.
unwind-protect's cleanup clause is like Java try's finally clause; it offers forms to be executed upon final return from a dynamic contour (regardless of how the exit occurs). This is for things like with-open-file that must close a file when you are finally done with it.
dynamic-wind runs wind/unwind forms every time you enter/exit a task in a multi-tasking "process". It's for implementing things like dynamic variables, which Lisp already has primitively, although it's capable of implementing other dynamic bindings. The point, though, is that since on every process switch it runs the wind/unwind, it is no good for things like with-open-file since one does not close the file every time you switch processes; it has to be held open the whole time.
One problem with dynamic-wind as a paradigm is it assumes a time-sliced model and doesn't work as well in the face of truly parallel multiprocessing because it is generally doing and undoing global side-effects. We talked about this in a recent discussion on comp.lang.lisp and people convinced me it was a bad idea for Common Lisp to adopt this, even though I do think it's kind of theoretically cute.
One reason Scheme does not have unwind-protect is that Scheme has no manifest notion of a "final exit" from a dynamic contour. An escape procedure could throw through out but then its state could be resumed later, so the only reliable time to run the protect clauses is not synchronously on unwind, but effectively asynchronously when the garbage collector notices there are no more pointers to the object. This makes it far less useful. Omitting it from the language hides this not-very-well-known wart in the Scheme continuation model.
I have proposed rectifying the Scheme continuation model by either making call-with-current-continuation take an argument saying whether to give out a single-use escape function or a multi-use escape function (so that single-use continuations could run unwinds at a more predictable time), or by making continuations given by call-with-current-continuation take an extra argument saying whether the use is intended to be the last exit from this context. Both of these make the continuation model more complicated than most of the Scheme Report authors (other than me) think is reasonable. So the problem festers and unwind-protect is omitted from the language in part to avoid confronting this problem head-to-head.
Re: I program Java for one and only one reason -- the class library.
I absolutely agree this is a strong concern and can't blame you. I regard Java as more of an assembly language establishing a virtual machine. I wish they'd come out with hardware Java so it would be fast enough that people could seriously embed languages atop it without losing still even more speed than Java already loses.
I like Java's wealth of libraries (even if I quibble with this or that particular one) but I hate the Java surface language. I'm not a static typing person, and I need macros. Java makes me feel unproductive, even after taking time off to do about a year of intensive programming in it. If you can cope with it, more power to you.:-)
You're asking now what does it for me? This is not an attempt to convince you but merely a personal observation then. Please don't confuse this post with an attempt at debate.
I don't like C's syntax. Particularly the * thing. I regard C as an assembly language, so useful for some things, but not something I want to see all the time. I have much more respect for C than C++ in this regard. I don't want to do manual memory allocation, though. I don't like using pointers explicitly; everything is a pointer in Lisp, so we don't use the term pointer. I don't like being able to get a pointer to things that are not objects because that doesn't suit my normal need, though I recognize its value as a subprimitive, and that contributes to why I think C is an acceptable assembly language. Many Lisp kernels are bootstrapped from C. I don't want to type-declare my data. I very much don't like fixed-precision integers that can randomly be modded down when I add a number to them; I like addition of positive values to proceed monotonically.
What about Perl? I have some respect for the kinds of applications people write in it. It seems to be very robust and offers interesting power. The syntax simply does not speak to me. That's not a statement that the language is bankrupt, but I don't resonate to it. And it's not because I've never used odd languages. High on my list of favorite languages after Lisp is Teco, also a text-processing language.
But some of the reasons I use Lisp are not related to what the languages are but what they aren't. I detailed these in the article. I like and critically depend on interactively debugging with customizable read/print capability. I like having typed objects, not typed variables. I like a standard notation for structured (parsed) programs so that I can trade in programs.
What can Lisp do that other languages can't? Can you spell "Turing Equivalence"? I make no inequivalence claim. I just like using Lisp for these reasons and more that would bore you silly. There's still part 2 of my interview coming if you're addicted to reading me ramble on, which I somehow doubt.
Re: All I hear from the LISP camp is how "elegant" it is and how stupid everyone else is for not using LISP.
Well, this statement is false on its face, since my interview doesn't say that. And so that isn't all you're hearing. Unless you're only doing selective listening.
I have argued (and continue to argue in part 2 of the interview), that people need to know a lot of different languages. I have no deathwish for other languages. I just wish people would stop having a deathwish for the language I choose to use. I find Lisp powerful and useful. Some others have different callings. But the aim oughtn't be be beat each other into not using things. It should be to make people aware of the choices that are available to people who want them.
I don't need to convince the world that Lisp is right and other languages are wrong to feel comfortable that Lisp has succeeded. I just want to make the knowledge available that Lisp is usable.
One reason I refer to languages as political parties is to underscore that it's sometimes better that not everyone is in the same one. Most democrats would not be happy being republicans, nor vice versa. That doesn't make one group right and one wrong. It says that sometimes clustering with people of like mind is good. But people should not be chastized for changing party in either direction, nor should parties concern themselves with killing other parties. They should just collaborate as best they can given their differing viewpoints, and they should live and let live.
Re: Having unique characters for each unique element of the syntax would be ideal, though not accomplisable with existing keyboards, character encodings and systems.
I believe you meant to say "finite" rather than "existing" keyboards. Whethere existing or possible to build, there's always a problem: Lisp intends users to add more syntax, and after a while you run out out of cute little operator markers, even in Unicode.
Lisp does, however, allow you to redefine the syntax as you like, so you're welcome (and enabled) to pursue your dream there, even without invading others' programs since you can do it in a private readtable (the guide the lisp reader uses for parsing). That's better syntax support than most other languages give you when you're dissatisfied.
Macros are a central part of the Common Lisp experience, and if you had a class or book that didn't teach them, it did you (and our community) a disservice by giving you a false sense of what normal programming is like in CL.
As to the size of the language spec, you should probably read my article Don't Judge a Spec by Its Cover which I wrote while the standard was just a draft and lots of people asked questions like these. There are 978 symbols (defined names) in Common Lisp. The ANSI CL spec, whose online incarnation is most easily accessed as the Common Lisp HyperSpec, is about 1195 printed pages. That's an average of about one page per defined name, a lot of which is examples of how to use them. That doesn't seem unreasonable to me on a per-function basis. Perhaps you'd be happier with fewer functions or fewer examples. Or we could have left out the helpful glossary of Lisp terms that provide a normative effect on the community's terminology. That would make the spec smaller.
I personally don't recommend reading the full spec cover to cover. I never have. I recommend reading the opening few chapters on syntax and evaluation, and then thinking of other chapters as libraries that you can read about as you need them. Then again, the spec is not intended to be a tutorial, people just get confused about that because it is (I'm told) more readable than most language specs. If I'd made it more unreadable, most people would never have approached it (as is the case for most other programming languages), and people would judge the language by tutorial texts. Lisp has a great many tutorial textbooks that are much smaller than the spec; the spec's first responsibility was to be a clear and accurate record of the language definition. The prior definition, Steele's Common Lisp: The Language was more brief, but left some things vague that led to portability problems and required more exposition to get right.
Actually, back in the 70's sometime, Vaughan Pratt (then at MIT, I think since moved on to Stanford or some such) invented this thing called CGOL, which was an infix syntax for Lisp. (It didn't require special magic to do; Lisp's syntax is redefinable, to it just takes a normal user program and a little imagination to do this.) He also wrote some much-ignored but very interesting papers on how its parser worked that I don't have pointers to but that I remember learning a lot from.
The Pratt parser used a modified parse precedence thing where any operator could take back control of parsing if wanted to. It was very flexible and reprogrammable and I swear by that model of parsing even today, much preferring it to simple bnfs and that kind of thing. But as to reprogrammability, I pointed out to him once, decades back now, that I thought the ability to dynamically rearrange parse precedences wasn't the win it seemed like it should be, because it made people uncertain as to what would associativities would occur. He seemed to sadly agree with me and said, at least then (he may have changed his mind since), that he thought it was probably better for defining a language than for offering a redefined language--that probably a language should just have a fixed set of such operators and then be done because indeed it turned quickly to a tower of babel if you rearranged parse precedences programmatically like the language technically allowed.
The traditional Lisp notation avoids this tower of babel by just making every expression syntax-neutral. No system-defined function or macro gets special "operator" parsing status, so no user-defined function or macro complains "hey, how do I do that?". The result, as most Lisp users remark at one point or another in their life, is a much more egalitarian environment, where system macros and user macros blend naturally without one having more apparent status than the other.
Re: One's choice of language has nothing to do with one's intelligence.
Neither does one programmers's choice of application area have anything to do with a language's suitability for other things. Go to Franz's success stories page for a list of Lisp success stories. But please don't assume this is an exhaustive list, and please don't assume Lisp is only useful for Animation and Graphics, AI, Bioinformatics, B2B and Ecommerce, Data Mining, EDA/Semiconductor applications, Expert Systems, Finance, Intelligent Agents, Knowledge Management, Mechanical CAD, Modeling and Simulation, Natural Language, Optimization, Research, Risk Analysis, Scheduling, Telecom, and Web Authoring just because these are the only things they happened to list. Common Lisp really is a general language capable of a lot more than these few incidental application areas, even if this web page doesn't totally bring that out.
Re: Lisp does indeed seem to have more than its fair share of elitists, however.
Your use of the word "seem" of course makes this a statement about you and your ability to perceive, not a factual statement about the world. If you had made this a factual statement about the world, I'd ask to know your source of statistics and the nature of your accounting techniques to make sure you were not applying any kind fo selective bias or personal opinion. But fortunately, that won't be necessary.
I'm also not really sure why elitism of individual users is an issue. Languages are not elitist, people are. And I think that's just a sometimes side-effect of passion (unless you're making a claim that something in the language semantics forces this, a claim that would require more documentation than you've given). Are there languages that don't attract passionate people? I'd be more afraid of a language that didn't inspire passion than one that did.
Re: Reality is that most experienced CommonLisp users have switched to Java or other languages by now, and they didn't do so out of ignorance.
In fact, indirectly, I think they did.
I know a lot of these experts you're talking about personally. Are they ignorant of CL and its strengths? No. But are they independently wealthy? Also no. So what happens? They have to get a job where people are offering. Would they have preferred Lisp jobs? In most cases I can think of, sure, absolutely. Did they dislike Lisp? Nope. But most people can't make their own job. People have families and kids, and they take conservative steps when they might prefer not to--because they have to.
But don't conclude from that that they have abandoned Lisp, that they don't trust it, etc. They haven't a choice. The ones with the choice are the employers. And in at least some cases, the prejudice against using Lisp is out of ignorance. So, indirectly, those skilled Lisp programmers are shifting jobs to non-Lisp jobs out of ignorance. Just not their own.
The fact is that many well-meaning people make arguments just like you're making, that you can't make money with Lisp. And that becomes a self-fulfilling prophecy because it convinces others not to offer Lisp jobs. But arguments of this kind are not good arguments because they are not based on causality, they are just based on observation. People mostly don't go to the moon, but that doesn't make it a bad idea. People often aren't even nice to each other, but that doesn't make it a bad idea.
Me, I don't have a family that depends on my paycheck, so I can take more risks than some you cite. My company is based on Lisp. I think it's a strategic edge that will save me from hiring armies of people to do what I need to do. And that works in my favor because I can't afford to hire armies of people right now. Still, I believe, now more than at any time in the last dozen or so years, Lisp is finally powerful enough that what stands between me and making money in the world is not the language or tools I'm using (which seem entirely adequate) but business ideas and business management (which I think I can do and I've set out to demonstrate). If my company fails, it will be because I did something wrong either in picking my market or managing my company, but not because some perfectly capable programming language let me down.
Lisp is just a tool. And it's a poor craftsman that blames his tools.
Re: GUIs are obsolete, and only used by computer novices. Drop the legacy technology and switch to the command line!
Or the web. I've been just writing programs that talk straight to the web and using something like Emacs or Microsoft FrontPage HTML support as a GUI designer (depending on whether you like writing raw HTML or doing it WYSIWYG style).
The second half of the interview has some places where it specifically takes the position that you should learn lots of languages, Lisp just among them. I think Lisp will compare favorably if you give it the same shake you give other languages. And these days, environments are heterogeneous so you often can't get by on just one. Tune in tomorrow or whenever for those questions.
Sorry about the arrogance you have perceived in some. We're a diverse community. We're neither all arrogant, nor I suppose all not. You just have to pick and choose, like most other things in life, even Slashdot. I hope you'll use this incident as a reason to give the language a second look. Thanks for the useful feedback in any case.
All of the +5 questions are answered. This interview is in two parts. The next part will appear in a day or two, and the question about ML will get answered.
Re: Lisp doesn't have a toolkit equivalent to Java 2D + Swing, and I seriously doubt it has anything equivalent to Java 3D, the Java Advanced Imaging API, or the Java Media Framework.
Long before Java was born, Lisp actually led the industry in high-quality 3d graphics long ago. Around the time of the gulf war, CNN and other major TV systems were doing their graphics rendering in Lisp. There was some bad business management that led to the demise of the company with that tool, but the technical tools had nothing wrong with them. (sigh)
Re: I'd like to see, for instance, a word processor written in Lisp.
MIT Lisp Machines were the first to run an Emacs-style editor based on Lisp, I think. Then MIT Multics, where it was conventional to use PL/1, deviated to prefer Lisp as its implementation language. Then Stallman rewrote Teco-based Emacs in Lisp. It's different than MS/Word out of preference and tradition, not becuase something in Lisp keeps it from doing what Word does. But it is a word processor.
Also, Lisps can call out to other programs by native function call, by RPC, by CORBA, by COM, by sockets, and probably (though I haven't recently checked because I don't do Java) by RMI. So we're not lacking for ways to integrate others' tools if we need them.
Re: I'm not insulting Lisp the language, but the fact is that its libraries are woefully inadequate compared to Java's.
The Lisp community was in a boom at the time AI became unpopular. Many siezed upon the opportunity to blame Lisp for AI not meeting everyone's expectations (as if had the work been done in C++, AI would be blossoming today). It's easy for something to become a scapegoat, just as the word "dot com" has become a scapegoat for many companies doing bad financial planning recently. Since that time, Lisp has labored under a bad reputation that I think was unfairly attached as part of a convenient blame game. Yet even though many have tried to kill Lisp, it won't go away mostly because it still has ideas to contribute and commercial problems it can solve that other languages can't. It is gradually building back up to the image it had before, I think, by embracing rather than fighting other technologies. I dare say that if we had as much money to throw around in our community as Sun had to throw around getting Java advertised and populated with libraries, our image would be as good. We're just working on less budget, and so the process of rebuilding trust can't happen overnight by sheer force of dollars.
If you like keywords rather than pure functional programming, you should be checking out Common Lisp, not Scheme. This is a major political difference between these two very different Lisp-family languages.
This issue is discussed in more detail in part 2 of the interview, expected out in a day or two.
I address this issue in the second part of the interview, to appear in a day or two. In brief, though (for once): I agree, learning more languages (and more kinds of languages) is better than learning fewer. Don't decide between them. Learn both.
I think there are some remarks on this in the second half of the interview. Maybe re-ask this question in response to that?
Sorry the interview got split. There was apparently a length limit, perhaps caused by a pre-allocated fix-length buffer due to failing to use a language with dynamic memory allocation.;-)
I think the original poster meant that READ does not preserve comments. This is a true remark, though the idea that it's "terrible" may be a little exaggerated. Most source-to-source transformations don't result in new source files, but are done as part of compilation. No language I know of uses comments (well, ok, PostScript and Teco maybe a little, but by abuse only) to help them compile code, so that's probably a reasonable optimization.
There is a technique one can use for modifying the reader to find comments and attach them to the parent object using hash tables, repatriating them later. I've seen this done for some source-to-source translation facilites such as one provided with the Symbolics system for upgrading user code between releases. It is more work, but given how often the issue comes up, the extra cost is probably reasonable in exchange for how much easier it is to transform code without worrying that comments are intervening.
The alternative is to do like Interlisp did and make comments be structures, but then you can only put comments in certain places. It's plainly more flexible to put them anywhere you want and we pay the cost for that in the READ function.
Re: The Linux community does _nothing_ to keep people from using other operating systems.
The issue isn't the use of other operating systems, it's the creation of them. First, GPL doesn't allow its technology to be used by vendors who will charge for their wares. I really have no opposition to such a restriction per se, because I believe all IP owners are entitled to control their code, but I find it inappropriate to ignore the fact that this does have an effect on competition. Presumably, in fact, that effect on competing vendors is the whole purpose of the GPL -- to impede a particular class of competition that the authors of GPL'd code simply don't like, since any other purpose the GPL has seems to be just as well served by simply making code public domain.
But second, and more importantly, it drives down the cost of commercial software. I think this is intentional also, at least with the designers of the GPL if not all its users, but if you want to argue otherwise, I won't quibble about intent. Nevertheless, I think it's the effect. And by driving down cost, especially when you artificially drive it below the cost of actually paying someone to produce the software, you inhibit competition by removing the incentive for new vendors to move into the area.
The hearts of many using the GPL may not be to lock out competition, but I think it takes more than good intentions to justify a claim that the effect is not to do so in spite of their wishes.
Re: It also doesn't take 100,000,000 mails to a developer to coerce them into doing something... Generally once a developer recognizes that a pattern of requests has been established, and it doesn't conflict with his time or code.
To be honest, I suspect this is true of Microsoft, too. They probably just have a lot more or different things that conflict with their time or code. This comment sounds more to me like a political than a structural problem. This is inherent in competition. Any good Republican will tell you that only the Republican party listens to the will of the people, and any Democrat will tell you the same thing.
It's not the effect of the GPL and free software I'm bugged by so much as what I perceive as a false sense of moral righteousness about it. It's just a tool in a battle. A battle that has many legitimate points of view, not just one. A tool that has both positive and negative effects.
I don't know what the right answer is, but I know I don't find the GPL or open source to be the panacea it's made out to be.
Sigh. Time to test whether the Slashdot scoring system is really content neutral, or whether you have to be unconditionally pro-Linux to get heard around here. It is therefore with considerable trepidation that I post this point of view:
Regarding Ryan_Singer's remark: Personally I don't think we need the goverment to bring M$ down, capitalism will do it, Linux is inherently better and cheaper, people will find the better way to spend money.
You know, I'm not a fan of the Microsoft monopoly, but the point is that it's a monopoly, not that it's bad software. (Whether it is bad software is an opinion that people can reasonably disagree about.) I fail to see how the mere presence of Linux, as a single option, makes things better.
In their own ways, both Microsoft and Linux seem to me to be barriers to new market entry. Microsoft both because it is so commercially large and because of how it got there. Linux because it is so low-cost that it acts economically the same as if competitive "dumping" were occuring, making it hard for a radically different new market entrant to arise because it might have to be free also.
It seems to me that each of these contributes to locking out new competition other than that which happens due to incremental modification from Linux, probably the only option that can be accomplished cost-effectively. I worry that such incremental modification will lead (and has led) to a "hill-climbing" problem. I don't see new companies rushing to offer non-Linux competition, and I don't think it's because Linux represents a total optimum in the operating system design space.
A new company, wanting to offer a whole new approach, is at a major disadvantage in a market where an enormous amount of development cost of the competition (Linux, in this scenario) has been contributed free. The new company, not yet its own religion that attracts hoards of people wanting to contribute commercially valuable time just out of starry-eyed love, will have to pay salaries. And if one company has to pay salaries for development and another doesn't, that puts it at a competitive disadvantage to the Linux community, which seems to me to be its own kind of monopoly on contributed free work.
It's not enough to say "Linux is winning, so who cares about MS." The problem is lack of community that promotes true competition, not lack of an alternate operating system. Linux by itself is not proof to me that a community open to true competition really exists. If the world has only Linux, some may be happy, but those comfortable souls should not make the mistake that Bill Gates has made so many times when he says "The reason people buy our products is that they like us so much." Some people do buy Microsoft for that reason, and some people buy Linux for that reason, too. But if there are never new choices, some are buying because they have to get something and this is all they have a choice of. And that will be all the more true, not less, if Microsoft falls.
What, pray tell, is vulnerable about a Windows machine on an unfirewalled network (provided its properly configured and unneeded services are disabled)?
First, for myself, I have 4 computers, not just one. And I need to talk back and forth among them, so they are configured in a network neighborhood workgroup with entire disks exposed to one another for read/write. That is correctly configured for my house. The unneeded services are disabled, but some are needed. I also run web servers and ftp servers on some machines that are visible to others in the house but that I don't want to be visible to the world.
Second, I see network activity lights go on all the time on my Windows box when I'm not doing anything. I have asked Microsoft support about this and have been told "Microsoft machines just like to talk to one another a lot." And I've said "But I'm not doing a file access or a web access or anything else that should require it. Can I turn that off?" and the reply was "No. They wouldn't be happy. They just like to know that each other are still there, or they're sharing various kinds of information that they think they might need to." Maybe that was misinformation, but it did come from the company that sells the software. I find that uncomfortable.
Third, most people are not computer professionals and are not qualified to know whether their computer is properly configured with unneeded services turned off or not. The issue is not "intelligent" or "semi-intelligent" or anything like that. I think it's insulting to present it in that light. The issue is one of training, and not everyone is trained to know what is safe or not. Nor should they be. Computers need to work safely and reliably even for the untrained. A firewall box is a relatively cheap way to make that happen, and is pretty hard to configure incorrectly, compared to a Windows system, which is quite easy to configure incorrectly.
First, I didn't mean to say anything about the.name domain, which doesn't invite businesses. I don't have an aggressive need to take over domains not meant for business, only to protect those whose purpose is business from imposters and accidental lookalikes.
If they want to administer a TLD in a way that is fair to multiple nameholders, the way.US is now (before the changeover) seems more fair since it's geographical. Yes, there's a chance that Bill Jones and Sam Jones want to use Jones.us, but there's at least a lot less chance that they want to both use jones.atlanta.ga.us. But absent some sort of partitioning, whether by business area or by geography, there's a certain sparring to be done, and every new TLD increases the cost of even trying.
The problem about trademarks is that you don't just walk in and register one like a domain and walk away with it ready to use. As I understand the process anyway, and I'm only just about to try it so I'll know better soon, you first assert the trademark and zealously defend it in parallel with applying for it. If someone else claims you've been not serious about defending your exclusive claim on it, my understanding is that you might lose it. So that makes it problematic to leave an unclaimed foo.biztld available.
I don't mind if they add foo.parody, foo.joke, foo.fanclub, foo.alumni, etc. Those aren't going to get confused with my business. But foo.tld-a-business-can-use is what I'd like to see no more of.
It amazes me that anyone would connect a home computer to the network without a firewall. RoadRunner works fine talking to a firewall and once behind that, you can put anything you want.
What's surprising is not that RoadRunner staff won't interface to XP, but that they won't do installations with a firewall in place. Every time they want to debug something, they ask me to disconnect my firewall and attach my machine directly to the net. Of course, I don't. Fortunately, in my experience, the main thing that goes wrong with RoadRunner is that it "gets confused" and usually just "unplugging your cable modem for twenty minutes" has fixed me every time. Sigh.
I'm not talking about the i-hate-acme.com issue. I have no problem with someone taking that name.
But the case of toplevel domains is different. Suppose someone else had slashdot.com than slashdot.org. A lot of people would traffic to the wrong site, confusing the notion of who was the real "slashdot" and getting lots of free advertising. That's simply not reasonable in my book. I don't mind someone making an anti-slashdot.com or a ban-slashdot.com but I think slashdot or whatever is entitled to the use of its unadorned name.
You may not have much sympathy for coke.com having to also buy coke.ws and coke.info, but they can afford it because they are big. This doesn't work against big guys because they already have more money than God. But little companies just trying to secure a place in the world have much more trouble keeping pace, and the introduction of new TLDs waters down their little stake. And that works against them ever really becoming big or ever competing against the big guys. And that's sad.
First, not that it matters really, but you're just wrong about source level debugging. It was present in Lisp Machines much earlier (two or three major releases and a half dozen years) than you realize. It wasn't turned on for Lisp for unknown reasons, but it was there and the sources were available to users. We didn't suddenly implement it for Release 8--rather, we had a discussion where someone said "Hey, how come we have this source level debugging and no one uses it?" and someone else said "I dunno. I guess no one ever turned on the variable." So we turned it on. It probably had a bug or two, but if someone had set the variable earlier and reported those bugs, they'd have been fixed earlier. It wasn't like customers didn't have the sources. And source debugging was turned on and in-use for the Lisp Machine's "foreign languages" (Fortran, Ada, and I think one or two languages, maybe Pascal?). I remember seeing a demonstration when I arrived to work at the company in 1985.
Second, you're also wrong about what killed Lisp Machines. A combination of poor real estate deals (buying a 10-year long-term lease on space that didn't turn out to be needed and that cost many millions of unneeded dollars), guessing that the Mac would beat the PC and building the plug-in board for the wrong platform first (and then not getting to doing a PC one), improper pricing (e.g., charging the same $10K per seat for delivered database application royalties as was charged for development, failure to effectively counter Sun's drop in workstation prices), bad marketing (failure to recognize that Lisp Machines were being identified by market analysts as a separate market category from personal computers, failure to recognize that "you won't need as many employees" was not an attractive thing to say to a manager intent on maintaining the size of his power structure), confusion over whether to focus on hardware or software (where the software turned out to be the more commercially robust arena, but the hardware got most of the money), and bad management (failing to reduce the number of products when money ran short) killed the company. The Lisp language did not cause the problem. The number of Lisp software developers was tiny compared to the size of the company, most of which was hardware sales and production and infrastructure geared toward sale of iron. The company failed to adapt fast enough to dropping prices and new sales strategies. If anything, the power of the language kept the company afloat because years after the hardware could no longer keep pace, users were still willing to use slower machines with that software just to get its pleasant programming environment. I have one in my house right now and still use it for some work and some household things; I don't still use my Mac Plus...
And you're wrong if you think the demise of Lisp Machines killed Lisp. There are probably more implementations of Lisp now, in all kinds of price ranges, commercial and free, than there were at the time Symbolics went under. Lisp has been through some hard times, but has weathered them, and seems to be on the mend. Some Lisps and Lisp companies have undergone belt tightening, but few market segments have been spared that in the modern economy--it filters out bad management and spits up the technology to those who can manage it better. Even if all the companies went away, and that doesn't seem to be happening, there are still free implementations. Lisp is just not dead.
To be honest, I don't really understand why it's important to someone to declare a language or community dead while there are people using the language and happy with it. To assert that this is "dead" is simply insulting to those people. If you don't want to use the language, I think that's fine. But beyond that, it seems rude, pointless, and destructive to take a posture of such definitive negativity that can't possibly aid you in any way and can, by confusing people with misinformation, injure others.
No, the string "hello world" is not active and so is not a hello world program. It only works interactively because the Lisp read-eval-print loop prints the results of evaluation.
But for program delivery, most commercial customers would not accept the read-eval-print loop as an application top-level. And in that case, a string would just sit there lifeless and not automatically display itself anywhere.
The reason I said to do :start-function 'hello-world)
(defun hello-world ()
(write-line "Hello, world!"))
is that you also have to usually dump the program out as an exe, and you usually do that by doing something like the following (the syntax of which varies from vendor to vendor):
(save-image "my-app.exe"
Of course, if you don't want to name the function, you can usually do something like the following instead, but I didn't want people confused by LAMBDA in describing hello-world ...
:start-function (lambda () (write-line "Hello, world!")))
(save-image "my-app.exe"
Don't try this save-image in your Lisp since as I said its syntax varies from vendor to vendor and I made up this syntax as a neutral compromise between various vendor syntaxes. Instead, consult your vendor documentation for details.
Re: Lisp has unwind-protect, and Scheme has the similar but slightly more powerful dynamic-wind, designed to allocate and free resources whenever execution enters or leaves a particular expression.
unwind-protect's job is wholly unrelated to that of dynamic-wind. Neither subsumes the other.
unwind-protect's cleanup clause is like Java try's finally clause; it offers forms to be executed upon final return from a dynamic contour (regardless of how the exit occurs). This is for things like with-open-file that must close a file when you are finally done with it.
dynamic-wind runs wind/unwind forms every time you enter/exit a task in a multi-tasking "process". It's for implementing things like dynamic variables, which Lisp already has primitively, although it's capable of implementing other dynamic bindings. The point, though, is that since on every process switch it runs the wind/unwind, it is no good for things like with-open-file since one does not close the file every time you switch processes; it has to be held open the whole time.
One problem with dynamic-wind as a paradigm is it assumes a time-sliced model and doesn't work as well in the face of truly parallel multiprocessing because it is generally doing and undoing global side-effects. We talked about this in a recent discussion on comp.lang.lisp and people convinced me it was a bad idea for Common Lisp to adopt this, even though I do think it's kind of theoretically cute.
One reason Scheme does not have unwind-protect is that Scheme has no manifest notion of a "final exit" from a dynamic contour. An escape procedure could throw through out but then its state could be resumed later, so the only reliable time to run the protect clauses is not synchronously on unwind, but effectively asynchronously when the garbage collector notices there are no more pointers to the object. This makes it far less useful. Omitting it from the language hides this not-very-well-known wart in the Scheme continuation model.
I have proposed rectifying the Scheme continuation model by either making call-with-current-continuation take an argument saying whether to give out a single-use escape function or a multi-use escape function (so that single-use continuations could run unwinds at a more predictable time), or by making continuations given by call-with-current-continuation take an extra argument saying whether the use is intended to be the last exit from this context. Both of these make the continuation model more complicated than most of the Scheme Report authors (other than me) think is reasonable. So the problem festers and unwind-protect is omitted from the language in part to avoid confronting this problem head-to-head.
Re: I program Java for one and only one reason -- the class library.
:-)
I absolutely agree this is a strong concern and can't blame you. I regard Java as more of an assembly language establishing a virtual machine. I wish they'd come out with hardware Java so it would be fast enough that people could seriously embed languages atop it without losing still even more speed than Java already loses.
I like Java's wealth of libraries (even if I quibble with this or that particular one) but I hate the Java surface language. I'm not a static typing person, and I need macros. Java makes me feel unproductive, even after taking time off to do about a year of intensive programming in it. If you can cope with it, more power to you.
You're asking now what does it for me? This is not an attempt to convince you but merely a personal observation then. Please don't confuse this post with an attempt at debate.
I don't like C's syntax. Particularly the * thing. I regard C as an assembly language, so useful for some things, but not something I want to see all the time. I have much more respect for C than C++ in this regard. I don't want to do manual memory allocation, though. I don't like using pointers explicitly; everything is a pointer in Lisp, so we don't use the term pointer. I don't like being able to get a pointer to things that are not objects because that doesn't suit my normal need, though I recognize its value as a subprimitive, and that contributes to why I think C is an acceptable assembly language. Many Lisp kernels are bootstrapped from C. I don't want to type-declare my data. I very much don't like fixed-precision integers that can randomly be modded down when I add a number to them; I like addition of positive values to proceed monotonically.
What about Perl? I have some respect for the kinds of applications people write in it. It seems to be very robust and offers interesting power. The syntax simply does not speak to me. That's not a statement that the language is bankrupt, but I don't resonate to it. And it's not because I've never used odd languages. High on my list of favorite languages after Lisp is Teco, also a text-processing language.
But some of the reasons I use Lisp are not related to what the languages are but what they aren't. I detailed these in the article. I like and critically depend on interactively debugging with customizable read/print capability. I like having typed objects, not typed variables. I like a standard notation for structured (parsed) programs so that I can trade in programs.
What can Lisp do that other languages can't? Can you spell "Turing Equivalence"? I make no inequivalence claim. I just like using Lisp for these reasons and more that would bore you silly. There's still part 2 of my interview coming if you're addicted to reading me ramble on, which I somehow doubt.
Re: All I hear from the LISP camp is how "elegant" it is and how stupid everyone else is for not using LISP.
Well, this statement is false on its face, since my interview doesn't say that. And so that isn't all you're hearing. Unless you're only doing selective listening.
I have argued (and continue to argue in part 2 of the interview), that people need to know a lot of different languages. I have no deathwish for other languages. I just wish people would stop having a deathwish for the language I choose to use. I find Lisp powerful and useful. Some others have different callings. But the aim oughtn't be be beat each other into not using things. It should be to make people aware of the choices that are available to people who want them.
I don't need to convince the world that Lisp is right and other languages are wrong to feel comfortable that Lisp has succeeded. I just want to make the knowledge available that Lisp is usable.
One reason I refer to languages as political parties is to underscore that it's sometimes better that not everyone is in the same one. Most democrats would not be happy being republicans, nor vice versa. That doesn't make one group right and one wrong. It says that sometimes clustering with people of like mind is good. But people should not be chastized for changing party in either direction, nor should parties concern themselves with killing other parties. They should just collaborate as best they can given their differing viewpoints, and they should live and let live.
Re: Having unique characters for each unique element of the syntax would be ideal, though not accomplisable with existing keyboards, character encodings and systems.
I believe you meant to say "finite" rather than "existing" keyboards. Whethere existing or possible to build, there's always a problem: Lisp intends users to add more syntax, and after a while you run out out of cute little operator markers, even in Unicode.
Lisp does, however, allow you to redefine the syntax as you like, so you're welcome (and enabled) to pursue your dream there, even without invading others' programs since you can do it in a private readtable (the guide the lisp reader uses for parsing). That's better syntax support than most other languages give you when you're dissatisfied.
Macros are a central part of the Common Lisp experience, and if you had a class or book that didn't teach them, it did you (and our community) a disservice by giving you a false sense of what normal programming is like in CL.
As to the size of the language spec, you should probably read my article Don't Judge a Spec by Its Cover which I wrote while the standard was just a draft and lots of people asked questions like these. There are 978 symbols (defined names) in Common Lisp. The ANSI CL spec, whose online incarnation is most easily accessed as the Common Lisp HyperSpec, is about 1195 printed pages. That's an average of about one page per defined name, a lot of which is examples of how to use them. That doesn't seem unreasonable to me on a per-function basis. Perhaps you'd be happier with fewer functions or fewer examples. Or we could have left out the helpful glossary of Lisp terms that provide a normative effect on the community's terminology. That would make the spec smaller.
I personally don't recommend reading the full spec cover to cover. I never have. I recommend reading the opening few chapters on syntax and evaluation, and then thinking of other chapters as libraries that you can read about as you need them. Then again, the spec is not intended to be a tutorial, people just get confused about that because it is (I'm told) more readable than most language specs. If I'd made it more unreadable, most people would never have approached it (as is the case for most other programming languages), and people would judge the language by tutorial texts. Lisp has a great many tutorial textbooks that are much smaller than the spec; the spec's first responsibility was to be a clear and accurate record of the language definition. The prior definition, Steele's Common Lisp: The Language was more brief, but left some things vague that led to portability problems and required more exposition to get right.
Actually, back in the 70's sometime, Vaughan Pratt (then at MIT, I think since moved on to Stanford or some such) invented this thing called CGOL, which was an infix syntax for Lisp. (It didn't require special magic to do; Lisp's syntax is redefinable, to it just takes a normal user program and a little imagination to do this.) He also wrote some much-ignored but very interesting papers on how its parser worked that I don't have pointers to but that I remember learning a lot from.
The Pratt parser used a modified parse precedence thing where any operator could take back control of parsing if wanted to. It was very flexible and reprogrammable and I swear by that model of parsing even today, much preferring it to simple bnfs and that kind of thing. But as to reprogrammability, I pointed out to him once, decades back now, that I thought the ability to dynamically rearrange parse precedences wasn't the win it seemed like it should be, because it made people uncertain as to what would associativities would occur. He seemed to sadly agree with me and said, at least then (he may have changed his mind since), that he thought it was probably better for defining a language than for offering a redefined language--that probably a language should just have a fixed set of such operators and then be done because indeed it turned quickly to a tower of babel if you rearranged parse precedences programmatically like the language technically allowed.
The traditional Lisp notation avoids this tower of babel by just making every expression syntax-neutral. No system-defined function or macro gets special "operator" parsing status, so no user-defined function or macro complains "hey, how do I do that?". The result, as most Lisp users remark at one point or another in their life, is a much more egalitarian environment, where system macros and user macros blend naturally without one having more apparent status than the other.
Re: One's choice of language has nothing to do with one's intelligence.
Neither does one programmers's choice of application area have anything to do with a language's suitability for other things. Go to Franz's success stories page for a list of Lisp success stories. But please don't assume this is an exhaustive list, and please don't assume Lisp is only useful for Animation and Graphics, AI, Bioinformatics, B2B and Ecommerce, Data Mining, EDA/Semiconductor applications, Expert Systems, Finance, Intelligent Agents, Knowledge Management, Mechanical CAD, Modeling and Simulation, Natural Language, Optimization, Research, Risk Analysis, Scheduling, Telecom, and Web Authoring just because these are the only things they happened to list. Common Lisp really is a general language capable of a lot more than these few incidental application areas, even if this web page doesn't totally bring that out.
Re: Lisp does indeed seem to have more than its fair share of elitists, however.
Your use of the word "seem" of course makes this a statement about you and your ability to perceive, not a factual statement about the world. If you had made this a factual statement about the world, I'd ask to know your source of statistics and the nature of your accounting techniques to make sure you were not applying any kind fo selective bias or personal opinion. But fortunately, that won't be necessary.
I'm also not really sure why elitism of individual users is an issue. Languages are not elitist, people are. And I think that's just a sometimes side-effect of passion (unless you're making a claim that something in the language semantics forces this, a claim that would require more documentation than you've given). Are there languages that don't attract passionate people? I'd be more afraid of a language that didn't inspire passion than one that did.
Re: Reality is that most experienced CommonLisp users have switched to Java or other languages by now, and they didn't do so out of ignorance.
In fact, indirectly, I think they did.
I know a lot of these experts you're talking about personally. Are they ignorant of CL and its strengths? No. But are they independently wealthy? Also no. So what happens? They have to get a job where people are offering. Would they have preferred Lisp jobs? In most cases I can think of, sure, absolutely. Did they dislike Lisp? Nope. But most people can't make their own job. People have families and kids, and they take conservative steps when they might prefer not to--because they have to.
But don't conclude from that that they have abandoned Lisp, that they don't trust it, etc. They haven't a choice. The ones with the choice are the employers. And in at least some cases, the prejudice against using Lisp is out of ignorance. So, indirectly, those skilled Lisp programmers are shifting jobs to non-Lisp jobs out of ignorance. Just not their own.
The fact is that many well-meaning people make arguments just like you're making, that you can't make money with Lisp. And that becomes a self-fulfilling prophecy because it convinces others not to offer Lisp jobs. But arguments of this kind are not good arguments because they are not based on causality, they are just based on observation. People mostly don't go to the moon, but that doesn't make it a bad idea. People often aren't even nice to each other, but that doesn't make it a bad idea.
Me, I don't have a family that depends on my paycheck, so I can take more risks than some you cite. My company is based on Lisp. I think it's a strategic edge that will save me from hiring armies of people to do what I need to do. And that works in my favor because I can't afford to hire armies of people right now. Still, I believe, now more than at any time in the last dozen or so years, Lisp is finally powerful enough that what stands between me and making money in the world is not the language or tools I'm using (which seem entirely adequate) but business ideas and business management (which I think I can do and I've set out to demonstrate). If my company fails, it will be because I did something wrong either in picking my market or managing my company, but not because some perfectly capable programming language let me down.
Lisp is just a tool. And it's a poor craftsman that blames his tools.
Re: GUIs are obsolete, and only used by computer novices. Drop the legacy technology and switch to the command line!
Or the web. I've been just writing programs that talk straight to the web and using something like Emacs or Microsoft FrontPage HTML support as a GUI designer (depending on whether you like writing raw HTML or doing it WYSIWYG style).
The second half of the interview has some places where it specifically takes the position that you should learn lots of languages, Lisp just among them. I think Lisp will compare favorably if you give it the same shake you give other languages. And these days, environments are heterogeneous so you often can't get by on just one. Tune in tomorrow or whenever for those questions.
Sorry about the arrogance you have perceived in some. We're a diverse community. We're neither all arrogant, nor I suppose all not. You just have to pick and choose, like most other things in life, even Slashdot. I hope you'll use this incident as a reason to give the language a second look. Thanks for the useful feedback in any case.
All of the +5 questions are answered. This interview is in two parts. The next part will appear in a day or two, and the question about ML will get answered.
Re: Lisp doesn't have a toolkit equivalent to Java 2D + Swing, and I seriously doubt it has anything equivalent to Java 3D, the Java Advanced Imaging API, or the Java Media Framework.
Long before Java was born, Lisp actually led the industry in high-quality 3d graphics long ago. Around the time of the gulf war, CNN and other major TV systems were doing their graphics rendering in Lisp. There was some bad business management that led to the demise of the company with that tool, but the technical tools had nothing wrong with them. (sigh)
Re: I'd like to see, for instance, a word processor written in Lisp.
MIT Lisp Machines were the first to run an Emacs-style editor based on Lisp, I think. Then MIT Multics, where it was conventional to use PL/1, deviated to prefer Lisp as its implementation language. Then Stallman rewrote Teco-based Emacs in Lisp. It's different than MS/Word out of preference and tradition, not becuase something in Lisp keeps it from doing what Word does. But it is a word processor.
Also, Lisps can call out to other programs by native function call, by RPC, by CORBA, by COM, by sockets, and probably (though I haven't recently checked because I don't do Java) by RMI. So we're not lacking for ways to integrate others' tools if we need them.
Re: I'm not insulting Lisp the language, but the fact is that its libraries are woefully inadequate compared to Java's.
The Lisp community was in a boom at the time AI became unpopular. Many siezed upon the opportunity to blame Lisp for AI not meeting everyone's expectations (as if had the work been done in C++, AI would be blossoming today). It's easy for something to become a scapegoat, just as the word "dot com" has become a scapegoat for many companies doing bad financial planning recently. Since that time, Lisp has labored under a bad reputation that I think was unfairly attached as part of a convenient blame game. Yet even though many have tried to kill Lisp, it won't go away mostly because it still has ideas to contribute and commercial problems it can solve that other languages can't. It is gradually building back up to the image it had before, I think, by embracing rather than fighting other technologies. I dare say that if we had as much money to throw around in our community as Sun had to throw around getting Java advertised and populated with libraries, our image would be as good. We're just working on less budget, and so the process of rebuilding trust can't happen overnight by sheer force of dollars.
If you like keywords rather than pure functional programming, you should be checking out Common Lisp, not Scheme. This is a major political difference between these two very different Lisp-family languages.
This issue is discussed in more detail in part 2 of the interview, expected out in a day or two.
I address this issue in the second part of the interview, to appear in a day or two. In brief, though (for once): I agree, learning more languages (and more kinds of languages) is better than learning fewer. Don't decide between them. Learn both.
I think there are some remarks on this in the second half of the interview. Maybe re-ask this question in response to that?
;-)
Sorry the interview got split. There was apparently a length limit, perhaps caused by a pre-allocated fix-length buffer due to failing to use a language with dynamic memory allocation.
I think the original poster meant that READ does not preserve comments. This is a true remark, though the idea that it's "terrible" may be a little exaggerated. Most source-to-source transformations don't result in new source files, but are done as part of compilation. No language I know of uses comments (well, ok, PostScript and Teco maybe a little, but by abuse only) to help them compile code, so that's probably a reasonable optimization.
There is a technique one can use for modifying the reader to find comments and attach them to the parent object using hash tables, repatriating them later. I've seen this done for some source-to-source translation facilites such as one provided with the Symbolics system for upgrading user code between releases. It is more work, but given how often the issue comes up, the extra cost is probably reasonable in exchange for how much easier it is to transform code without worrying that comments are intervening.
The alternative is to do like Interlisp did and make comments be structures, but then you can only put comments in certain places. It's plainly more flexible to put them anywhere you want and we pay the cost for that in the READ function.
Re: The Linux community does _nothing_ to keep people from using other operating systems.
... Generally once a developer recognizes that a pattern of requests has been established, and it doesn't conflict with his time or code.
The issue isn't the use of other operating systems, it's the creation of them. First, GPL doesn't allow its technology to be used by vendors who will charge for their wares. I really have no opposition to such a restriction per se, because I believe all IP owners are entitled to control their code, but I find it inappropriate to ignore the fact that this does have an effect on competition. Presumably, in fact, that effect on competing vendors is the whole purpose of the GPL -- to impede a particular class of competition that the authors of GPL'd code simply don't like, since any other purpose the GPL has seems to be just as well served by simply making code public domain.
But second, and more importantly, it drives down the cost of commercial software. I think this is intentional also, at least with the designers of the GPL if not all its users, but if you want to argue otherwise, I won't quibble about intent. Nevertheless, I think it's the effect. And by driving down cost, especially when you artificially drive it below the cost of actually paying someone to produce the software, you inhibit competition by removing the incentive for new vendors to move into the area.
The hearts of many using the GPL may not be to lock out competition, but I think it takes more than good intentions to justify a claim that the effect is not to do so in spite of their wishes.
Re: It also doesn't take 100,000,000 mails to a developer to coerce them into doing something
To be honest, I suspect this is true of Microsoft, too. They probably just have a lot more or different things that conflict with their time or code. This comment sounds more to me like a political than a structural problem. This is inherent in competition. Any good Republican will tell you that only the Republican party listens to the will of the people, and any Democrat will tell you the same thing.
It's not the effect of the GPL and free software I'm bugged by so much as what I perceive as a false sense of moral righteousness about it. It's just a tool in a battle. A battle that has many legitimate points of view, not just one. A tool that has both positive and negative effects.
I don't know what the right answer is, but I know I don't find the GPL or open source to be the panacea it's made out to be.
Sigh. Time to test whether the Slashdot scoring system is really content neutral, or whether you have to be unconditionally pro-Linux to get heard around here. It is therefore with considerable trepidation that I post this point of view:
Regarding Ryan_Singer's remark: Personally I don't think we need the goverment to bring M$ down, capitalism will do it, Linux is inherently better and cheaper, people will find the better way to spend money.
You know, I'm not a fan of the Microsoft monopoly, but the point is that it's a monopoly, not that it's bad software. (Whether it is bad software is an opinion that people can reasonably disagree about.) I fail to see how the mere presence of Linux, as a single option, makes things better.
In their own ways, both Microsoft and Linux seem to me to be barriers to new market entry. Microsoft both because it is so commercially large and because of how it got there. Linux because it is so low-cost that it acts economically the same as if competitive "dumping" were occuring, making it hard for a radically different new market entrant to arise because it might have to be free also.
It seems to me that each of these contributes to locking out new competition other than that which happens due to incremental modification from Linux, probably the only option that can be accomplished cost-effectively. I worry that such incremental modification will lead (and has led) to a "hill-climbing" problem. I don't see new companies rushing to offer non-Linux competition, and I don't think it's because Linux represents a total optimum in the operating system design space.
A new company, wanting to offer a whole new approach, is at a major disadvantage in a market where an enormous amount of development cost of the competition (Linux, in this scenario) has been contributed free. The new company, not yet its own religion that attracts hoards of people wanting to contribute commercially valuable time just out of starry-eyed love, will have to pay salaries. And if one company has to pay salaries for development and another doesn't, that puts it at a competitive disadvantage to the Linux community, which seems to me to be its own kind of monopoly on contributed free work.
It's not enough to say "Linux is winning, so who cares about MS." The problem is lack of community that promotes true competition, not lack of an alternate operating system. Linux by itself is not proof to me that a community open to true competition really exists. If the world has only Linux, some may be happy, but those comfortable souls should not make the mistake that Bill Gates has made so many times when he says "The reason people buy our products is that they like us so much." Some people do buy Microsoft for that reason, and some people buy Linux for that reason, too. But if there are never new choices, some are buying because they have to get something and this is all they have a choice of. And that will be all the more true, not less, if Microsoft falls.
What, pray tell, is vulnerable about a Windows machine on an unfirewalled network (provided its properly configured and unneeded services are disabled)?
First, for myself, I have 4 computers, not just one. And I need to talk back and forth among them, so they are configured in a network neighborhood workgroup with entire disks exposed to one another for read/write. That is correctly configured for my house. The unneeded services are disabled, but some are needed. I also run web servers and ftp servers on some machines that are visible to others in the house but that I don't want to be visible to the world.
Second, I see network activity lights go on all the time on my Windows box when I'm not doing anything. I have asked Microsoft support about this and have been told "Microsoft machines just like to talk to one another a lot." And I've said "But I'm not doing a file access or a web access or anything else that should require it. Can I turn that off?" and the reply was "No. They wouldn't be happy. They just like to know that each other are still there, or they're sharing various kinds of information that they think they might need to." Maybe that was misinformation, but it did come from the company that sells the software. I find that uncomfortable.
Third, most people are not computer professionals and are not qualified to know whether their computer is properly configured with unneeded services turned off or not. The issue is not "intelligent" or "semi-intelligent" or anything like that. I think it's insulting to present it in that light. The issue is one of training, and not everyone is trained to know what is safe or not. Nor should they be. Computers need to work safely and reliably even for the untrained. A firewall box is a relatively cheap way to make that happen, and is pretty hard to configure incorrectly, compared to a Windows system, which is quite easy to configure incorrectly.
First, I didn't mean to say anything about the .name domain, which doesn't invite businesses. I don't have an aggressive need to take over domains not meant for business, only to protect those whose purpose is business from imposters and accidental lookalikes.
.US is now (before the changeover) seems more fair since it's geographical. Yes, there's a chance that Bill Jones and Sam Jones want to use Jones.us, but there's at least a lot less chance that they want to both use jones.atlanta.ga.us. But absent some sort of partitioning, whether by business area or by geography, there's a certain sparring to be done, and every new TLD increases the cost of even trying.
If they want to administer a TLD in a way that is fair to multiple nameholders, the way
The problem about trademarks is that you don't just walk in and register one like a domain and walk away with it ready to use. As I understand the process anyway, and I'm only just about to try it so I'll know better soon, you first assert the trademark and zealously defend it in parallel with applying for it. If someone else claims you've been not serious about defending your exclusive claim on it, my understanding is that you might lose it. So that makes it problematic to leave an unclaimed foo.biztld available.
I don't mind if they add foo.parody, foo.joke, foo.fanclub, foo.alumni, etc. Those aren't going to get confused with my business. But foo.tld-a-business-can-use is what I'd like to see no more of.
It amazes me that anyone would connect a home computer to the network without a firewall. RoadRunner works fine talking to a firewall and once behind that, you can put anything you want.
What's surprising is not that RoadRunner staff won't interface to XP, but that they won't do installations with a firewall in place. Every time they want to debug something, they ask me to disconnect my firewall and attach my machine directly to the net. Of course, I don't. Fortunately, in my experience, the main thing that goes wrong with RoadRunner is that it "gets confused" and usually just "unplugging your cable modem for twenty minutes" has fixed me every time. Sigh.
I'm not talking about the i-hate-acme.com issue. I have no problem with someone taking that name.
But the case of toplevel domains is different. Suppose someone else had slashdot.com than slashdot.org. A lot of people would traffic to the wrong site, confusing the notion of who was the real "slashdot" and getting lots of free advertising. That's simply not reasonable in my book. I don't mind someone making an anti-slashdot.com or a ban-slashdot.com but I think slashdot or whatever is entitled to the use of its unadorned name.
You may not have much sympathy for coke.com having to also buy coke.ws and coke.info, but they can afford it because they are big. This doesn't work against big guys because they already have more money than God. But little companies just trying to secure a place in the world have much more trouble keeping pace, and the introduction of new TLDs waters down their little stake. And that works against them ever really becoming big or ever competing against the big guys. And that's sad.