My recent post A LISPie day. Data, Code, Context and Hints, garnered some interesting comments. For example, I knew someone must have remapped parentheses ;p Seriously though one commenter points out the rigorous body of conventions are a replacement of syntax. But, while naming conventions are good, and fulfill most of the purposes of syntax, they aren't syntax. One of the differences is developers can step outside of those rules. In some cases this is good, but in most cases it is a bigger problem than help. My impression is LISP’s current users don’t notice this because the community is drawn from the elite of programming. That's not to say LISP programmers are the elite, there are probably far more great Java programmers, though most of those probably know something about a lot of languages, LISP included. The thing is, there just aren't many dummies that stick with LISP. The result is that conventions are followed, and you get the impression that they are actually sufficient, when they are only sufficient for a language with a limited community of that type. I actually understand the reaction from hardcore LISPers because they are happy with things as they are. They just wish people would stop badmouthing their language of choice. But what I'm thinking about is how to bring many or all of the benefits of LISP capabilities to the wider world. That will require some compromises. It doesn’t mean LISP as it is today has to die, but it probably does mean that it won’t become more than the niche language it is today. However, even this would be a great boon to existing LISPers as now they would have more in common with mainstream development. More importantly however is it would benefit the 99% of developers who don’t use LISP today. For many of these developers LISP is the wrong language because they don’t have the self control to obey/interpret those nice conventions. I wouldn’t say this group is a majority, but they are a large minority. Then there are even more developers who are working on projects where it would be wrong to exclude the first group, either because they need them, or it’s just too hard to weed them out. So, I apologize to any of you that take this type of criticism the wrong way. It doesn’t mean you’re doing things the wrong way. It’s just sometimes you need to think about people other than yourself, and what their challenges are. If no one did this, then we’d only have a million or so computers worldwide, and my Mom would have no idea what the Internet was. Even now, she may not really know what it is, or at least how it works, but at least she knows enough to send/receive email, check bank accounts and book travel arrangements. This is because some developer who knew a lot more about these things was thinking of people like her when they created their software. Eventually I think you’ll see a lot more people who are not professional programmers do some programming. I don’t want to see my development tools dumbed down, just to let these users in, but I’d still like to see some commonality between my tools and theirs, so if one of them asks a question I won’t have to learn a completely new tool to answer it.
Saturday, September 02, 2006
Communities and thinking of others
Labels:
general programming
Subscribe to:
Post Comments (Atom)
2 comments:
> But what I'm thinking about is how to bring many or all of the benefits of LISP capabilities to the wider world.
Try a bit of research into the history of Lisp. Your problem (yes, it is _your_ problem, not a "Lisp flaw" as you were so presumptuous to put in that other post) with S-expressions is not only your own; I shall now have to refer you to the Dylan programming language. Popularity is not a result of technical excellence, but of modern-day sophism.
Sexp are easy to read, but you do need a good editor with nice highlighting. You can certainly create a new syntax on top of Lisp (that's pretty easy actually).
There is another good reason for sexps. If you program Java you are giving the compiler a string. If you program C idem. If you programing Lisp you're giving it a list (with some preprocessing). You are parametizing a function called "eval". So if you write (+ 2 4) you're calling a function eval(["+", 1, 2]). This function eval calls the function "+". code = data = you ;-).
Not everyone appreciates this philosophy and they just want to get things done. That's a very good mindset. If these people used Lisp perhaps they could get more done. Now you can move Lisp closer to these programmers or you could move them to Lisp. If you move Lisp it loses power. If you move it too far it becomes Java. You can also move programmers. Some programmers don't want to (be) moved. That's alright. You can also move Lisp a little and programmers a little and then you have Ruby.
Lisp is not for everyone.
Post a Comment