refined common lisp
Posted: Thu Nov 29, 2012 10:36 am
Hi,
First time poster on this forum... so for some background I have been using common lisp for about three years now, but nothing too intensive. It is certainly the lisp language I know the most and indeed the programming language I know the most (done a bit of elisp and had a brief foray with LUSH recently... that taught me just how much I have been conditioned by common lisp and also just how convenient common lisp is). I have used a couple of languages (the usual suspects C/C++, java, bit of fortran and read about others python, ruby) and since Lisp has captured my heart, none of the others have been able to peel me away from it. I imagine the same is true of most people here; lisp seems to be quite polarising.
Well, at the moment I am using common lisp for some numerical simulations. Common lisp has got alot of libraries, but in a way very similar to linux, nothing seems to work painlessly; there's always something missing, broken or incompatible with your implementation or whatever. Recently I have had a look at some of the other lisps out there and, whilst they definately have their merits, these merits are not enough to sway me from common lisp (yet...). To reiterate what seems to be common opinion:
Scheme: small, tidy, consistent and with some specific features (its a lisp-1, continuations)
Common Lisp: HULKING BEHEMOTH-meaning lots of libraries, lots of variety but also lots of confusion. Although the lisp standard is very solid, its like they just standardised everything going (and it they did indeed, in an effort to get everyone on board). Good implementations, used in industry et cetera.
Clojure: Runs an java VM (good/bad), seems to be quite neat/focussed in its design, interact with java libraries.
Arc:Seems to have a fresh, clean look on things. Alot of dead weight seems to be removed with this, but is too much being removed?
This is just a brief list of somethings I have seen said about it or my brief first impressions on things and I would like to disclaim the above and say that I certainly haven't reviewed them thoroughly. Also, there are other things like picolisp, newlisp, LUSH and whatever that I have missed.
Now, it certainly seems that Common Lisp has a lot of luggage. There are inconsistencies in function names and whatever. Nothing is to stop you from simply avoiding these things or working around them and that is certainly possible with a language like lisp. A number of people/groups (as mentioned above) have tried to make their own new versions of lisp, often in an attempt to get away from this issue, however it seems to be to be a shame to waste all of the time, effort and goodies packed into lisp. On the other hand, it would certainly be desirable to get the language into shape. The common lisp standard seems to be too old now to expect any drastic additions/changes. People complain that the programming world has moved on, but CL is still stuck in the past, with the counter arguments "Yeah, but it was way advanced for its time" or "you can implement these new things with macros".
Lisp is certainly one of the best (if not, the best) language for customisation and flying solo, however it can't be denied that it's better to getting help from other humans, whether that is through collaboration or libraries - it is a shame for people to put in so much hard work and be themselves the only benefactor (from a programmer sense, not a user sense).
So, what if a new community standard was made that was bolted onto common lisp to exploit all of the hard work already done, take advantage of libraries et cetera, but was its own "standard" in a way, shedding any unnecessary baggage picked up throughout common lisps life time and inception. To clarify, things like sort being destructive, odd predicate names (and the sheer number of predicates), these thing would be shed or superseded. The language could be made tighter and more consistent. Certain parts of CL's standard would not be present in this new, refined standard. However certain other things, that were simply considered libraries, would now be considered part of the standard.
This might seem pointless, but my point is, that a fresh, new, redesigned standard would be easier/more attractive to learn, bringing in more fresh meat and keeping the veterans happy. It would also encourage a more similar/consistent programming style amongst people - for instance if you wanted to use sockets, you wouldn't implement your own or pick one of a number of libraries, because the standard one is already there - this would improve the sharing of content (and hard work) and also me that time could be concentrated on actually getting things to work. Individually, we can build a house, but together we can build pyramids (incidentally, why don't we build pyramids or towers of babel anymore?).
I believe it is important to provide a standard, but have it evolve faster than what the CL standard is currently able to. Python and Ruby seem to shed their skin/(get recut?) every new version (from what I have read.... No experience with these languages...). To this end, I would think that it would be best if a comittee was set up to regulate what went in (with some sort of overly complex voting system...) and what went out of releases. But it is important that this it would be a community project. There seem to be a lot of solitary lispers in the wild creating code that noone will ever see (and there must be some great ideas out there also). If this code and ideas could be amalgamated in a controlled way, then we all (especially those like me, with inadequate lisping skills) would all benefit.
Of course, there are libraries like CLOCC which have approached this from a different angle (i.e. a library) but I think a new standard would be a better mentality (anyway, CLOCC could just be stolen...). The fact that it would be inherently compatible with CL would require discipline, ofcourse, as there is nothing to stop people from using non-standard things from the rest of CL. The requirement is on the programmer to set out with the mindset of creating code conforming to the new standard.
I had a search through the forum and found this, which is VERY similar to what I am saying, only I have used more words...
viewtopic.php?f=2&t=274&p=1761&hilit=si ... 4bd7#p1760
So what are your thoughts on this? If such a thing was started, would you support it? Ofcourse, there are many pitfalls, and, as with everything community driven, there is a potential for it to never gain momentum or fizzleout eventually. There are very many lisp dialects, but I think the things that would set this apart would be its community driven nature, fast evolution and its grounding in CL (at least initially, one could imagine it going its separate way, if successful enough). On the other hand, it could languish in indirection, never getting anywhere because of so many opinions. At least, this is what the comittee would be for.
tldr: clean up common lisp, new standard, community driven, new functionality
First time poster on this forum... so for some background I have been using common lisp for about three years now, but nothing too intensive. It is certainly the lisp language I know the most and indeed the programming language I know the most (done a bit of elisp and had a brief foray with LUSH recently... that taught me just how much I have been conditioned by common lisp and also just how convenient common lisp is). I have used a couple of languages (the usual suspects C/C++, java, bit of fortran and read about others python, ruby) and since Lisp has captured my heart, none of the others have been able to peel me away from it. I imagine the same is true of most people here; lisp seems to be quite polarising.
Well, at the moment I am using common lisp for some numerical simulations. Common lisp has got alot of libraries, but in a way very similar to linux, nothing seems to work painlessly; there's always something missing, broken or incompatible with your implementation or whatever. Recently I have had a look at some of the other lisps out there and, whilst they definately have their merits, these merits are not enough to sway me from common lisp (yet...). To reiterate what seems to be common opinion:
Scheme: small, tidy, consistent and with some specific features (its a lisp-1, continuations)
Common Lisp: HULKING BEHEMOTH-meaning lots of libraries, lots of variety but also lots of confusion. Although the lisp standard is very solid, its like they just standardised everything going (and it they did indeed, in an effort to get everyone on board). Good implementations, used in industry et cetera.
Clojure: Runs an java VM (good/bad), seems to be quite neat/focussed in its design, interact with java libraries.
Arc:Seems to have a fresh, clean look on things. Alot of dead weight seems to be removed with this, but is too much being removed?
This is just a brief list of somethings I have seen said about it or my brief first impressions on things and I would like to disclaim the above and say that I certainly haven't reviewed them thoroughly. Also, there are other things like picolisp, newlisp, LUSH and whatever that I have missed.
Now, it certainly seems that Common Lisp has a lot of luggage. There are inconsistencies in function names and whatever. Nothing is to stop you from simply avoiding these things or working around them and that is certainly possible with a language like lisp. A number of people/groups (as mentioned above) have tried to make their own new versions of lisp, often in an attempt to get away from this issue, however it seems to be to be a shame to waste all of the time, effort and goodies packed into lisp. On the other hand, it would certainly be desirable to get the language into shape. The common lisp standard seems to be too old now to expect any drastic additions/changes. People complain that the programming world has moved on, but CL is still stuck in the past, with the counter arguments "Yeah, but it was way advanced for its time" or "you can implement these new things with macros".
Lisp is certainly one of the best (if not, the best) language for customisation and flying solo, however it can't be denied that it's better to getting help from other humans, whether that is through collaboration or libraries - it is a shame for people to put in so much hard work and be themselves the only benefactor (from a programmer sense, not a user sense).
So, what if a new community standard was made that was bolted onto common lisp to exploit all of the hard work already done, take advantage of libraries et cetera, but was its own "standard" in a way, shedding any unnecessary baggage picked up throughout common lisps life time and inception. To clarify, things like sort being destructive, odd predicate names (and the sheer number of predicates), these thing would be shed or superseded. The language could be made tighter and more consistent. Certain parts of CL's standard would not be present in this new, refined standard. However certain other things, that were simply considered libraries, would now be considered part of the standard.
This might seem pointless, but my point is, that a fresh, new, redesigned standard would be easier/more attractive to learn, bringing in more fresh meat and keeping the veterans happy. It would also encourage a more similar/consistent programming style amongst people - for instance if you wanted to use sockets, you wouldn't implement your own or pick one of a number of libraries, because the standard one is already there - this would improve the sharing of content (and hard work) and also me that time could be concentrated on actually getting things to work. Individually, we can build a house, but together we can build pyramids (incidentally, why don't we build pyramids or towers of babel anymore?).
I believe it is important to provide a standard, but have it evolve faster than what the CL standard is currently able to. Python and Ruby seem to shed their skin/(get recut?) every new version (from what I have read.... No experience with these languages...). To this end, I would think that it would be best if a comittee was set up to regulate what went in (with some sort of overly complex voting system...) and what went out of releases. But it is important that this it would be a community project. There seem to be a lot of solitary lispers in the wild creating code that noone will ever see (and there must be some great ideas out there also). If this code and ideas could be amalgamated in a controlled way, then we all (especially those like me, with inadequate lisping skills) would all benefit.
Of course, there are libraries like CLOCC which have approached this from a different angle (i.e. a library) but I think a new standard would be a better mentality (anyway, CLOCC could just be stolen...). The fact that it would be inherently compatible with CL would require discipline, ofcourse, as there is nothing to stop people from using non-standard things from the rest of CL. The requirement is on the programmer to set out with the mindset of creating code conforming to the new standard.
I had a search through the forum and found this, which is VERY similar to what I am saying, only I have used more words...
viewtopic.php?f=2&t=274&p=1761&hilit=si ... 4bd7#p1760
So what are your thoughts on this? If such a thing was started, would you support it? Ofcourse, there are many pitfalls, and, as with everything community driven, there is a potential for it to never gain momentum or fizzleout eventually. There are very many lisp dialects, but I think the things that would set this apart would be its community driven nature, fast evolution and its grounding in CL (at least initially, one could imagine it going its separate way, if successful enough). On the other hand, it could languish in indirection, never getting anywhere because of so many opinions. At least, this is what the comittee would be for.
tldr: clean up common lisp, new standard, community driven, new functionality