Sixteen Years Later: GNU Still Needs An Extension Language 425
Fresh from the 2011 GNU Hackers Meeting, Andy Wingo has written a long piece on the status of Guile Scheme, the woefully underutilized official user extension language of GNU. Wingo argues that Guile is the best choice for extension in GNU given the ability of Scheme to adapt to change over time. Presented with using e.g. Javascript instead of Scheme for its popularity: 'We should also consider the costs of using hastily designed languages. JavaScript has some crazy bad stuff, like with, var hoisting, a poor numeric model, dynamic this scoping, lack of modularity regarding binding lookup ... Finally, we have the lifespan issue. If GNU had chosen Tcl because it was popular, we would have a mass of dead code' (it should be noted that Guile does partially support Javascript syntax). With the proliferation of Firefox extensions, Greasemonkey, etc. it is clear there is a large set of power users who want to modify the programs they use without spending years becoming skilled programmers. Perhaps after Emacs has been ported to Guile the philosophy of user extensibility will spread to other parts of the GNU system.
Lua? (Score:2)
Re: (Score:2)
Guile is working on Lua support.
Re:Lua? (Score:4, Funny)
Working on being the core term. Not have, not encouraging people to use, not bragging about compatibility, but working on. Wake me when it is ready, like their JavaScript support. It will make a nice break from waiting on Hurd.
Re:Lua? (Score:5, Insightful)
Here is an idea instead of adding Lua support, I don't know, USE LUA... Wow what a concept!
This is what gets me with the GNU team. Instead of actually reusing what other people develop they rather stick to their own little ivory tower and get very little done. I am being serious here.
I appreciate the work that the original GNU people did about two decades ago. It was needed. But for crying out loud these people remind of an older generation that does certain things because well that is how they did it two decades ago. And if it was good enough then, then gosh darn it, it's good enough today...
Re:NIHS (Score:5, Interesting)
Not Invented Here Syndrome is why they didn't use Tcl either (which is still being actively developed).
Tcl being a joke of a language is why they didn't use Tcl; see Stallman's original explanation [vanderburg.org].
Re: (Score:3)
When your extension language is 10 to 100 times larger than your application that uses it, then it has sort of lost sight of the concept of what an extension language is. An extension language that can be used to write other extension languages just seems weird. If this can happen because of the side effect of nice features then this is ok, but when this becomes the goal of the language then it's broken.
After all why don't we just claim that "C" is an extension language? After all you can implement Lua a
Re: (Score:3)
(Not trying to flame or confront, just curious)
What about Python makes it unsuitable as an extension language?
Re: (Score:3)
Re:Lua? (Score:4, Interesting)
Well, as someone who tried to embed Lua and CPython I found the embedding interface in Lua much, much easier to use than CPython's for simple use cases. However, if you are able to deal with the complexities and effort to get it running, CPython seems to be much more flexible and thus better suited for complex interfaces to the scripting environment.
Jython, on the other hand, is dead simple to integrate: for the most part you just have to drop it in and it exports all public classes and methods automatically. No glue code required.
Re:Lua? (Score:4, Informative)
CPython can't be sandboxed.
Re: (Score:2)
Python being the poorer choice because it is not designed to be an extension (scripting) language.
Well somebody needs to tell CCP of Eve-Online they're doing it wrong, same goes for Stackless Python project, and the authors who wrote the official Python documentation that they were wrong to document Embedding Python in Another Application [python.org]. Because batrick on Slashdot said it wasn't designed for that...
Re: (Score:3)
Hell yeah! Lua is an extremely capable embedded language, quite fast and easy to code for, while being flexible. It's also open, and there's plenty of documentation lying around.
My second choice would be Python, but I'd love to live in a world where a lot more things can be done through Lua.
Lisp? (Score:2)
Why not?
Re: (Score:3)
Because Scheme is already a Lisp.
Re: (Score:2)
Oh, I didn't know that. Is it very different from emacs lisp? It would make sense to stick with one extension language.
Re: (Score:2)
Re:Lisp? (Score:4, Informative)
What I don't understand—admittedly, as a non-programmer—is why they don't just say "From now on, Emacs Lisp is the GNU extension language." Or, alternatively, that Guile continues to be the GNU extension language, but that as of Emacs 26 (or whatever version), Emacs Lisp will conform to the Guile specification.
Having both just seems like splitting resources to no good end to me.
It is all part of our (the vim users) evil plans to continue to subvert and destroy emacs. Enjoy your differently-abled extensible languages suckers!
Re: (Score:2)
Re: (Score:2)
scheme is better define than emacs lisp.
Scheme is based on the Revised 6 Report on the Algorithmic Language Scheme. It is a formal specification of what a minimal implementation of scheme should offer.
Emac lisp is based on whatever emac lisp can run, it is a bastardize old school lisp mixed with common lisp, sprikled with a bit of scheme and a dash of weird smelling stuff.
Re: (Score:2)
Not quite - Scheme is more a subset of lisp with a few different features and a much smaller standard library.
I personally hate them both because (over(use(and(need(for(lots(of(parens(without(format(requirements)(drives me))))(crazy))))).
Re: (Score:2)
LISP: Lost In Stupid Parentheses
Re: (Score:2)
More to the point, LISP is dynamically scoped and Scheme is statically scoped. And if you do not understand the difference, then you are much too young.
Re: (Score:2, Funny)
Lisp is but a remnant of an age with far too much LSD and Napalm.
Re: (Score:2)
Lisp is but a remnant of an age with far too much LSD and Napalm.
You don't see such a juxtaposition in common use. I, however, greatly approve.
Re: (Score:3)
Usage predicts lifespan (Score:3)
"Finally, we have the lifespan issue. If GNU had chosen Tcl because it was popular, we would have a mass of dead code"
If Tcl had been used it may well have been alive I guess. I suppose it is Turing complete.
Re: (Score:2)
Re: (Score:2)
So is brainfuck.
So is nand.
Re: (Score:2)
Maybe the GNU project should be called "Linux/GNU".
It supports JS yet is "dead and unpopular". How? (Score:2)
Guile does partially support Javascript syntax
Anonymous Coward wrote:
Meanwhile, they have Guile which is both dead & unpopular.
GNU, swallow your pride and use Javascript. It may not be beautiful, but it works.
If Guile supports JavaScript, why is it dead and unpopular, as you claim?
Re: (Score:2)
Because it partially supports JavaScript. not supports it. And it doesn't (the last time I looked) provide much of the common JavaScript libraries. Making it a PITA and minefield to use
Re: (Score:2)
Guile is not Javascript, and Guile does not fully support Javascript.
Are you saying Guile is alive, prosperous, and popular? I'll agree it's alive, but only barely.
Re: (Score:2)
Yes, sure. (Score:2)
The port of emacs to guile is a breakthrough.
Re: (Score:3, Informative)
Re: (Score:3)
Emacs can emulate vi (Score:2)
Re: (Score:2)
Yes, let's take a 500 ton bulldozer, tape a fork to the front of it, and use it to eat salad.
Poor planning and bad arguments (Score:3)
Perhaps if GNU had adopted TCL, then it would have stayed popular. Or what if GNU had provided a common backbone for extension so then it would be easy to plug in scripting languages (perhaps at run time)?
The simple fact is that paren languages are a really had sell outside of their niche. There is a hardcore who loves them, but the majority do not. Scheme is like the cilantro of languages -- you love it, or you hate it, but there isn't much of a middle ground. The Guile folk made all kinds of promises back in the day of supporting lots of syntaxes, but like Hurd what has come out has been very late, or comes no where near expectations.
And of course the fact that Emacs still hasn't adopted it, isn't a ringing endorsement either.
So give up on a single fixed scripting language, and provide an extension architecture so lots of options can be used... including Guile
Re: (Score:3)
Scheme and other lisp-like languages really are given a bad rap in some cases. I remember reading about someone working on a webpage offering various services (like slashdot, or facebook, etc), and while their competitors all went with C++ (yeah, they did a lot of that back in the day) or something else a little clunky. Meanwhile, this webpage chose to do everything in Scheme, or other lisp-like language (LLL?) and as a result any time their competitors rolled out a new feature, they could whip up comparabl
Re: (Score:3)
I think you are referring to Robert Morris' Viaweb [wikipedia.org] (later bought by Yahoo), which was partially implemented in Lisp. But they weren't exposing raw lisp to the users and expecting them to use it. They used it because they were experts, it was something they were very comfortable with, and thus could get things done very quickly. Of course this also dramatically reduced the talent pool they had to draw on for new hires as well.
Lisp (and derivatives) is an amazing language and great for many problems, but i
Re: (Score:3)
Is this the essay you remember?
http://www.paulgraham.com/avg.html [paulgraham.com]
I don't think most people can write web code faster in lisp than PHP, unless you restrict yourself to a very tiny problem space. PHP has its issues (like a pretty broken language development community, meaning no offense to Rasmus himself) but it does allow incredibly rapid web development. In his essay, Graham says two lisp experts were better off using lisp for web development than using C++ or perl, and gives very good reasons why. But p
I'm coining a new term: (Score:4, Insightful)
1. Saturation. If there are already established tools that do more-or-less the same thing, then there is little incentive for developers to learn something different (often radically) for no tangible gains.
2. Non-problems: Developers often get excited by "problems" that don't exist outside of their niche or mind, and then develope something to solve it. While this might work in the niche, it rarely works in the general case (thoguh there are a few notable exceptions).
Re: (Score:2)
I'm with you!
This has of course been going on forever, and I'm quite weary of it.
It also tends to evoke one of my more hated cringe phrases: "If people would only take the time to learn it, everyone would be using it!". Sometimes this is true.. however most of the time good things do become popular, and if something has been around for a while and not taken off, it's either way ahead of its time (rare) or not infact all that great (way more common).
Re:I'm coining a new term: (Score:4, Interesting)
So basically their decision was optimized on all the wrong criteria. Instead it should have been optimized on:
Re: (Score:3)
2. Non-problems: Developers often get excited by "problems" that don't exist outside of their niche or mind, and then develope something to solve it. While this might work in the niche, it rarely works in the general case (thoguh there are a few notable exceptions).
To be fair, I prefer the academic world, where niche problems are the soup de jour, and no one particularly complains. We work on the weird stuff, because that's what we like and want to work on. Forget you and your "getting work done" mentality... I'm here to play around ;)
No Sarcasm: Do People Care? (Score:3)
No sarcasm meant, does this issue matter to more than a handful of people?
Will it matter once all of the "once ___ are done"s or will the tech world have moved onto other things?
Re: (Score:2)
SSF Guile (Score:2)
Hey, Street Fighter matters! It just does. Now I wouldn't go with Guile necessarily, but he's good. Blanka was my preferred fighter.
Re:No Sarcasm: Do People Care? (Score:4, Interesting)
Done right, an extension language that exposes the right interfaces in the right ways could be to GNU software what AppleScript is to Apple software. And that support is what makes Automator work.
To elaborate: the extension language for Macintosh GUI programs isn't built into those programs. They're built keeping it in mind, but it's not built into them. Instead, they essentially expose verbs and nouns (via a "dictionary") that a shared extension language framework then leverages. Some they define themselves (like the way iTunes defines what a "track" is), and some are defined according to standard conventions (like the definition of what a "window" or "menu" is). It's all typed and stuff too.
(In principle, more than one language could take advantage of that stuff, and the frameworks in fact lay the groundwork for that. In practice, nobody actually uses a language other than AppleScript with this stuff, which is kinda too bad. If you're on a mac and want to know what the hell kind of nonsense I'm raving about, read the man page for or output from the "osalang" command-line program.)
The result is incredibly Unix-y in fundamental philosophy, even if it doesn't seem so in detail: you can write scripts that string together small special-purpose programs to do large complex tasks -- and I'm talking about GUI programs, not just command-line utilities.
I make very powerful use of this myself sometimes, just as I've made very powerful use of shell scripting to bind small special-purpose command-line programs together since the 1980s. It's niiiice.
Who cares? (Score:2)
I read into these comments just to see if anybody cares.
It seems not.
If the Slashdot crowd doesn't, then why would the wider world?
Lisp (Score:2)
Re: (Score:2)
You mean, they should use web services?
Re: (Score:2)
Proposing a Lisp dialect as the "official" extension language of GNU is a stillborn idea. It might find favour with the small fanbase of Lisp hackers but nobody else.
That is probably why Guile is the official extension language of GNU. After all, RMS made Lisp machines before he started GNU.
The GNU manifesto mentions C and Lisp as the two languages in which system programming will be supported. Emacs is also written in Lisp.
Also, to those who think that Guile didn't become more popular because people don't like the parentheses: there is or at least was support for C-like syntax as well. Personally, I think whether or not extensions take off depends on other factors: how
Because it's Lisp. (Score:2)
...and Lisp is weird.
Yes, Lisp's awesome, and has got all sorts of fascinating and powerful features such as continuations and hygienic macros, but the sad fact is that it's just not accessible. Any programmer with modern training is going to be familiar with Algol languages, specifically C family languages, and is going to take one look at the incomprehensible mass of free-form parentheses that's a Lisp program and simply won't be interested.
This is one of the reasons Javascript's so successful --- alt
JavaScript is weird, too (Score:3)
Compared to the mainstream of Java/C++, JavaScript's prototype-based OO [mozilla.org] is pretty strange.
People put up with language weirdness for two reasons:
* It's the only game in town (JavaScript and browser extension, Emacs Lisp, tcl/tk and X GUIs)
* It has something you really need/want (Lisp macros, Java JVM, C++ low-level access)
Neither of those can really be used to drive a universal GNU extension language. Wishing for it is like wishing for something to displace the x86 architecture.
Re: (Score:3)
JS's prototype OO model is great because it means you can easily create your own set of object semantics by convention and simulate most other OO languages. Like prototype.js which started out as a ruby.js type of thing. So then when we're writing the JS for a Ruby web app, we can mimic the Ruby semantics. Makes it easier for us.
JS is a great second language for that reason.
For a normal extension language for use with trusted apps, I recommend C. We can wrap it with anything, and no matter how bad your API
From the Guile Manual on JavaScript Support (Score:2)
Quoting from the Guile Manual [gnu.org]
Re: (Score:2)
So there was apparently one and only one person motivated enough to actually start hacking ECMAScript into Lisp. And after some time that person didn't have the time/interest/motivation/whatever to continue that one-man project.
Somehow even if it's a relatively small language to build a compiler for, I have the feeling that it's a bigger bite than a single hacker can chew. Especially as that hacker is doing it as a hobby project. It could have been helpful if that hacker had received some support and help
I'll get slammed for this, but... (Score:2)
Languages for stable Software (Score:2)
Modern web-based applications use AJAX and therefore JavaScript in combination with DOM models of HTML and SVG to model user interfaces. This could be a nice design concept as the UI runs on another machine than the core of the application. However, it would be best when the DOM manipulation language would be designed with more safety in mind. I visited a week ago a symposium where someone was explaining all the goodies of JavaScript. And honestly they are cool as in you can do a lot of stuff and need not t
Guile is LGPL (Score:2)
Re: (Score:2)
I'm not a fan of the GPL either, but I think licensing has little to do with it.
Extension languages fill a small void. People who are tech savy enough to want to make changes to the way their programs work and have basic programming ability, but arn't skilled enough or don't have the time/interest to make a full blown patch.
I think they've got it all backwards here. You don't ignore popularity and pick an extension language based on it's language features .. you pick a language based purely on it's populari
ECMAScript (Score:3)
Using some obscure (even if well suited) language just narrows that void even more
If you don't like the parenthesized S-expression syntax commonly associated with Guile, use M-expressions. Guile supports a curly-bracket syntax called ECMAScript, as the summary points out. You already have thousands of web developers using JavaScript and ActionScript, both of which are based on ECMAScript.
Re: (Score:3)
Here's the problem.
If you don't like the parenthesized S-expression syntax commonly associated with Guile, use M-expressions. Guile supports a curly-bracket syntax called ECMAScript
In the time it takes someone to interpret what that even means.. they've lost interest in using it. Like I said.. the niche of people who would use an extension language is pretty small. The fact that they have to learn something new makes it even smaller. This is why using actual javascript vice something that is based off the same thing would make more sense. Most geeks have at least a basic understanding of it.. and could start using it right away.
I'd also like to add that their basic
Re: (Score:3)
They have to address problems of interest to people technical enough to write them; but not technical or interested enough to modify the program(as you note); but they also have to a
Re: (Score:2)
I thought this was the whole point of Lua.
Re: (Score:3)
I generally subscribe to the idea that if something is good, it will become popular all on it's own.
16 years later and no one has heard of it.. not good.
There are of of course exceptions, where something is so far ahead of its time that no one appreciates it, or where something is never given a fair shake ... but I think guile falls under neither group. It was a nice idea, but let it die and use javascript/lua/python/whatever ..
GNU/Linux (Score:3)
Re: (Score:2, Interesting)
Re: (Score:2)
That's not a sensible argument. There are lots of free software projects that have not delivered. There are lots of proprietary projects that haven't delivered either. The standard figure, I believe, is that around 60% of software projects which are paid for and delivered are never used. The fact that Gnu has produced some software that does not get used is hardly good evidence that, therefore, they are not capable.
Incidentally, if you think that RMS' aim is to engineer a completely working free software sy
Re: (Score:2)
Let's revisit this topic again in 8 years when Perl 6 has been wanking it for 20 years.
Re:People hate paren languanges (Score:4, Informative)
Re: (Score:3)
It's still a lot harder to read something like (plus 7 (minus 4 5) (some-function (* my-var 3))) than to read 7 + (4 - 5) + some_function(3 * my_var). It's also easier to read while(x 3) than it is to read the crazy Lisp syntax for do-loops, which appears to be a list of a variety of values, variables, conditions, all compacted into one statement, with no differentiation, syntactically, between the different arguments to the loop structure. Indentation and line breaks only help so much. Having actual sy
Re: (Score:2)
(plus 7 (minus 4 5) (some-function ( * my-var 3))) is more difficult to read for the same reason that typing in all caps without spaces is more difficult to read: we don't have a lot of practice at it.
That said, my go-to one-liner evaluation language is a lisp-like language without parentheses*, and while I'm getting pretty good at typing out expressions in a prefix notation, the line "/ + * 3 + * 5 2 * 4 4 + * 5 2 * 4 3 + * 6 3 5..." still isn't easier to really read than the equivalent infix version of: "
Re: (Score:2)
I much prefer actual RPN such as in the 'dc' command-line tool or Postscript.
Your example infix becomes something a lot like: 5 2 * 4 4 * + 3 * 5 2 * 4 3 * + + 6 3 * 5 + /
Re:People hate paren languanges (Score:5, Insightful)
It is only harder for you.
If you had 18 fingers, six on each of three hands, dividing by 3, 6 and 18 would be trivial for you.
As you have 10 fingers, five on each of two hands, dividing by 2, 5 and 10 is trivial for you.
It is not that dividing by 10 is any harder or easier than dividing by 18, but as an animal with 10 digits that evolved counting with those digits, you find a base 10 number system familiar and dividing by the base of that number system is easy for you.
Dividing by 10 is not just inherently easy, just easy for humans spending a lifetime working in decimal.
Reading LISP is hard for you because you have been trained in a different standard syntax common to most other programming languages. LISP was one of the first languages I learned and I find its syntax far more readable than that of "normal" languages.
(+ 1 2 3 4 5 6 7 8 9 10) is much more obvious to me than 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10.
I know I am adding, why do I need to show that operator 10 times when one operator will do?
</LISP RANT>
It's obvious to fourth graders. (Score:3)
Until recently (moved to a new city), I was a volunteer at my old elementary school. Their gifted and talented math program had been shut down due to budget cuts: the teachers tried to compensate by getting professional mathematicians in to talk to the kids who should've been in gifted math programs. My role was simple: get fourth graders involved in math.
Each year on our first day together I'd use the LISP notation. I'd ask them, "if I told you to add the numbers one to ten together and multiply the res
Re: (Score:2)
I once tried to use guile in the Gimp to do a few simple filters. Between the abysmal documentation and the clumsy syntax, I gave up in disgust after a couple of hours, and installed the Python Image Library instead. My sanity was saved.
GIMP doesn't use Guile. It currently uses an embedded fork of Tinyscheme, which is somewhere between R4RS and R5RS compliant, and somewhat not.
Some people like Scheme (it is well suited to represent order of graphics operations), and some hate it. That's why GIMP supports Python and C too for extending.
I guess that sums up what other apps can do. You don't have to stick with "an" extension language when you can support many.
Re:People hate paren languanges (Score:4, Insightful)
function Besides() { a(); few(); hardcore(); function geeks() {people(function hate(){shit(); that(looks()); like ((this();));})}}
I think that's harder to read.
Re: (Score:2)
Nobody writes JS like that.
Re: (Score:2)
And nobody writes Lisp based languages all on one line either.
Re: (Score:3)
you have the wrong form, your parenthesization is all wrong and you have two useless conjunction:
(Beside
(few (hardcore geek))
(hate people (look shit (like this)))
)
Re: (Score:3)
Yes, that's MUCH better /sarcasm.
Re: (Score:2)
Please excuse the misfiring of my single humour neuron, I try recruit more neurons into this network by exercising that part of my brain but to this day only my retarded cell enrolled.
Re:People hate paren languanges (Score:4, Funny)
I'm reminded of an old joke. In the former Soviet Union, an operative was talking to his boss. The boss asked the operative if they were able to learn anything from the intercepted transmission of U.S. missile control software. The operative informed him that they had only managed to capture the last two pages, and although they didn't know anything about the code, they knew what language it was written in. The boss asked him how he knew what language it was written in, whereupon the operative told him it was written in either LISP or Scheme, and then showed him the paper, which contained an entire page of:
)))))))))))))))))
Re: (Score:2)
Another issue was the complete lack of a useful standard library. No hash maps, no sorting function. Even the most basic string functions were
Re: (Score:3)
One thing I'll note is that MIT MACLisp had a functional compiler that compiled all the way down to machine code before most of Slashdot's readers were born. The original MIT Multics Emacs was written in MACLisp, I looked at the resulting ALM (Assembly Language Multics) from the compilation process for a few functions just to see how well it compiled, and it was pretty close to the output I saw from the PL/1 compiler, which had an excellent optimizer for that era. There's nothing inherent about Lisp that m
Re: (Score:2)
I actually think this is pretty natural. If I see (loop (print (eval (read)))) I see a loop. What does it do? It prints. What does it print? It prints the results of some evaluation. What does it evaluate? The stuff it reads.
As for creating something like that, you just go from right to the left, or, better, from inside out.
I need to read something: (read)
What do I do with it? Evaluate it: (eval (read))
What do I want to do with the result? Print it (print (eval (read)))
Finally, I insert it into a l
Re: (Score:2)
In their defense (and I am no fan of LISP like languages or of Guile) is that you could use Guile as a kind of common VM, with transcompilers to transform the syntax of Lua, JavaScript, Python, or whatever into Guile and be executed at runtime.
The problem is that never really happened in any kind of satisfactory way. There is a partial implementation of JavaScript, they are "working on" Lua; etc. None of the efforts have felt very satisfactory to date. And part of the reason is that a language is a lot m
Re: (Score:2)
Re: (Score:2)
Back in 1994/1995, I spent some time working at Swiss Bank Corp. in Chicago. They had some older trading-related systems running on Symbolics machines.
Re: (Score:2)
Scheme is taught in universities, for programming language design, and is used to prototype new languages amongst many other things ...
Loads of people write in Scheme/Lisp - It's just that they have been taught properly and so do not shout for help every 5 minutes on general forums ...
It makes a very good scripting language, and data language, and general purpose language, etc ... unlike most of the alternatives this is why it was picked as the GNU extension language (note not just scripting, a fully fledge
Re: (Score:2)
Examples include American Express' Authorization Assistant, Autodesk's AutoLISP for programming AutoCAD (my nemesis and love for many years), Gensym's G2 business rules engine, Marai (one of the rendering applications used for effects for Lord of the Rings), and the SPIKE scheduling system for satellites and telescopes.
Re: (Score:2)
Sun's eGate Integrator platform (a predecessor to JCAPS [wikimedia.org]) used a LISP derived language called Monk as a scripting language. Of course, it's been phased out in recent versions :P
Re: (Score:2)
Look, matey, I know a dead parrot when I see one, (Score:2)
PS. I started writing an extension script language as a Lisp library 28 years ago. But My boss told me that Fortran programmers would not write in Lisp. We where using 'C' on a VAX at the time. So I fired my Boss. (Ya, I got a new job) In the next year or so I saw Tcl at a UseNix convention, and that would have been better for the Fortran programmers. So I would pick Tcl over lisp at this
Re: (Score:2)
16 years? And people bitch about Parrot and Perl 6....
I've tried to look at Parrot to implement my own scripting language in it... every time I've set down to get it done, it's ended up being easier said than done...
Re: (Score:2)
The problem is that what the theorists argue is the better language (or other widget foo) has nothing to do with what the most usable widget or language is. Assembly, many would argue, is the best language because it lets you optimize things the best. But in reality it's a pain to use. TCL may be a great language in theory but its not popular because it's not easy to write code in it. I'm sure TCL is a better language with theory, and I've written a number of things in it. It made me very productive.
Re: (Score:2)
Also, tools are lang-- err, relig--, err... I got nuthin'.