After a suggestion from
Peter Bell, I visited
Paul Graham's website and started poking around. I came to find out about Arc, and after reading
this page introducing it, I got excited by the idea of "A Language for Good Programmers."
Now, I don't know that I'm pompous enough to say I'm a good programmer (I'm trying though =) ), but I do note that languages like Java get in your way. Graham pointed out that "Java was, as Gosling says in the first Java white paper, designed for average programmers." I get tired of writing things like
Class obj = new Class()
. While you can do some incredible things with it, programming in Java is like laying down rules for your three-year-old child - you have to tell it too many times what you want it to do (it referring to Java, not your offspring!). Besides that, it is also true that you can do incredible things in other languages, like Ruby (to name my favorite at the time), without being retarded by the compiler (or catering to one that seems like
it is).
He also specifies that Arc will be "specially suited for Web apps," which is something interesting to all of us, I would think, who build them in our daily lives. I'm looking forward to its release, whenever that might be (Graham mentions that they have "no idea" when it will be available, but provides an email address you can send an email to to be alerted when it does become available).
Hey! Why don't you make your life easier and subscribe to the full post
or short blurb RSS feed? I'm so confident you'll love my smelly pasta plate
wisdom that I'm offering a no-strings-attached, lifetime money back guarantee!
Leave a comment
Heh - I bet I'll release my generator before he releases his language :->
Does look nice though . . .
Posted by
Peter Bell
on Jan 23, 2007 at 03:52 PM UTC - 5 hrs
I certainly get that impression =)
Posted by
Sam
on Jan 23, 2007 at 04:55 PM UTC - 5 hrs
So how much Common LISP do people here do? I never could understand why people did not like LISP especially with its superiority in almost every respect to almost every other modern language from Java, to Ruby, Python, etc. Many of the creators of those languages have openly borrowed ideas from LISP and due to their specific focuses with their creations have never been able to capture the power or usefulness of the original language.
It is sort of funny for a language that’s over 50 years old that it is still by far the most powerful and useful programming language yet very few people use it. Perhaps I should start blogging on LISP
Posted by robi
on Feb 16, 2007 at 09:27 AM UTC - 5 hrs
Definitely start blogging on Lisp - and post here with the URL so we can all check it out (I'm sure Sammy won't mind!). CLisp is on my list of "to learn" languages. I think there are two ways of looking at Lisp. One way is that it has almost no commercial traction, so you're gonna run into bugs when building real world web apps like issues with the DB drivers when working with MSSQL SPs or performance issues from certain language features at igh loads. Not saying it *will* happen, but it feels a little like using Linux as your desktop 4 years ago - possible - but look out for those funky drivers and good luck connecting your MP3 player seamlessly to your machine.
The other approach is to say (as Paul Graham did) nobody else is using this, so it becomes out secret weapon to out code other people.
I'm not using CLisp for the simple reason that I'm not familiar with it and that already makes it an impractical choice for current projects. At the same time I've committed to learning the basics of four languages I don't know (Ruby, CLisp, Haskell and Prolog) to expand my thinking and once I've hacked scripts in them all then who knows!
I think CLisp didn't take off because it is a language for advanced programmers. The concepts are harder to grasp and therefore it is going to be a while before the average PHP developer is ready for it (given that the average PHP developer may have problems doing more than just adding code at the top of their form page to add to database on form returning).
Let us know when there's a link - maybe it'll help us all to learn!
Posted by
Peter Bell
on Feb 16, 2007 at 09:37 AM UTC - 5 hrs
“One way is that it has almost no commercial traction, so you're gonna run into bugs when building real world web apps like issues with the DB drivers when working with MSSQL SPs or performance issues from certain language features at igh loads. Not saying it *will* happen, but it feels a little like using Linux as your desktop 4 years ago - possible - but look out for those funky drivers and good luck connecting your MP3 player seamlessly to your machine.”
This is of course totally untrue. LISP is used in all sorts of application software from EMACS to a variety of video games, embedded systems, electronic appliances, digital appliances (like cameras), etc. It is still widely used in commercial and noncommercial machine learning systems, data mining, link analysis, and threat analysis. LISP is embedded in some routers and all sorts of devices you are exposed to every day.
As for DB drivers etc.. exactly what DB can you not connect to? I have been messing with LISP recently with both MYSQL, PostGress, and MS SQL Server for web applications (CLOS for the web makes ROR look anachronistic even though CLOS is 3 or 4 decades older) as well as for some ColdFusion applications. LISP has nowhere near the market share of lets JAVA but there is actually a rather large developer community and you can routinely find LISP jobs posted if you are so inclined. For me messing with LISP is mostly an exercise in learning how to think in a totally different manner but I am pretty sure that if I was interested I could make just as much money developing LISP applications as I now do with CF, Java, Ruby, .Net etc. The only problem of course is I would probably have to spend 3 months getting up to snuf with best practices and 3 months polishing my skills. Not something I am going to do especially since I am trying to get out of programming anyways. For now Ill just keep using LISP to write tools that make my life easier.
Posted by robi
on Feb 16, 2007 at 11:02 AM UTC - 5 hrs
Hi Robi,
Wasn't meant as a diss to Lisp. No question you could add more value in less time with Lisp and hence might even make more money writing Lisp than .NET or Java. However, I'm pretty sure the number of jobs for Lisp programmers is smaller (compare number of jobs in Ohio using Lisp vs Java - same problem to lesser extent with CF).
I agree 100% it is great language for learning to think different, there are clearly a number of application spaces that it is used heavily. My personal experience has been that I haven't come across a lot of web apps written in Lisp (with the notable exception of Paul Grahams Viaweb/Yahoo Stores). I'm sure there are plenty, but I also have an uneducated feeling that whatever you use to run a website in Lisp won't be as solid as the .NET CLR or a popular Java server. I am fully open to the fact that I might be completely wrong about this, but usually dollars and eyeballs drive stability and ease of use. BTW, lets say I want to build a web app running on Windows tying into a SQL server back end and interacting with the file system, images and the like. Any idea if there is just an executable I can install, drop my scripts in and run it? What is the best way to write a simple web CRUD app in Lisp?
Posted by
Peter Bell
on Feb 16, 2007 at 02:34 PM UTC - 5 hrs
“However, I'm pretty sure the number of jobs for Lisp programmers is smaller (compare number of jobs in Ohio using Lisp vs Java - same problem to lesser extent with CF).”
Yes that’s what I acknowledged in my previous post.
“ I'm sure there are plenty, but I also have an uneducated feeling that whatever you use to run a website “
There are very few although some are rather large such as Orbitz.
“in Lisp won't be as solid as the .NET CLR or a popular Java server.”
Not sure what solid means. Feature set? Since you can do many things in LISP that you can not do in either of those platforms you might make a case to say it supports more features. Functional set.. I think that there is no LISP server that offers as many neat widgets as any top of the line JAVA app server. Stability.. well in my experience most of the major J2EE servers are well done but .NET still has a lot of issues. I am not sure I would say .NET is solid there.
“I am fully open to the fact that I might be completely wrong about this, but usually dollars and eyeballs drive stability and ease of use.”
If that was the case Windows would be far more stable than Free BSD, or Linuix, or Solaris, or OS2. Is it?
“BTW, lets say I want to build a web app running on Windows tying into a SQL server back end and interacting with the file system, images and the like. Any idea if there is just an executable I can install, drop my scripts in and run it? What is the best way to write a simple web CRUD app in Lisp?”
Yes you can do that. As for CRUD.. well one interesting thing is.. that many programmers tend to think in the nature of the limits imposed by their language. With LISP you have other paradigms that just CRUD with a DB. Check out the book Practical Common Lisp which covers a intro into web dev with Common Lisp (
http://astore.amazon.com/robisencom-20/detail/1590...). It’s a very interesting book and you might be shocked at how expressive and powerful LISP is compared to anything else you have ever touched. At the same time.. LISP I think requires a real change in the way one thinks and I think its hard to become productive in it right away if your coming from a functional background.
Just between you and me I think LISP could easily be the next Ruby except for no one has made a compelling specific thing that would launch it into the public eye like ROR has. I have all sorts of issues with ROR but its also a very good set of ideas. The best thing though about ROR is really Ruby which makes something’s possible to do that are just very hard in other languages and perhaps should not be attempted. For example I would like to see a real debate between people in the CF crowd how abstracting database access in CF instead of using CFQuery , which is probably the best database access abstraction of any web app platform, by creating a object relational data mapping abstraction layer. From personal and allegorical experience CF does not support many of the language features that make such a abstraction truly useful (to me simple CRUD is a waste of time since I never work on apps that are just simple CRUD and it is something that I have also found with ROR and Spring/Hibernate) and the slight disconnect between syntax (SQL vs native OO or language access ) is more than made up by ease of use and performance. Especially when you consider that with Spring/Hibernate (or even JBOSS EJB3 etc), ROR, etc you still often have to get down to SQL, and you still have a workflow disconnect with mapping layers (i.e. mappings mixing XML, language artifacts, etc all of which btw are pretty easy to avoid with LISP and not these other languages in part because everything in LISP can be processed by LISP including your LISP application at runtime as well as the power of Macros).
Anyways I don’t want to go off on a sermon or bring up stuff I have been boring people with since 1998 (like the ideas of using formal methods to model web apps, convention over coding, federated application architectures, and popularity does not connote superiority). I have no axe to grind and use a variety of languages to get customers projects done but rarely does technology actually drive projects not should. Projects should be driving by business needs and decisions which often mean technical factors come in after the fact. As IT pros (or in my case distracted dilettante and gadfly) and computer scientists we should be constantly reevaluating all our assumptions while at the same time focusing on actually helping those we server get real things done. Always looking for the best language or technology is a waste of time. It does not exist yet. It is still waiting for us to create it. I like the fact though that your looking and seeing what else is out there. That is important. Also make sure thought to occasionally be will too through everything out and just start over.
Posted by robi
on Feb 16, 2007 at 03:36 PM UTC - 5 hrs
Hey Robi,
Great information and advice - many thanks!!
I actually have a copy of Practical Common Lisp by Peter Seibel - thanks for the confirmation though. Now all I need to do is to find the time to read it!
Do you happen to have a blog (either yours or any Lisp ones you read/love) that you'd recommend me adding to my reader?!
Posted by
Peter Bell
on Feb 16, 2007 at 03:47 PM UTC - 5 hrs
My blog is robisen.com but youll find its all over the place and i just write about whatever i feel like at anyone time. Good Lisp sources is planet lisp. here is the RSS feed
http://planet.lisp.org/rss20.xml
Posted by robi
on Feb 16, 2007 at 03:51 PM UTC - 5 hrs
Gosh.. I rarely leave these sort of long comments anymore especially on CF oriented blogs. Makes me feel young and less bitter and jaded. Thanks :-)
Posted by robi
on Feb 16, 2007 at 03:52 PM UTC - 5 hrs
Subscribed to both - many thanks! Have a great weekend . . .
Posted by
Peter Bell
on Feb 16, 2007 at 03:53 PM UTC - 5 hrs
BTW.. read this article
http://www-128.ibm.com/developerworks/java/library...and the summary
"Lisp may be old in terms of years, and even syntax. But if you dig a little bit, you'll find an incredibly powerful language with higher abstractions that are as valid and productive today as when they were created 50 years ago. Many more-modern languages borrow from Lisp, and most still do not provide as much power. If Lisp had a fraction of the marketing behind Java or .NET and similar mindshare across universities, we might well all be writing it right now."
Posted by robi
on Feb 16, 2007 at 04:52 PM UTC - 5 hrs
Factor is a great language that is a cross breading between Forth and Lisp. it is very fast and most apps written in it have been webapps. it has also been used for other things. it was originally for a Java game but it outlived the game.
Back to the subject. I think Factor will be THE PRIMARY RIVAL TO ARC because of the simalarity in language features factor uses parsing words like lisp uses macros. Factor is so powerful that you can implement locals from Factor.
Posted by george
on Oct 22, 2007 at 07:11 PM UTC - 5 hrs
Leave a comment