Sixteen Years Later: GNU Still Needs An Extension Language
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.
It is, "Just another paradigm changer" (JAPC). These sorts of articles come out all the time (see the recent OPA article). Basically, this term is to be used when another invested developer harks a new or underused language that will change the way most developers code. The problem is, most ignore some big hurdles in adoption:
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).
while(1) attack(People.Sandy);
Emacs is a great development environment. It just lacks a good text editor.
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.
What do you know I wrote a novel
Why would anyone write it like that? You use line breaks and indentation to convey structure, just like you do when you write in any other language.
function Besides() { a(); few(); hardcore(); function geeks() {people(function hate(){shit(); that(looks()); like ((this();));})}}
I think that's harder to read.
Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
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...
"You can't make a race horse of a pig"
"No," said Samuel, "but you can make very fast pig"
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!
WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
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.
http://www.moonlight3d.eu/
CPython can't be sandboxed.
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.
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.
GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
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>
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:
)))))))))))))))))
Check out my sci-fi/humor trilogy at PatriotsBooks.