Live data from Hacker News

How can I learn to program?

news.ycombinator.com

51–60 of 77 posts

Re: How can I learn to program?

#51
post #10

Set up a Linux computer (Ubuntu Linux is the easiest to set up), and spend the summer learning to program in Python. Here are some of the best online Python tutorials, including a link to videos and course material for MIT's introductory computer science course, which uses Python: http://www.quora.com/How-can-I-learn-to-program-in-Python/an... Build something that you want to use so it will be meaningful to you. Do y…

Agree with most of this. Python is an excellent language to start with. I would suggest downloading and using Web2py. It provides a complete environment for Windows, Mac and *nix. You can be programming a web site in literally minutes. Web2py can run entirely off your PC (with Rocket and SQLite) but then you can easily deploy to a server (nginx, apache, etc; Mysql, Postgres, etc). The Web2py Book is terrific and includes a very brief summary of Python: http://web2py.com/book

Re: How can I learn to program?

#52
post #37

The best way to learn programming conceptually is to read Structure and Interpretation of Computer Programs, by Abelson and Sussman. The book is available free on-line, along with video lectures. - http://mitpress.mit.edu/sicp/ - http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma... Once you have mastered this material, learning the specialization of web development shouldn't take more than a week or two of…

I would advise AGAINST diving into SICP until you are familiar with turning text into a program with at least loops, conditionals, and basic functions.

I've been a fan of advocating SICP as a first text specifically because students would then have fewer bad habits to unlearn.

Re: How can I learn to program?

#53
post #37

The best way to learn programming conceptually is to read Structure and Interpretation of Computer Programs, by Abelson and Sussman. The book is available free on-line, along with video lectures. - http://mitpress.mit.edu/sicp/ - http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussma... Once you have mastered this material, learning the specialization of web development shouldn't take more than a week or two of…

It's such a great book and I basically agree with everything you said, but I feel I should add a little caveat. SICP is truly a masterpiece, but it might not be the best book for someone just starting out who wants to do productive stuff like prototype web apps. Peter Norvig wrote in his review, "I agree that the book's odds of success are better if you read it after having some experience" and I think I agree too, a…

The original post asked for advice on learning "the ins and outs of programming" — and prototyping web apps most certainly does not qualify.

No comment on HtDP, as I haven't read it. Heard good things about it, though.

Re: How can I learn to program?

#55
post #52

Earlier quoted context omitted.

I would advise AGAINST diving into SICP until you are familiar with turning text into a program with at least loops, conditionals, and basic functions.

I've been a fan of advocating SICP as a first text specifically because students would then have fewer bad habits to unlearn.

Have you had success with assigning it? Have you seen beginning students learn using it, or have they come back to and said "gosh, I am glad you told me about SICP two years ago, it put me down the right path?"

You might have higher caliber students than I have had (or am), but I have a hard enough time explaining how to use a text editor in one window and run a script in another. To get to actually doing something useful enough to keep them interested via SICP is, well, beyond even imagining.

Re: How can I learn to program?

#56
post #52

Earlier quoted context omitted.

I've been a fan of advocating SICP as a first text specifically because students would then have fewer bad habits to unlearn.

Have you had success with assigning it? Have you seen beginning students learn using it, or have they come back to and said "gosh, I am glad you told me about SICP two years ago, it put me down the right path?" You might have higher caliber students than I have had (or am), but I have a hard enough time explaining how to use a text editor in one window and run a script in another. To get to actually doing something u…

I'm about to give it a shot, and I'll let you know how it goes. :) Joking aside, I think the first chapter of SICP is the most useful, straightforward, and gentle (yes, gentle!) introduction to programming in existence.

While it obviously sucks that your students can't figure out text editors and scripts, I hope to alleviate some of the pain by using Racket, its integrated editor, and the "Run" button on the toolbar.

Re: How can I learn to program?

#57
post #56

Earlier quoted context omitted.

Have you had success with assigning it? Have you seen beginning students learn using it, or have they come back to and said "gosh, I am glad you told me about SICP two years ago, it put me down the right path?" You might have higher caliber students than I have had (or am), but I have a hard enough time explaining how to use a text editor in one window and run a script in another. To get to actually doing something u…

I'm about to give it a shot, and I'll let you know how it goes. :) Joking aside, I think the first chapter of SICP is the most useful, straightforward, and gentle (yes, gentle!) introduction to programming in existence. While it obviously sucks that your students can't figure out text editors and scripts, I hope to alleviate some of the pain by using Racket, its integrated editor, and the "Run" button on the toolbar.

If you wanted to write a blog post about SICP and beginning programming students, that would be great. I think after one has successfully programmed a moderate sized project (a text based game of life, for example, or a simple cgi+session+database app), SICP would be great... but not till then...

(But then I am the type who very early learned to avoid what the best professors thought was a good intro text and only trust my fellow students. Because once you see the field as a whole, you have VERY different taste in introductory texts, and more seem to prefer terse and comprehensive overviews which start from first principles, which are also the VERY WORST sort of introductory text possible.)

Re: How can I learn to program?

#58
The best resource I've seen is the Pragmatic Bookshelf Learn to Program, by Chris Pine. A good friend of mine who had no programming background whatsoever went through that book this August, enjoyed it and made great progress. It was enough that he found himself writing small scripts to help organize research at his pysch research job. The fact that he could occasionally save 15 minutes of work by spending 5 minutes to write a small chunk of code, kept it useful and kept him at it. The book uses Ruby, but what it really teaches is programming. My friend has since picked up quite a bit of Python and even a bit of JS with very little difficulty now that he understands functions, classes, iterators, blocks, etc...

In fact, what I saw impressed me so much that I've bought a copy to work through, even though I'm already writing basic flash games in AS3.

http://pragprog.com/titles/ltp2/learn-to-program

Re: How can I learn to program?

#59

A friend of mine is in the same boat. I forwarded him all the usual suspects, from "Why's Poignant Guide to Ruby", to "Learn Python the Hard Way", to "The Schemer's Guide". But none quite worked for him. He finally found and settled on Harvard's intro CS course, CS50: https://www.cs50.net/

thank you so much!! I was in the same boat just trying to plow through books, having the basic concepts down first after working through this class should help a ton! :)

Re: How can I learn to program?

#60
post #10

Set up a Linux computer (Ubuntu Linux is the easiest to set up), and spend the summer learning to program in Python. Here are some of the best online Python tutorials, including a link to videos and course material for MIT's introductory computer science course, which uses Python: http://www.quora.com/How-can-I-learn-to-program-in-Python/an... Build something that you want to use so it will be meaningful to you. Do y…

Print out espeed's answer. Put copies on your desk, tape them to your refrigerator, tape them over your bed. Put laminated minature copies in your wallet. I started learning this stuff... my god... 10 years ago. It took me over a year to figure out that line 1 was the best first step OS (a question I didn't even ask until 4 years in). It took me four years after that to figure out that line 2 was the best second step…

I think you're overreacting. It's hard to me to imagine that you were somehow slowed in your learning progress by using Windows instead of Ubuntu, MySQL or SQLite instead of Postgres and Vim instead of Emacs.

This is because the first and foremost important thing about learning to program is the desire to do so. The early hackers programmed by directly banging hexadecimal machine code into computers without screens. Were they not programmers? Sure they were. Don't put too much stress on the tools - just program.

Post reply on HN