3 ms·
I think it's Python not Lisp. This is my opinion.
by antimora 15y ago
I think it's Python not Lisp. This is my opinion.
- nkassis 15y agoI do think the article make a good point, CL is hard to outgrow. You can learn almost any type of programming out there in CL. Python doesn't have that level of flexibility as far as programming paradigms as CL in my opinion.
- gbog 15y agoI can't read the FA right now but a strong +1 for Python is the student can use it on any machine for any purpose, and tweak existing softwares.
- whateverer 15y agoOh yeah? Well, by learning Ruby you get all that and you become a Rockstar. Kids love being rockstars. So there. Edit: To the downvoters (and feel free to keep downvoting, if that rocks your boat): the "+1 for Python, because" comments were as empty as this one, and less warranted at that. Ultimately where you start isn't as important as where you go. It's just a matter of picking a language, any language, some books, and shutting your ears down to everyone telling you that it doesn't get any better than that.
- guard-of-terra 15y agoYou don't want to limit yourself to one language, and it seems that for every task there's a better language (than CL).
- technomancy 15y ago> CL is hard to outgrow. This seems to imply there's some kind of benefit to only learning a single language, which I don't understand at all.
- stevelosh 15y ago+1 for Python. I adore Clojure (and Common Lisp to a lesser extent), but getting a new person excited about programming is far easier when they can do something useful really quickly. Python's massive collection of libraries makes that easy.
- WildUtah 15y agoIf you want the newbie to learn something immediately useful and with the potential for deep understanding of some programming concepts, there's one clear choice. Unfortunately, that choice is JavaScript. JavaScript is the language the modern web is written in and it's a language you can use to build and automate cool stuff that you can show immediately to your friends. You can build interactive programs, save state (in cookies), deal with formatting and input, and even do graphics with CSS or canvas. jQuery or its competitors will cover up most of the warts. It's not a brain dead verbose bondage experience like Java nor deep in the metal like assembler. It isn't historic and systems oriented like C or mathy and abstract like Scheme or LISP. It can take advantage of much of the semantics of those languages as you learn it if you need them. The tools to write and run it are simple and some good debuggers are built into your browser. Everyone owns a few client interpreters with a great application environment. It's not pretty (boy is it ever not pretty) but JavaScript is the best language to start with. If I couldn't choose JavaScript, I'd point my friends at Python or Ruby. They're better languages for both beginners and experts but they're not JavaScript.
- tikhonj 15y agoI agree wholeheartedly. I started out with JavaScript, and it was a brilliant language to learn. I was doing cool stuff--websites with content and pictures and color--almost immediately; with other languages like Python or even Scheme, I would probably still have been writing dry command-line programs. There's a place for command-line programs, but it isn't at the very beginning. JavaScript is great not only because it lets you start with concrete stuff immediately, but it's stuff you're already familiar with: everybody uses the internet now. I also found the basics of HTML much easier than any other UI framework I have ever used (Swing, WPF and TK mostly). All of this is coupled with the fact that, ultimately, JavaScript is a really nice, really expressive language, also makes it my choice for a first language. However, if not for JavaScript, I probably wouldn't point people towards Python/Ruby so much as Logo, which has many of the advantages of JavaScript and is well regarded by CS educators.
- orthecreedence 15y agoI agree on a few points and also disagree on some. I agree that javascript is very easy to get started with. The syntax is similar enough with other languages (C, Java) such that you could just into one of them easily after a bit of experience with javascript. It's also very easy, as you said, to actually DO something with it. You don't have to import 500 libraries to draw a line on the screen or make highly interactive (or even beautiful) interfaces. Javascript is also somewhat close to lisp in its functionality. That being said, I feel as though learning javascript first is putting the carriage before the horse. If someone is learning to program, I believe it's best they start off learning the basics. The idea is to learn the concepts behind mathematical thought...to learn the rules, and then learn to break them. I think someone who learned javascript first would know how to do things great in javascript, but not necessarily any other languages. They would know how to program interactions, but not necessarily how to program in general. Another thing to keep in mind is that javascript is highly concurrent. You almost can't do anything in it without dealing with layers of events interacting with each other. This could be confusing and detrimental to someone who's just beginning to learn. I'd argue it's best to start with C/assembly for a low-level view of how computer work, and then afterwards lisp and perhaps javascript for higher mathematical programming.
- andolanra 15y agoI am in the unique position of actually having taught/tutored/TA'ed several intro courses in several different languages, which included Python, Java, and Scheme. I would actually say that I had an easier time teaching elementary concepts to people in Scheme, but that the transition from elementary concepts to general-purpose or practical programming was easier for people who started with Python. Overall, I'd argue that Scheme is a better language for introducing computer science, but that Python is a better language for introducing programming and development. I think one of the biggest problems with advocating Python as a teaching language is that programmers don't understand what the hard parts of Python are. Python is great because it's sort of a lingua franca for people who are well-versed in conventional, Algol-based imperative programming—it boils it down to its essence and omits anything unnecessary—so to a person who was versed in Java/C/C++/Perl/PHP/&c previously, moving to Python feels like everything unnecessary has dropped away. Consequently, it feels easy, and you look at it and think, "Oh, wow, this would be no big deal to teach someone, even a non-programmer." In reality, though, you'd be surprised at the concepts people struggle with. Assignment poses a huge problem to beginners, and I have spent hours and hours of my life trying to explain the concept to baffled undergrads. Not that Scheme concepts are necessarily easier (e.g. recursion—although loops are not necessarily easier to a beginner) but that Scheme makes a point to have far fewer of those concepts to begin with. Keep in mind that in an introductory class, every new feature, no matter how small, can mean another week of instruction, which is why an intro class in C++ could mean almost no projects at all, but an intro class in Scheme could very easily give way to writing object systems, programming languages, and adventure games, as my first computer science class—using Scheme—did.
- cwilbur 15y agoI've taught introductory computer programming in Scheme and Pascal. (I think I just dated myself.) And I find myself concurring with this. People who taught themselves to program often have a hard time understanding what novices find difficult. The one that gobsmacked me -- and I only ever ran into this when teaching Pascal -- was twofold: one, that the computer does things in the order they are in the program, and two, that the definition of a function or procedure does NOT execute the function or procedure. Something about Scheme made the distinction between "we are defining a function" and "we are executing a function" much easier to understand. And I concur about the terseness of Python. I've been using Perl professionally for, um, 15 years now (and I just dated myself again). I've written a few toy programs in Python, enough to establish that it's a worthy programming language. But the pedagogical problem is that there's a lot of depth under the surface of Python (Perl, PHP, Visual Basic) - a lot of things going on that the experienced programmer understands and that the novice programmer needs to. It's often easier to learn in languages that have less going on, because the programmer needs to do more explicitly.