-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hello all!
First let me start out by saying that I am very glad that Mr. Seibel has decided to organize this effort, and that so many seasoned Lispniks have joined. I wanted to take this opportunity, while this effort is still fresh, to offer My Two Cents (tm) on my experience of Lisp, in the hopes that it will be helpful feedback. I am 29, I've been a professional programmer for 3 1/2 years, I've done Java, C#, PHP (blech!), Python, and my current joi-de-vive is Ruby. I work primarily designing Ruby on Rails web applications (backend and behavioral focus) for a startup in New York. In "The Common Lisp Road Block Manifesto" thread there was one response, from Herb Martin, that I found particularly compelling. > While I have written production programs in some thirty or > more languages, my use of Lisp has always been "for fun" > because the language never provided me all of the combination > of features/availability/readiness etc to allow me to > substitute it for all of the other languages at my disposal. > > No matter, I always come back to Lisp because I ENJOY it. > > And despite 25 years having passed, I am still a Lisp "newbie". > When (and until) I program everyday in a language for a week > or three my skill level rapidly improves but I have seldom > done that in Lisp. I'm not a particularly religious man, but I sometimes say a small prayer at night before bed: "Please God, provide me with the strength and fortitude necessary to learn Common Lisp before I die." Lisp to me has always had a mystic appeal. It is a language that has survived from the Paleolithic period of computing, when computers were things that governments, colleges, and IBM owned. It is steeped in tradition, and is obviously very powerful. It is the Grandaddy of All Scripting Languages, and yet there is something about it that is difficult to grasp, and harder yet to wield effectively. The two languages which I have the most experience in are Python and Ruby. The primary advantage of these two languages, IMHO, is that they're very unix-y. They facilitate the programmer's need to express unix-y concepts: files, fifos, sockets, processes, threads, and filesystem. It was immediately apparent to me when learning these lanugages the advantages of having simple yet powerful data types, strong-typing, and large standard libraries that covered most of the (dare I say) "useful" functionality available on your standard linux distribution. The rubber meets the road very early on in learning these languages, because the nouns and verbs that are presented to the the programmer are the stuff of daily existence. So, how does this relate to Lisp? I've tried at least 3 times now to get that feeling of traction with Lisp. The most recent experience I've had was working dilligently through Mr. Seibel's "Practical Common Lisp". From the outset, I kept thinking, "Yes, this is all well and good, but when do we actually get to *do* something?" I strengthened my resolve, and pushed ahead to chapter 14 "Files and File I/O" thinking "Surely, we will reach files and I'll get to do something fun, like copy a something from one place to another, or (dare I say?) traverse a directory tree." Alas, I was somewhat disappointed. It seems to me that one of the problems Lispniks have is that they're always talking about Lisp, they're describing things *in terms of Lisp*. From PCL: "I'll discuss the standard functions here and point out the ones that suffer from nonportability between implementations. In the next chapter you'll develop a pathname portability library to smooth over some of those nonportability issues." Now, to be blunt, speaking as a non-Lisp programmer, I don't give a hoot how one implementation handles this differently from another. This strikes me wonky, staring-into-your-belly-button type stuff. It also caused me to feel a bit incredulous, "What do you mean? *I* have to write a compatability layer? I've only been doing this for *two weeks!*. I just want to do some file-management or simple text-processing!" Is this a bad attitude? Possibly. On the other hand, I want to be able to do something useful, something directly related to my poor, unenlightened, non-Lisp world. I want to be able to do that without having to know how the 5-10 popular flavors of Lisp implemented PATHNAME differently. I read PCL's chapter on the CLOS and I don't think i've ever been so depressed in my life. Here is the world's most powerful object system, with AOP hooks and all sorts of wonderfulness, and it's gonna take me *years* before I can do anything practical with it. There seem to me to be two major issues one has to grapple with in learning and writing Successful Lisp (nudge nudge, wink wink). First is the myraid of inconsistencies between the implementations of Lisp. It struck me that this is not too dissimilar from my experience in trying to write cross-browser Javascript. Thankfully, there is the prototype project (http://prototype.conio.net) that is gaining wild popularity because it handles the browser inconsistencies for you, and provides a consistent API for standard programming tasks. Such a library would be terrifically useful to a Lisp newbie, as it would allow them to ignore some of the finer, niggling details and faciliatate their enjoyment of Lisp. The second issue seems to me to be that there isn't a simple, consistent, and unix-y way to deal with the operating system (if I'm terribly wrong about this, I plead ignorance). It would be very helpful to me in learning Lisp if there were a library I could use that would make it easy to use my operating system as subject matter, something that would make it as easy and as natural to write bash-style scripts in Lisp as it would be to write them in...well... bash. One last thing, when I was first getting into it, something that Ruby's creator (Yukihiro Matsumoto) said really struck me. "The purpose of Ruby is to maximize programming pleasure. Programming in Ruby is extremely fun, for me at least." I believe that we as programmers value many things, and one of the things that I've seen a high value placed on is fun. I believe that there are things that could be done to make programming Lisp more pleasurable and more fun for the newbie out there. I believe that those things have value, both for the beginner, and possibly for the community as a whole. Well, hopefully I haven't offended anyone too greatly. I am very excited about this project and I applaud all of your efforts in keeping Lisp alive, well, and relevant to the next generation of programmers. Thank you for taking an interest in us, the new guys :) - -Jonathan Simms -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (Darwin) iD8DBQFDszonukPQ9vfVJEARAgO4AJ4klTYNwRMbmDzQmt7eU8cSE6f+FACgjCXz PKJIKnhwhDd2/ei+AZ7a0II= =UdKK -----END PGP SIGNATURE----- _______________________________________________ Gardeners mailing list [email protected] http://www.lispniks.com/mailman/listinfo/gardeners
