I don't know, part of me would agree but I also recognize that learning Lisp once your familiar with C like languages requires you to forcefully forget everything that you thought you knew about programming. This could be avoided if Lisp was learned first, I suspect that other languages would be easier to learn then as well because you'll already be familiar with the infix notation through any experience with maths.
You also learn a concepts that carry over; though since learning Lisp I have found everything else to be lacking in several key areas: beauty, flexibility, power.
Even Python, which I was so enamored with in the past makes me want to pull out Scheme. In a lot of cases I find that I mock things up first in Lisp and then implement them in Python or whatever language I'm using, this leads to very elegant and reusable code if the language is powerful enough (of course sometimes I have to dumb it down a little because Python/Ruby/Perl/Whatever just aren't on the same level).
MIT teach Lisp to there students in a single lecture then build on the core concepts gradually, introducing different paradigms right in the same language. It seems clear to me that they do this for a reason.
I didn't have the advantage of learning Lisp first but I wish now that I had. Except that then I wouldn't know as many languages as well as I do.
I've looked at these languages before. Haskell is on my to do List along with SML (with Alice). Erlang from what I've seen is very impassive conceptually but the syntax makes my eyes bleed . I'll get around to it eventually. Io and Smalltalk have a lot in common but I do intend to look further at this language – I've heard some amazing things about it.
My problem is that OOP (especially class based) seems to be the biggest con I've ever come across. A way to spend hours and hours drawing intricate diagrams and interaction rather than solving an interesting problem.
People will argue that OO is at useful for creating types, but in dynamically typed languages this serves little actual point and I can get all of the abstract advantages of types in Lisp by constructing new types from primitives such as conses and procedures.
As an example I recently created a Token type for a project I'm playing with and it was far cleaner than the equivalent Ruby class. It was defined simply as a pair of function, one predicate and one action. Simple and flexible!
If the same thing had to be done in C++ or Java then the code would have been longer, uglier and not half as useful – these languages get in the way more than anything. Even in Ruby and Python it wasn't all too pretty IMO but it did take a small amount of code.
Note: I use Scheme myself, Lisp I expect you know is a family of languages, into which Scheme fits. Referring to Lisp rather than Common Lisp or Scheme is just a way to talk about all of them easily.
Later,
Mark.
You also learn a concepts that carry over; though since learning Lisp I have found everything else to be lacking in several key areas: beauty, flexibility, power.
Even Python, which I was so enamored with in the past makes me want to pull out Scheme. In a lot of cases I find that I mock things up first in Lisp and then implement them in Python or whatever language I'm using, this leads to very elegant and reusable code if the language is powerful enough (of course sometimes I have to dumb it down a little because Python/Ruby/Perl/Whatever just aren't on the same level).
MIT teach Lisp to there students in a single lecture then build on the core concepts gradually, introducing different paradigms right in the same language. It seems clear to me that they do this for a reason.
I didn't have the advantage of learning Lisp first but I wish now that I had. Except that then I wouldn't know as many languages as well as I do.
I've looked at these languages before. Haskell is on my to do List along with SML (with Alice). Erlang from what I've seen is very impassive conceptually but the syntax makes my eyes bleed . I'll get around to it eventually. Io and Smalltalk have a lot in common but I do intend to look further at this language – I've heard some amazing things about it.
My problem is that OOP (especially class based) seems to be the biggest con I've ever come across. A way to spend hours and hours drawing intricate diagrams and interaction rather than solving an interesting problem.
People will argue that OO is at useful for creating types, but in dynamically typed languages this serves little actual point and I can get all of the abstract advantages of types in Lisp by constructing new types from primitives such as conses and procedures.
As an example I recently created a Token type for a project I'm playing with and it was far cleaner than the equivalent Ruby class. It was defined simply as a pair of function, one predicate and one action. Simple and flexible!
If the same thing had to be done in C++ or Java then the code would have been longer, uglier and not half as useful – these languages get in the way more than anything. Even in Ruby and Python it wasn't all too pretty IMO but it did take a small amount of code.
Note: I use Scheme myself, Lisp I expect you know is a family of languages, into which Scheme fits. Referring to Lisp rather than Common Lisp or Scheme is just a way to talk about all of them easily.
Later,
Mark.