Page 4 of 5

Re: Rant: lisp is not C. Get over it.

Posted: Sun May 24, 2009 6:46 am
by Wodin
findinglisp wrote:SBCL carries an MIT license and thus cannot link with Readline.
I wonder if anybody has considered using libedit/editline for SBCL, which is what the BSD people tend to use instead of libreadline.

I believe libedit is part of the NetBSD, FreeBSD etc. projects, and there are also projects based on them, presumably for easier use outside of NetBSD, FreeBSD etc.

e.g.
http://sourceforge.net/projects/libedit/
http://www.thrysoee.dk/editline/

Re: Rant: lisp is not C. Get over it.

Posted: Tue May 26, 2009 9:08 am
by findinglisp
Wodin wrote:
findinglisp wrote:SBCL carries an MIT license and thus cannot link with Readline.
I wonder if anybody has considered using libedit/editline for SBCL, which is what the BSD people tend to use instead of libreadline.

I believe libedit is part of the NetBSD, FreeBSD etc. projects, and there are also projects based on them, presumably for easier use outside of NetBSD, FreeBSD etc.

e.g.
http://sourceforge.net/projects/libedit/
http://www.thrysoee.dk/editline/
Yes, exactly. Those were created specifically to deliver readline-like editing infrastructure without the full GPL baggage of readline.

I have also developed a native CL readline replacement as well for another project that I'm working on. It's still rough, but I'll be packaging that up when I have time to tie up some loose ends and make it a bit more portable (works great in ECL right now, but I need to add some reader macros for the low-level stuff to make it work on other implementations).

Re: Rant: lisp is not C. Get over it.

Posted: Tue May 26, 2009 6:25 pm
by JamesF
Sorry, apparently I missed this bit on first reading.
jwm-art wrote:I installed SBCL too, just for a quick comparison but CLISP gets my vote because I can use the arrow keys for history and line editing easily - maybe SBCL can too but I'm trying to learn Lisp not configure software.
There's linedit for sbcl: http://common-lisp.net/project/linedit/
It also requires osicat and terminfo, but they're linked from the project page.

I've put a function in my .sbclrc so I can load it just by invoking (linedit), because I don't always want it loaded.

Re: Rant: lisp is not C. Get over it.

Posted: Wed May 27, 2009 4:57 am
by jwm-art
JamesF wrote:There's linedit for sbcl: http://common-lisp.net/project/linedit/
It also requires osicat and terminfo, but they're linked from the project page.

I've put a function in my .sbclrc so I can load it just by invoking (linedit), because I don't always want it loaded.
Ok, Thanks I'll give it a go.

Re: Rant: lisp is not C. Get over it.

Posted: Sat May 30, 2009 4:46 am
by Jasper
@phil: As for the keyboard shortcuts, i guess i meant features i have in emacs and don't have in able, like C-k, C-y, M-y, and those behind C-x; C-x C-f etcetera. I have made some of those and the mechanism to change the state of the 'event reader'. Unfortunately i couldn't find a function in ltk to make a function activated by any event/keypress. Also made two text screens, but haven't figured out how to make a keypress switch between them. The customization works like this: each is simply a function with an argument to the widget to which the keys are bound. There is emacs-bindings, basic-copy-paste-bindings, etcetera. The START function takes a function that binds the keys as argument. The user just makes a function that combines the keys that he wants:

Code: Select all

(defun text-bindings (text)
  (basic-copy-paste text)
  (emacs-like-copy-paste text))

(start :text-bindings #'text-bindings)
I am planning to do somewhat the same for the creation of widgets, will probably model that after emacs a bit. (Of course, all will have defaults.)

So i have mostly messed with that, i also made a visualizer of graphs that shows the all the links away from a vertex and some more. I tried to use *MACROEXPAND-HOOK* to get relations between functions, so this can be used to visualize some relationships between them. Haven't figured out how to prevent confusing variables with functions, though. (And of course you can enable/disable packages in the visualization.)

I tried to look at *debugger-hook* but couldn't get the example or my own attempts to work properly. I will probably try some more/look at some other documentation to figure it out. I'll try to make it such that it is a frame that can be put in other places/is usuable for Able. Since it is both ltk, it shouldn't be too hard.

PS sorry for late reply.

Re: Rant: lisp is not C. Get over it.

Posted: Mon Jun 01, 2009 11:22 pm
by duncan
Reading this thread there's a lot in it I'd like to respond to, but I'm not known for brevity in any case, and if I tried to respond to all of it I'd wind up writing something way too long to read. But...

First off I agree with findinglisp that Lispers ought not to gloss over the problems with CL. CL is very inconvenient to use in some respects. I mean- I use CL on both winxp and on Debian Linux (well, my home machine is Ubuntu these days, but I use Debian on my server), and I have been using CL on my own (i.e. not as part of a class or something, which would push the date back about 5 years) since around 2000. And I still get annoyed with some things. Not all of the difficulties are necessary consequences of the language itself, but when someone starts playing with CL they're not likely to make that kind of fine distinction.

That said, after 10 years of dabbling, and a couple years of actually using CL for some of my work, where I could get away with it, I pretty much know what to do to get things working in the implementations I use, and can figure out what to do, with some work, in new implementations. I started using ECL quite a bit about 1.5 years ago, and I think it's better than sliced bread, but there was a bit of pain at the beginning- I think it would be awfully difficult for someone to pick up as a first CL. Of course there's an easy answer to that, and it's the same answer the doctor gaveme when I told him it hurt my arms when I lifted them above my head: "Well then, don't do that." ;) .

I have to say that my opinion is that if you want to get started with CL, and if you want to have all the libraries, etc., (as opposed to just having a CL environment to learn to write CL in, in which case Lispworks Free edition on Windows is fine) you should be running some variant of Debian Linux, and using SBCL. But even then there are soe issues- my experience has been that using apt, or synaptic, or whatever package management tool to get sbcl and the libs you want is a losing proposition in the long run. And I'm not happy with any of the other means of managing libraries that I've tried (asdf-install, and the like), though I'll admit that I gave up on them a while ago, so maybe they are better now. At any rate, I manage my CL installations by hand. It's a bit of a pain, in the short term, but I find it tends to bite less in the long run.

I also keep archived copies for every library of every version I've ever had installed- if I were really bright I would actually keep my lisp libs directory under version control. A lot of the more important lisp libs are pretty much run from cvs or another verrsion control system, so you can't discount the possibility that someone 5 dependencies back is going to hose your entire tool chain with an ill-advised commit, if you choose to keep up-to-date. I just set up a new Ubuntu machine, and got all the newest versions of the libs I use- it took me most of a day to do it, one package at a time, and I will have to rewrite some of my code to realign it with the libs (hunchentoot in particular), but in the end that's not something I should make too big a deal of- it's the kind of thing I only do once every year or so.

But I can see how people just trying CL out might get a bit frustrated with all of that- and all I can say to them is: just get a base CL system and learn CL first. Worry about the libraries later. Historically speaking "Hello World" was printed to the console, not to a web page, and CL is ancient compared to Perl and Python and Ruby. My first "CL" (not standard-compliant, by any stretch) was poplog. There weren't really any libs available for it (and it was a pretty difficult environment in many respects), but that left you free to learn CL (or in poplog's case, to learn Cltl1 ;).) If you're just starting out in CL you should really concentrate on learning CL and not on learning to install CL libraries. A lot of people wind up giving up on CL before they've ever really programmed in it.

I've been intermittently playing with some code that spiders (a select part of) the web and does some document clustering, for a year or so now. There's also some frontend code involved- basically a web interface to it, and- well, now is not the time to explain it, but it sounds pretty similar to what findinglisp is talking about, in terms of the sorts of services you need. But it also has a lot of custom algorithmic stuff. Once I had all the libs in place, on SBCL under Debian, I didn't find using CL to be an impediment- in fact, I found it to be quite the opposite.

I would have had a hard time writing the algorithmic stuff in Ruby. This is partially because everything I know about Ruby I know from reading the Japanese docs (which are confusing- for instance I'm under the impression that Ruby is called Ruby because one day Matz was sitting around talking about birthstones with a co-worker when Godzilla burst into the room with an enormous Ruby held in his teeth- bear in mind that this was translated from Matz's English into Japanese, and then back into English by moi, so it might not be an entirely accurate account.) But basically this is where CL is strong- if _all_ you want to do is pull down some web pages and then present them to the user, then Ruby is probably easier. But if you want to pull down some web pages, process them intensively, and then present them to the user- well, for me, at least CL is actually a lot easier to use than Ruby, though that might be because I'm a lot more familiar with CL.At any rate, once I had all the libs installed I didn't run into the kinds of problems you seem to have run into.

Like I said earlier I started dabbling in CL about 10 years ago, maybe a little less. At that time there really weren't a lot of libraries available. When I look at how far CL has come in the last 10 years (no thanks to me, I might add- I have patched a couple of critical flaws in important libs, but that's about 20 lines of code, in all) I think CL is on the right track. I don't think CL is going to take over the world anytime soon (or ever, really), but I also think it's suitable for real work in the real world these days. Not everyone has to eat artisanal bread with good handmade cheese and brandy distilled from the tears of an angel for those things to have value. By the same token, it is not so much that CL has become less popular over the years, as much as it is that its appeal has become more selective ;). It would be nice if it were easier to get paid to write CL, but... if you really want to promote CL then get yourself into a position of real power in some organization and then stake your career on CL. That's how languages get popular, I think, if they lack a wealthy sponsor.

Also, I think CL would benefit from not raising people's expectations so high... Paul Graham, bless him, is really guilty here. When you read something like "Beating the Averages".. well, you could be forgiven for thinking that if you just start programming in Lisp a Unicorn will shit under your pillow every night for a fortnight, and gnomes will come polish your... monitor. I'd like to see a law passed requiring everyone who cites "Beating the Averages" to have read and understood a pretty good portion of "On Lisp" first. Because programming, even, and maybe especially, in CL is not all unicorn shit and gnome blowjobs. CL has facilities that can make you a better programmer, IMHO, but being a decent CL programmer is pretty hard, actually. Thinking about code that writes code that writes code ad infinitum is not for the faint of heart.

Re: Rant: lisp is not C. Get over it.

Posted: Tue Jun 02, 2009 12:01 am
by Paul Donnelly
duncan wrote:Also, I think CL would benefit from not raising people's expectations so high... Paul Graham, bless him, is really guilty here. When you read something like "Beating the Averages".. well, you could be forgiven for thinking that if you just start programming in Lisp a Unicorn will shit under your pillow every night for a fortnight, and gnomes will come polish your... monitor. I'd like to see a law passed that requiring everyone who cites "Beating the Averages" to have read and understood a pretty good portion of "On Lisp" first. Because programming, even, and maybe especially, in CL is not all unicorn shit and gnome blowjobs.
I don't know about that. For every outspoken Lisp advocate, I think there are many more Lispers who hesitate to speak up for fear of overselling it. There's a lot of underselling to go with PG's "pedestal" approach. There's always the fear that when a person finds unicorn shit on their pillow, they won't be as appreciative of the fact that it's from a unicorn as you or I might be. Or at least this is why I think there are more Lispers than Lisp advocates (there are also people who are naturally moderate in their appreciation for Lisp). I've hesitated to advocate Lisp in the past, afraid of people being turned off by its flaws, so I reason that others might be doing the same. I'd rather trust people to, once they have some experience, see why Lisp deserves the hype.

Not that we should make baseless assertions. IMO, Common Lisp is so great because of everything that goes into it. That doesn't mean that any given thing is going to impress a user of another language. Its value is best appreciated as a whole, and making extravagant claims about some particular thing just sets up an adversarial situation. Better to tell it like it is: lots of minor things that really pay off cumulatively, along with major things (like macros) that you might need rarely, but pay big when you do need them. Talk it up as a general lifestyle improvement and get people to try it long enough for the :idea: moment to happen. When you approach it as a debate with talking points and proving things, you're just inviting an argument.

Of course, you'll look pretty smug, and probably rub some people the wrong way. That's a hazard. But that doesn't mean that there isn't a place for outspoken, self-assured advocacy, as much as there's a place for being open about CL's flaws.

Re: Rant: lisp is not C. Get over it.

Posted: Tue Jun 02, 2009 12:21 am
by JamesF
Paul Donnelly wrote:Of course, you'll look pretty smug, and probably rub some people the wrong way. That's a hazard. But that doesn't mean that there isn't a place for outspoken, self-assured advocacy, as much as there's a place for being open about CL's flaws.
So very true. I work in a Java house, currently as a support monkey (long story), and I have to be careful not to get punched when, say, somebody starts raving about how cool it is that they now have generics...

Re: Rant: lisp is not C. Get over it.

Posted: Tue Jun 02, 2009 2:16 am
by duncan
Paul Donnelly wrote: I don't know about that. For every outspoken Lisp advocate, I think there are many more Lispers who hesitate to speak up for fear of overselling it.
OK, but let's think about that for a second. Who gets heard? I mean- no disrespect to Graham, cause I love him to death, but... he's loud. Every time he farts digg has an article called "Paul Graham farted". I've never seen an article called "Many Lispers Hesitate."
Paul Donnelly wrote: I've hesitated to advocate Lisp in the past, afraid of people being turned off by its flaws, so I reason that others might be doing the same. I'd rather trust people to, once they have some experience, see why Lisp deserves the hype.
I've made some people learn lisp. Mostly buddies of mine who make a living doing VB. My success rate is around 20-40% (the range is large because the sample is small.) My methods involve physical coercion in some cases. You haven't lived until you've had a small German fellow in a headlock screaming "OK- let establishes a lexical binding. Now let me go..." I hate VB. But I love personal evangelism. The problem is that not all VB programmers want to be real programmers, even when threatened with my dreaded headlock. I mean- they get paid 35k a year to suck at VB, so why bother...
Paul Donnelly wrote:Of course, you'll look pretty smug, and probably rub some people the wrong way. That's a hazard. But that doesn't mean that there isn't a place for outspoken, self-assured advocacy, as much as there's a place for being open about CL's flaws.
I stopped worrying about looking smug a while ago. The funny thing is.. it's not like I claim to be some kind of genius. I mean- I studied under some geniuses, so I know what they look like. But the internet definition of smug seems to be "claims to know just a little bit about something." I know a lot less about programming than I should, given that I've been doing it for 15 years. But I guess I'm still smug when I give someone some advice. Anyway, call me smug- I dare you.

That said, maybe the best way to market CL would be to make it exclusive. Like: "Well, I'm not sure you could really learn CL. CL is hard. You're not really bright enough to program in CL Stick with Ruby"

Re: Rant: lisp is not C. Get over it.

Posted: Tue Jun 02, 2009 9:20 am
by findinglisp
duncan wrote:Reading this thread there's a lot in it I'd like to respond to, but I'm not known for brevity in any case, and if I tried to respond to all of it I'd wind up writing something way too long to read. But...
Wow. That was the short version? :shock: :lol: