Slashdot Mirror


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.

425 comments

  1. Python ka-SLAM! Python ka-Pow! by Anonymous Coward · · Score: 0

    from the article:

    "Guile supports POSIX threads, with no global interpreter lock. "

    Ouch...

    1. Re:Python ka-SLAM! Python ka-Pow! by rubycodez · · Score: 1

      that's a silly argument against Python, a particular Python implementation can be made without global lock. Jython and IronPython don't have one.

  2. People hate paren languanges by Anonymous Coward · · Score: 1, Insightful

    (Besides a few hardcore geeks, (people (hate (shit that (looks) like ((this))))))

    1. Re:People hate paren languanges by mmcuh · · Score: 3, Informative

      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.

    2. Re:People hate paren languanges by nschubach · · Score: 3, Insightful

      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.
    3. Re:People hate paren languanges by rubycodez · · Score: 0, Troll

      do all that and it still looks like ass and is a PITA. I did LISP professionally for years. yes, it's the queen of the languages and can do everything and anything any other language can do, and it can compile to native code even when modifying the language itself......but I'm glad I can do the same jobs in easier to read and debug languages

    4. Re:People hate paren languanges by siride · · Score: 2

      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 syntax helps a lot more.

    5. Re:People hate paren languanges by JonySuede · · Score: 2

      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)))
      )

      --
      Jehovah be praised, Oracle was not selected
    6. Re:People hate paren languanges by Waffle+Iron · · Score: 0

      (even
          (when)
          (it looks (like this))
              (everyone (still)
              (hates (it))))))))))))))))))))))

      Seriously, who needs first class continuations and hygienic macros in an application script? IMO, the only thing that Lisp and its offspring are good for is implementing other languages. If the data and algorithms in your problem don't map directly onto a tree made of singly linked lists visited with recursion, Lisp's idiosyncrasies just get in the way of what you're trying to do.

      And all the powerful features that let you redefine language constructs make it like talking to a stoned hippie:
      "What do these one-off custom control structures actually do?"
      "Whatever you want them to do, man..."

      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.

    7. Re:People hate paren languanges by siride · · Score: 2

      Yes, that's MUCH better /sarcasm.

    8. Re:People hate paren languanges by siride · · Score: 1

      Nobody writes JS like that.

    9. Re:People hate paren languanges by Anonymous Coward · · Score: 0

      People hate trees? Hug a tree! It won't kill you, unless a parenthesized coconut drops in your head while performing the said hugging. That's deadly. I hate parenthesized coconuts.

    10. Re:People hate paren languanges by mukund · · Score: 1

      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.

      --
      Banu
    11. Re:People hate paren languanges by JonySuede · · Score: 1

      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.

      --
      Jehovah be praised, Oracle was not selected
    12. Re:People hate paren languanges by Paradigma11 · · Score: 1

      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)...

      especially if the lisp code is not a well formed expression.

    13. Re:People hate paren languanges by snowgirl · · Score: 1

      (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: "(3 * (5 * 2 + 4 * 4) + (5 * 2 + 4 * 3)) / (6 * 3 + 5)"

      *: How can a lisp-like language work without parentheses? It's a context-sensitive language that assumes a default number of arguments to functions, which can either be extended by using "," or truncated/terminated by using "."

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    14. Re:People hate paren languanges by coaxial · · Score: 1

      Besides a few hardcore geeks, no one bothers to even look at the code.

      And seriously. Like @#$%t78rRuby or $!^&$Perl is better.

    15. Re:People hate paren languanges by nschubach · · Score: 1

      And nobody writes Lisp based languages all on one line either.

      --
      Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
    16. Re:People hate paren languanges by MikeBabcock · · Score: 1

      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 + /

      --
      - Michael T. Babcock (Yes, I blog)
    17. Re:People hate paren languanges by Anonymous Coward · · Score: 0

      What's with the parenthesis on its own at the end? RMS will skin you alive for that, because it's "bad style" :)

    18. Re:People hate paren languanges by azgard · · Score: 1

      IMO, the only thing that Lisp and its offspring are good for is implementing other languages. If the data and algorithms in your problem don't map directly onto a tree made of singly linked lists visited with recursion, Lisp's idiosyncrasies just get in the way of what you're trying to do.

      Isn't that's precisely what you want from the scripting language, to be good at building DSLs? I think Lisp syntax helps in that excellently.

      I won't argue other points though. Maybe if Guile had as a good tutorial and cater to practicality and learning curve like Python does (Lisp hackers seem to prefer generality to practicality), there would be more people using it.

    19. Re:People hate paren languanges by dargaud · · Score: 1

      Yes. And you call that readable ?!? Infix, postfix and prefix languages are all equivalent (well, for 2 arguments only in the case of infix). Some are easier on the brain, that is all.

      --
      Non-Linux Penguins ?
    20. Re:People hate paren languanges by Aighearach · · Score: 1

      I've done gimp plugins in Perl and Ruby.

      Throwing a tool out so early in your usage that you didn't even collect the information about what extension choices are available? That''s not exactly a persuasive argument that you made a good choice. It's almost like talking to a drunk hippie-hater.

      You can have your Aelfinn scripting.

    21. Re:People hate paren languanges by Anonymous Coward · · Score: 1

      My lisp is way rusty, but I would have gone with something like:

      (map (lambda (x) (if (equal? x "hardcore_geek") '() (hate x (map (lambda (y) (islike this y) . shit))) . all_people)

      and then I would have fiddled with it until it worked. Yep, I sure do miss my some lisp coding. Yes indeedy,

    22. Re:People hate paren languanges by fahrbot-bot · · Score: 1

      Lisp's idiosyncrasies just get in the way of what you're trying to do.

      Um, LISP has almost no syntax idiosyncrasies - that's the point. I did AI and automatic-programming research in LISP on a Xerox 1108 (for NASA) - I also used Prolog - while an undergrad in college in the mid 1980s *and* was the grader for the under and graduate AI courses. The language is one of the most powerful there is. The simple syntax is one of the things that help make it so and actually helps the experience LISP coder - which it sounds like you're not.

      --
      It must have been something you assimilated. . . .
    23. Re:People hate paren languanges by Waffle+Iron · · Score: 1

      I have quite a bit of experience with LISP. I also did quite a bit of work with it during AI bubble of the 1980s. That's where my disdain for the language started. (More recently I've also done work in Scheme. It's an improvement over old-school LISP, but not by much.)

      During the AI craze, I quickly realized that the emperor had no clothes. In spite of all these professors hacking away with their elegant parentheses, I could see that their goals were never going to be possible because at the end of the day they were still trying to cram a brain's worth of pattern matching through a single 16-bit accumulator. There is nothing about LISP that fixes that fact, although all the self-referential bells and whistles of the language seemed to fool a lot of people into thinking otherwise. I dropped that field of study as fast as I could.

      As it turns out, I was exactly right, and the AI hoopla went precisely nowhere for 30 years. (My opinion on AI is open to change lately, but only because of the sheer brute force computational horsepower available today that's millions of times faster than the 1980s. If and when real AI progress is made, whether it gets coded in LISP - or more likely some GPU assembly language - won't be very relevant.)

      Um, LISP has almost no syntax idiosyncrasies - that's the point.

      That's not the point. The lack of character-level syntax just moves the quirks up to the next level. LISP has lots of syntax, it's just embedded in the abstract shape of the CONS node graphs. The biggest thing that achieves is making it almost impossible to use your brain's sophisticated visual processing hardware to help understand the code you're looking at. Everything has to be cerebral and oh-so-clever. Well, most people's minds just don't work that way. That's a big reason that LISP-derived languages make a poor choice for an application scripting language.

    24. Re:People hate paren languanges by Anonymous Coward · · Score: 0

      Sorry, but your parens are still wrong. Lisp coders don't count parens, they use editor to balance them

      This is correct:

      (Beside
              (few (hardcore geek))
              (hate people
                            (look shit (like this))))

    25. Re:People hate paren languanges by Darinbob · · Score: 1

      I like the paren languages, they're very easy to pick up and harder to get simple syntax errors with. It saves a lot of parser space as well which can be nice (not that guile is even remotely tiny), and it's easy to write tools to analyze it. There are much worse things out there (such as xml).

    26. Re:People hate paren languanges by Anonymous Coward · · Score: 0

      It's trivial to bolt on *any* syntax onto Scheme (or any Lisp for that matter) -- google "OMeta".
      Leverage OMeta and Scheme's hygienic macros and it's easy to give any Scheme runtime *any* syntax.
      The Dylan project created an infix syntax for all the paren/prefix haters.
      Scheme has concise and clear semantics that can be comprehended in an afternoon -- google "R6RS".
      There is an ANSI Scheme standard. There are highly-optimized, self-hosting Scheme compilers -- google "ikarus".
      Scheme has "eval" -- google "metacircular evaluator".

      DL;DR: Scheme is a fantastic language to write new languages in - don't let parens scare you.

    27. Re:People hate paren languanges by overlordofmu · · Score: 4, 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>

    28. Re:People hate paren languanges by Anonymous Coward · · Score: 0

      And google "Growing a Language" by Guy Steele.

    29. Re:People hate paren languanges by BitZtream · · Score: 1

      If you had 18 fingers, six on each of three hands, dividing by 3, 6 and 18 would be trivial for you.

      It is not that dividing by 10 is any harder or easier than dividing by 18

      Wrong.

      In a base 10 numbering system, 10 is easier to work with than 18. 5 and 2 are common denominators for 10, so again, easy shortcuts make it easy for us to work with them. Even numbers are easier than odd numbers in a base 2 system, performing an operation on any number and any power of 2.

      We use base 10 for obvious reasons that you stated, but because we use base 10 it makes certain numbers easier to work with mentally (just like certain numbers and operations on those numbers are easier for a CPU to deal with since they use base 2.

      I child born with a birth defect and one arm doesn't have a problem with base 10 numbering, our fingers and arms have nothing to do with it.

      (+ 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

      Learn the difference between implicit and explicit. Explicit is always more obvious in general, the only way the second one is not more obvious to you is if you never went to any school on planet earth and started learning math by writing LISP code, which I can safely assume isn't true, and must conclude you're lying to make the point, so your point is false.

      I know I am adding, why do I need to show that operator 10 times when one operator will do?

      Again, implicit versus explicit. Implicit requires assumptions, which are easy to fuck up.

      Do pluses hurt your eyes or something? What REALLY is the advantage to being less clear about your intentions? In the end, the code gets translated from the first to the second as the CPU doesn't work on assumptions, so the compiler has to convert it to the second anyway. So you just have some ugly syntax sugar thats different from anything else used on the planet, which again, is a point against it. Being different just because is retarded.

      The real point to my post however is, if you're arguing over which language has the better syntax, you've already got it wrong. Syntax is just about the least important aspect of a language, yet its the one that starts the most arguments on the Internet.

      If syntax matters to you, you're a shitty programmer.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    30. Re:People hate paren languanges by BitZtream · · Score: 1

      Um, LISP has almost no syntax idiosyncrasies - that's the point.

      Are you stoned? Can I have some?

      I don't care who or how loud they scream it, just saying it (or screaming it) does not make it even a little bit true.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    31. Re:People hate paren languanges by dgatwood · · Score: 3, Funny

      (Besides a few hardcore geeks, (people (hate (shit that (looks) like ((this))))))

      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.

    32. Re:People hate paren languanges by Anonymous Coward · · Score: 0

      then I would have fiddled with it until it worked. ... Yes indeedy,

      I see why you would have to fiddle some. ;)

    33. Re:People hate paren languanges by vux984 · · Score: 1

      If you had 18 fingers, six on each of three hands, dividing by 3, 6 and 18 would be trivial for you.

      You might think that, but you'd be wrong.

      Humans have 10 figures, 5 on each of two hands, and dividing by 5 is not trivial. Go ahead, take a pie and divide it into 5 pieces. Most people find that VERY annoying.

      In fact most would find it much EASIER to divide a pie into 6 pieces, because that's just 2x3, and dividing a pie in half is trivial, and then dividing each half into 3rds isn't too bad at all.

      Dividing by 10 is not just inherently easy, just easy for humans spending a lifetime working in decimal.

      No. Dividing by "10" is inherently easy in ANY base system. Naturally, what "10" means depends on the base. In decimal "10" is ten. In hexadecimal "10" is sixteen. Division by "10" is easy in any base because it simply involves moving the radix point. (or decimal point in base 10). Its not easy because we're used to it, its easy because its defined to be easy.

      (+ 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

      more obvious" really? equally obvious maybe, but not more obvious.

      And that's cherry picking. The lisp actually looks slightly more readable, while the infix version is only SLIGHTLY less readable. But I can cherry pick too:

      (expt 3 (+ (- (expt (* x 4) 2) (/ (- y 1) 3)) 5)

      vs

      3 ^ (4*x^2 - (y-1)/3 + 5)

      Here infix is more readable, and not "slightly" more, a whole lot more.

    34. Re:People hate paren languanges by MikeBabcock · · Score: 1

      Yes, the readable logic in rpn is much simpler I find. Push things on stack, then do things to stack. Its not unlike how we do math on some cash registers. Two items with 13% margin added:

      8.50
      1.13 multiply

      9.25
      1.13 multiply

      add

      --
      - Michael T. Babcock (Yes, I blog)
    35. Re:People hate paren languanges by osu-neko · · Score: 1

      more obvious" really? equally obvious maybe, but not more obvious.

      No, definitely much more obvious and readable. You're not entirely wrong about the rest of what you wrote, but you're way off base here.

      --
      "Convictions are more dangerous enemies of truth than lies."
    36. Re:People hate paren languanges by Anonymous Coward · · Score: 0

      (+ 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?

      Just FYI - that's only 9 + signs. Maybe that has something to do with your problem reading the longer notation. :^p

      This particular example you've given clearly favors the Lisp way of doing things. In reality, using typical code I've seen (coming from a SCHEME background here), the difference is not so night and day and IMO, the Lispy syntax is harder to read for most things.

    37. Re:People hate paren languanges by WorBlux · · Score: 1

      It's true. Everything is a linked list of which you have the car and cdr. The car is a pointer pointed at some data structure or at some procedure, the cdr points to either another list or is nil. There is absolutely no deviation from this scheme in scheme.

    38. Re:People hate paren languanges by larry+bagina · · Score: 1

      "1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10" is obvious to anyone with a 5th grade education. "(+ 1 2 3 4 5 6 7 8 9 10)" is obvious to anyone who took a college level lisp/scheme/functional programming class.

      Consider this:

      (+44 116 123 1234)

      Is that obviously 1517, or is it obviously a British phone number?

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    39. Re:People hate paren languanges by snowgirl · · Score: 1

      Yes. And you call that readable ?!? Infix, postfix and prefix languages are all equivalent (well, for 2 arguments only in the case of infix). Some are easier on the brain, that is all.

      The entire point of my post was that one particular form isn't actually universally easier on the brain... it is predominantly about what one has experience with as to what is easier on any individual's brain.

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    40. Re:People hate paren languanges by weicco · · Score: 1

      [1 .. 10].sum()

      Ha! :)

      --
      You don't know what you don't know.
    41. Re:People hate paren languanges by silentcoder · · Score: 1

      What most people don't realize is that LISP wasn't intended as a high level programming language. LISP was directly based on lambda calculus - a form of mathematics developed as part of the early developement of information theory.
      Lambda Calculus and Turing machines are directly based on and translatable between one another.

      How a computer actually FUNCTIONS (not at assembler/machine code level - what it DOES with those) is Turing Machine style stack running, and lambda calculus is at it's heart just a way of writing down what a turing machine does (or alternatively a turing machine is a realization f the mathematical steps involved in lambda calculus).
      It's a lot more complex than that but that's the essence of it. LISP is directly based on lambda calculus. What makes it so incredibly powerful is that it's the language that works the closest to what REALLY happens in the CPU (more closely in fact than pure machine code - counterintuitive as that may sound at first - machine code is the instructions but the structure of how they are execute is not apparent in the instructions, it IS apparent in LISP).

      Because of this LISP is incredibly powerful, particularly for things like AI - to get a computer to think more like a person, it helps if the programmer first thinks more like a computer (it helps a LOT), It's powerful for high level maths of all kinds really -because it's directly based on a way of writing high level maths down, a form of arithmetic really originally developed to try and be more secure against false positive proofs.

      At the same time -that's it's biggest flaw. The vast majority of application programming is not extremely high level mathematics, even in mathematics programs 90% of the code is not mathematics, it's primarily input and user interaction that makes up the bulk of our programs. LISP is terrible at such things.

      Why ? Because lisp makes you do those things by thinking of how the CPU will achieve the process, while true high-level languages let you think of it like a human, in terms of the kind of instructions you'd write in a recipe book.

      Both ways can do both jobs - but they aren't equally easy. You could write a recipe book entirely in algebra, you could make it much shorter if you translated the algebra into lambda calculus - provided every ingredient in the kitchen had a number printed on it instead of a name... but nobody would like to cook dinner. On the other hand, a robot would make an awesome potroast with that.

      --
      Unicode killed the ASCII-art *
  3. Lua? by batrick · · Score: 2

    Why isn't Lua considered? Everytime I see Guile brought up as a possible extension language, the project in question always settles on Lua or Python. (Python being the poorer choice because it is not designed to be an extension (scripting) language.)

    1. Re:Lua? by fusiongyro · · Score: 1

      Guile is working on Lua support.

    2. Re:Lua? by jockm · · Score: 3, 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.

      --

      What do you know I wrote a novel
    3. Re:Lua? by GuldKalle · · Score: 2

      (Not trying to flame or confront, just curious)
      What about Python makes it unsuitable as an extension language?

      --
      What?
    4. Re:Lua? by SerpentMage · · Score: 4, 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...

      --

      "You can't make a race horse of a pig"
      "No," said Samuel, "but you can make very fast pig"
    5. Re:Lua? by TypoNAM · · Score: 1

      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. Because batrick on Slashdot said it wasn't designed for that...

      --
      This space is not for rent.
    6. Re:Lua? by Windwraith · · Score: 2

      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.

    7. Re:Lua? by firewrought · · Score: 1

      What about Python makes it unsuitable as an extension language?

      He said that it was less suitable than Lua, not that it was unsuitable. His reasoning was that Lua is purpose-built to be embedded whereas Python isn't. Since both languages seem to be proven real-world choices, I suspect the technical tradeoffs are less unilateral than the grandparent post implies, but it's easy to Google up a comparative list (like this one) and make your own decision. (Though I suspect this tendency to compare and analyze to be a bit deceptive... if you know one language well already, go with it and get something done already.)

      --
      -1, Too Many Layers Of Abstraction
    8. Re:Lua? by mmcuh · · Score: 2

      Last time I looked at the C API for Python it was beyond horrible. Boost.Python improves on it quite a bit, but it still not anywhere near "nice".

    9. Re:Lua? by gmueckl · · Score: 3, 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.

      --
      http://www.moonlight3d.eu/
    10. Re:Lua? by Anonymous Coward · · Score: 0

      Nobody said Python is unsuitable as an extension language, but if you need an extension language you may as well go with the language that was designed specifically as an extension language. There's plenty of projects that successfully use Python, so it's not like it's impossible or even especially difficult. But if you use Lua 90% of the work is already done for you, and since it's what everyone uses Lua for there's countless resources online for doing the remaining 10%.

    11. Re:Lua? by impaledsunset · · Score: 3, Informative

      CPython can't be sandboxed.

    12. Re:Lua? by Aighearach · · Score: 1

      It makes extreme choices that not everybody is comfortable making.

      Some of us gave up giving structural meaning to indentation with COBOL, and would never go back to that.

      This whole idea that there has to be One True Extension Language is absurd. Something like python, of course it is unacceptable to many. That is already known. Some people are allergic to sigils even. Or parens in certain circumstances.

      The tools I use tend to support dozens of extension languages. Why is that? Because they have C libs, and I can have bindings for them in nearly any language!

      So I guess we already have an extension language. C. Even if it is rarely used directly in that role.

    13. Re:Lua? by batrick · · Score: 2

      I just lost everything I was writing because Slashdot discarded my post when changing to plain text. I'm not going to hunt down references again. Google yourself.

      Here's the rundown:

      [I'm talking about the difficult in embedding Python in an application (extending the application. This is the usual domain of a scripting language.]

      1) Python is huge. It is improper for small devices like FPGAs. Python weighs in at multiple megabytes.
      2) Python is very difficult to sandbox.
      3) It is difficult to have multiple independent Python instances running concurrently (GIL).
      4) It is difficult to have multiple contexts. Python lacks proper coroutines.
      5) Python is built with the extend rather than embed mindset e.g. [1].
      6) Python is whitespace sensitive. It is unnecessarily difficult to write small embedded scripts or macros for your application (see WoW).
      7) Python libraries make it difficult to embed in e.g. an ANSI C only environment.

      [1] http://www.twistedmatrix.com/users/glyph/rant/extendit.html

    14. Re:Lua? by batrick · · Score: 1

      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. Because batrick on Slashdot said it wasn't designed for that...

      If you go back to the history of Python you'll see that it wasn't originally designed with embedding in mind. As a consequence, many of its features and choices make it very difficult to do [1]. Keep drinking the Koolaid. If you hammer on a screw enough times, it will eventually sink into the wood.

      [1] http://developers.slashdot.org/comments.pl?sid=2406518&cid=37267170

    15. Re:Lua? by vashfish · · Score: 1

      "not designed to be" is not the same as "incapable of being"

    16. Re:Lua? by Anonymous Coward · · Score: 0

      Yes it can. There are several rather obvious examples of this in widespread use in the real world...

    17. Re:Lua? by Anonymous Coward · · Score: 0

      The Lua developers drew heavily from Scheme. Guile implements Scheme. Lua is in a small way a vindication of Guile.

      I, too, think Lua would be a perfect fit. But don't knock the GNU folks as anachronistic. Their ability to stand by projects and keep them humming along fad-after-fad is priceless. The GNU folks do a better job of it then most businesses, so anyone who says GNU is not business friendly is kidding themselves.
      If you chose Guile 18 years years ago you did well. Netscape chose Javascript server-side and look where that went.

    18. Re:Lua? by Darinbob · · Score: 1

      The problem with Guile is that it's from the GNU people. Just like with Hurd there's this desire to do things perfectly in the first release. Committees also don't tend to be able to create good products. It gets too full of features, too many people arguing about what it should be, and it gets pushed to become the "one true ". So it never gets done or it's too bulky and cumbersome. A good extension language should be tiny, and Guile is the opposite of that.

      The stuff that succeeds may not be the most elegant but they succeed because they get stuff done instead of bickering over the right way to get stuff done. Thus Perl succeeds. Few people look at Perl and think it's a marvel of a sophisticated language but it gets the job done and gets it done very effectively and is flexible enough to succeed at so many scripting tasks from big monstrosities to tiny one liners. Or Lua that starts off simple and gets revised over time, a language that is extremely simple conceptually.

      If GNU wanted a scheme-like embeddable extension language, then it should have stuck with Scheme.

    19. Re:Lua? by Darinbob · · Score: 1

      This makes no sense. Guile is supposed to be a language, not a language to write other languages in. If you want Lua, then use Lua and save yourself a lot of disk space.

    20. Re:Lua? by Rich · · Score: 1

      Really? I've worked with the bindings perl, python and Java, and also worked on bindings to a couple of different javascript interpreters. The python one was by far the best documented. There are a bunch of tools around like swig that will give the same effect for C code for perl and python (or simple C++ code). For more complex C++ sip does a decent job for python, but doesn't support other languages.

      I guess I'm wondering what the criteria you're using to make this statement are?

    21. Re:Lua? by shutdown+-p+now · · Score: 1

      If you chose Guile 18 years years ago you did well.

      You have exactly one user who knows what that is and how to use it, same today as it was 18 years ago?

      Netscape chose Javascript server-side and look where that went.

      Node.js?

    22. Re:Lua? by aztracker1 · · Score: 1

      I thought Hurd was released this year...

      --
      Michael J. Ryan - tracker1.info
    23. Re:Lua? by Anonymous Coward · · Score: 0

      Python works perfectly fine as an embedded language. The APIs may not be as convenient as Lua or Guile, but they hardly matter if you use SWIG to generate bindings.

    24. Re:Lua? by Anonymous Coward · · Score: 0

      SWIG... seriously, there are better things to do in life then writing wrapper code for your C-functions. I have used SWIG for python quite a lot in order to embed a python interpreter in my project. Works very well.

    25. Re:Lua? by osu-neko · · Score: 1

      "not designed to be" is not the same as "incapable of being"

      True, but an example of being deliberately obtuse, since it's well understood that things that aren't designed for some use, while often capable of being used that way anyhow, are usually not nearly as good for that use as something that was.

      --
      "Convictions are more dangerous enemies of truth than lies."
    26. Re:Lua? by LWATCDR · · Score: 1

      Because Stallman is from MIT. MIT was a hot bed of LISP back when LISP was the end all and be all. People don't remember but LISP was one of the first buzz words. It was in the same category as Object Oriented, Agents, and XML. It was going to solve all our problems. The language even influenced hardware development several companies made 36-bit machines because they worked so well with LISP and some even made LISP machines.

      It is funny but looking back I am sure that there where people that that dreamed that the perfect world would just be around the corner if all large systems where written in LISP and all small system where written in Forth.

      --
      See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    27. Re:Lua? by osu-neko · · Score: 1

      If GNU wanted a scheme-like embeddable extension language, then it should have stuck with Scheme.

      They did. Because they named their compiler Guile, you were under the mistaken impression the language it compiled wasn't Scheme? It's R5RS, in fact, although not complete R6RS yet...

      --
      "Convictions are more dangerous enemies of truth than lies."
    28. Re:Lua? by Anonymous Coward · · Score: 0

      The mere fact that something is old is not, in and of itself, an argument for or against it. Some old ideas are still the best ones, and some new ideas are crap. Perhaps you could give an actual, technical argument engaging some of the reasons Wingo gave in his article, instead of sounding like a teenager complaining old people.

    29. Re:Lua? by vashfish · · Score: 1

      Just to be clear, you are confirming my point, not contradicting it. The post I was replying to was being obtuse in the way you are describing.

    30. Re:Lua? by BagOBones · · Score: 1

      Lua seems to be the go too language for scripting in many commercial projects these days... I have ran into it several times.

      Cisco ASA Endpoint assessment system uses it
      World of War Craft uses it for its UI extensions
      The Unreal Engine uses it for Scripting

      There are others, but those jump out at me from recent memory...

      --
      EA David Gardner -"... but the consumers have proven that actually what they want is fun."
    31. Re:Lua? by Anonymous Coward · · Score: 0

      http://people.debian.org/~sthibault/hurd-i386/installer/cdimage/

      Wait's over. That's a Debian GNU/Hurd distribution, and there's already over a thousand available packages for it in Wheezy.

    32. Re:Lua? by Unknown+Lamer · · Score: 1

      Here is an idea instead of adding Lua support, I don't know, USE LUA... Wow what a concept!

      Julien Danjou (of awesome fame, a high profile Lua using application), explains it fairly well. Basically, the Lua API is a huge pain to use and contorts the program around it making anything but the most trivial uses nearly impossible.

      Lua and a language and basic extension library, however, is eminently usable by non-programmers. This makes it a fairly small task to implement the user facing parts of Lua. This was actually mostly done during GSoC 2010, but like most GSoC projects the student kind of trailed off once he passed the final evaluation and hasn't made too much effort at merging it into master. There was, however, chatter on the Guile IRC channel today about finally getting around to doing that (there is finite maintainer time and everyone has a day job and whatnot).

      --

      HAL 7000, fewer features than the HAL 9000, but just as homicidal!
    33. Re:Lua? by Greyfox · · Score: 1

      Python uses white space to denote loop level. Just typing that makes me want to punch a python developer in the face.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    34. Re:Lua? by silentcoder · · Score: 1

      THIS !
      It's worth noting that one of the most prolific and active extension communities out there are the WoW addon developers - wow uses LUA for addons and indeed, as the core in-game scripting language that handles virtually all interaction between the client and the server.
      Everything you can click, every action you can take is implemented by your client effectively sending the server instructions in LUA, this is why LUA is the language for addons.
      Nobody can deny thhat WoW is one of the most successful examples of high-availibility extremely redundant massive-user supporting systems out there and using a powerful language like LUA as the core of the client is a big part of how it manages that. It let's WoW outsource a massive degree of it's gigantic processing needs to the paying customers making it (in a slightly twisted version of it) one of the most successful examples of distributed computing in the world.

      Lua is a thing of beauty, provided you don't have to be the one to debug it :P
      On the other hand, if I go to programmers hell, I hope I have been good enough to only go to the third circle where you spend eternity debugging badly commented lua scripts. The fourth circle is mixtures of objective C, C and C++ into single large applications running with java based eventing subsystems, the fifth is debugging perl, the sixth circle is debugging COBOL.
      The seventh and final circle is manning a helpdesk phone for microsoft.

      PS. IBM Assembler would only be the second circle, it's actually not that hard...

      --
      Unicode killed the ASCII-art *
    35. Re:Lua? by smellotron · · Score: 1

      Python uses white space to denote loop level. Just typing that makes me want to punch a python developer in the face.

      Risking a religious argument, I have to ask: how frequently does this cause real problems for you? Developers who don't know how to use their editors properly or don't care to follow existing convention don't count—that's a PEBKAC.

    36. Re:Lua? by Greyfox · · Score: 1
      You know, I was actually willing to give Python the benefit of the doubt, and I gave it a try. About an hour into playing with the language and thinking "Oh this isn't too bad," I did something in my editor that reformatted 15 lines of code to the same loop level. It was at that point that I just closed up the editor, deleted what I was doing and swore to never use the language again. I could have figured out which of those lines to re-indent. I just didn't see why I should have to.

      It's not a problem for me now because when I need a scripting language, I reach for Ruby or Groovy. They have sensible tokens that help my editor figure where loops and blocks start and end. So to answer your question, it never causes real problems for me, and it never will. Because subjecting myself to arbitrary bullshit just because someone else thinks he knows how I should do my job better than I do would really be PEBKAC.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    37. Re:Lua? by badkarmadayaccount · · Score: 1

      I'm 17 and I also dream of that world.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
  4. Lisp? by Hatta · · Score: 1

    Why not?

    --
    Give me Classic Slashdot or give me death!
    1. Re:Lisp? by royallthefourth · · Score: 2

      Because Scheme is already a Lisp.

    2. Re:Lisp? by Hatta · · Score: 1

      Oh, I didn't know that. Is it very different from emacs lisp? It would make sense to stick with one extension language.

      --
      Give me Classic Slashdot or give me death!
    3. Re:Lisp? by Creepy · · Score: 1

      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))))).

    4. Re:Lisp? by cpghost · · Score: 2

      As an extension language, something like ANSI Common Lisp would have been an extremely bloated language. As a general purpose language, it is fine though. On the other hand, Scheme is lightweight enough to be linked as a library to any application, even running in the most constrained environment.

      --
      cpghost at Cordula's Web.
    5. Re:Lisp? by Anonymous Coward · · Score: 2, Funny

      Unlambda would a better choice in my opinion, it has all the features and none of the cumbersome syntax.
      Lisp is but a remnant of an age with far too much LSD and Napalm.

    6. Re:Lisp? by rpresser · · Score: 1

      LISP: Lost In Stupid Parentheses

    7. Re:Lisp? by Anonymous Coward · · Score: 0

      Scheme remains rather different from Emacs Lisp. Of the extant widely-used Lisp dialects, Emacs Lisp is generally fairly similar to Common Lisp, though more primitive in various ways, currently without a proper numeric tower, without Common Lisp "packages", but with various special objects oriented towards text editing (such as buffer and font face objects) that common lisp of course doesn't have as part of its official specification (but a common lisp text editor might have). Just recently, Emacs Lisp got lexical scoping a lot like Common Lisp's, suddenly making it a lot more "modern". A lot Scheme vs. Common Lisp comparison points apply similarly to Scheme vs. Emacs Lisp.

    8. Re:Lisp? by JonySuede · · Score: 1

      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.

      --
      Jehovah be praised, Oracle was not selected
    9. Re:Lisp? by Anonymous Coward · · Score: 0

      âoeEverything should be made as simple as possible, but no simpler.â

      A decent module system definitively won't be luxury
      http://www.phyast.pitt.edu/~micheles/scheme/module-system-talk/

    10. Re:Lisp? by Anonymous Coward · · Score: 1

      why they don't just say "[...] Emacs Lisp is the GNU extension language."

      Emacs Lisp the language is quite full of crazy legacy baggage. Emacs Lisp or more precisely the Emacs virtual machine it runs on was never particularly designed to be easily linked into larger applications, unlike Guile/Lua/TCL/etc.

      Ripping out the Emacs bytecode virtual machine core from Emacs and replacing it with the Guile core is still a long term plan for Emacs AFAIK. But it is not exactly something you can do between tea breaks. That doesn't mean emacs lisp being replaced by scheme in emacs at the same time, there are millions of lines of emacs lisp code in the wild, it's more about developing an emacs lisp "personality" for Guile - work that is being done - then integrating the guile vm into emacs instead of the existing vm.

      Guile specification.

      Guile isn't a specification.

      http://www.gnu.org/s/guile/ ... Guile is an efficient virtual machine that executes a portable instruction set generated by its optimizing compiler, and integrates very easily with C and C++ application code. In addition to Scheme, Guile includes compiler front-ends for ECMAScript and Emacs Lisp (support for Lua is underway), which means your application can be extended in the language (or languages) most appropriate for your user base.

    11. Re:Lisp? by snowgirl · · Score: 3, 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!

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    12. Re:Lisp? by snowgirl · · Score: 1

      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.

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    13. Re:Lisp? by Anonymous Coward · · Score: 0

      Emacs Lisp is ancient and quite frankly SHOULD be replaced by a better Lisp.
      Guile fits the bill nicely,

    14. Re:Lisp? by gtall · · Score: 1

      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.

    15. Re:Lisp? by Anonymous Coward · · Score: 0

      Common Lisp is lexically scoped. Some of the earliest Lisps were dynamically scoped, but the only dynamically-scoped Lisp variant you're likely to encounter nowadays is Emacs Lisp.

    16. Re:Lisp? by Anonymous Coward · · Score: 0

      Emacs Lisp is not lexical, too many "dynamic binding"-type semantics and Emacs-specific constructs. Emacs Lisp has a very old history. Scheme, OTOH, is smaller, simpler and more established. Scheme addresses a lot of the problems associated with early Lisps.

      There was a project to move Emacs from Emacs Lisp to Scheme. Someone was working on a source-to-source translator, which would have allowed Emacs to use Guile Scheme as it's extension language.

    17. Re:Lisp? by Anonymous Coward · · Score: 0

      Yes, because Lisp code isn't broken out over multiple lines and indented, unlike every other language. And because parens are so much more prominent than curly braces, semicolons and parens all over the place in the C family of languages.

      I really wish people would stop making moronic comments about Lisp parens, unless you happen to be a python developer.

    18. Re:Lisp? by lennier · · Score: 1

      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.

      Or too old, but have been frozen in a cryogenic sleep capsule since 1959...

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
    19. Re:Lisp? by gknoy · · Score: 1

      Because Greenspun's Tenth Rule was meant to be a warning, rather than a threat? :D

      Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp

    20. Re:Lisp? by b4dc0d3r · · Score: 1

      "LilyPond is mostly written in C++ and uses Scheme (interpreted by GNU Guile) as its extension language."

      I like lilypond, but I really hate using it. I *really* hate making output that lilypond likes, because it involves Scheme, or Guile, or something, I don't know really. I'd like to, but I've been learning it for 3 years or so, and it still doesn't make sense.

      Scheme, Lisp, Guile, wtf, I don't care, give me a format and I'm in. Give me a new language and I'm confused. Do I still like girls? I used to, has that changed?

    21. Re:Lisp? by chthon · · Score: 1

      Common Lisp is by default statically scoped, but it supports dynamic scoping.

    22. Re:Lisp? by Anonymous Coward · · Score: 0

      Get over it. After a while you don't even see the parens anymore.

    23. Re:Lisp? by emt377 · · Score: 1

      Oh, I didn't know that. Is it very different from emacs lisp? It would make sense to stick with one extension language.

      Elisp isn't an extension language for emacs - it's the implementation language. Lisp, in particular, is problematic as an extension language since it expects an interpreter with the top loop implemented in lisp, as well as a large global context. It's not something where you just load a small file and execute it, say an MTA mail filter, from within the context of a different program. You do it from within the global interpreter context. The state changes to the interpreter are then permanent. A lisp (or scheme) interpreter is far too expensive to instantiate as needed, say to filter each mail message. An MTA that effectively uses Guile to run all sort of extensions and plugin modules would by necessity have to be more or less implemented in Guile itself. That makes it an implementation language, not an extension language.

    24. Re:Lisp? by Anonymous Coward · · Score: 0

      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))))).

      Subset, no. Dialect, yes.

      And if the parens are bothering you, you're doing it wrong.

      Same with "format requirements". There are what I guess you could call community standards, so like any other language, reading idiomatic lisp code will help you write better code.

    25. Re:Lisp? by Anonymous Coward · · Score: 0

      Emacs lisp now has optional lexical scoping, similar semantics to common lisp.

      http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00043.html

  5. And after 30 years by the_humeister · · Score: 0

    they still need a kernel.

    1. Re:And after 30 years by WorBlux · · Score: 1

      They have a kernel. There's still a lot of work to be done on the userspace servers. (But so far not any worse than any other micro kernel really) You can get X up and running.

  6. Usage predicts lifespan by G3ckoG33k · · Score: 2

    "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.

    1. Re:Usage predicts lifespan by batrick · · Score: 2

      So is brainfuck.

    2. Re:Usage predicts lifespan by Anonymous Coward · · Score: 0

      More to the point, if the W3C had selected Tcl instead of Javascript, Tcl would be very much alive now and for the next 20 years at least.

      Meanwhile, they have Guile which is both dead & unpopular.

      GNU, swallow your pride and use Javascript. It may not be beautiful, but it works.

    3. Re:Usage predicts lifespan by Berfert · · Score: 1

      If GNU had chosen Tcl because it was popular, we would have a mass of dead code'

      Instead, they decided to build their own dead language. That's a solid plan. That being said, Tcl isn't dead and it's actually a fantastic scripting language to add to other programs. It's actually pretty solid as a full development language, too. It has it's warts, but so does every language.

    4. Re:Usage predicts lifespan by belmolis · · Score: 1

      Indeed. Tcl is still actively developed and is, and has been for quite a few years, a much better language than it was when RMS discussed this issue. The associated Tk windowing/graphics library is so good that a number of other languages, including Perl and Python, adopted it as their primary library. There are a large set of libraries and extensions for Tcl, including several that make it object-oriented. The Tcl community is very helpful. Tcl is actually used a good deal more than people realize because it is heavily used in internal industrial work such as automating testing, and in tools such as Expect that people do not always realize are in Tcl. That said, Lua would also be a good choice. It has a very clean design, a good set of libraries, and a very clear-headed and innovative designer, Roberto Ierusalimschy, who also writes very well.

    5. Re:Usage predicts lifespan by snowgirl · · Score: 1

      So is brainfuck.

      So is nand.

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    6. Re:Usage predicts lifespan by Sockatume · · Score: 1

      Maybe the GNU project should be called "Linux/GNU".

      --
      No kidding!!! What do you say at this point?
    7. Re:Usage predicts lifespan by stevew · · Score: 1

      I have bad news for you all -

      TCL IS VERY MUCH ALIVE and being put to use daily in it's original intended Market! It is in use through-out the EDA industry. If you look at it's history - this is what it was intended for! All of the major Electronic Design Aid Tools in the Chip design business use TCL as their under-lying scripting language.

      GNU = BS

      --
      Have you compiled your kernel today??
    8. Re:Usage predicts lifespan by smallfries · · Score: 1

      Universal sets of gates and complete languages have little in common with one another.

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    9. Re:Usage predicts lifespan by Kohath · · Score: 0

      Because Tcl wasn't chosen, GNU spent 16 years with no scripting language. The future for GNU is probably many more years without a scripting language.

      Instead of wishing for a perfect scripting language, rejecting all the imperfect ones, and going without a scripting language for another couple decades, why not choose one that people use, be productive with it, and try to evolve the language and fix the problems over time?

      Tcl or Python are good choices Also probably Lua and a few others I don't have personal experience with. JavaScript is probably an acceptable choice. A lisp-like language is a way to empower a few people and dis-empower the majority.

      I can write code in any of them. But it doesn't matter for GNU stuff because none of them were deemed perfect enough for GNU.

    10. Re:Usage predicts lifespan by Anonymous Coward · · Score: 0

      Tcl is not dead. Not even close. The Electronic Design Automation (EDA) world continues to use it heavily. I would venture to say that it is probably used more by hardware engineers than by software engineers though.

    11. Re:Usage predicts lifespan by Aighearach · · Score: 1

      Tk is _not_ any sort of Primary Library. It is adopted as the library that is always there. It is small, many systems already have Tk libs installed, it is available anywhere you have a bitmapped brick, and it is very feature-stable.

      I love having Tk in the Ruby stdlib. But that doesn't mean anybody turns to it as some kind of first choice.

      I've spend a lot of time in the nooks and crannies of Tk. It is a great prototyping lib. It can do easy stuff quickly, and advanced stuff... eventually.

      Tcl is not dead because it has some people that use it. To the broader community, though, it is dead and abandoned. Yes, people are still working on it. Those people didn't abandon it. But most people did.

      (I don't expect gets a lot of use these days.)

    12. Re:Usage predicts lifespan by Aighearach · · Score: 1

      If you have to scream like that that it is alive, it might be dead.

      One of the wonderful things about free software, you can keep using it after others have written it off as dead or useless. And you still using it doesn't interfere with their moving on, and their moving on really shouldn't cause you to freak out.

      (and uhm... the EDA stuff... I'm sure it's what you use it for every day, but... no. Other people do in fact often use other things.)

      BS = You

    13. Re:Usage predicts lifespan by DrVxD · · Score: 1

      So is brainfuck.

      Which is still a better option than VBA...

      --
      Not everything that can be measured matters; Not everything that matters can be measured.
    14. Re:Usage predicts lifespan by osu-neko · · Score: 1

      One of the wonderful things about free software, you can keep using it after others have written it off as dead or useless. And you still using it doesn't interfere with their moving on, and their moving on really shouldn't cause you to freak out.

      No, but it does prove them to be dead wrong. As long as anyone is still using it, it ain't dead yet.

      --
      "Convictions are more dangerous enemies of truth than lies."
    15. Re:Usage predicts lifespan by Sockatume · · Score: 1

      I appear to have totally missed the intended parent for that reply, I'm sorry.

      --
      No kidding!!! What do you say at this point?
    16. Re:Usage predicts lifespan by Lord_Naikon · · Score: 1

      To be fair I'd rather implement a brainfuck interpreter in VBA than the other way around :-)

    17. Re:Usage predicts lifespan by belmolis · · Score: 1

      I think it depends on what you mean by "primary". For several languages Tk was the first windowing/graphics library that saw wide use, even now quite a bit later other libraries have become favorites. Tcl was never really all that popular in the broader community, but I do think that use is underestimated because so much of it is in internal industrial and scientific contexts rather than in open-source or commercial software.

    18. Re:Usage predicts lifespan by snowgirl · · Score: 1

      Universal sets of gates and complete languages have little in common with one another.

      Yes, nand needs some flow control to be useful as a fully functional language.

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    19. Re:Usage predicts lifespan by phantomfive · · Score: 1

      TCL is commonly used in automation. It's one of my favorite scripting languages.

      --
      "First they came for the slanderers and i said nothing."
    20. Re:Usage predicts lifespan by Anonymous Coward · · Score: 0

      In fact Tcl is still very much alive, and actively developed - http://tcl.tk/

    21. Re:Usage predicts lifespan by Anonymous Coward · · Score: 0

      It has it's warts

      "its".

    22. Re:Usage predicts lifespan by Anonymous Coward · · Score: 0

      in it's original
      look at it's history

      "its".

    23. Re:Usage predicts lifespan by smallfries · · Score: 1

      It might seem like a petty distinction, but it is quite important: anything built out of nand gates is a circuit, never a program. Thus nand gates cannot describe a language, only a circuit that implements something that processes the language. The difference only becomes visible when you look at large (ie Turing Complete) languages as they are too large (infinite) to be implemented on a finite size circuit, although we use approximations of them all the time. Only on slashdot would you be nitpicked for conflating the two :)

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    24. Re:Usage predicts lifespan by snowgirl · · Score: 1

      It might seem like a petty distinction, but it is quite important: anything built out of nand gates is a circuit, never a program. Thus nand gates cannot describe a language, only a circuit that implements something that processes the language. The difference only becomes visible when you look at large (ie Turing Complete) languages as they are too large (infinite) to be implemented on a finite size circuit, although we use approximations of them all the time. Only on slashdot would you be nitpicked for conflating the two :)

      I find it telling that you're so eager to nitpick, that you entirely miss the point that I am speaking about the abstract concept of the logical relationship "A nand B", and not circuitry... because--you know--a language can exist without circuitry... you know, by building it off of theoretical concepts describing relationships... which we in the compiler business term "operators".

      When I spoke of "nand is Turing Complete" it was shorthand for "nand is sufficient for operator completeness w.r.t. Turing Completeness". As Turing Completeness is composed of two parts: operators and flow-control. So, your claim that such elements "have little in common with one another", is like claiming that a banana peel has little in common with a banana. In fact, one is simply properly a subset of the other.

      "But I was talking about circuits, and a universal set of circuits is different from Turing Completeness". Why yes, indeed it is, but you're forgetting again: I wasn't talking about circuits. I was talking about these concepts which we classify as "operators". You're the one who seems to be misinterpreting my statements in order to draw circuits into the matter... I can wonder why, but the only reason I can particularly come up with is: you're not used to the concept of "nand" as being anything other than a circuit.

      Only on slashdot would someone entirely miss the abstract concept of "nand" for the concrete example of circuitry, and proceed to nitpick that misinterpretation beyond the actual content of my post...

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    25. Re:Usage predicts lifespan by smallfries · · Score: 1

      I'm afraid that I wouldn't know much about the compiler business that you are in, I only design them and publish papers on them. The business of them would be far too complex for me. Nice response btw, very unexpected and entertaining for slashdot. But sadly almost everything has a concrete definition if you look deep enough, which is the most general reason for my nitpicking (yes, yes, you clearly know what you are talking about, I wouldn't suggest otherwise). Operators are the fundamental definition of gates, so many methods of composing operators will only produce circuits - in particular if the connection graph is static then what you produce will be within the set of circuits. You need something more than flow-control to define a TC language: you need state. The standard test of TC is the ability to write a TM simulation within the language. This requires sufficiently strong logic operations (such as nand), some form of flow control and some form of storage.

      I would argue that just the operator without any of the machinery to operate it has little in common with the final product. But even confusing an operator that is complete over the set of all operators with a language that can simulate any other language is too large a nit for my tastes. Obviously I can accept that things are different in the compiler business...

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    26. Re:Usage predicts lifespan by silentcoder · · Score: 1

      Your post proved the disclaimer in your sig correct. I wholeheartedly approve.

      --
      Unicode killed the ASCII-art *
    27. Re:Usage predicts lifespan by silentcoder · · Score: 1

      By that logic... COBOL is alive and well too.

      --
      Unicode killed the ASCII-art *
    28. Re:Usage predicts lifespan by dkf · · Score: 1

      "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.

      Tcl's still alive, still in much production use, and still doing releases. It's just run by a bunch of people (myself included) who are crap at doing marketing; we'd rather write code.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    29. Re:Usage predicts lifespan by snowgirl · · Score: 1

      Operators are the fundamental definition of gates, so many methods of composing operators will only produce circuits

      Funny, the gcc compiler for SPARC produces a loop (rolled or unrolled) for "a * b"... but that would seem to contradict your assertion that operators are the fundamental definition of gates... But then, even on the x86 the DIV opcode works as a circuit-based loop, rather than just simply a gate. But then as well, if circuits can loop themselves, then they could implement a Turing Machine, and then your whole argument that "circuits aren't Turing Machines" kind of fails... (except for the trivial "it's not infinite" case... after all, let us presume such a circuit with infinite precision, and infinite memory... voila, a true Turing-Equivalent Machine.)

      Odd that you would write compilers, and write papers about them without being aware of these glaring counterexamples to your argument... but then no one has ever asserted that just because someone works in a field, that they must then be a genius at it.

      The standard test of TC is the ability to write a TM simulation within the language. This requires sufficiently strong logic operations (such as nand), some form of flow control and some form of storage.

      The requirement of "storage" completely slipped my mind, I suppose in the same way that I don't usually consider "words" to be a requirement for human speech. Getting anything done without storage at all is almost impossible, not to mention, storage usually is introduced to a language before even flow control, as it is typically easier to implement.

      But then, I do suppose there are number of "calculator languages" that are not Turing complete, as they don't have storage... but then they also usually lack flow control as well, so lacking "storage" is typically the least of their problems... not to mention that I would conjecture that given sufficient amounts of flow control, I could fake variable storage with program state... (we are talking about an infinite Turing Machine here after all...)

      But even confusing an operator that is complete over the set of all operators with a language that can simulate any other language is too large a nit for my tastes.

      Which I suppose begs the question, do you get upset at all commonly abused, yet nevertheless well understood statements? Or just ones that pertain to your particular field of work?

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    30. Re:Usage predicts lifespan by smallfries · · Score: 1

      You seem slightly confused, or ignorant of some fundamental definitions in your area. That is not meant to be an offensive remark; people can quite happily spend their lives working in compilers with ignorance of some theory beneath their level of interest. Circuits (either in the concrete electronic sense, or in more general theoretical terms) are defined as statically connected collections of operators over finite sets. That is, the wires carry elements of a finite set, and the gates are operators over this set. There is no equivalence between circuits and programs as programs can execute a strictly larger set of computations than circuits.

      While operators are in this sense a fundamental definition of gates (I can provide you with some citations if you are interested), your counterarguments breaks in several places. You are confusing fundamental, in the sense of deeper, with simpler, as in the most optimal description. As programs form a larger set of computations than circuits it is clear that every circuit can be implemented as a program. Converting an operator into a sequence of steps in a program does nothing to show that the operator is not a fundamental description. As circuits require a static finite set of connections it is far from "trivial" to extend circuits to simulate Turing Machines. So neither you multiplication or divisions examples are a counter-argument. While every circuit can be simulated by a program, not every program can be simulated by a circuit.

      It doesn't offend me in the slightest when people make mistakes in my field, and I even take the time to correct them. You seem to think that your point was commonly understood, when sadly it is in fact a commonly misunderstood point, as your replies demonstrate.

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    31. Re:Usage predicts lifespan by tonytraductor · · Score: 1

      Tcl is immensely useful, easy to learn, easy for building gui apps (even if they look a bit dated). Personally, I like tcl.

    32. Re:Usage predicts lifespan by phantomfive · · Score: 1

      Ooh, try TCL on OSX sometime. The GUIs look amazing.

      --
      "First they came for the slanderers and i said nothing."
    33. Re:Usage predicts lifespan by thePuck77 · · Score: 1

      Is there something that isn't?

      --
      "We live as though the world were as it should be, to show it what it can be." - Joss Whedon via Angel
    34. Re:Usage predicts lifespan by snowgirl · · Score: 1

      If I appear confused, it's because you're using terminology extremely confusingly, and inconsistently.

      Nearly every program ever written has been executed on circuitry. So, I am at a loss as to how you can disassociate the term "circuit" from "circuitry". We have plenty of circuitry that implements a finite-limited Turing-equivalent machine. If you want to draw the line and say, "that's exactly what I'm objecting about" there is the problem that we can conceive of infinite circuitry, even though we could never build it. So, if your argument is simply "a circuit is lesser because it is finite", and that's the only difference between it and a program, then really, it's a bad definition, because programs have to have a finite number of instructions in order to operate. "No they don't, they could be infinite", yeah, well so can circuits, and both are equally tractable matters.

      And I never stated that operators were not a fundamental description. In fact, my comment that SPARC C compilers have to produce a loop of instructions in order to produce an divide operator was intended to show that what is "fundamental" at one level, is actually composite in a deeper level. But to that specific layer of abstraction, "operator" is fundamental. But this is done in the same way as Chemistry dealing with the atom. In Chemistry, the fundamental component of an element is the atom, (or nucleus/electrons separately) because all matters of Chemistry operate as if atoms were fundamental particles, even though we know and understand through Physics that it is not.

      As circuits require a static finite set of connections it is far from "trivial" to extend circuits to simulate Turing Machines.

      Yet nearly every computer processor has been designed to do this... how? Feedback loops.

      So like, what the hell, is there anything about circuits that bar them from implementing Turing machines except that they are finite? And regardless of your answer about what the hell "circuits" are, why cannot I not, for a programming language, define the concept of "nand" apart from any physical implementation and use it as an operator?

      And then I didn't ever use "trivial" to say that making an infinite circuit is easy. When I used the word "trivial", I used it in the mathematical sense (you know, that stuff you have to take in order to understand computers properly.) As in "Find the non-trivial factors of 3948569384"... because the "trivial factor" is 1. (Duh.) So equally in this case, I was saying that circuits can implement a Turing-machine, except that (duh) they can't be infinite in physical implementations.

      It doesn't offend me in the slightest when people make mistakes in my field, and I even take the time to correct them. You seem to think that your point was commonly understood, when sadly it is in fact a commonly misunderstood point, as your replies demonstrate.

      Except you fell into my nasty rhetorical trap. The statement "begs the question" means specifically a logical fallacy where one asserts as true the conclusion in the process of a proof or argument. Yet, you seem to have readily understood it to mean: "raises the question". Which raises the question: did you not understand what I intended to say when I said "nand is Turing-complete"? Because it sure seems like you understood what I was intending to say...

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    35. Re:Usage predicts lifespan by Minix · · Score: 1

      If GNU had chosen HTML instead of info for its documentation, perhaps HTML would have been alive.

      No ... wait ...

      --
      "There are four boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order." Ed Howdershelt
    36. Re:Usage predicts lifespan by smallfries · · Score: 1

      I don't see any trap, although if you've studied more rhetoric than logic it does not surprise me that you believe that you do. Your argument was circular so I simply took it at face value. I've never disputed that I understood what you intended to say, merely that what you intended to say is wrong. Some of the things that seem to confuse you are standard terminology, such as circuit (as opposed to electronic circuitry).

      So, if your argument is simply "a circuit is lesser because it is finite", and that's the only difference between it and a program, then really, it's a bad definition, because programs have to have a finite number of instructions in order to operate. "No they don't, they could be infinite", yeah, well so can circuits, and both are equally tractable matters.

      Every computation realisable on a circuit is an instance of a FSM, where-as Turing-Machines can execute a larger class of computation. It is the very point of whether or not a machine is universal. So although you don't see anything interesting or relevant about the distinction it does tend to matter in the "compiler business" as input languages that are universal have undecidable analysis problems, while FSMs are merely intractable.

      Being complete wrt a set of logical operators is only one small part of what is necessary to simulate a Turing Machine. Your claim that it was sufficient is incorrect. If you remove the finite/infinite distinction that seems to trouble you then the logic for controlling the head does not require a complete operator: simple equality checking is enough to build a functioning controller. So the completeness of the operator is irrelevant to building the finite part of the machine - the connection that you were trying to make is simply wrong. Turing Completeness is only defined for languages, your attempts to claim that the bits other than a logic operator are irrelevant simply show that you do not understand the concepts as well as you think that you do.

      --
      Slashdot: where don knuth is an idiot because he cant grasp the awesome power of php
    37. Re:Usage predicts lifespan by snowgirl · · Score: 1

      I don't see any trap

      Then you're an idiot. The trap was the use of "begging the question" to mean "raising the question", NONE OF THE REST OF THE POST WAS A RHETORICAL TRAP.

      I've never disputed that I understood what you intended to say, merely that what you intended to say is wrong.

      And I never said that what I said wasn't wrong, and immediately added "of course one needs flow-control" and then you when off on circuits, when I wasn't even talking about circuits. I was talking about operators.

      Turing Completeness is only defined for languages, your attempts to claim that the bits other than a logic operator are irrelevant simply show that you do not understand the concepts as well as you think that you do.

      Let me ask you something. When I draw a circuit diagram on the back of napkin... what limits the capabilities of that circuit? The speed of light? Nope... the circuit is just a theoretical construct that is unbounded by physical law. The bus sizes? If I draw the notation with buses represented as single lines, then no, because this is just a theoretical construct that is unbounded by physical law, and I can represent a bus of arbitrary width, and then assign that arbitrary width the value of infinity. Lack of infinite memory? Hm... no, again, I have an infinite-bit-width bus going into a memory array, I can simply assign that memory array to have an infinite address space.

      Is any of this actually implementable in the real world? No. But then no universal Turing Machine is implementable in the real world. At all. Ever.

      But if we start demanding that circuits cannot be extended arbitrarily, then there is some arbitrary limit that you're placing on that circuit, and what happens when the next brand new technology comes out that increases that limit? Congratulations, your language was limited to 16-bit values, and then extended to 32-bit values, and now to 64-bit values, because the circuitry underlying it has extended and extended.

      In the same way that programs are simply theoretical constructs, so are circuits... until EITHER of them are "realized", or "implemented", and then they become finite state machines, because the universe does not allow us to construct infinite-state machines... EVER, whether it be a program, or a circuit.

      You seem to be so locked up in this world of "hardware is hardware, but software is way cooler!" That you cannot seem to recognize that hardware works with theoretical constructions as well, and they're not inherently limited to physical law any more than you are.

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    38. Re:Usage predicts lifespan by stevew · · Score: 1

      Nope - You present no evidence to the contrary - you just insult and make unsupported statements. I mentioned a segment that uses TCL as it's fundamental scripting language. The following EDA tools use it to mention a few.

      Mentor Modelsim Verilog/VHDL simulation environment
      Synopsys Design Compiler, and Primetime Timing Engine
      Magma Designs Chip Design environment for all phases of the tools
      Cadence Encounter Chip design environment

      These are the MAIN players in the industry - and they tend to use TCL in all of their other tools that require a scripting capability. The only exception that I'm aware of iis the use of SKILL by Cadence in their Schematics capture tools.

      If you design chips for a living - you need to be proficient in TCL to drive the tools.

      That isn't to say that other scripting languages aren't useful - didn't claim that, merely that TCL had a very strong nitch that it fills which happens to be the reason Osterhout invented it while he was at Berkeley.

      --
      Have you compiled your kernel today??
  7. It's true... by Anonymous Coward · · Score: 0

    ...Guile goes with everything!

  8. Guile is LGPL by tepples · · Score: 1

    Guile is LGPL. It's no more "locked down" than any of the other LGPL libraries that proprietary software uses, such as glibc or Gtk+ or SDL.

    1. Re:Guile is LGPL by BitZtream · · Score: 1

      So its locked down, just in a different way than you want to call it. To the rest of us, its the same locked down.

      Lets not deny reality here, its locked down intentionally to ensure users a certain set of freedoms.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    2. Re:Guile is LGPL by Anonymous Coward · · Score: 1

      Give me all your code now! Work for me for free! What? Objections? Shut up and take it like a man!

    3. Re:Guile is LGPL by tepples · · Score: 1

      It's "locked down" with what I believe is a useful balance of users' freedoms and developers' freedoms for an interpreter like this. Consider that Mozilla JavaScript is under pretty much the same kind of weak copyleft license (LGPL/MPL). The argument then becomes one of whether or not this balance of freedoms is desirable.

    4. Re:Guile is LGPL by Anonymous Coward · · Score: 0

      So its locked down, just in a different way than you want to call it. To the rest of us, its the same locked down.

      You want to tell us what the hell you're going on about?

      When normal people troll about "locked down" they're trolling about the "viral" GPL. The LGPL does not "infect" proprietary software linked to it.

    5. Re:Guile is LGPL by BitZtream · · Score: 1

      Good for you, you think its balanced. Personally I have no opinion in that respect.

      My point is simply that to say its not locked down is a lie. It is 'locked down', and it is intentional, by design, for a reason.

      Why do people insist on trying to pretend GPL and LGPL are something they aren't? Why keep trying to scam people into thinking its something other than it is.

      If you don't like what it is, don't use it, but if you like it and the way it work, own up to it.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    6. Re:Guile is LGPL by BitZtream · · Score: 1

      I implied no such behavior, twit.

      My point is simply that people need to stop pretending GPL and LGPL are 'open' or 'free' and realize they both come with serious restrictions.

      Those restrictions are by design, and 100% intentional, so the end user gets more control over how the code is useful to them, but doing so puts very clear undeniable restrictions on developers. You simply can not argue these points with me, they are facts.

      You can argue what the intention is, and 'whos better for society' and any number of other things, but pretending GPL is some how different than every other license just makes you look stupid in front of any normal sane, non-GPL fanboy. The GPL license is built on an agenda, just like Microsoft's licensing and Apples, its just an entirely different agenda centered around empowering the end users of the software rather than someone else such as developers (BSD license) or profit for the company that owns it (MS and Apple).

      Again, this is not something that there is any sort of argument about, its fact. If you don't realize its fact, you're just too stupid to have a conversation about it.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    7. Re:Guile is LGPL by BitZtream · · Score: 1

      The LGPL does not "infect" proprietary software linked to it.

      It most certainly does.

      The only time it doesn't 'infect' is if you link dynamically, which is only one way of doing it and isn't always an option.

      Do you guys not know anything about the licenses you champion at all?

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    8. Re:Guile is LGPL by hairyfeet · · Score: 1

      I think what you are trying to get at is what the late George Carlin used to do a bit on, how over the years language gets twisted by those with an agenda. The example he used was how shell shock became PTSD, which took the power out of the words and make it sound like you have PMS.

      In this case we have the word free, which means in most dictionaries "exempt from external authority, interference, restriction, etc." being twisted to mean "Free as in what RMS believes in" which is not even static, as we have seen in the change from GPL V2 to GPL V3.

      So personally I think we need to tell RMS where he can put his language twisting and just call it what it is....copyleft. it is simple, it is to the point, it explains quite easily what the GPL and its derivatives are about, which is a socialist (and I use that word without malice, that is another word being twisted to mean what it doesn't by the Faux news crowd) take upon a traditional copyright license.

      So lets just call a spade a spade. GPL is copyleft, BSD is attribution only, and if one wanted to get technical the only true licenses that fall under the definition of free are PD and the "Do what the fuck you want" licenses, as they have no restrictions at all upon the user. But trying to twist free to mean copyleft is as much bullshit as shell shock to PTSD, it is warping the language to fit an agenda. Aren't we old enough and wise enough not to have our chains yanked by those with an agenda? We're geeks, right? shouldn't we be above weasel wording?

      --
      ACs don't waste your time replying, your posts are never seen by me.
    9. Re:Guile is LGPL by Anonymous Coward · · Score: 0

      So lets just call a spade a spade.

      People may take your comment more seriously if you'd not use racist terms in it.

  9. Yes, sure. by drolli · · Score: 1

    The port of emacs to guile is a breakthrough.

    1. Re:Yes, sure. by L1nuxGuy · · Score: 3, Informative

      Emacs is a great development environment. It just lacks a good text editor.

    2. Re:Yes, sure. by rubycodez · · Score: 2

      it's a passable operating system too, but yeah lacks a decent editor

    3. Re:Yes, sure. by thePuck77 · · Score: 1

      Emacs is a great development environment. It just lacks a good text editor.

      it's a passable operating system too, but yeah lacks a decent editor

      Really? After all these years, this is what you bring to the table? I'm disappointed. Why, I remember the days when a good Emacs vs. Vi brawl would include three page dissertations in LaTex.

      --
      "We live as though the world were as it should be, to show it what it can be." - Joss Whedon via Angel
  10. Poor planning and bad arguments by jockm · · Score: 2

    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

    --

    What do you know I wrote a novel
    1. Re:Poor planning and bad arguments by snowgirl · · Score: 2

      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 comparable behavior in a few hours. Thus demonstrating the utility of a rabid (should be rapid, but I almost like the typo) prototyping language for webpage development over C++, PHP, or Perl.

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    2. Re:Poor planning and bad arguments by Anonymous Coward · · Score: 0

      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.

      That reminds me of Forth; the same comments could be made about stack based languages. They are unbelievable elegant and powerful, but just don't seem to fit the mental structure of most programmers.

    3. Re:Poor planning and bad arguments by jockm · · Score: 2

      I think you are referring to Robert Morris' Viaweb (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 it is far from mainstream. While it has it's fans (and they are rabid), it isn't a great general purpose solution. As a much younger man I went though a lisp phase, and I look back at my code (for which I was chided for being to verbose and blatant in my coding) and frankly cannot understand much of it. Compare that to old C, Forth, 6502 assembly, etc and I have little or no problem.

      But the problem with Guile is not just that it is Lisp, but that it is trying to impose a single hammer, and then say you have to reimplement your other tools in that hammer. As such there is a partial implementation of ECMAScript 3.1, a early stage Lua port, a proof of concept TCL implementation (which I can't find on the web easily). So your only real option is to use Guile's implementation of Sceme.

      As I have said elsewhere, it would have been far better to have created a standard API for linking up apps, to pluggable scripting engines. That way there would have been a standard way for apps to make themselves scriptable (ala COM, AppleEvents, the Java Scripting API, etc etc), and then a variety of scripting language (using the actual implementation of those languages) to choose from; and Guile could have been one of them.

      --

      What do you know I wrote a novel
    4. Re:Poor planning and bad arguments by k8to · · Score: 1

      When I worked through the Little Lisper, doing all of the exercises, I started out trying to use Guile, but I quickly had to give up.

      There was no debugger.
      The error messages were extremely low quality.
      Handling of syntax errors was abysmal
      Runtime problems produced inscrutable behavior.

      I tried another Lisp environment after that, but had similar, but reduced problems.

      Then I just implemented all my lisp in python. I created functions to do all the needed lisp things although i did not spell them as unrecognizaly bin all cases.

      The result was I had all the recursion power, and could do all the things that the lisp mental model was suggesting to do, but I had top flight error messages, excellent syntax, rich runtime support, and a quality debugger (though I didn't need it). I learned some things about programming from working the lisp solutions to problems, but I also learned that using lisp/scheme for practical problems wasn't worth it.

      --
      -josh
    5. Re:Poor planning and bad arguments by Medievalist · · Score: 2

      Is this the essay you remember?

      http://www.paulgraham.com/avg.html

      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 personally I suspect the real difference between Graham and his competitors was well motivated talent, which is not something you can shoehorn into a Dilbertesque corporate culture. Yeah, sure, languages do matter, but not as much as raw programming ability does.

    6. Re:Poor planning and bad arguments by kwoff · · Score: 1

      I remember Emacs was going to switch to Guile back in, oh....around 2000? hmmm, around the same time Perl 6 was conceived. Millennium mania?

    7. Re:Poor planning and bad arguments by Anonymous Coward · · Score: 0

      You're propably speaking about this

      Beating the averages
      http://www.paulgraham.com/avg.html

    8. Re:Poor planning and bad arguments by Anonymous Coward · · Score: 0

      I think you are thinking of "Beating the Averages" by Paul Graham. Your summary of the essay is really not doing it justice...

      This is recommended reading for anyone interested in programming.

    9. Re:Poor planning and bad arguments by Anonymous Coward · · Score: 0

      Your description reminds me of something I read by Paul Graham. Maybe you saw his "Beating the Averages" essay?

    10. Re:Poor planning and bad arguments by lewiscr · · Score: 1
    11. Re:Poor planning and bad arguments by Anonymous Coward · · Score: 0

      You are probably thinking of this:

      http://www.paulgraham.com/avg.html

    12. Re:Poor planning and bad arguments by Anonymous Coward · · Score: 0

      And of course the fact that Emacs still hasn't adopted it, isn't a ringing endorsement either.

      elisp is compiled into bytecode. have a look at some of the bytecode instructions:

      #define Bgoto_char 0142
      #define Binsert 0143
      #define Bpoint_max 0144
      #define Bpoint_min 0145
      #define Bchar_after 0146
      #define Bfollowing_char 0147
      #define Bpreceding_char 0150
      #define Bcurrent_column 0151
      #define Bindent_to 0152
      #define Bcurrent_buffer 0160
      #define Bset_buffer 0161
      #define Bforward_char 0165
      #define Bforward_word 0166
      #define Bskip_chars_forward 0167
      #define Bskip_chars_backward 0170
      #define Bforward_line 0171
      #define Bchar_syntax 0172
      #define Bbuffer_substring 0173
      #define Bdelete_region 0174
      #define Bnarrow_to_region 0175
      #define Bwiden 0176
      #define Bend_of_line 0177

      elisp is a language whose virtual machine is designed for a text editor. switching to a general purpose vm just for the sake of consistentcy would be a lot of work for questionable gain.

    13. Re:Poor planning and bad arguments by rmstar · · Score: 0

      They used it because they were experts, it was something they were very comfortable with, and thus could get things done very quickly.

      They were about as expert in lisp as the others were in their stuff, but were still significantly faster. In particular in the discipline of getting things done, amazingly with rather small performance penalties. That's a property of lisp that lispers regularly observe.

      Of course this also dramatically reduced the talent pool they had to draw on for new hires as well.

      That's true, sure.

      Lisp (and derivatives) is an amazing language and great for many problems, but it is far from mainstream. While it has it's fans (and they are rabid), it isn't a great general purpose solution.

      Rabid lisper here. You are wrong on the point that it is not a general purpose solution. It has a mathematical completeness and reflection capabilities that are simply superior to that of other languages. Period. You can do it in X, you can do it in Lisp too, but not the other way around.

      It's not for dunces, though, and I have no problem with that.

      But the problem with Guile is [...]

      No, the problem with Guile is that it sucks. That's the problem, plain and simple. Most lispers and schemers stay away from it. It is tragic that GNU took one of the more mediocre schemes around and decided to put their flag on it. I still appreciate the effort of doing something right, namely insisting that people learn some lisp.

    14. Re:Poor planning and bad arguments by AkkarAnadyr · · Score: 1

      I remember reading about someone working on a webpage offering various services...

      That was Paul Graham, working on the Yahoo Store.

      --

      I bought this house and you know I'm boss
      Ain't no h'aint gonna run me off

    15. Re:Poor planning and bad arguments by Anonymous Coward · · Score: 0

      Check out Paul Graham's "Beating the averages", it may be what you are looking for. http://www.paulgraham.com/avg.html

    16. Re:Poor planning and bad arguments by jockm · · Score: 1

      The problem with Guile is that most people do not want to work in Lisp. I am glad you are a "Rabid lisper" -- though insulting other people is not a great way to win other people to your cause -- but even you have to admit that most people are not interested in learning Lisp. And the point of a scripting language is to provide a relatively easy way to extend the functionality of a program, even to relative novices, and people who are not professionals.

      As such, I stick by my statement, Lisp is not a good fit.

      --

      What do you know I wrote a novel
    17. Re:Poor planning and bad arguments by Anonymous Coward · · Score: 0

      I think you might be referring to Paul Graham's essay, "Beating the Averages." Here.

      "Sometimes, in desperation, competitors would try to introduce features that we didn't have. But with Lisp our development cycle was so fast that we could sometimes duplicate a new feature within a day or two of a competitor announcing it in a press release. By the time journalists covering the press release got round to calling us, we would have the new feature too."

    18. Re:Poor planning and bad arguments by snowgirl · · Score: 1

      Yes, that's precisely the essay I was referring to. :) Thank you.

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    19. Re:Poor planning and bad arguments by snowgirl · · Score: 1

      I think you are thinking of "Beating the Averages" by Paul Graham. Your summary of the essay is really not doing it justice...

      This is recommended reading for anyone interested in programming.

      I willingly admit that my summary isn't doing it justice. However, I could not remember the details, nor did I have enough information to find the proper essay and refresh myself on the details. Thus, I stuck to details that I was sure of, and quite vague about what I was not sure of. Thus, a vague description with enough specifics that 10 people can bang the link over my head. ;)

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    20. Re:Poor planning and bad arguments by Anonymous Coward · · Score: 0

      Sounds like this guy: https://secure.wikimedia.org/wikipedia/en/wiki/Paul_Graham_%28computer_programmer%29

    21. Re:Poor planning and bad arguments by rmstar · · Score: 1

      I am glad you are a "Rabid lisper" -- though insulting other people is not a great way to win other people to your cause

      Please enlighten me - where did I insult anyone? Except perhaps the Guile developers for saying that Guile sucks? Or do you just find Lisp insulting all by itself?

      but even you have to admit that most people are not interested in learning Lisp.

      There is nothing to admit there. That is a fact. How does that change anything? They would greatly benefit from learning it, that's also a fact.

      I am not terribly interested in convincing people of my cause. If everybody programmed in Lisp, the huge rewards that come from using it would disappear. It is not a problem to state it so openly, because most people just don't like the parentheses at all and are willing to pay a ridiculous price to avoid them. They wouldn't like lisp no matter what. In fact, many people try lisp and when they witness the power, they hate it even more and start making up silly excuses. Out of spite, I presume.

    22. Re:Poor planning and bad arguments by silentcoder · · Score: 1

      Any chance you made your pylisp thing open source ? I'd LOVE to see that and play with it.

      --
      Unicode killed the ASCII-art *
    23. Re:Poor planning and bad arguments by doom · · Score: 1

      I remember Emacs was going to switch to Guile back in, oh....around 2000? hmmm, around the same time Perl 6 was conceived. Millennium mania?

      Now that you mention it, I've had a theory that both projects should merge in order to solve each other's problems. If you implemented elisp on parrot, you should be able to create a mutant emacs using the new run time engine, which, if it works as promised, would let you customize your new lisp in a range of different languages, including guile. And this way, the perl6 community would have an environment to target for applications to answer the "but what is it good for" question.

    24. Re:Poor planning and bad arguments by k8to · · Score: 1

      Nah, don't have it anymore, that was in 1999 or so. It wasn't a quality environment either, just enough to do the exercises.

      However, my point is python has most of the dynamicism that lisp wants already. You don't need a translation system or environment or set of convenience items, you can already just write code that way when it's needed.

      Sure you don't have the flexibility of lisp macros, but you have pretty much everything else.

      --
      -josh
    25. Re:Poor planning and bad arguments by silentcoder · · Score: 1

      Fair enough, I was just curious. I got your point - just thought the code would be interesting to look at and play with.

      --
      Unicode killed the ASCII-art *
  11. I'm coining a new term: by O('_')O_Bush · · Score: 3, Insightful

    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);
    1. Re:I'm coining a new term: by O('_')O_Bush · · Score: 0

      Also, please ignore the typos, its hard writing from a phone keyboard.

      --
      while(1) attack(People.Sandy);
    2. Re:I'm coining a new term: by Anrego · · Score: 1

      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).

    3. Re:I'm coining a new term: by Z8 · · Score: 3, Interesting
      Exactly, lisp was chosen for several related reasons, none of which are relevant:
      1. Language Neutrality: The idea here is that users could program in whatever language they wanted. Unfortunately this never panned out because it requires the huge programming task of writing a translator from every languange into scheme. They should have known from the beginning that writing and maintaining all this code was unrealistic.
      2. Macros: Yes, Lisp is very elegant, you can define your own syntax! But how many people need to write new unheard of forms of flow control in an extension language? And need to do it so often that Lisp's elegance at doing this would pay off?
      3. Other CS Prof features: Yes, Lisp is usually tail recursive, so you can build stuff like coroutines. Again, how many people need coroutines when scripting GnuCash? And you can do coroutines in other languages, it just 10% less elegant (for instance, in Python you need a trampoline).

      So basically their decision was optimized on all the wrong criteria. Instead it should have been optimized on:

      1. Ease of use: Can user, who may not be a professional programmer, look at an example, vaguely understand how it works, and modify it slightly? This is possible with Python probably, but not with Lisp.
      2. Community: How many programmers are already using it and what are its prospects for the future? GNU even further splintered the notoriously fragmented Scheme community when they chose to make their own scheme implementation instead of using one of the many very functional pre-existing Scheme implementations, several of which were explicitly designed as extension languages.
      3. Efficient use of resources: If they had chosen Python or Lua they could have leveraged the existing work put into those languages as well as all the future work that would be done by those communities. Instead they decided to reinvent the wheel and develop their own Scheme implementation, almost from scratch (yes I know it forked from SIOD).
    4. Re:I'm coining a new term: by Anonymous Coward · · Score: 0

      Exactly, lisp was chosen for several related reasons, none of which are relevant:

      Macros: Yes, Lisp is very elegant, you can define your own syntax! But how many people need to write new unheard of forms of flow control in an extension language? And need to do it so often that Lisp's elegance at doing this would pay off?

      Oh I don't know, how about as many people hacking on a half ass language as c++ trying to do template metaprogramming ? You know that's all the rage nowadays don't you ? I have pity for those programmers attempting to subvert c++ for something that should have stayed locked and buried under 10 feet of concrete instead of learning to do proper metaprogramming in a well designed coherent language.

    5. Re:I'm coining a new term: by snowgirl · · Score: 2

      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 ;)

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
    6. Re:I'm coining a new term: by Anonymous Coward · · Score: 0

      And yet, we have silliness like Perl and XML.

    7. Re:I'm coining a new term: by Anonymous Coward · · Score: 0

      If these reasons were cited, that is just a rationalization. The real reasons LISP was supported over others have to do with the specific people and the culture GNU grew out of. Also, it's GNU so the license must be GPL

    8. Re:I'm coining a new term: by wrygrin · · Score: 1

      well said.

      lisp was my favorite language until i found python. i still like lisp a lot - i develop some emacs extensions, like allout, and enjoy delving into the code. i'm also a big shell scripting fan, and i even love scheme's compactness. however, whenever i return to python from any other computer language, i am struck by its comprehensibility.

      it's unfortunate, but "comprehensibility" is hard to pin down, and critically important. particularly in dynamic situations - which is when scripting is most needed. the more that a language has syntactic clutter, and/or is excessively naive (so a lot of code needs to be written and rewritten for simple things) or sophisticated (requiring the programmer to be so clever that they and others inevitably have a hard time understanding what they've written), the harder it is to evolve a system. of any language i've seen, python strikes the best balance, by far, in all of those realms.

      it's kinda whacky that the GNU folks have stuck with the choice of guile after all this time, and in the face of others leaving that quest. witness MIT migrating from scheme to python for their introductory programming courses...

      • Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- Brian Kernighan
      --
      everything leaks
    9. Re:I'm coining a new term: by osu-neko · · Score: 1

      Community: How many programmers are already using it and what are its prospects for the future? GNU even further splintered the notoriously fragmented Scheme community when they chose to make their own scheme implementation instead of using one of the many very functional pre-existing Scheme implementations, several of which were explicitly designed as extension languages.

      That's a bit bogus. Anyone using any of those Scheme implementations will have no trouble developing in any other, so the "how any programmers" question would have the same answer regardless.

      That said, everything else you said is true...

      --
      "Convictions are more dangerous enemies of truth than lies."
    10. Re:I'm coining a new term: by silentcoder · · Score: 1

      I mostly agree with you but just to pick a nit on your last point: neither python or lua existed when this choice was first made. At the time the strongest competition was TCL (yeurch) or perl (let's make a language less readable than lisp so you can code in ASCII art).

      Perl was (and is) bloody huge as well, sort of ruled it out, more-over the perl manual's license (at the time at least) was RMS's example of why documentation should be free - he wasn't about to make major use of it. TCL was rejected for numerous reasons other posters have commented on.

      Now this doesn't mean they couldn't have chosen lua or python instead at a later time when they did exist and the universal guile-extension still hadn't come to life, but it's rather unfair to judge them for initially not consideriing languages that didn't exist.

      By that logic I should be punished because the code I write today isn't designed to run on quantum computers.

      --
      Unicode killed the ASCII-art *
    11. Re:I'm coining a new term: by Z8 · · Score: 1

      Are you sure about that? My memory is hazy but I remember fairly early arguments about what the extension language should be and Python was already an option.

      Python was released in 1991 and Guile started 1993-1995 according to wikipedia. It's possible the decision to use scheme as an extension language was made before anyone heard of Python, but my recollection is that they could have just used Python instead of developing their own. I don't know lua so I can't speak to that.

      But you're at least right that the decision to write their own Scheme instead of using Python looks a lot stupider in retrospect (now that we know that Python has caught on but Scheme languishes) than it did at the time.

    12. Re:I'm coining a new term: by silentcoder · · Score: 1

      This decision dates to the late 80s I believe. I could ne wrong though. Even so neither python nor Lulama was mature languages then. They we're unproven concepts really
      Many old school programmers found the idea of meaning full whitespace in python a major put off. It felt like a monumentally bad and exceedingly restrictive decision. I know. I was one of them. In retrospect it was visionary and I love python. Buy coming from a modular programming background it didn't look good at first sight!

      --
      Unicode killed the ASCII-art *
    13. Re:I'm coining a new term: by terpri · · Score: 1

      It's actually quite useful to support user-extensible control flow. For example, because Guile supports macros and delimited continuations, you can implement Emacs's buffer-local variables as a library, whereas implementing the same feature in a language like Python would require either rewriting user programs or adding an ad-hoc language extension that wouldn't necessarily compose well with other language extensions. Guile's "CS Prof" features can be a considerable advantage for some applications.

    14. Re:I'm coining a new term: by Z8 · · Score: 1

      In Python couldn't this be done by defining them as objects with optional callbacks or get/set functions? I guess I don't understand your example well enough to see why it couldn't be done straightforwardly in a non-lisp language.

  12. Re:Guiwhat? by Anrego · · Score: 1

    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 popularity and ignore language features. Using some obscure (even if well suited) language just narrows that void even more to people who can't be bothered to write a patch, but can be bothered to learn a whole new language.

  13. GNU/Linux by tepples · · Score: 2

    They have a kernel. If you're referring to GNU HURD, that's been deprioritized because as Mr. Stallman wrote in a Reddit interview, "Linux works ok as a kernel." Linux is one of many third-party components of a GNU system.

    1. Re:GNU/Linux by rubycodez · · Score: 1, Interesting

      hahaha - what a cop-out. that's a nice mealy-mouthed way to say they totally and utterly failed to produce a viable kernel after decades of farting around. Let's face it, a task that requires real world engineering ability rather than ivory tower theory and navel-gazing is always beyond RMS and his close cohorts. Even the gcc would have been dead had not the engineering types rescued it (egc history)

    2. Re:GNU/Linux by Phillip2 · · Score: 1

      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 system, then I think you have miss understood his motivations; free software has, for him, never been about engineering but freedom. He wants a free software system available for people to use, hack, modify, do what ever. His political aim of freedom long ago outweighed his desire to engineer things. So, the existence of linux really has changed the plans of Gnu. They haven't got a web server either; were apache not free, they would do.

      Phil

    3. Re:GNU/Linux by rubycodez · · Score: 1

      Free software projects with normal humans that haven't delivered give up sometime before 15 or 20 years have elapsed, but HURD is still wanking it after 24 years.

      Let's revisit this topic again in 8 years when Perl 6 has been wanking it for 20 years.

    4. Re:GNU/Linux by Aighearach · · Score: 1

      Man continues large art project for 24 years, swears to keep working on it as long as it is still fun.

      Local graffiti artists outraged at his attention span and the pointlessness of his work.

      News at 11.

    5. Re:GNU/Linux by rubycodez · · Score: 1

      ....but another artist spends 5 years and erects completed work on vaguely the same theme a block away. Man continuing his 24 art project points to it and says "this fulfills intent of my project". and then continues to fart around with his 24 year project, getting many young artists to give up promising new careers to instead fart around with him....

    6. Re:GNU/Linux by Aighearach · · Score: 1

      if they're that much like sheep, it really doesn't matter if they do anything "useful" or not. They just don't matter to the technology.

    7. Re:GNU/Linux by silentcoder · · Score: 1

      You are so very right. This is why Stallman is on record as saying "The back-office success of GNU/Linux is not important to us, it's the desktop where freedom really matters. Companies can afford too be in a negotiating position that makes software freedom much less important to them."*

      More crucially what you say about engineering is doubly true. Stallman has stated that the decision too base GNU on Unix was never because he was a fan of Unix. On the contrary basing it on Unix meant he lost the ability to try really new and fun concepts in operating system design. Unix is hardly the greatest OS design there ever was, but it is a very, very good one (and the very best ones share the things that make it so good - like being built out of lots of small pieces that can be fit together in a multitude of different ways). Unix was chosen for one reason only: because in 1983 when the GNU project began, Unix was the ONLY portable OS ever developed. Being written in C rather than machine code made it the first ever OS that could be moved between different hardware, it would take another decade and a half before another portable OS even existed. Stallman CARED about portability - he'd seen firsthand what happened to ITS when MIT replaced their PDP10's, he knew it could take years to build a functional free OS, he wanted to make sure when he was done it would run on whatever hardware was current and keep running after that when the hardware changed. He says outright that using GNU made the engineering parts dull and uninteresting and made him (and his cohorts) have a much less fun job - but the importance of portability to achieve lasting software freedom trumped that.

      *Note: he didn't say UNimportant, just LESS important. Companies -at least big ones -have legal and financial means to do much of what they want even with closed source products because the suppliers have actual reasons to listen to them, desktop users don't. If you don't have the source you have no power at all.

      --
      Unicode killed the ASCII-art *
    8. Re:GNU/Linux by silentcoder · · Score: 1

      You're talking about the Mona Lisa, aren't you ? Da Vinci kept working on that right from when he started (as a rather young man) until the day he died.

      --
      Unicode killed the ASCII-art *
    9. Re:GNU/Linux by Guy+Harris · · Score: 1

      They have a kernel. If you're referring to GNU HURD, that's been deprioritized because as Mr. Stallman wrote in a Reddit interview, "Linux works ok as a kernel." Linux is one of many third-party components of a GNU system.

      If by "third-party components" you mean "stuff not from the GNU project", what constitutes "a GNU system", if "a GNU system" includes critical non-GNU projects? The GNU project as a producer of an all-GNU operating system may never succeed, but the GNU project as a producer of:

      1. a large number of very useful free software projects;
      2. at least some widely-adopted extensions of the UN*X API and user interface (e.g., getopt_long(), implemented independently in at least some *BSDs and Mac OS X as well as Solaris and possibly some other commercial UNIXes);

      and as a promoter of the notion of free software is definitely a success.

    10. Re:GNU/Linux by tepples · · Score: 1

      what constitutes "a GNU system", if "a GNU system" includes critical non-GNU projects?

      That's a good question. I wish I could find a precise answer on GNU.org as to what is and is not a "GNU operating system", but I guess this is the closest thing.

  14. Parrot to the rescue by Anonymous Coward · · Score: 0

    16 years? And people bitch about Parrot and Perl 6....

    1. Re:Parrot to the rescue by snowgirl · · Score: 1

      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...

      --
      WARNING! This girl exceeds the MAXIMUM SAFE standards established by the FDA for BRATTINESS
  15. LISP? really??? really?? by MobyDisk · · Score: 0

    Having never heard of Guile, I think I can take a good guess as to why it has not been adopted:

    Guile is an implementation and dialect of the Scheme programming language (Scheme is a dialect of LISP itself)

    Oh my.

    LISP found a niche as an AI research/programming language, and sometimes for symbolic math manipulation, but has never been used in the mainstream. Most programmers have never heard of it. Universities teach it in whatever token course covers 10 languages in one semester with no depth at all. Hardly anyone writes everyday software in LISP. It is not appropriate for general-purpose scripting.

    I am prepared to be flamed...

  16. No Sarcasm: Do People Care? by assertation · · Score: 2

    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?

  17. Who cares? by WPIDalamar · · Score: 1

    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?

  18. You lose by Anonymous Coward · · Score: 0

    Go home and be a family language!

  19. ECMAScript by tepples · · Score: 2

    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.

    1. Re:ECMAScript by Anrego · · Score: 2

      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 argument of "lets not use something popular that could go out of style, but instead use something that has never been in style at all!" seems a bit odd.

    2. Re:ECMAScript by Anonymous Coward · · Score: 0

      This is why using actual javascript vice something that is based off the same thing would make more sense.

      You have no idea of what you're talking about. Please google ECMAScript and come back here.

    3. Re:ECMAScript by Lord+Bitman · · Score: 1

      Here's the first thing I found when looking for Guile with ECMAScript: http://www.gnu.org/software/guile/manual/html_node/ECMAScript.html
      In summary: Don't use ECMAScript for Guile under any circumstances, btw bitch bitch bitch bitch we are not a project worth paying attention to.

      --
      -- 'The' Lord and Master Bitman On High, Master Of All
    4. Re:ECMAScript by larry+bagina · · Score: 1

      ECMAScript was not the first non-Schemey language implemented by Guile, but it was the first implemented for Guile's bytecode compiler. The goal was to support ECMAScript version 3.1, a relatively small language, but the implementor was completely irresponsible and got distracted by other things before finishing the standard library, and even some bits of the syntax. So, ECMAScript does deserve a mention in the manual, but it doesn't deserve an endorsement until its implementation is completed, perhaps by some more responsible hacker.

      Yeah, not sure if that was a self-deprecating description written by the implementor or if they're a bunch of douchebags.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

  20. Lisp by DrXym · · Score: 1

    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. It would make more sense to define a language neutral automation interface that any process can implement. Scripting languages would soon acquire the bindings to use it.

    1. Re:Lisp by Anonymous Coward · · Score: 0

      ... It would make more sense to define a language neutral automation interface that any process can implement. Scripting languages would soon acquire the bindings to use it.

      Love it or hate it, this is exactly what COM (aka ActiveX) was on Windows. Some things were hit or miss (i.e. TAPI 3), but for the most part, worked well.

    2. Re:Lisp by sourcerror · · Score: 1

      You mean, they should use web services?

    3. Re:Lisp by inglorion_on_the_net · · Score: 1

      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 well they are supported by the base application, and how much value they add. Many extensions have been written for Emacs and Firefox, and they are a substantial part of the experience of using those programs. I don't think the syntax of the extension language (Emacs Lisp and JavaScript+XML, respectively) has much to do with it.

      --
      Please correct me if I got my facts wrong.
    4. Re:Lisp by DrXym · · Score: 1

      No, something with an IDL compiler that generates a typelibrary, proxy & stub code and some kind of lookup service / transport running over something such as D-Bus. This sort of thing has been done lots of times before.

    5. Re:Lisp by jgrahn · · Score: 1

      No, something with an IDL compiler that generates a typelibrary, proxy & stub code and some kind of lookup service / transport running over something such as D-Bus. This sort of thing has been done lots of times before.

      That's also the only thing I would hate *more* than Lisp or Tcl as an extension language ...

    6. Re:Lisp by lolcutusofbong · · Score: 1

      Isn't that called "shell"?

    7. Re:Lisp by DrXym · · Score: 1

      I'm not sure why. IDL actually makes your job as a developer easier. If you have used Lua or any other embedded language you'll see there is no free lunch for this stuff. You have to code up stubs and boiler plate and marshal values around between C and script native types. At least with IDL you just restrict yourself to describing the interface and the implementation and leave it to the compiler to spew out the boiler plate stubs and proxies.

    8. Re:Lisp by sourcerror · · Score: 1

      Does IDL have any decent tool support outside of the MS world?

      Also, this IDL thing is part of Corba right?

  21. It supports JS yet is "dead and unpopular". How? by tepples · · Score: 1
    From the summary:

    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?

  22. Re:No one seems to care by Anonymous Coward · · Score: 0

    Also, religions are tools and not languages.

  23. Re:Guiwhat? by maxwell+demon · · Score: 1

    Alternatively you can make the language popular. Get GUILE into HTML5, and its popularity will rise. :-)
    (Or maybe the popularity of HTML5 will go down instead ;-))

    --
    The Tao of math: The numbers you can count are not the real numbers.
  24. Because it's Lisp. by david.given · · Score: 1

    ...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 --- although I agree with the author that it's a terrible language. Someone with C or Java training can look at Javascript and read the structure; the learning curve is shallow enough to get people hooked. Guile's learning curve starts with a cliff. Why should someone looking for an extension language pick Guile when languages like Python or Lua are available that people already know?

    (As a secondary note, the LGPL's not really a very friendly license for an extension language, as it makes it hard to embed in anything that's not GPLd. I realise that the FSF is doing this deliberately to try and encourage people to write GPL software, but it is a factor affecting Guile's popularity.)

    1. Re:Because it's Lisp. by oldhack · · Score: 1

      Lisp is not weird. It's just that it doesn't have much in the way of syntax other than "everything is a sequence of nested lists".

      --
      Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
    2. Re:Because it's Lisp. by rokstar · · Score: 1

      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.

      I have modern training as a programmer which included scheme but you are likely correct in the general case. But you know what? More's the pity. Even if its not a lisp like language, programmers should be exposed to more families of languages as part of their education/training.

    3. Re:Because it's Lisp. by Anonymous Coward · · Score: 0

      Why the hate for the LGPL?
      LGPL libraries can be used in any code with any license whatsoever, from public domain to baby-eating propietary.

    4. Re:Because it's Lisp. by swan5566 · · Score: 1

      I was taught Scheme as my "first" programming language in my CS undergrad. Now, having done grad school and into the real world, I can't say that learning Scheme has done one shred of tangible good other than (insert some ivory-tower-sounding argument here). I'll just say this - it's usually pretty obvious when a group or school of thought has little to no accountability outside of themselves.

      --
      In debates about Christianity, there are two groups: those looking for answers, and those looking to just ask questions.
    5. Re:Because it's Lisp. by lolcutusofbong · · Score: 1

      I guess they're thinking that proprietary programs don't usually do dynamic linking to Free Software libraries. You still can't statically link LGPL code with proprietary code without releasing it under the (L)GPL. This is why all the video player apps on Android mention that they're dynamically linked with ffmpeg.

    6. Re:Because it's Lisp. by maxwell+demon · · Score: 1

      LGPL libraries can be used in any code with any license whatsoever

      It's easy to think of licenses which are incompatible with the LGPL.
      One example would be copyleft licenses a la GPL ("you must put your complete code under this license") but with a clause incompatible with the LGPL (so you cannot put the LGPLed part under this license).

      Another rather trivial example would be a license explicitly stating that the code may not be combined with LGPLed code. Or a license which demands that only statically linked executables generated from that source may be distributed.

      --
      The Tao of math: The numbers you can count are not the real numbers.
    7. Re:Because it's Lisp. by gknoy · · Score: 1

      I feel the exact opposite. My 'first' language was Pascal, but I hated it; when I got to university, my first course was in Scheme, and then later courses were in Java/etc. I've since done a lot of coding in Perl, Java, and in a crippled Lisp variant. There are still things that make me glad I learned Scheme.

      The biggest one was destroying any fear of recursion. Often a recursive function is easier to write, test, and read than a logically-equivalent iterative process. (Sometimes it's decidedly NOT, of course.) So, when I think about a problem, I feel fine with using a recursive solution if it fits -- something some coworkers or friends are less eager to do.

      I also like that a functional background seems to have helped me try to build things in smaller pieces, which often seems to make testing easier. It's possible that I could have learned this in another language, but seeing the code my co-students wrote (a decade ago) seems to counter that thought.

      Lisp (Scheme, etc) may not be the language for you, but I feel that learning it has helped me grow in many ways as a programmer.

    8. Re:Because it's Lisp. by swan5566 · · Score: 1

      I would say that removing any fear of recursion or any other coding technique should not depend on the language taught. Otherwise, that's a fault in the educational system. My experience in stepping into the real world summed up to having all the academic credentials under my belt with experience in (functional) languages that no one cares about. I had a tiny bit of academic experience in java and some in C, but that's it. This literally cost me at least one position when applying for jobs - not having enough experience in "real-world" languages (specifically C++ in that case). They actually told me this when I asked why I was passed over for being hired. It was very frustrating, but eye-opening as well as far as how well academia prepares their students for a career. The first two weeks of my current job was a crash-course in C++. Academia has a tendency to raise their noses at things like this, but it's academia that's out of touch with the outside world, and not the other way around. I know I've heard about industry studies saying as much.

      --
      In debates about Christianity, there are two groups: those looking for answers, and those looking to just ask questions.
  25. Re:LISP? really??? really?? by jockm · · Score: 1

    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 more than syntax. Unless people are willing to port the core libraries and make sure they run well, then Python (or whatever) with a different runtime and libraries isn't going to feel right.

    A far better solution (IMHO) is to do what Java and .NET do and have a common infrastructure for scripting language and then let anything that conforms to it play. So your app has a common API for exposing its internals and entry points, and then scripting can be done in any supported language. It is easier because these are VM languages, but it wouldn't be hard to do for compile languages either. Then we could use the real languages, and not some kind of simulacra...

    --

    What do you know I wrote a novel
  26. Emacs can emulate vi by tepples · · Score: 1

    If you think Emacs lacks a good text editor, install viper-mode.

    1. Re:Emacs can emulate vi by rpresser · · Score: 1

      Yes, let's take a 500 ton bulldozer, tape a fork to the front of it, and use it to eat salad.

    2. Re:Emacs can emulate vi by bjourne · · Score: 1

      The heaviest bulldozer in the world weighs about 130 ton, a far cry from your quoted 500.

    3. Re:Emacs can emulate vi by rpresser · · Score: 1

      That's right. I consider Emacs to be more unwieldy than the heaviest bulldozer in the world.

    4. Re:Emacs can emulate vi by Anonymous Coward · · Score: 0

      I'll raise you a backhoe

    5. Re:Emacs can emulate vi by The_Wilschon · · Score: 1

      I might do that, if it could emulate vim.

      --
      SIGSEGV caught, terminating

      wait... not that kind of sig.
  27. Re:Guiwhat? by fuzzyfuzzyfungus · · Score: 2

    In the rather unixy context in which GNU software tends to operate(historically, yes, there is the strong lisp-derived strain; most prominently holding out in Emacs; but today's incarnations generally show up as the userland tools of a unix or unixlike system) the niche for extension languages is arguably even a bit narrower:

    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 address problems in programs that are sufficiently monolithic that you would use the program's internal extension language, rather than hacking together a bash script that stitches together a bunch of common utility programs. In a context where command line users are largely an afterthought, or a workflow situation that makes heavy use of big, monolithic, programs with minimally useful command line invocations, extension languages are the 'glue logic' you get(observe your local Office guru's bludgeoning about of VBscript, or some photo-pro's slightly alarming Photoshop batch processing abilities); but the unix 'flavor' has historically been that the shell, rather than the program extension language, has been the tool of choice for bodging jobs too big to tackle manually but to small to be worth delving into the guts of the programs themselves.

  28. Re:It supports JS yet is "dead and unpopular". How by jockm · · Score: 1

    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

    --

    What do you know I wrote a novel
  29. Re:LISP? really??? really?? by biodata · · Score: 1

    The backend of http://biocyc.org/ is written in lisp AFAIK, and it's an impressive beast, connecting to and managing databases, generating graph images on the fly on the basis of query results and embedding them in lisp-driven web pages and so on, but it's the only lisp-driven heavy duty system I've ever come across.

    --
    Korma: Good
  30. Fad Languages by Anonymous Coward · · Score: 0

    Out of concern that they might choose a language that would eventually die, they chose one that was already dead.

  31. Re:LISP? really??? really?? by JasterBobaMereel · · Score: 1

    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 fledged extension language)

    JavaScript is a mediocre scripting language and a bad extension language
    TCL is similar ...

    If you want a scripting environment (like .NET) where you can use any language, then why not get someone to write an extension (in Guile) that does this, it is more than capable ...

    --
    Puteulanus fenestra mortis
  32. Re:LISP? really??? really?? by rubycodez · · Score: 1

    Actually, there are huge commercial uses of LISP. It is used for scheduling, modeling and rendering, CADD, and business analysis.

    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.

  33. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  34. From the Guile Manual on JavaScript Support by jockm · · Score: 1

    Quoting from the Guile Manual

    ECMAScript was not the first non-Schemey language implemented by Guile, but it was the first implemented for Guile's bytecode compiler. The goal was to support ECMAScript version 3.1, a relatively small language, but the implementor was completely irresponsible and got distracted by other things before finishing the standard library, and even some bits of the syntax. So, ECMAScript does deserve a mention in the manual, but it doesn't deserve an endorsement until its implementation is completed, perhaps by some more responsible hacker.

    In the meantime, the charitable user might investigate such invocations as ,L ecmascript and cat test-suite/tests/ecmascript.test.

    That is hardly a ringing endorsement...

    --

    What do you know I wrote a novel
    1. Re:From the Guile Manual on JavaScript Support by wvmarle · · Score: 1

      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 with the work, instead of receiving such a negative mention in the manual. It's to me not something that would make me say "hey that's interesting, let's have a look and see whether I can help out a bit".

      They should be thankful that at least someone made a serious start with it, and encourage other people to pick it up.

    2. Re:From the Guile Manual on JavaScript Support by jockm · · Score: 1

      Oh I agree, my point was to point out the state of ECMAScript support in Guile. The point was always that Guile could support other languages though language transcompiled into Guiled, or to the Guile Bytecode; but that has not really happened by and large. And the community doesn't seem to have provided much support or encouragement for it. As that entry in the manual clearly indicates

      --

      What do you know I wrote a novel
  35. It's not just the paren, it's the order by Anonymous Coward · · Score: 1

    It's not just the parens, it's the order. Prefix order is only natural sometimes. Take (loop (print (eval (read)))) for example.

    This is just a small example so the parens aren't a bother. What does bother you is that when you think, "how do I implement a REPL?" you don't think of the print before the read or eval. You think of the reading first. In a small example like this it isn't too hard to slow down and see what's happening.

    In larger functions, it's a problem. Finding the "starting point in the maze" becomes a gruesome chore of navigating down a parse tree of parens. It isn't the parens causing the problem though. You'd have the same problem if this were done using some other syntax for a parse tree.

    There are two big patterns in programming: hierarchy and sequence. IMHO, Lisp does a fantastic job representing hierarchy, but a lousy job with sequence.

    1. Re:It's not just the paren, it's the order by LUH+3418 · · Score: 1

      I was writing some Scheme code recently for a personal project... I came to the same conclusion. I wrote alot of the code in a sequential form. That wasn't so bad. Function bodies have an implicit begin and end. It became annoying, however, because Scheme lacks convenient ways of creating local variable declarations without nesting the whole thing into a let form.

      Another issue was the complete lack of a useful standard library. No hash maps, no sorting function. Even the most basic string functions were lacking. If I'm not mistaken, the Scheme spec doesn't even specify a way to get the numerical code for a character... And then the performance of the code I'd written (pretty straightforwardly) was abysmal.

    2. Re:It's not just the paren, it's the order by maxwell+demon · · Score: 1

      It's not just the parens, it's the order. Prefix order is only natural sometimes. Take (loop (print (eval (read)))) for example.

      This is just a small example so the parens aren't a bother. What does bother you is that when you think, "how do I implement a REPL?" you don't think of the print before the read or eval. You think of the reading first. In a small example like this it isn't too hard to slow down and see what's happening.

      In larger functions, it's a problem. Finding the "starting point in the maze" becomes a gruesome chore of navigating down a parse tree of parens. It isn't the parens causing the problem though. You'd have the same problem if this were done using some other syntax for a parse tree.

      There are two big patterns in programming: hierarchy and sequence. IMHO, Lisp does a fantastic job representing hierarchy, but a lousy job with sequence.

      But that one could be solved with just a little bit of syntactic sugar. Just define that (a | b | c) is the equivalent of (c (b (a))). Then you could write your code as (loop (read | eval | print)).

      Another bit of syntactic sugar which would make the code much more readable would be defining the syntax { a; b; c; } as equivalent to (progn (a) (b) (c)) (or whatever Scheme uses for progn). This would make a lot of code look more familiar. Indeed, one could also change the syntax of top-level constructs from (xxx) to xxx;. After all, putting pure variable references into scripts is rather unusual. And for the rare case where it's really wanted, an identity function could be provided, so you could simply write id x; instead.

      Using this, most code would probably look orders of magnitude more familiar, without giving up anything (except possibly to define functions named '{', '|' or ';' which I'd not consider a good idea anyway).

      --
      The Tao of math: The numbers you can count are not the real numbers.
    3. Re:It's not just the paren, it's the order by lahvak · · Score: 1

      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 loop: (loop (print (eval (read))))

      Maybe it is because I am a mathematician and am used to thinking in terms of functions and functional notation, but this seems completely natural to me.

      --
      AccountKiller
    4. Re:It's not just the paren, it's the order by Anonymous Coward · · Score: 1

      Are you trying to be funny and it just doesn't come through online? You're essentially saying that the way to make Lisp an easier read is to transform it into some other language. In other words, don't use Lisp.

      Aside from that, if you did use macros or something to transform your code like this, you'd probably get the same reaction from other Lisp programmers that C guys give to people who do this:

      #define BEGIN {
      #define END }

    5. Re:It's not just the paren, it's the order by skids · · Score: 1

      I prefer read.eval.print.loop to that. More preferably, I would probably want to call attention to the loop, so loop( read.eval.print ) works. I can handle backwards when it makes sense, but I think the flexibility of being able to go in either direction can aid in readability. The problem with the more purest functional languages comes in the hacks involved in mashing multivariate functions and things that just make more sense in procedural syntax into the "One True Form." Too many CS majors come out of school with golden hammers.

    6. Re:It's not just the paren, it's the order by Anonymous Coward · · Score: 0

      Oh man, I guess this just goes to show how many different ways there are to look at things. loop(read.eval.print) doesn't look good to me. I've done most of my programming in C so it looks like you're calling a function named loop on a member of the eval struct, which is a member of the read struct.

      Another guy on this thread suggested using pipes like in shell scripts. That would be better looking to me. The only problem is that bitwise OR is pretty common in C...

    7. Re:It's not just the paren, it's the order by Aighearach · · Score: 1

      It shouldn't seem "completely natural" that you have go backwords when creating the code. Math isn't an excuse. It is an excuse for why you can do it, for why it isn't as hard for you, but it is no excuse for thinking it is good design. When writing such code, should you be writing from bottom to top, right to left? Of course each token is still left to right. To be efficient, you'd need an editor mode that skipped the left of the word after you finish. And moves the cursor up a line when you press enter.

      Sure, as a programmer I could do that. I could deal with much more clunky things than that. It would seem natural to still be able to make the program work. But it would suck.

    8. Re:It's not just the paren, it's the order by metamatic · · Score: 1

      It became annoying, however, because Scheme lacks convenient ways of creating local variable declarations without nesting the whole thing into a let form.

      Most languages lack convenient ways to create local variable declarations without nesting the whole thing in a code block. In fact, JavaScript lacks a convenient way to create local variable declarations without using an anonymous function.

      Another issue was the complete lack of a useful standard library. No hash maps, no sorting function. Even the most basic string functions were lacking. If I'm not mistaken, the Scheme spec doesn't even specify a way to get the numerical code for a character...

      Well, we're talking about Guile here, which has sort functions and regexp string manipulation.

      And then the performance of the code I'd written (pretty straightforwardly) was abysmal.

      Well, it's true that Guile has horrible performance, even compared to other Scheme implementations'; but then, JavaScript had pretty horrible performance until Google and Mozilla started putting serious effort into speeding it up.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    9. Re:It's not just the paren, it's the order by LUH+3418 · · Score: 1

      >> Most languages lack convenient ways to create local variable declarations without nesting the whole thing in a code block. In fact, JavaScript lacks a convenient way to create local variable declarations without using an anonymous function.

      What I meant is that in JS you can declare a new variable at any point in a function by writing "var foo = ...". In Scheme, the only way to do that without a let block is to write a bunch of defines at the beginning of a function, and initialize them to some bogus value, so that you can redefine them later. It's a small detail, but it already gets in the way of imperative programming a little.

      >> Well, it's true that Guile has horrible performance [utah.edu], even compared to other Scheme implementations'; but then, JavaScript had pretty horrible performance until Google and Mozilla started putting serious effort into speeding it up.

      I'm working on dynamic language optimization for my Ph.D. thesis (of JavaScript, more specifically). I can tell you that alot of the same techniques could be applied to Scheme and other LISPs. One unfortunate issue is that the functional community has been rather disconnected from the imperative programming world, and they seem to be unaware of much of the optimization techniques developed in the world of SELF, etc.. That, or nobody in the LISP world bothered to really put the work into a proper optimizing JIT.

    10. Re:It's not just the paren, it's the order by skids · · Score: 1

      Well, in heavy OO parlance it makes perfect sense: I'm calling the print method of the object returned by the eval method of the object returned by the read method, each method being a member of the class of the object (either directly, or through inheritance/autobox from a base class)

      You might want to get used to it, as it's not that uncommon a syntax.

    11. Re:It's not just the paren, it's the order by maxwell+demon · · Score: 1

      Are you trying to be funny and it just doesn't come through online? You're essentially saying that the way to make Lisp an easier read is to transform it into some other language. In other words, don't use Lisp.

      I'm saying, make a language which is mostly Lisp (i.e. has all the good features), but has syntactic sugar to make it more readable.
      It's not "don't use Lisp" because all the mechanics would still be there. You still could use all of the features, including code transformations at run time. It would still be Lisp, just with a different syntax. It's not the syntax which makes Lisp special.

      As of the reaction from Lisp programmers: Just call your Lisp + syntactic sugar with another name. Then if someone tells you "that isn't Lisp" just because of the syntax, you can answer "But it is Liwisys" (or whatever you choose to call the language).

      --
      The Tao of math: The numbers you can count are not the real numbers.
    12. Re:It's not just the paren, it's the order by metamatic · · Score: 1

      What I meant is that in JS you can declare a new variable at any point in a function by writing "var foo = ...".

      That's true, but the variable still has function scope no matter where it's declared, so it's generally considered bad style. JSLint will flag it as an error, for example.

      In Scheme, the only way to do that without a let block is to write a bunch of defines at the beginning of a function, and initialize them to some bogus value, so that you can redefine them later.

      If you actively want function scoping then you and I are going to have very different ideas about what constitutes a good programming language. I'd say that you're probably in the minority on this one as well; C, C++, Java, Ruby, Python, none of them have function scope.

      That, or nobody in the LISP world bothered to really put the work into a proper optimizing JIT.

      Well, there are a bunch of Lisp and Scheme variants that target the JVM, such as ABCL. But yeah, until recently the speedy Lisps have been CMUCL and SBCL, which compile to native code rather than using a JIT in the VM. I think that's because it's pretty recent that VMs using JIT have started to be viewed as offering acceptable performance. (And on Slashdot, you'll still find a lot of people who dispute even that, and still believe in static native compilation as the only way to get fast code.)

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    13. Re:It's not just the paren, it's the order by LUH+3418 · · Score: 1

      >> If you actively want function scoping then you and I are going to have very different ideas about what constitutes a good programming language. I'd say that you're probably in the minority on this one as well; C, C++, Java, Ruby, Python, none of them have function scope.

      I think you misunderstood me. I don't think it's a good idea for blocks not to have their own scope. However, in C++, as in JavaScript, it's not a problem to declare variables at any point within a function (e.g: in the middle of the function body). I much prefer to declare variables when I need them rather than being forced to predeclare them at the top of the current block. Essentially, I with that, in Scheme, you could write a define anywhere in a function, and it would add a new variable to the current scope. I wouldn't be foolish enough to suggest removing the let forms, and the scoping would still be static.

      >> Well, there are a bunch of Lisp and Scheme variants that target the JVM, such as ABCL. But yeah, until recently the speedy Lisps have been CMUCL and SBCL, which compile to native code rather than using a JIT in the VM. I think that's because it's pretty recent that VMs using JIT have started to be viewed as offering acceptable performance. (And on Slashdot, you'll still find a lot of people who dispute even that, and still believe in static native compilation as the only way to get fast code.)

      I know that the JVM has been trying to add features to make it more suitable for dynamic languages, but I still don't believe it is. To get high performance, you need to be able to do code patching, on-stack replacement, run-time code generation and other low-level tricks that the JVM will never allow. I think that the best for LISP-like languages would be to use a JIT that compiles to machine code. What Chrome and Firefox does for JavaScript would be impossible with an ahead of time compiler.

    14. Re:It's not just the paren, it's the order by metamatic · · Score: 1

      I think you misunderstood me. I don't think it's a good idea for blocks not to have their own scope. However, in C++, as in JavaScript, it's not a problem to declare variables at any point within a function (e.g: in the middle of the function body).

      No, it is a problem, because declared variables have block scope. That is, { int c = 3; int x = 4; ... } is exactly the same as (let* ((c 3) (x 4)) ...). If you declare a variable deep inside a bunch of loops in C, it won't be visible outside those loops, even if you're still within the same function. So Scheme is really not that different from Java or C in this respect. Yes, it is different from JavaScript, but JavaScript's behavior is largely considered a misfeature.

      I much prefer to declare variables when I need them rather than being forced to predeclare them at the top of the current block.

      I much prefer to declare variables so that they have as small a scope as possible, rather than having them leak out to the rest of a function even though they're only used inside a single for loop.

      Essentially, I with that, in Scheme, you could write a define anywhere in a function, and it would add a new variable to the current scope.

      Well, essentially you can, so long as you put the rest of the code that needs to use that variable inside the let block. So in practice, lexical scope doesn't need to result in all the variables being declared at the top of the function; only the ones you need to access throughout the function. In my Java code, typically the only variable declared at the top of a method is one called 'result' that will contain the value to pass back to the caller when the return statement on the last line is executed.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    15. Re:It's not just the paren, it's the order by obarel · · Score: 1

      It's as natural as "the dog the man the fly bit shot died".

      The dog.
      Which dog? the dog the man...
      Which man? the man the fly bit...
      Ok, what did the man do? He shot.
      And what happened to the dog? It died.

      Simple and natural.

    16. Re:It's not just the paren, it's the order by Anonymous Coward · · Score: 0

      Ruby programmer perhaps? Isn't the fact that every object has every method (and can dynamicly add methods at runtime) part of the reason why Ruby is slow? If that's what you mean by "heavy OO" then I have no intention of "getting used to it".

      Note, I don't have a problem with things being that dynamic when I need them to be. It's just that it's annoying that the whole language slows down so that I have the ability to do things like 2.serve. It's a number, dammit. You can add, subtract, multiply with it, etc; but for cryin' out loud I don't need to serve web pages from a number.

    17. Re:It's not just the paren, it's the order by Eric+Green · · Score: 2

      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 makes it impossible to compile and optimize, Bernie Greenberg and David A. Moon certainly proved that.

      That said, I'm of the opinion that the age of extension languages embedded into applications is over. The extension language paradigm explicitly limits the extension language to manipulating a single application, when what we have open on our modern desktop is dozens of applications and we'd like to create something new from all of them. What is needed, instead, is a universal interface exported by applications to use to script applications. Think Windows PowerShell rather than Emacs Lisp -- the shell lives outside the application and calls a defined application API to perform actions. SOAP/XML-RPC/REST are far more important to the future of scriptability than some archaic concept from the 1960s and 1970's, if I implement one of those interfaces to the core functionality of my application I can write my extensions in *anything* -- Perl, Java, Python, you name it. The problem of course is that SOAP/XML-RPC/REST are also horrendously inefficient, surely we can do better than marshalling and demarshalling everything to/from XML or JSON. Still, I present this as a conceptual thought -- though I might point out that the Amiga *almost* managed something similar with AREXX (theoretically it was possible to use the "AREXX port" to control Amiga applications from other scripting languages, though it was rarely done).

      --
      Send mail here if you want to reach me.
    18. Re:It's not just the paren, it's the order by anonymov · · Score: 1

      Errr, no, first, it has nothing to do with LISP - in C-like syntax it would be loop(print(eval(read()))) ,- and second, it's perfectly natural and maps directly to the language.

      See, if you were to describe what is a REPL to someone, you'd say "It's a loop that prints the result of evaluating string read from input stream".

      P.S.: And Read-Eval-Print-Loop maps to more imperative(-ish) version:

      loop:
          x = read();
          y = eval(x);
          print(y);
          goto loop;

    19. Re:It's not just the paren, it's the order by anonymov · · Score: 1

      It doesn't.

      In heavy OO parlance it would be at most something like { Interpreter.eval(StdIn.read).print }.loop

    20. Re:It's not just the paren, it's the order by lahvak · · Score: 1

      { Interpreter.eval(StdIn.read).print }.loop

      Shudder. I will take Lisp over that any time.

      --
      AccountKiller
    21. Re:It's not just the paren, it's the order by silentcoder · · Score: 1

      "What I meant is that in JS you can declare a new variable at any point in a function by writing "var foo = ...". In Scheme, the only way to do that without a let block is to write a bunch of defines at the beginning of a function, and initialize them to some bogus value, so that you can redefine them later. It's a small detail, but it already gets in the way of imperative programming a little. "

      This is not limited to list derived languages though. A certain school of thought in the 80's held that only a horribly bad programmer doesn't know all the variables he will need before he writes the first line of code. Well designed programs could be recognized by the programmer knowing upfront exactly what variables he'll need, and enforcing this was seen as a way to enforce better code.
      This is why pascal had those horrible long Type, Var and Const sections at the top of the code. Pascal didn't even allow locally scoped variables for procedures until about the second or third iteration of the language.

      --
      Unicode killed the ASCII-art *
    22. Re:It's not just the paren, it's the order by Unknown+Lamer · · Score: 1

      And then the performance of the code I'd written (pretty straightforwardly) was abysmal.

      Well, it's true that Guile has horrible performance, even compared to other Scheme implementations'; but then, JavaScript had pretty horrible performance until Google and Mozilla started putting serious effort into speeding it up.

      That is using Guile 1.8.x; Guile 2.0 features a brand new VM that performs much better (IIRC, beating Chicken in some cases).

      --

      HAL 7000, fewer features than the HAL 9000, but just as homicidal!
    23. Re:It's not just the paren, it's the order by LUH+3418 · · Score: 1

      I love to declare as I go and make early returns. I think it makes code more readable. The declarations appear when they become relevant, and the code doesn't have a billion indentation levels. You know the answer now? Return it now.

    24. Re:It's not just the paren, it's the order by silentcoder · · Score: 1

      So do I, and most programmers today - but back in the late 70's and 80's this was seen as bad style by most academics (remember the 80's was when Pascal was THE language you learned first at university to teach you how to write good code with)
      Languages derived from that era's thinking still maintain this. Meantime the hacker's circled around languages like C for their raw power and ability to create elegant yet rapidly built well... hacks without the academic constraints of languages like Pascal. Notably without the "every line designed before the first line is written" design.

      Old-school hackers used to call them "bondage and discipline languages"

      --
      Unicode killed the ASCII-art *
  36. Re:No Sarcasm: Do People Care? by rubycodez · · Score: 1

    There probably are more than a thousand developers who would like a better extension language, though a LISPy one certainly would not be it

  37. SSF Guile by jbeaupre · · Score: 1

    Hey, Street Fighter matters! It just does. Now I wouldn't go with Guile necessarily, but he's good. Blanka was my preferred fighter.

    --
    The world is made by those who show up for the job.
  38. Yes, but it's clean and elegant by Anonymous Coward · · Score: 1

    From the Guile webpage:

    Guile is an interpreter and compiler for the Scheme programming language, a clean and elegant dialect of Lisp.

    OK, if I see a bunch of Lisps walking down the street, I'll be able the recognize Guile as the one wearing spats and carrying a walking stick.

    Would somebody please tell me why we keep resorting to these ridiculously nondescript descriptions.

    1. Re:Yes, but it's clean and elegant by osu-neko · · Score: 1

      From the Guile webpage:

      Guile is an interpreter and compiler for the Scheme programming language, a clean and elegant dialect of Lisp.

      OK, if I see a bunch of Lisps walking down the street, I'll be able the recognize Guile as the one wearing spats and carrying a walking stick.

      Would somebody please tell me why we keep resorting to these ridiculously nondescript descriptions.

      Because if you see a bunch of Lisps walking down the street, it will, in fact, be extremely difficult to tell them apart without extremely close and detailed examination. A one sentence description cannot possibly be descript enough if that's your criteria. The point of the sentence you're quoting is not to allow you to spot Guile in the crowd of Lisps, it's supposed to let you know, if you were unfamiliar with what Guile was to begin with (which is the target audience for such an opening sentence), that if you saw it in a crowd of Lisps, you wouldn't be able to easily pick it out. For it to somehow highlight a distinction would run counter to the whole point the sentence is attempting to convey.

      --
      "Convictions are more dangerous enemies of truth than lies."
    2. Re:Yes, but it's clean and elegant by oreaq · · Score: 1

      Guile is an interpreter and compiler for the Scheme programming language, a clean and elegant dialect of Lisp.
      Would somebody please tell me why we keep resorting to these ridiculously nondescript descriptions.

      "We" don't do that. "Clean" means that the scheme language is well defined (see RnRS) and the number of fully compliant Scheme implementations proofs that specifiaction is complete and not subject to interpretation. "Elegant" is used in the classical engineering interpretation of that word: "Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away." Scheme is a minimal subset of Lisp; it contains just enough to build a common lisp implementation on top of it in a pretty straight forward way.

  39. Re:Guiwhat? by Anrego · · Score: 2

    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 ..

  40. Scoping? Scoping?? by Anonymous Coward · · Score: 0

    I like scheme, I really do. But to point to javascript's dynamic scoping as an issue is bizarre. There are advantages to the lexical scoping that scheme uses, but there are drawbacks too. Scoping models seem to be ultimately a matter of taste, not a criteria for what makes a language good.

  41. Re:LISP? really??? really?? by Anonymous Coward · · Score: 0

    Great job! You found *an* example of lisp in real-world use. Tens of thousands of applications in the world (probably more), and you managed to indeed find a real-world application that uses lisp.

  42. Re:LISP? really??? really?? by SteeldrivingJon · · Score: 1

    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.

    --
    September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
  43. Re:It supports JS yet is "dead and unpopular". How by 3dr · · Score: 1

    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.

  44. Re:LISP? really??? really?? by flink · · Score: 1

    Sun's eGate Integrator platform (a predecessor to JCAPS) used a LISP derived language called Monk as a scripting language. Of course, it's been phased out in recent versions :P

  45. TCL is dead? by Anonymous Coward · · Score: 0

    Somebody should let these guys know so they can stop wasting their time:

    http://www.tcl.tk/

  46. 3. Clear communication by Anonymous Coward · · Score: 0

    You're missing one: clear communication of the purpose. I read the summary and couldn't work out what Guile was supposed to extend. Is it supposed to let me add non-POSIX extensions to the GNU POSIX tools? Add non-standard features to GCC? The blog post doesn't talk about any of that either.

    When I really think about it I remember that GIMP supports scripting with Scheme, and GIMP plugins is an area which does have potential (albeit saturation is an issue - it's easy to write filters in other languages and chain them into a workflow). But if the people discussing this aren't clearly communicating the use cases no-one's going to care which language they choose.

  47. From the inventor of TCL by Anonymous Coward · · Score: 0

    Language designers love to argue about why this language or that language
    *must* be better or worse a priori, but none of these arguments really
    matter a lot. Ultimately all language issues get settled when users vote
    with their feet. If Tcl makes people more productive then they will use
    it; when some other language comes along that is better (or if it is
    here already), then people will switch to that language. This is The
    Law, and it is good. The Law says to me that Scheme (or any other Lisp
    dialect) is probably not the "right" language: too many people have
    voted with their feet over the last 30 years. I encourage all Tcl
    dis-believers to produce the "right" language(s), make them publically
    available, and let them be judged according to The Law.

    1. Re:From the inventor of TCL by hardaker · · Score: 1

      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. I productively walked much faster away from it than most other languages.

      --
      The next site to slashdot will be ready soon, but subscribers can beat the rush and start slashdotting it early!
  48. Easier to read, harder to get right. by Anonymous Coward · · Score: 0

    Why else do we have BODMAS in our maths class?

  49. JavaScript is weird, too by alispguru · · Score: 2

    Compared to the mainstream of Java/C++, JavaScript's prototype-based OO 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.

    --

    To a Lisp hacker, XML is S-expressions in drag.
    1. Re:JavaScript is weird, too by Aighearach · · Score: 2

      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 is, we can provide our own. Trivially.

    2. Re:JavaScript is weird, too by lennier · · Score: 1

      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 is, we can provide our own zero-day buffer overflow exploits. Trivially.

      Fixed by Lulzsec!

      --
      You are not a brain: http://books.google.com/books?id=2oV61CeDx-YC
  50. Look, matey, I know a dead parrot when I see one, by bobs666 · · Score: 1

    I think we should just ask Larry for an embeddable perl script library. I mean if it's not Perl Its Just not Perl.

    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 point. But Perl script over Tcl, if there was such a thing.

  51. Tcl isnt dead by Anonymous Coward · · Score: 0

    It just made its way into NaCL.

    Expect to see more of it.

  52. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  53. I'll get slammed for this, but... by Taty'sEyes · · Score: 2

    They didn't choose Tcl because that would have required making a decision. The whole GNU community is plagued by indecision or "we can't do it this way because it's not perfect". So after 30 years, no kernel. Hell RMS will be dead before they release hurd one dot zero. Even a herd needs a leader.

    --
    We show geeks how to get their dream girl at EyesOfOdessa.com
  54. Re:Guiwhat? by i_ate_god · · Score: 1

    I thought this was the whole point of Lua.

    --
    I'm god, but it's a bit of a drag really...
  55. Re:No one seems to care by halivar · · Score: 1

    Also, tools are lang-- err, relig--, err... I got nuthin'.

  56. Re:LISP? really??? really?? by Anonymous Coward · · Score: 0

    Lisp is used for a whole bunch of things in highly complicated current fields. Like aircraft ticket booking, stock trading, and missile defence:

    http://www.franz.com/success/

    http://www.lispworks.com/success-stories/

  57. Languages for stable Software by prefec2 · · Score: 1

    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 to write a lot of code. However, each construct leads to unsafe code when you are not constraining yourself with coding conventions. In combination they result in pure horror as you cannot see what really happens, you need to execute it.

    A functional language like scheme or lisp can be much safer as they do not have state. Even though they might be more difficult to master. For UI concerns the language should be split in three.
    a) Field evaluation
    b) Triggers/actions meaning: sending requests and getting answers. You could even restrict reactions by specifying protocols. e.g.:
    send getCityList(searchTerm) {
          on ListOfCityNames do some-dom-modification
          default do some-other-dom-modification
    }
    c) DOM modifications triggered by answers or other incoming messages

    The same applies to GNU applications. A specialized language for these applications or at least a functional language using an application as a framework and source for an internal DSL is a good thing. And therefore Guile is a good thing. However, many people do their stuff in other languages which are unsafe and danger and which have a fucked up grammar, but it is what they can. So they won't switch to a ((())) language, which produces a lot of headaches due to the ((())) stuff.

  58. Gambit by hendrikboom · · Score: 1

    Then there's Gambit, a Scheme implementation that compiles Scheme to C. Instant C compatibility!

    http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Main_Page

    -- hendrik

  59. NIHS by OrangeTide · · Score: 1

    Not Invented Here Syndrome is why they didn't use Tcl either (which is still being actively developed). Why would switching to Lua be politically any easier for GNU than Tcl?

    --
    “Common sense is not so common.” — Voltaire
    1. Re:NIHS by metamatic · · 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.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    2. Re:NIHS by betterunixthanunix · · Score: 1

      They didn't switch to Tcl because at the time, Tcl was not nearly powerful enough for what GNU wants their extension language to do. Tcl is an OK scripting language, but the GNU team wants an extension language that can reasonably be used to implement other languages (e.g. Prolog-in-Lisp), so that people are not limited to just your extension language (or to implementing an interpreter that runs in an interpreter; in lisp it is common to use macros and closures to enable the syntax of other languages to be used in a lisp program), and which makes it easy for an entire system to be built up using the extension language (e.g. Emacs). Lisp was not the other choice, and I would say that other systems have demonstrated that the core + large extensions codebase does not require everything that Guile promised (think of Matlab here), but to claim that Tcl was reject just because it was not written by GNU is just nonsense. The GNU team has implemented interpreters for numerous other languages that were rejected as the extension language.

      --
      Palm trees and 8
    3. Re:NIHS by Darinbob · · Score: 2

      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 and Prologue in C and then just compile that into your application and you're done. If you're an extension language then there are certain things that should be the priority in the design: such as being smaller than the application it extends.

      Lua I think does quite a lot of this absolutely right. It's extremely small, and is used even in embedded systems, but useful enough for giant applications. It is easy to adapt an existing application to using Lua even if it wasn't designed to have an extension language; lua can call your functions, your functions can all lua, you don't have to use or be a slave to lua's main processing loop, etc. The fact that Lua is an extremely powerful programming language in itself is a side effect of trying to keep the language simple and it wasn't the goal of the Lua design. The reason Guile is a ugly is because it's trying too hard to be a powerful programming language as its main goal and has no goal of being small and simple.

    4. Re:NIHS by BitZtream · · Score: 1

      but the GNU team wants an extension language that can reasonably be used to implement other languages

      If thats true, then someone is a fucking moron, to put it bluntly. Might as well pick C as your extension language than and stop trying to make an extension language (which should be extremely lightweight and someone limited due to that) that can compile anything to native code on every platform.

      I'd say if that statement were true, whoever made it simply doesn't know anything about software development.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    5. Re:NIHS by 10101001+10101001 · · Score: 2

      Well, let's see. Gnu Guile is a Scheme interpreter. Scheme is a functional language--although most implementations, and I assume Guile is one of them, aren't pure functional--which implies a lot of nice features, possibly including heavily parallelism, ready portability and modifiability of functions while the program/scrip is running, and a design that lends itself to support of garbage collection and protection from all sorts of security issues. C lacks about every part of that in exchange for more raw access and a design that's more vulnerable to potential bugs/abuse by others--admittedly a large part of that is an implementation detail, but it's a very consistent implementation detail.

      As for the whole point of implementing languages in other languages, that's an inherent part of most any language you're likely to see. It's just that Lisp/Scheme (and almost certainly a few other languages) can do it more readily as an inherent part of the language. If there's one lesson I was actually taught is that sometimes the best choice in designing something is to make a sublanguage specific for a task instead of hand-coding everything down. Since the whole point of GNU Guile was to be that generic sublanguage for most such tasks, it'd make sense they'd further want GNU Guile to further support the development of a subsublanguage when GNU Guile was just too generic for some tasks. In essense, if a Lua-like language was better for some things, just make a small Lua-like macro overlay and write in the Lua-like language. That's probably a lot better than trying to hack Lua, Python, or whatever into all the GNU-specific things one needs. Of course, that assumes enough knowledge about Lisp/Scheme to whip up the few macros needed, and I think that's the real crux of the issue.

      --
      Eurohacker European paranoia, gun rights, and h
    6. Re:NIHS by betterunixthanunix · · Score: 1

      After all you can implement Lua and Prologue in C and then just compile that into your application and you're done.

      Except that in Scheme, it is common to use a set of macros to implement another language's syntax within Scheme, so that you are just using the Scheme interpreter to interpret the other language. Prolog-in-Lisp is probably the most well known example of this sort of thing, although I have seen other things: Common-Lisp-in-Scheme, Scheme-in-Common-Lisp, Forth-in-Lisp, etc. In C, you wind up writing another interpreter; to get a mix of both C and the second language you are implementing, that interpreter would also have to understand C syntax (or do something like translate between languages).

      If you're an extension language then there are certain things that should be the priority in the design: such as being smaller than the application it extends.

      Which is why Scheme was chosen, rather than something like Common Lisp.

      The reason Guile is a ugly

      Who said Guile is ugly?

      it's trying too hard to be a powerful programming language as its main goal and has no goal of being small and simple.

      Guile implements Scheme; if you think Scheme is not simple enough, you must have never seen Common Lisp. Additionally, extension languages should be full-features programming languages in their own right; look at things like LaTeX or Emacs. The point of an extension language is to allow users to implement features that the original programmers had not envisioned, not just to write some simple command macros.

      --
      Palm trees and 8
    7. Re:NIHS by Darinbob · · Score: 1

      I've seen Scheme-in-one-defun. I've seen Guile. These are very different things. Guile has has a very large number of files. Of course many of these may be library functions that are never used. That may be a side effect of being FSF code, in that they love shoving everything in and supporting that instead of making a clean break between "here's our small tiny interpreter" and "here are all the extras and libraries and test scripts and build scripts and support files and user contributions and a cool icon we found."

      Compare the size of a Guild distribution with the size of Lua.

    8. Re:NIHS by AuMatar · · Score: 1

      It's worse than that. I remember about 5 or 6 years ago reading about HURD. They were trying to get people to use it, but one of the bugs was it didn't support a disc bigger than 4 GB. Why 4 GB? Because they mem mapped the disks, and that was the size of a 32 bit pointer (I did say this was a few years ago). Rather than fixing their bad design, they decided to gimp their OS instead.

      That's the real problem with GNU these days. They care about abstract CS philosophy points more than practical working code. In this case, they have someone with a hardon for functional languages, without paying attention to the fact that nobody outside of academia uses functional languages, and that no functional language has ever been a success, rather than using one of a dozen common scripting languages.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    9. Re:NIHS by AuMatar · · Score: 1

      And this is why scheme fails. It's so la king that even people who *want* to use it instead decide to use it to emulate better languages.

      Just use a real language with actual users instead. Functional languages are dead, deal with it.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    10. Re:NIHS by OrangeTide · · Score: 1

      awesome that you dug up some language wars hyperbole from 1994.

      --
      “Common sense is not so common.” — Voltaire
    11. Re:NIHS by silentcoder · · Score: 1

      >TCL ... which is still being actively developed

      Wow... you almost managed to make that sound like a GOOD thing...

      Please, TCL is a disaster. Then again I once had the misfortune of writing a TCL interpreter library to be used as an extension language by programs writen in freepascal (and since it supported TK as a GUI language). Suffice to say... I would never want to again.

      To those poor slobs still stuck in delphi/Object Pascal coding... praise Wirth and the Gods of procedural programming for at least handing you pascalscript since those days !

      --
      Unicode killed the ASCII-art *
    12. Re:NIHS by silentcoder · · Score: 1

      >Who said Guile is ugly?
      General Bison ?

      Oh wait, I got it ! An anagram writer who can't spell !

      What ? We're not playing scattergories ?

      --
      Unicode killed the ASCII-art *
    13. Re:NIHS by dkf · · Score: 1

      Then again I once had the misfortune of writing a TCL interpreter library to be used as an extension language by programs writen in freepascal (and since it supported TK as a GUI language).

      Why would you reimplement it? That's quite a lot of work (much more so if you wish to produce a performant implementation). Your library should have just provided a mechanism to bridge both ways between the standard language implementation and the freepascal world; less work, easier to make correct.

      The same holds true for integrating with any other scripting language.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    14. Re:NIHS by silentcoder · · Score: 1

      >Why would you reimplement it? That's quite a lot of work (much more so if you wish to produce a performant implementation). Your library should have just provided a mechanism to bridge both ways between the standard language implementation and the freepascal world; less work, easier to make correct.

      Because back then freepascal had no means to link to C-libraries. It gained that ability not very long after but this was back when FPC tself was still a very, very new project. I also didn't say it was the entire TCL being reinterpreted, it was a wrapper library that allowed you to embed TCL/TK code inside freepascal programs or execute them dynamically at runtime and communicate with them (so it was ALSO an extension mechanism).
      Years ago I wrote some interesting stuff with it. These days even if I had the same task I would likely have approached it differently. I didn't have the experience I have now when I was 19 years old.

      --
      Unicode killed the ASCII-art *
    15. Re:NIHS by metamatic · · Score: 1

      1994 is when they decided not to use Tcl, so that's the date on the rationale. When would you like them to have made the decision?

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    16. Re:NIHS by OrangeTide · · Score: 1

      so you didn't read Stallman's post?

      --
      “Common sense is not so common.” — Voltaire
    17. Re:NIHS by oursland · · Score: 1

      Your Scheme-in-one-defun, did is support a standard such as R5RS or R6RS? If not, then you're not making a fair comparison between it and Guile. There are valid reasons for that extra code, not just because the FSF adds needless code to every project.

  60. Re:LISP? really??? really?? by Anonymous Coward · · Score: 0

    If your CS program at a university didn't teach at least a full class using LISP, you should ask for a refund, because it was a terrible CS program.

  61. Macros vs functions? by Anonymous Coward · · Score: 0

    Not having much experience in LISP or Scheme, can someone explain the effective difference between a macro in a parenthetical language(as the article describes) and a function in a structural language?

    In other words, Mr. Wingo asserts that Scheme's macros allow it to implement 'match' functionality(as an example) - don't Javascript's functions allow it to do the same? And don't libraries like jQuery and ExtJS "extend" Javascript in the same way that Andy claims would only be [possible/easy/etc] in Scheme?

    1. Re:Macros vs functions? by Anonymous Coward · · Score: 0

      Not having much experience in LISP or Scheme, can someone explain the effective difference between a macro in a parenthetical language(as the article describes) and a function in a structural language?

      In other words, Mr. Wingo asserts that Scheme's macros allow it to implement 'match' functionality(as an example) - don't Javascript's functions allow it to do the same? And don't libraries like jQuery and ExtJS "extend" Javascript in the same way that Andy claims would only be [possible/easy/etc] in Scheme?

      Macros in lisp-like languages are for all intents and purposes code generators. They operate directly on the abstract syntax tree representation of the language. Macros in C or C++ don't work this way. They are not code generators and they sure as hell are oblivous to the syntactic structure of the program. They are merely do string substitution. On the other hand template metaprogramming in c++ gives you something more or less (a lot less actually) than lisp macros. But then c++ doesn't have a proper infrastructure for doing metaprogramming, that's why you have to literaly sodomize the language to achieve at enornous expense what lisp programmers do easily.

      You have to think like this : lisp is not a language, it is an infrastructure for defining languages.
      No other Algol-like language gives you this kind of versatility. And those that try fail (cfr template metaprogramming in c++ as an example of why).

  62. Userbase is what matters, not features by happybob · · Score: 1

    The key thing about an extension language is NOT it's adaptability over time. The key thing is that it works as a tool for the people who might want to write extensions to applications. As a general rule, the extension developers won't be the full-time developers of the applications. Instead, they're going to be the slightly-more-technically-adept users of the applications.

    If you want extensions to be developed, then you need to remove barriers to entry for those people. And probably the most important barrier is time. And it takes time to learn a new language sufficiently well to do useful things with it. Therefore, the sensible choice is to pick a language that is broadly known by the sorts of people who would be likely to want to develop an extension. The next best thing is to pick a language that is really easy for those people to learn (by virtue of being similar to other languages that they probably already know).

    Guile fails on both accounts. It may be a fantastically great language, but it lacks the widespread use necessary to be a successful application extension language.

    A better choice would to pick JavaScript and just accept that the language has warts. The language also has users, and that is way more significant.

    --
    -- Beer. It's what's for breakfast.
  63. Why choose? by scorp1us · · Score: 1

    You've got VMs for JS, Python, Java, and all of Mono. Why not just support a generic VM integration?. Python has a tool called sip (thanks to Riverbank) that allows Python to use C++ objects, creating wrappers. Why not take a similar approach for other languages? Even if you do something horribly abstracted as a native REST client server with language bindings, you'll completely work around any deprecation issues.

    --
    Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    1. Re:Why choose? by shutdown+-p+now · · Score: 1

      That's what Parrot tried to do.

      The problem is that VMs tend to be optimized for the languages they support. Even if you have something that is explicitly designed to cover many languages, like CLR, it's still better suited for some and not others.

      More importantly, you can certainly come up with a VM that can be targeted by any language, if it is sufficiently low-level - e.g. if you take LLVM bitcode, or CLR sans its object model. But then you don't have any common ground for languages targeting your VM to interoperate, other than perhaps C FFI - which looks very unnatural in object-oriented or dynamically typed languages.

  64. Which GNU software uses Guile by lahvak · · Score: 1

    as an extension language? Emacs uses Lisp, GIMP uses some dialect or Scheme, but AFAIK it is not Guile, I know that there is a window manager that uses Guile, but I am not sure if it is officially a GNU software. Is there anything else?

    --
    AccountKiller
    1. Re:Which GNU software uses Guile by molo · · Score: 1

      GnuCash.

      -molo

      --
      Using your sig line to advertise for friends is lame.
    2. Re:Which GNU software uses Guile by Anonymous Coward · · Score: 1

      > Is there anything else?

      LilyPond+Denemo, TexMacs. Guile is also used to implement game rules in Gnome Games and preinstalled on every Gnome/Ubuntu default installation.

    3. Re:Which GNU software uses Guile by Anonymous Coward · · Score: 0

      LilyPond and Gnucash are the only mainstream ones, AFAIK.

      I am the LilyPond main author, and GUILE has been a huge PITA. They release stable versions about once every 4 years, so with their wonderful API deprecation scheme, you're stuck with supporting two APIs for 8 years.

      Anyone looking for embedded scripting should use Lua, JavaScript or Python depending on what functionality they need specifically.

    4. Re:Which GNU software uses Guile by lolcutusofbong · · Score: 1

      ELinks uses it, but (at least in some builds) it also has Lua scripting support.

    5. Re:Which GNU software uses Guile by maxwell+demon · · Score: 1

      I know that there is a window manager that uses Guile

      If you are thinking of sawfish (the only Lisp-using window manager I know): It doesn't use guile, but its own LISP dialect.

      --
      The Tao of math: The numbers you can count are not the real numbers.
  65. guile, a syntactic mess by jgotts · · Score: 1

    Forget about "geeks," no programmer wants to use a language that messy. All of the popular programming languages read more or less like English, and that is because we have already learned to read English (or perhaps a similar Western language).

    Why do you think that programming is a lot like writing, and that good code reads like a good novel? Good spellers tend to be good programmers. We're using the same part of the brain.

    Even mathematical expressions read like English. Why? Because of our language bias.

  66. Re:No Sarcasm: Do People Care? by DdJ · · Score: 3, 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.

  67. Executive summary by 93+Escort+Wagon · · Score: 1

    Question: People aren't using Guile, should we switch to something else people will actually use?

    Answer: No, all those people are wrong.

    --
    #DeleteChrome
  68. JavaScript is ECMAScript plus the HTML DOM by tepples · · Score: 1

    In the time it takes someone to interpret what that even means

    If tl;dr, then let me say it shorter: Guile supports a syntax with which JavaScript programmers are already familiar.

    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.

    JavaScript is ECMAScript plus the HTML DOM (document object model). ActionScript is ECMAScript plus static typing plus the Flash DOM. So by definition, people who know JavaScript or ActionScript are already familiar with ECMAScript. Guile lets an application developer expose a DOM to a Scheme or ECMAScript interpreter, which in turn lets anybody familiar with Scheme or ECMAScript script the application.

    1. Re:JavaScript is ECMAScript plus the HTML DOM by shutdown+-p+now · · Score: 1

      JavaScript is ECMAScript plus the HTML DOM (document object model).

      Strictly speaking, JavaScript is Mozilla's dialect of EcmaScript.

  69. Anybody know a good resource to learn EmacsLisp? by he-sk · · Score: 1

    I've been a Vim user for 15 years but discovered orgmode (http://orgmode.org) a year ago and absolutely love it.

    But I've hit the point now where configuring it to match my needs requires me to write some code.

    --
    Free Manning, jail Obama.
  70. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  71. Re:It supports JS yet is "dead and unpopular". How by tepples · · Score: 1

    Because it partially supports JavaScript. not supports it.

    If you start adding Guile support to an application, there is likely to be an update to Guile that adds more complete support for ECMAScript.

    And it doesn't (the last time I looked) provide much of the common JavaScript libraries. Making it a PITA and minefield to use

    How many of "the common JavaScript libraries" depend on there being an HTML document object model in document? I'm under the impression that libraries for manipulating an HTML document wouldn't apply outside a web browser.

  72. the more Lisp changes by epine · · Score: 1

    I've been trying to get the fascination with Lisp for twenty years, and consistently fail. APL was the first high level language I enjoyed using. It was beautiful and ugly at the same time and I found it instructive. As an array language R sucks in a way that APL never did. The beauty of APL lies in its regularity. The mathematical identities are wired so that you rarely code a special case in an elegant formula.

    In either the APL or Lisp case you run into this little difficulty that the human brain has a parsing stack not much bigger than the 8087 coprocessor. Top level programmers are supposed to be different because we can store nine working objects in short term memory instead of five to seven. Maybe the reason only the four sigmas ever liked the Lisp language is that you need an eleven element parenthesis mental stack to get to the point where those damn parentheses aren't the only thing you think about.

    The story I like about this was some HOF baseball player (whom I remember as Mays) tried to become a hitting coach, but had little success. When his charges asked for advice, he suggested "just watch the seams as the pitcher releases the ball; if the seam is here, it's a curveball, if it's there, it's a fastball". Some people have trouble reading the seams in the blink of an eye on a baseball from 60 feet as released at 90 MPH, even your average MLB cleanup hitter. It wasn't a coachable skill, so his advice was useless.

    I suppose we could inject a drug to show the four sigma Lisp programmer what those damn things look like to your one sigma script monkey. Ethanol might work. You should be able to erase three sigmas with one bottle of Jack. When the Lisp person returns to sobriety, the response will most likely be "How can you live!" not "Humanity is unfit for S-expressions!" Intelligence is a weird thing, you get to a certain point, you become so smart you're stupid.

    You think I'm exaggerating?

    From Lisping at JPL

    At one point the software integration engineer was giving his presentation and listing all of the things that were going wrong. Someone (I don't know who) interrupted him and asked if he could change only one thing to make things better what would it be. His answer was: get rid of Lisp.

    The integration manager is clearly in a world of hurt, and somehow the golden child was at the nexus of pain. I perked up waiting for this brilliant JPL Lisp programmer to dig into how this could be. But no. Integration manager is daemon spawn, and we return to the original blind devotion. Yet again, I wander deep into the campfire of the illuminated, and come back having learned nothing. In the Lisp world, ripe for a teaching moment equates to "you don't get it already, clearly you're not one of us".

    For the record, J makes my eyes bleed, but if I put in the work, I'm sure I would learn something. I think what Lisp has to teach me is that fundamentally syntax is a liability and not an asset. Except when it isn't. I got that long ago. When Kurzweil unveils Vitamin Booster Dust, this amazing nugget of truth will suddenly become useful to me.

    You think I'm joking?

    [With Javascript] given the difficulty in changing simple things like making 010 parse as 10 and not 8 indicates that at some point it will stagnate.

    That's a neat compensation. Since we can already guess at the wise things we'll all say after Vitamin Booster Dust hits the store shelves near you, just start saying them already. Or, for bonus points, solve two equations of compensation simultaneously: if we're suddenly that smart, our big mess will be refactored faultlessly in no time, so why are we wasting our time projecting a future that will take care of itself?

    He cites the Javascript with statement for special scorn. Check out the guy with 185 up-votes demonstrating an interesting use case.

    1. Re:the more Lisp changes by Daniel+Phillips · · Score: 1

      I've been trying to get the fascination with Lisp for twenty years, and consistently fail.

      Most folks who have done significant work with Lisp end up getting it, often with significant muttering along the way. Hint: it's not about the parentheses. And it's not about being the right tool for every job.

      --
      Have you got your LWN subscription yet?
  73. It's hard without trying... by Anonymous Coward · · Score: 0

    but Tcl is an even worse language than Lua.

    1. Re:It's hard without trying... by OrangeTide · · Score: 1

      it's a simpler language. And you don't have to be an expert with a stack calculator (HP made the best calculators) to write an extension for Tcl.

      --
      “Common sense is not so common.” — Voltaire
  74. syntax of the integers by epine · · Score: 1

    But wait, there's more.

    I'm sure I'm mentioned this before in a slashdot screed. Long ago, around the time I was first exposed to Lisp, I was reading papers on the philosophy of mathematics, including one I recall as Hilary Putnam on the syntax of the integers.

    As we all know (speaking at least for the fifth row), Dedekind is famous for the line: God made the natural numbers. Everything else is the work of man.

    This is very nearly the only statement about god I believe in, as a Kolmogorovist in good standing. Computer scientists should perk up their ears.

    What Putnam did is introduce two different set theoretic foundations of the integers (which you could think of as dressing the integers up in the syntax of formalism). Both formalisms captured every property of the integers we regard as god-given.

    However, both formalisms introduced other decidable statements that were far from god given. In one formalism, j < k implied j was a subset of k. The set construction looked a bit like tail recursion. In the other formalism, you didn't have all the Russian dolls, so this tautology was not in effect. I recall Putnam was arguing toward the point that no matter what set theory apparatus used to dress up the integers, these irrelevant man-given tautologies spring to life.

    Yes indeed, syntax sucks. Can't live with it, can't live without it.

    1. Re:syntax of the integers by Starker_Kull · · Score: 1

      As we all know (speaking at least for the fifth row), Dedekind is famous for the line: God made the natural numbers. Everything else is the work of man.

      Not to be rude, but Dedekind said nothing of the sort - considering that Dedekind cuts defining the Reals in terms of the Rationals was, well, Dedekind's invention, he obviously felt that there was more to mathematics than Z. Leopold Kronecker was the source of your quote.

  75. Re:Anybody know a good resource to learn EmacsLisp by he-sk · · Score: 1

    Thanks!

    --
    Free Manning, jail Obama.
  76. Re:Guiwhat? by TheRaven64 · · Score: 1

    I generally subscribe to the idea that if something is good, it will become popular all on it's own.

    I'm trying to think of a single instance in the history of computing where quality and popularity have been correlated. Popularity and marketing budget, sure. Popularity and vendor lock-in, absolutely. Cost and quality, quite a few times. Popularity and quality? Give me another few minutes and I may come up with an example.

    --
    I am TheRaven on Soylent News
  77. Twenty Years Later: GNU Still Needs An OS by Anonymous Coward · · Score: 0

    It has been long time since GNU has taunted how they will release their own OS and Linux becomes obsolete.

    How it is going with the Client-Server Architecture? Was the Monolithic architecture for the OS so obsolete after all?

  78. and porcupines are allergic to raisins by epine · · Score: 1

    except that porcupines are allergic to raisins...

    The craggy looking dude is the JPL integration manager. The demilobular fellow is the Lisp programmer in training.

  79. Why not use Scala by Anonymous Coward · · Score: 0

    Its the best language in the world and should be used for everything, no exceptions.

  80. Re:Guiwhat? by BitZtream · · Score: 1

    I'm trying to think of a single instance in the history of computing where quality and popularity have been correlated.

    Every single popular thing on the planet has high quality in the areas that matter to the popular opinion, your definition of quality is not the only one, and arguably its not even the right one according to popular opinion. Which, btw, I trust more than you out of the gate until proven otherwise.

    There are many variables in something that determine is popularity.

    Facebook is a complete and utter pile of shit from a technical perspective as well as a privacy view point, they get it wrong on both accounts far more often than right. If you measure them on these values, facebook is shit ... but the population doesn't give a fuck about privacy or technical cool factor, it works, they get to feel popular themselves for being part of the crowd, and life goes on regardless of how much I think facebook sucks.

    Now prove me wrong, without being subjective.

    --
    Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
  81. Re:No one seems to care by xelah · · Score: 1

    And both are things for which the human brain has a built in propensity but is then paramaterized primarily through early life socialisation.

    So presumably the GNU people's parents babbled at them in scheme when they were toddlers whilst preaching that JavaScript developers will burn in the eternal fire. It's the only logical explanation.

  82. Re:LISP? really??? really?? by Anonymous Coward · · Score: 0

    Google also just acquired ITA and they use Common Lisp extensively.

  83. Re:Guiwhat? by dgatwood · · Score: 1

    I'm trying to think of a single instance in the history of computing where quality and popularity have been correlated.

    On the contrary, it is almost invariably correlated, but only as a threshold value. Below a certain quality level, nothing will be popular. Above that quality level, things have varying degrees of popularity depending primarily on other factors.

    Thus, it is not true that the lack of popularity implies lack of quality, but the converse is true.

    --

    Check out my sci-fi/humor trilogy at PatriotsBooks.

  84. the original syntax of Perl 6 by epine · · Score: 1

    In Science Fiction, a trilogy is a book written in four parts. Once more to the fray.

    Another symptom of failing to get the syntax problem is the premature evaluation of Perl 6. It could yet fail, but it's still too soon to tell. Maybe you can live with syntax after all.

    Perl 6 is also a cultural experiment that couldn't have been tried in earlier decades: what comes next when you have a large pool of greybeards? Obviously, a wonderkind language needs to be out there and evolving before the wonderkind wears off. Most of our languages were either designed by wonderkind, or committees of sober realists (famous paper not yet written: Realism Considered Harmful). Perl 6 asks the question, "After gorging on the Tree-of-Life, what comes next?" One attribute of the Pak Protector is a longer-than-human attention span.

    The vision for Perl 6 is more than simply a rewrite of Perl 5. By separating the parsing from the compilation and the runtime, we're opening the doors for multiple languages to cooperate. You'll be able to write your program in Perl 6, Perl 5, TCL, Python, or any other language for which there is a parser. Interchangable runtime engines let you interpret your bytecode or convert it to something else (e.g., Java, C, or even back to Perl).

    Whether YAVM is worth anything seems to depend on other pieces of the puzzle. The sentiment is noble--that's the worrying part.

    As for line-noisy, Perl 6 will remove or mitigate many of the usual suspects. For example, the majority of the punctuation variables are gone, and the regex syntax has been considerably sanitized. However, much of what Perl's detractors refer to as "line-noise", we prefer to call "the actual syntax of the language". Complaining that Perl is "noisy" is like complaining that English is "wordy": all those confusing pronouns and gerunds and prepositions and conjunctive adverbs, etc. making it hard to read.

    The only thing Lisp ever says about syntax is "you can always change your mind". Syntax is like a woman. You can change your mind, but you might choose not to. Some of the syntax in Perl 5 was clearly the wrong syntax. When Perl decided to upgrade on the domestic front, the self-reflection went a little deeper than Tiger's template: 99 bundles of blonde on the wall ....

    Perl's fundamental philosophy in that area isn't going to change, so Perl 6 will still have a rich grammar in which distinct components are specified using distinctive syntactic forms.

    Perl 6 is aiming to become everything that Lisp isn't. Hardly surprising it's taking a decade or two. Perl 6 is answering the question "what would happen if you embraced syntax with a whole lot of worldly experience under your belt?" This isn't much appealing to a generation of programmers operating under the sentiment that syntax is like flavours of ice cream.

    In the process, Perl 6 has drifted so far away from the careerist rabble, it might die on the vine. However, I think it's an important question: is there room in computer science for a sober rethink?

  85. Bullshit. by bmo · · Score: 1

    >Finally, we have the lifespan issue. If GNU had chosen Tcl because it was popular, we would have a mass of dead code'

    Absolute complete utter bullshit. If GNU picked TCL as a scripting language years ago, it would have gathered more momentum and wouldn't be a dead language today.

    I'd like to see Rexx as an official scripting language, or if you want to go to the other end of the spectrum, Lua.

    And it's still not too late to resurrect TCL.

    --
    BMO

    1. Re:Bullshit. by Anonymous Coward · · Score: 0

      If GNU picked TCL as a scripting language years ago, it would have gathered more momentum and wouldn't be a dead language today.

      Absolutely! Look at all the good it did for Guile!

      Um. Uh.

    2. Re:Bullshit. by dkf · · Score: 1

      And it's still not too late to resurrect TCL.

      Tcl's not dead. There were two releases (patch release of the current production-grade line, and beta release of the development line) over the summer.

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
  86. How about Java by dokebi · · Score: 1

    I know I'll be in -1 land as soon as I submit this, but why not? If popularity and longevity is the concern, I think Java has them covered.

    :Ducks and runs:

    --
    In Soviet Russia, articles before post read *you*!
    1. Re:How about Java by lolcutusofbong · · Score: 1

      The problem is that not every application that needs extensibility can or should have all the memory burden of running a JVM alongside. Take ELinks, for example. I'm pretty sure that I can browse the web on a 386 with ELinks. Adding a JVM to that would be ludicrous, but Lua, Guile, and Tcl are all good choices there (note: elinks does not use Tcl).

  87. Re:It supports JS yet is "dead and unpopular". How by shutdown+-p+now · · Score: 1

    But If I want JavaScript, why would I use Guile, hoping that they'd fix their JS support - eventually? There are many other libraries providing embedded JS today.

  88. Now that is funny. by LWATCDR · · Score: 1

    From your link "But Tcl syntax seems strange to most users."
    Because Scheme is so popular and everyone already uses it and languages like it.
    Really if they where going to reject Tcl because of it's syntax then they should have done the same with Scheme.

    --
    See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
    1. Re:Now that is funny. by Greyfox · · Score: 1

      TCL is no stranger than Javascript. Its obnoxious tendency to not ignore things in comments is much more concerning to me. Javascript, TCL and Lua are not really object oriented, they just pretend to be. Glomming properties into objects like that just makes for a maintenance nightmare. Ruby is object oriented but also allows that sort of thing. Ruby also seems to change language syntax every release, leading to fun things like projects requiring 2-3 different VMs to operate.

      --

      I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  89. Used Guile in a Major Way by obsess5 · · Score: 1

    In 2006, I wrote a not insignificant program in Guile - loved it. Added CORBA bindings to communicate with our other processes. The program calculated derived parameters from various satellite telemetry values (e.g., compute the sun angle based on 3 telemetry values). My manager blew a gasket when he found out that I had implemented it in this strange language. What else could I do - the spacecraft engineers had specified the equations for the over 800 derived parameters in a variant of Scheme! (The variation came in the fact that, where a telemetry point was referenced like a variable, the computation had to check the status flags of the telemetry point to determine whether to use it or not. Depending on the function being applied, a bad point would either be skipped or the calculation [or subexpression] would fail. It was a simple matter to read in the equations and rewrite them to correctly take into account the telemetry point references.)

    The program was beautiful, extremely fast, and worked like a charm. It wasn't my fault that I was the only one in the company who could look at the spacecraft engineers' documentation and realize they were using Scheme. When I left the company the following year (with the code well-commented), I imagine my manager, who wasn't a bad programmer himself, probably leaped in and rewrote the whole thing in C++, hand-coding each and every one of those 800+ calculations.

  90. Re:No one seems to care by Anonymous Coward · · Score: 0

    So presumably the GNU people's parents babbled at them in scheme when they were toddlers whilst preaching that JavaScript developers will burn in the eternal fire. It's the only logical explanation.

    While producing semantically equivalent code to that of the Javascript developers. That is the tragedy of binary life.

  91. A Real Worl Example: LuaTeX by Required+Snark · · Score: 1
    TeX is moving to Lua. http://www.luatex.org/. TeX has been around a really long time, it has a huge user base. It has adapted to change and will continue to thrive in the future. The choice of Lua shows that a community with deep technical roots sees that Lua is a good long term solution.

    From their FAQ.

    Why not use language X instead of Lua?

    We needed a language that matched all of the following criteria:

    • Freely available
    • Embeddable integrate within pdfTeX
    • Very small footprint
    • Portable
    • Easy to extend with pdfTeX-specific functionality
    • Fun to work with

    Lua was the first language to match all the criteria. The known scripting languages tend to be much too large for our use. Specifically, we have rejected Java, Perl, Python, Ruby, Scheme on one or more of those criteria.

    I think that one of the most important points is "Fun to work with". Lua is fun.

    --
    Why is Snark Required?
    1. Re:A Real Worl Example: LuaTeX by gknoy · · Score: 1

      What makes Lua fun to work with? (Genuine curiosity, not snarkiness.)

    2. Re:A Real Worl Example: LuaTeX by Required+Snark · · Score: 1
      Syntactically, Lua is descended from Pascal, so for example it has BEGIN/END blocks rather then {} like C influenced syntax. Even so, it is familiar to most coders. It has infix numeric notation and short cut logical operators. It doesn't put people off the way that LISP derived languages often do.

      Under the hood Lua is a lot more like Scheme. It supports closures http://en.wikipedia.org/wiki/Closure_(computer_science) and tail recursion http://en.wikipedia.org/wiki/Tail_recursion. Both these concepts are prominent in Scheme.

      It does not have C++ style objects, but it does have object inheritance like PHP, JavaScript, SmallTalk and Pure. It is very reflexive so the programmer can easily access low level behavior. This access is how object inheritance is implemented.

      The fun part is how you can use all these features to solve problems. For example, objects can be made in more then one way. You are not stuck with a one size fits all solution. Or you can just use inheritance and have a very lite waight object style. You control the language, the language does not control you.

      It also has a single data structure, the table, that can easily map to many data structures. It can be an associative array or a numeric indexed vector. All values, including functions are first class. A table can have any data item as it's index and as a value. For example, a table can be indexed by a function. If the associated value is a table, you could then execute the function using the table as it's input.

      So Lua is flexible. It supports many programming styles, including traditional script style imperative programming. It can also be Scheme like and support a much more functional style, if you so choose. It's like s Swiss army knife. You can fix things and also open a bottle of beer or wine. That's why it's fun. As a bonus, it also is one of the fastest and smallest scripting languages around. What's not to like?

      --
      Why is Snark Required?
    3. Re:A Real Worl Example: LuaTeX by badkarmadayaccount · · Score: 1

      Scheme allows side effects - imperative programming is not a problem. And God knows, Scheme has faster implementations than Lua.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
  92. And 26 years later... by Anonymous Coward · · Score: 0

    And 26 years later, GNU's still trying to explain what "free" means.

  93. What is the problem? by drolli · · Score: 1

    There are many extension languages, for each purpose...

  94. GNU's dirty little secret about Tcl by ofgencow · · Score: 1

    Despite some harsh words about Tcl, Tcl is alive and well in certain GNU projects, including one of the more prominent GNU projects - GCC, the GNU Compiler Collection. GCC's test suite is run with the DejaGnu testing framework, which written in Tcl. So the next time you use gcc to compile code, be assured that Tcl has helped to make your executable run as you coded it.

    http://gcc.gnu.org/viewcvs/trunk/gcc/testsuite/README?view=co

    http://www.gnu.org/s/dejagnu/

  95. Re:No Sarcasm: Do People Care? by osu-neko · · Score: 1

    No sarcasm meant, does this issue matter to more than a handful of people?

    Welcome to Slashdot!

    --
    "Convictions are more dangerous enemies of truth than lies."
  96. Haskell or Erlang by Anonymous Coward · · Score: 0

    Haskell ain't dying out whether people use it or not. It's simply too critical to programming language theory. In addition, Haskell is the perfect extension language for many situations. Sage should've obviously been written in Haskell for example.

    Erlang offers a significantly simpler programming langauge with similar benefits, a larger commercial user base, and is perhaps more optimized towards the sorts of problems GUIs encounter.

  97. Machine code by loufoque · · Score: 1

    Why use a toy language?
    Use a real language, compile it down to machine code, and link it with a DLL/so interface.

  98. So what they're trying to do is... by Anonymous Coward · · Score: 0

    make Guile's cheme go with everything?

  99. Re:It supports JS yet is "dead and unpopular". How by jockm · · Score: 1

    I do not disagree. But the Guile supporters -- like RMS -- says we shouldn't chase the flavor of the moment, and instead use guile and have implementations in that. My point is that approach hasn't worked.

    --

    What do you know I wrote a novel
  100. Does the "GNU extension language" matter? by Guy+Harris · · Score: 1

    The GNU Hacker's Meeting page has "GNU Operating System" at the top. The GNU Operating System was intended to be "a complete Unix-compatible software system", with "all improvements that are convenient, based on our experience with other operating systems".

    However, that's not what happened:

    At the beginning of the GNU Project, I imagined that we would develop the whole GNU system, then release it as a whole. That is not how it happened.

    Since each component of the GNU system was implemented on a Unix system, each component could run on Unix systems long before a complete GNU system existed. Some of these programs became popular, and users began extending them and porting them—to the various incompatible versions of Unix, and sometimes to other systems as well.

    The process made these programs much more powerful, and attracted both funds and contributors to the GNU Project. But it probably also delayed completion of a minimal working system by several years, as GNU developers' time was put into maintaining these ports and adding features to the existing components, rather than moving on to write one missing component after another.

    so one could argue that the real result of the GNU project is not the intended complete operating system but, instead, a collection of pieces of free software that have been adopted by a number of operating systems, including Linux distributions, the *BSDs, Mac OS X, and perhaps other commercial UNIXes.

    Those operating systems are, however, not built with a 100% GNU userland. So, at best, Guile might, at some point, be the extension language for all pieces of software from the GNU project, and perhaps even for many pieces of free software not from the GNU project (most of it is licensed under the LGPL, so even non-free software written for environments that provide Guile could use it as an extension language, as long as they avoid GPLed parts such as the readline module), but I wouldn't hold my breath waiting for an operating system where it's the extension language.

    Perhaps when Andy Wingo argued that Guile should be the extension language for GNU, he meant "for all pieces of software from the GNU project", but I wouldn't hold my breath waiting for it to be the extension language for an entire operating system - relative technical merits of various languages nonwithstanding, the world will probably have to live with the languages that Wingo asserts "are at the height of [their adoption curves] and beginning [their] descent" or that "will fall out of favor" for quite a while. Perhaps he's right, and Python's fading away and JavaScript will become a legacy language; if so, whether what replaces them is some flavor of LISP is something to be determined by waiting and watching. After all, Worse is Better.

  101. He must be kidding ... by Lazy+Jones · · Score: 1

    The article doesn't contain a single argument for the use of Guile as an extension language. It tries to show off a few language features that LISP people will obviously love (and all other people never miss), but for an extension language other things should matter: small footprint, easy to pick up, no nasty surprises, successful use cases, robustness. Why the hell would one need to make the extension language extensible in an elegant way or want it to be "multi-paradigm"?

    The sensible choice would be Lua and the GNU people should think long and hard about whether they really want to hamper their GNU evangelism by burdening it with evangelism for obscure (sorry LISP lovers) languages or perhaps choose something that doesn't get in the way of their important goals...

    --
    "I love my job, but I hate talking to people like you" (Freddie Mercury)
  102. Extension to what? by anomaly256 · · Score: 1

    'GNU still needs an extension language' .. extension to what? Extension to GNU HURD, extension to the GNU compiler? I'm not sure what the context of this language is, and it seems incorrectly worded to me. If by 'GNU' the author means the GNU userland tools, then isn't C/C++ already the official 'extension' language of choice?

  103. Re:A Real Worl Example: pymacs by anon+mouse-cow-aard · · Score: 1

    http://pymacs.progiciels-bpi.ca/index.html
    <preach>
    python optimized the correct thing: readability. It has been around for 20 years, and is still growing. There are multiple free implementations. It has very good interoperability with C, which is very important since most GNU software is written in C. It is a language which has survived harsh competition with other languages. The GNU people could use the above modules to transition to it smoothly. It's the right answer.
    </preach>

  104. Re:LISP? really??? really?? by Anonymous Coward · · Score: 0

    "Most programmers have never heard of it."

    [Citation needed]. Are you kidding? Exposure to LISP-like languages is a basic tenet of a well rounded computer science education. Even if one doesn't use it in the real world, it is *invaluable* to know, because it can change how you see and think about problems. It was doing extremely advanced high level language features in the 1950's and 60's that MOST languages do not yet have even today.

    Then again, given the absolutely shitty level of ability that 99.5% of the current generation of programmers have - half of them have never even written something in assembly language - perhaps you are right.

  105. Layne's Law and "locked down" by tepples · · Score: 1

    My point is simply that to say its not locked down is a lie. [...] Why do people insist on trying to pretend GPL and LGPL are something they aren't?

    Because "locked down" lately is more likely to mean "mandatory verification of digital signatures on all executables, with no way for a home user to permanently add his own root CA". This is true of TiVo, iOS, and all modern video game consoles, specifically to prevent users from taking advantage of the freedoms that developers have locked down for them. Ultimately we've run into yet another case of Layne's Law: discussion breaks down once it becomes a debate over the definition of a word.

  106. It's obvious to fourth graders. by rjh · · Score: 2

    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 result by fifteen, how would you write that down? Not the answer, but what I told you to do?"

    They usually came up with 1+2+3+4+5+6+7+8+9+10*15. This got us into talking about precedence and order of operations and everything else. Their eyes would spin. So, multiply before add, but divide and multiply are co-equal operators and you do them in linear left-to-right order, unless grouped by parenthesis, and...

    "You know, this is pretty stupid, isn't it?" I'd ask them. "It's too hard. How are we supposed to keep track of all that? Who came up with this, anyway?"

    I'd then write, (* 15 (+ 1 2 3 4 5 6 7 8 9 10)).

    Not once, not ever, did it take a class of fourth graders more than five minutes of using this syntax to realize it was so much better than the 'traditional' syntax. It let us communicate clearly about what we were doing and in what order. On top of it, it looks kind of weird and exotic, and kids love writing in codes -- the fourth graders took to it like ducks to water. It was something that neither their classmates nor their teacher understood, and a professional mathematician told them, "yes, this really is how a lot of us in the field prefer to write things."

    1. Re:It's obvious to fourth graders. by vux984 · · Score: 1

      Not once, not ever, did it take a class of fourth graders more than five minutes of using this syntax to realize it was so much better than the 'traditional' syntax.

      Except that its not so much better. And just because you managed to convince a group of 4th graders it was with a toy problem doesn't make it so.

      The traditional rules of precidence are not complicated:

      parenthesis inner to outer
      multipliation and division left to right
      addition and subtraction left to right

      vs

      lisp:

      parenthesis inner to outer
      operation within parenthesis applied left to right [because (- 10 5 5) is not the same as (- 5 10 5) after all]

      Yeah, that's SOO superior. And you just have to write a pile of parenthesis to avoid remembering that */ precedes +-. Big win there.
      Of course, its still too hard if you ask me, if you write even more parenthesis you don't ever have to remember what direction to work in.

      (* (+ 1 (+ 2 (+ 3 (+ 4 (+ 5 (+ 6 (+ 7 (+ 8 (+ 9 10))))))))) 15)

      Just inside to outside now. :p
      of course, why bother with prefix notation then; i mean if operator precedence is the problem, infix vs prefix is irrelevant... just throw more parenthesis at it...

        ((1+(2+(3+(4+(5+(6+(7+(8+(9+10))))))))))*15)

      On top of it, it looks kind of weird and exotic, and kids love writing in codes -- the fourth graders took to it like ducks to water.

      For sure. I'd agree to that. 4th graders love pig latin too.

  107. GNU *already has* extension lang by inode_buddha · · Score: 1

    GNU *already has* an extension language.

    It's called "bash"

    .

    --
    C|N>K
  108. performance is important by suitti · · Score: 1

    Performance is important

    My benchmarks show that guile is a pretty slow. For example, on one machine, it was 238 times slower than C. So, instead of a 3.6 GIPS machine, we'll all go back to 15 MIPS. Who here wants to use a 486/66 again? Who here isn't old enough to remember when Intel had numbers for chip models? Perhaps the long jump support could be removed and half way decent performance could be put in. I mean, what good is a functional language when it's faster when you code loops?

    I was researching LISP a couple years back and ran into a great quote. It talked about how a student had written an elegant matrix multiply function in LISP, which had the misfeature of being incredibly slow. It caught my attention because i'd written a nearly identical function, and was amazed at how poorly it performed. The author made the comment that no C programmer could make such a mistake. However, he totally failed to give the slightest hint on why the performance should have sucked. And, he continued to rant about how (compiled) LISP was as fast as C.

    Javascript is finally getting some performance. Firefox 3.5.7's javascript is only 25.6x slower than C. The recent browser wars show rapid progress.

    Readability is important
    That said. I know dozens of languages. I understand my 30 year old BASIC programs without much effort. I was a bit more clever with my 25 year old C programs, so they're a bit tougher. LISP is one of only two languages where i actually took a class. But none of my LISP or scheme is halfway comprehensible two weeks after i've written it. Forth is a bit better, taking a couple months. Procedural languages are simply easier. At the end of the day, you spend most of your time in maintenance. If it isn't broken, then the requirements are changing. Oh, and time is money, just like Einstein said.

    --
    -- Stephen.
  109. Re:LISP? really??? really?? by rubycodez · · Score: 1

    yes, their QPX software is used by Orbitz. Main engine is written in Allegro Common LISP http://www.franz.com/success/customer_apps/data_mining/itastory.lhtml

    Other companies that use Allegro CL include Naughty Dog (for their playstation games dev environment) and Marai I mentioned.

    Have to laugh when people say no one uses LISP anymore and their are tens billions of dollars of global business annually powered by it

  110. Re:No Sarcasm: Do People Care? by Anonymous Coward · · Score: 0

    Microsoft's COM scripting (aka OLE Automation) is a close equivalent to the AppleEvents mechanism, and it's pretty easy to use (with the slight downside of not being self-documenting, unless you count foofing around in a COM browser as documentation). Having done both, it's actually less painful to use COM-scriptable apps from Python (using win32com) on Windows than it is to use OSA-scriptable apps from Python on Mac OS X.

    It seems like DBus could achieve the same role as OSA or COM scripting if most DBus interfaces weren't astonishingly half-assed.

  111. Re:i *LOVE* cilantro by b4dc0d3r · · Score: 1

    I love cilantro, but I hate Scheme. Maybe your analogy is as accurate as one involving a vechicle. Guile might as well be Canturbury Tales to me.

  112. not a real hacker by Anonymous Coward · · Score: 0

    32-bit HURD? Why didn't you run it on an UltraSPARC like a real hacker? I swear, the amateurs on slashdot these days.

  113. libpeas, anyone? by Polizei · · Score: 1

    How about libpeas, or something like that?
    At the moment GNOME provides extending with Python, JavaScript and C via some FFI magic stuff...
    I'm sure they can make something like that *if* they really decide to do it...

  114. you are an idiot by Anonymous Coward · · Score: 0

    LUA is a piece of shit language compared to scheme
    GNU sees the big picture unlike you and your tiny little brain

    Where will LUA be in 10 years? nowhere
    Lisp has been in use for more years that you've been alive

  115. Using numbers as argument is wrong, full stop by Anonymous Coward · · Score: 0

    lots of people can't program. This probably means that the few that can actually can't - because, you see, they are unpopular and outnumbered. Should we replace all the programmers with laymen? Laymen are widespread you see.

    Lisp was around for 50 years. And will be for 50 years more, irrelevant of popularity - which means "write once, never rewrite in other language again".

    I am in the business of legacy mining. We are mining COBOL at the moment, but in 10 years time we are likely to mine Java. Guess what? We do it in Lisp!

  116. Re:Guiwhat? by Anonymous Coward · · Score: 0

    based on it's language features
    purely on it's popularity

    "its".

  117. Re:Guiwhat? by Anonymous Coward · · Score: 0

    all on it's own

    "its".

  118. Re:LISP? really??? really?? by Unknown+Lamer · · Score: 1

    Not to nit too much, but I am fairly certain (I may have secret inside information OR: planet lisp) that ITA moved to a mixture of SBCL and Clozure CL, with the main scheduling engine running on SBCL.

    Of course, Google will probably just fire everyone, rewrite it in Java, and cause the entire airline industry scheduling infrastructure to collapse...

    --

    HAL 7000, fewer features than the HAL 9000, but just as homicidal!
  119. Re:LISP? really??? really?? by rubycodez · · Score: 1

    I did search on site:lisp.org for that but couldn't find it, maybe was another source (or google sucks)

  120. maybe you're not a great programmer? by Anonymous Coward · · Score: 0

    picol.c is a subset of tcl written in 550 lines of C.

  121. Re:LISP? really??? really?? by thePuck77 · · Score: 1

    But...but...that's not yet-another-twitter-clone! It doesn't count!

    --
    "We live as though the world were as it should be, to show it what it can be." - Joss Whedon via Angel
  122. Re:A Real Worl Example: pymacs by badkarmadayaccount · · Score: 1

    Yeah, and on the way they made one of the slowest imaginable languages. Well, ok, Ruby is worse, but - serious constant overhead for function calls? Are you kidding? If you want OOP and readable, try Ada 2005. Hell, Haskell supports indentation closed blocks - though you need to spare some of the high end features.

    --
    I know tobacco is bad for you, so I smoke weed with crack.
  123. Re:A Real Worl Example: pymacs by anon+mouse-cow-aard · · Score: 1
    It's a macro language, It's and extension language. If there is something compute intensive, you write it in C with a python wrapper, or you can just call an existing one with ctypes. If you expect the language you choose to make your application fast, you're an idiot. I have replaced a C app that ran in operations for 10 years with python and had the code run many times faster (>100x in practice, from O(n*2) -> O(logn) for some bits, and O(c) for others.)

    The authors of the C code had written to strange constraints 20 years ago, and re-factoring C was so painful, no-one would touch it. A total re-write, thinking about the algorithms (which is possible when there is less code to worry about.) and for current machines, made it possible to make things much better. I don't know Haskell, I've heard good things about it, and I like rabbitMQ. I have had very good success with python, however. Readability really is the most important thing. Once you're doing the right thing, you can always optimize it later, and C will be there for you then.

  124. Re:LISP? really??? really?? by harlows_monkeys · · Score: 1

    Most programmers have never heard of it.

    Proof that Sturgeon's Law applies to programmers.

  125. Re:Guiwhat? by ToasterMonkey · · Score: 1

    programs with minimally useful command line invocations, extension languages are the 'glue logic' you get(observe your local Office guru's bludgeoning about of VBscript, or some photo-pro's slightly alarming Photoshop batch processing abilities); but the unix 'flavor' has historically been that the shell, rather than the program extension language, has been the tool of choice for bodging jobs too big to tackle manually but to small to be worth delving into the guts of the programs themselves.

    I think that is sort of sad. Take VBA for example. From the windows script host you can create office objects, manipulate them, and send out through outlook, from one script.

    Now, you can accomplish that with the UNIX model, but it's clunky as hell. Two streams of uni-directional unstructured data, everything is stateless, command switches cannot be discovered at runtime in a sane manner, and error reporting is often simply 0/1. Going forward, few people are really designing applications to any of that. Modern Linux apps usually lack documented exit codes, lack the ability to do anything useful to stdin, DO often have reasonable argument parsing, but often output text that is unnecessarily difficult to parse. Gnome & KDE apps are AFAIK still instrumented differently, and command line apps haven't adopted either system as any kind of standard.

    BASH doesn't need to lose for standardized program instrumentation to win. BASH would benefit greatly from things like argument/method discovery, typed & structured IO, etc. At some point you have to drop notions of KISS and design things from an updated holistic view of the world. Simple should be from the user's perspective, because isn't it an engineer's job more or less to make complex things work for normal people?

  126. Re:A Real Worl Example: pymacs by badkarmadayaccount · · Score: 1

    Fast python code means that you are not CPU or cache constrained. And what is so unreadable about Ada. Or even scheme.

    --
    I know tobacco is bad for you, so I smoke weed with crack.