I strongly suspect that’s just him being an ass. If you’re finding the concepts in his book too simple, there are plenty of other concepts you could be learning about in computer science that would expand your ability as a programmer more quickly than just picking up another language.
If you want to become a better programmer after learning the basics of a language, I recommend you go and pick up some books on the puzzles / problems in computer science and look at how to solve them using a computer. Go and read up on different search functions and path finding routines, go and read up on relational databases, and types as an expressive system rather than just as something that someone’s making you do, go and read up on using a computer to solve tic-tac toe… Things like that—you’ll get better a lot faster and become a much better programmer than you will just from picking up another language, which let’s face it you’re still not going to have a deep understanding of the uses of.
Which isn’t to say that there’s no learning in picking up another language. There is, I don’t know any good programmers who only know one language. But it’s not the fastest way to get the most gain in the beginning.
Once you have that extra knowledge about how to actually use the language you just learned. Then by all means go and learn another language.
If you just know Python, then you know what we’d call a high-level imperative language. Imperative just means you’re giving the computer a list of commands, high-level means that you’re not really telling the computer how to execute them (i.e. the further away you get from telling it to do things with specific memory locations and what commands to use from the command set on the processor the higher level the language is.)
C will give you, the rest of the procedural/imperative side of things that you didn’t really get in Python, you’ll learn about memory allocation and talking to the operating system—it’s a lower level language but still works more or less the same in the style of programming. Haskell or Lisp are both fairly high level languages, like Python, but will give you functional abstraction which is a different way of looking at things than procedural programming.
But… even if you were going to recommend a language to learn after Python, and you knew the person already knew about stuff like relational databases and search functions and could use their skill to solve problems so that you weren’t just playing a cruel joke on them, and even if you were going to recommend a functional language: deep breath … it wouldn’t be Lisp, I think.
Lisp has a horrible written style for a beginner. It does functional abstraction, it’s true enough—and that is a different way of thinking about problems than the procedural programming that’s used in Python—but so does Haskell, and Haskell programs don’t look like someone threw up a load of brackets all over the screen; they’re actually readable (which may explain why Haskell actually gets used in real life whereas I’ve never seen Lisp used for much outside of a university.) Haskell also has the awesomeness of monadic parser combinators which are really nice and don’t show up in Lisp.
Lisp’s big thing is its macros. I can’t think of much other reason to learn the language and frankly I try to use them as little as possible anyway because it’s so much easier to misuse them than it is with functions.
So, yeah. I can see where you’re coming from but I don’t think he’s really on the level there.
Would you care to share your reason for the downvote? I promise not to dispute criticism so you don’t have to worry about it escalating into a time-sink.
I can’t, because I wasn’t the one who downvoted it. (I can see why one might think so, since the comment was in response to my comment).
Your comment thoroughly explores possible routes for improvement in ability in a novice programmer who has knowledge of Python; probably to a far more detailed level than the author of the original “go read a book on Lisp” comment. I saw nothing it it that requires a downvote, but no particular benefit in continuing the original debate (debating a comment more thoroughly than the person who originally made it, in the absence of the person who originally made it, is only of particular benefit if at least one person firmly agrees with the original statement; while I think I can see where it came from, it’s a matter of indifference to me).
I took it as meaning the second. There’s even a recommendation as to what else to read; a book on Lisp.
Of course, if your goal is to learn Python but you find Zed’s book too easy, “Read a book on Lisp” is probably not suitable advice.
I strongly suspect that’s just him being an ass. If you’re finding the concepts in his book too simple, there are plenty of other concepts you could be learning about in computer science that would expand your ability as a programmer more quickly than just picking up another language.
If you want to become a better programmer after learning the basics of a language, I recommend you go and pick up some books on the puzzles / problems in computer science and look at how to solve them using a computer. Go and read up on different search functions and path finding routines, go and read up on relational databases, and types as an expressive system rather than just as something that someone’s making you do, go and read up on using a computer to solve tic-tac toe… Things like that—you’ll get better a lot faster and become a much better programmer than you will just from picking up another language, which let’s face it you’re still not going to have a deep understanding of the uses of.
Which isn’t to say that there’s no learning in picking up another language. There is, I don’t know any good programmers who only know one language. But it’s not the fastest way to get the most gain in the beginning.
Once you have that extra knowledge about how to actually use the language you just learned. Then by all means go and learn another language.
If you just know Python, then you know what we’d call a high-level imperative language. Imperative just means you’re giving the computer a list of commands, high-level means that you’re not really telling the computer how to execute them (i.e. the further away you get from telling it to do things with specific memory locations and what commands to use from the command set on the processor the higher level the language is.)
C will give you, the rest of the procedural/imperative side of things that you didn’t really get in Python, you’ll learn about memory allocation and talking to the operating system—it’s a lower level language but still works more or less the same in the style of programming. Haskell or Lisp are both fairly high level languages, like Python, but will give you functional abstraction which is a different way of looking at things than procedural programming.
But… even if you were going to recommend a language to learn after Python, and you knew the person already knew about stuff like relational databases and search functions and could use their skill to solve problems so that you weren’t just playing a cruel joke on them, and even if you were going to recommend a functional language: deep breath … it wouldn’t be Lisp, I think.
Lisp has a horrible written style for a beginner. It does functional abstraction, it’s true enough—and that is a different way of thinking about problems than the procedural programming that’s used in Python—but so does Haskell, and Haskell programs don’t look like someone threw up a load of brackets all over the screen; they’re actually readable (which may explain why Haskell actually gets used in real life whereas I’ve never seen Lisp used for much outside of a university.) Haskell also has the awesomeness of monadic parser combinators which are really nice and don’t show up in Lisp.
Lisp’s big thing is its macros. I can’t think of much other reason to learn the language and frankly I try to use them as little as possible anyway because it’s so much easier to misuse them than it is with functions.
So, yeah. I can see where you’re coming from but I don’t think he’s really on the level there.
Would you care to share your reason for the downvote? I promise not to dispute criticism so you don’t have to worry about it escalating into a time-sink.
I can’t, because I wasn’t the one who downvoted it. (I can see why one might think so, since the comment was in response to my comment).
Your comment thoroughly explores possible routes for improvement in ability in a novice programmer who has knowledge of Python; probably to a far more detailed level than the author of the original “go read a book on Lisp” comment. I saw nothing it it that requires a downvote, but no particular benefit in continuing the original debate (debating a comment more thoroughly than the person who originally made it, in the absence of the person who originally made it, is only of particular benefit if at least one person firmly agrees with the original statement; while I think I can see where it came from, it’s a matter of indifference to me).