Live data from Hacker News

GNU Guile 2.2.0

gnu.org

121–130 of 149 posts

Re: GNU Guile 2.2.0

#121
post #21

Earlier quoted context omitted.

The super advantage of Lisp (including Scheme): Its format for defining data is the same as for writing code, making macros a natural part of the syntax: You can change your source code just like you’d change any other list (or rather tree) data type. However all this can be represented fully without parentheses — and this is possible with Guile using a reader extension without losing any of its power. This is realiz…

> The super advantage of Lisp (including Scheme): Its format for defining data is the same as for writing code, making macros a natural part of the syntax: You can change your source code just like you’d change any other list (or rather tree) data type. I've heard this repeatedly over the years, but the explanation unfortunately always stops right there. Could you please give an example of why you'd want to change yo…

Being able to create code with code, allows you to do away with boilerplate code. E.g. if you got a lot of code with just minor differences, you can make those differences into parameters in a macro which makes each of these code chunks.

That can be utilized both at high level and low level. GOAL is a cool example: https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp. Basically you can express assembly code in LISP syntax and then you can create higher level constructs like if, while, for etc statements as macros composing these lower lever assembly instructions. Because data and code is the same in LISP that allowed Naughty Dog when they used GOAL on the Playstation 2, to swap chunks of code in and out of memory as needed easily to maintain larger levels than the competition. It is also something that allows you to change a running system. I believe there was a case of a malfunctioning satellite running LISP code, which was debugged and fixed while it was running. Shutting it down for fixing was not an option.

I would also add another benefit of only using parenthesis. It makes it really easy to make powerful tools for LISP. Have a look at s-expression based editing. Instead of working line by line, or word by word as we are used to with editors, these work with whole blocks of code at the time. Normal editor commands involve jumping word by word or line by line. with LISP editors you can view the code as a tree with keyboard commands for jumping between tree siblings, up to a parent or down to a child. Instead of selecting x number of lines or words, you can select a whole subtree and delete it, move it, duplicate it or whatever. I think they usually call it paredit. Here is an animated demonstration of how it works: http://danmidwood.com/content/2014/11/21/animated-paredit.ht...

Disclaimer: I never really got used to LISP myself. I think it is cool, but it was too big of a jump for me when I started from C++ background. However I feel more used to it now as I've programmed a lot in Julia which is LISP like but with more normal syntax. Also when I first checked out LISP I didn't understand the need to change the way you think about navigating and editing code. If you edit the way you edit normal code I think it easily gets confusing. You lose track of the parenthesis. I didn't know about stuff like paredit then.

Re: GNU Guile 2.2.0

#122
post #106

Earlier quoted context omitted.

Given that Guile was basically launched by an RMS FUD attack on Tcl more than 20 years ago, 6 years seems like a rounding error. http://vanderburg.org/old_pages/Tcl/war/

Tcl was accused of being a scripting language that is more suitable for simple scripts, so I went and took a look at the Wikipedia article to see if it too presented a similar view. To quote: "It is commonly used embedded into C applications,[9] for rapid prototyping, scripted applications, GUIs, and testing.[10]" Is wikipedia also doing a fud attack on Tcl (as it naturally could be the case), or is RMS post simply a…

At the time, Tcl was being used for fairly large apps (and it still is, e.g. in WaveSurfer). As for large scale suitability, I would guess that both Tcl and guile nowadays are eclipsed by Lua for embedded scripting, which to me would suggest that "simple" won out over "powerful".

What is not mentioned in that thread (at least not in RMS' original message) is that what triggered his edict was that somebody extended gdb with Tcl as the extension language. This was an absolutely reasonable use case for Tcl - the lightweight syntax makes it perfect as an interactive, embedded scripting language.

This discussion led to the creation of Guile, the withering of Tcl support in gdb, and eventually the introduction of a gdb that used Guile as its extension language — in 2014, 20 years after RMS decided that the Tcl extension (which I believe pretty much worked already) was unacceptable.

Of course, as astute readers will already have guessed, Tcl was BSD licensed...

Re: GNU Guile 2.2.0

#123

Earlier quoted context omitted.

Go away, troll.

Shame you're being downvoted. Your work inspired me to learn to program with guile and SICK a few years ago. Thanks for everything

By "shame you're being downvoted", do you mean you agree that I'm trolling? Care to explain why? davexunit's contributions have nothing to do with this.

Re: GNU Guile 2.2.0

#124
post #52

Can anyone tell me if Guile is relevant? The list of example programs written in Guile is small. EmacsLisp and not Scheme seems to be the Gnu lisp of choice. The VM is not the fastest and not the most portable. Is there any driver behind it?

Back in 1994 rms told us all we should not use Tcl, that GNU was building their own scripting language. True believers have been using Guile ever since. http://vanderburg.org/old_pages/Tcl/war/0000.html

> One will be Lisp-like, and one will have a more traditional algebraic syntax.

What's that algebraic syntax'ed language he mentions?

Re: GNU Guile 2.2.0

#125
post #20

For those excited about the "Guile's Elisp implementation" in this release. The last major Guile release was 6 years ago, and much of this GuileEmacs work is still highly WIP and from my searching on emacs-devel seems to have stalled in 2015 for lack of volunteers. Just because Guile implements Elisp the language doesn't mean there isn't a ton of work to be done on Emacs itself to swap out its native VM for Guile, an…

Given that Guile was basically launched by an RMS FUD attack on Tcl more than 20 years ago, 6 years seems like a rounding error. http://vanderburg.org/old_pages/Tcl/war/

:) :) .... I cannot stop laughing, the way this rolls of the tongue...

Re: GNU Guile 2.2.0

#126
post #52

Can anyone tell me if Guile is relevant? The list of example programs written in Guile is small. EmacsLisp and not Scheme seems to be the Gnu lisp of choice. The VM is not the fastest and not the most portable. Is there any driver behind it?

0) Guile is a GNU project 1) Guile has no Global Interpreter Lock. 2) Guile is a scheme, so it is homo-iconic cf. https://en.wikipedia.org/wiki/Homoiconicity 3) Scheme (and lisp in general) are nice to write Domain Specific Languages. 4) Guile doesn't have a particular overhead for calling simple functions which makes it possibly as fast as C. 5) Guile has a very powerful object oriented programming framework beating…

> 0) Guile is a GNU project

Honest question: How does that help nowadays? Certainly in the early 90s, browsing the GNU ftp site was terrific for discovery, and in the 80s, GNU tapes were even more powerful, but nowadays, GNU seems to be irrelevant for discovery. I can't think of a single software project in the last 20 years that I've discovered through its GNU association. Similarly, GNU used to be important as an infrastructure provider for open source software, but nowadays is one hosting option among many, and not a particularly attractive one.

GNU has never helped much in developing software, the individual projects always stood and fell with their maintainers. So it seems to me that nowadays people put their projects under the GNU umbrella mainly because they buy into a particular worldview of how software should be licensed.

Re: GNU Guile 2.2.0

#127

Earlier quoted context omitted.

0) Guile is a GNU project 1) Guile has no Global Interpreter Lock. 2) Guile is a scheme, so it is homo-iconic cf. https://en.wikipedia.org/wiki/Homoiconicity 3) Scheme (and lisp in general) are nice to write Domain Specific Languages. 4) Guile doesn't have a particular overhead for calling simple functions which makes it possibly as fast as C. 5) Guile has a very powerful object oriented programming framework beating…

Many of these would apply to most if not all scheme implementations though. I'm genuinely curious if there are use cases that set Guile apart from, say, Chez Scheme. EDIT: Given that the original question appeared to imply "relevant as compared to other schemes"

I was implying that yes. Or even more so, relevant to other Lisps.

Re: GNU Guile 2.2.0

#128

Earlier quoted context omitted.

0) Guile is a GNU project 1) Guile has no Global Interpreter Lock. 2) Guile is a scheme, so it is homo-iconic cf. https://en.wikipedia.org/wiki/Homoiconicity 3) Scheme (and lisp in general) are nice to write Domain Specific Languages. 4) Guile doesn't have a particular overhead for calling simple functions which makes it possibly as fast as C. 5) Guile has a very powerful object oriented programming framework beating…

What does "cf." mean?

In this case it seems to mean viz. or e.g.

Cf. is an abbreviation of "confer" which is Latin for compare and is used to introduce material that should be compared to assertions made previously.

Viz. is an abbreviation of "vidilcet" which is Latin for "namely" or "as follows" and is used to indicate a more complete statement or example of something that has just been asserted, whereas e.g. precedes examples that illustrate a point.

Viz. and cf. are often confused, as in this case.

Re: GNU Guile 2.2.0

#129
post #128

Earlier quoted context omitted.

What does "cf." mean?

In this case it seems to mean viz. or e.g. Cf. is an abbreviation of "confer" which is Latin for compare and is used to introduce material that should be compared to assertions made previously. Viz. is an abbreviation of "vidilcet" which is Latin for "namely" or "as follows" and is used to indicate a more complete statement or example of something that has just been asserted, whereas e.g. precedes examples that illus…

I don't think "viz." is correct here, either, which isn't surprising given the total absence of hyperlinks in the Latin corpus. A plain "see" would be best.

Re: GNU Guile 2.2.0

#130
post #49
post #47

Earlier quoted context omitted.

The question is more of the strings are fast enough yet. You could have GuileEmacs for a long time, but they weren't fast enough.

No, we couldn't have had GuileEmacs for a long time since the compatibility layer with Elisp wasn't complete - that meant that not all Existing Emacs packages could be used as is with a GuileEmacs. This release specifically addresses that and I am sure that now there will be serious effort to bring about a "stable" GuileEmacs release.

The missing compatibility layer is peanuts compared to the string performance problems underneath. This was my important question, which is not answered in the release announcement.

You could force guile on everybody, just as e.g. perl5 did with their Test2 replacement, but not everybody will be happy with a 20% performance hit in the real world, and esp. when telling nobody about it. This would be pure marketing shit.

Post reply on HN