Where do I begin to learn programming?

As the title says…

I have virtually no programming experience. I would like to start from the ground up, but there are so many choices…so little time. What would be the best way to begin so that I one day am a great programmer, and not just a script kiddie?

I have been advised to start with visual basic express web developer…is that good advice?

Thanks!

How to Design Programs

http://www.htdp.org/2003-09-26/

An outstanding book to start with, and free.

Structure and Interpretation of Computer Programs is a classic. http://mitpress.mit.edu/sicp/

Available online for free, along with the Scheme language that it’s based on.

There are many kinds of programming; the best way to start depends in large part on which language(s) you want to learn.

I appreciate the sentiments behind the recommendations for Scheme–and those books as well–but I think it’s really hard to understand what’s so great about it or other declarative languages until you have some programming maturity. I recommend starting with Learn Python the Hard Way for three reasons:
[ol]
[li]The title of the book is honest. There’s no royal road to being a great programmer, and it’s certainly not a skill that you can pick up in 21 days (or at least not beyond the basics). It really does require discipline and practice, and you should be suspicious of any book that doesn’t acknowledge this fundamental truth.[/li][li]Programming in Python doesn’t obligate you to care about weird syntax. It really looks a lot like English, and that’s a big deal when you’re just starting out.[/li][li]And on the very practical side, Python is reasonably fast, and its official documentation is among the best I’ve seen for free software.[/li][/ol]
I think that Python is the best starting language largely because of my second point, but I also know that it doesn’t really matter. Your eventual goal is to become familiar with a wide range of languages and paradigms, but you need to pick up a language and become comfortable with it before you start to branch out, and getting started is more important than getting started with any particular language.

To add to this (I agree Python would be a good choice) - you want a language/environment where you can write simple small programs quickly so you can start building up an understanding of how programming works. You want to be able to accomplish some small tasks and see the results quickly - then you can build on that.

I’m going to buck the trend here - I don’t recommend starting with a book at all. Now, this is very much YMMV, but for me, getting into programming was all about having something I was excited about figuring out, and reading a book wasn’t it. I highly recommend getting yourself a project, and going from there - scripting other programs is a great way to learn the concepts, and also has the advantage of (usually) having simplified languages (ok, not compared to python {unless the scripting language is python}, but compared to C or Java).

I can’t recall exactly what my first programming project was (gimme a break, that’s at least a decade ago), but I know I was poking at the innards of video games pretty quickly. A lot of games these days have great scripting/mod languages, and whole communities you can ask for help. If video games aren’t your thing, a lot of graphics software comes with scripting access (3d especially, but also the Adobe suite), and Excel has Visual Basic for Applications. If you like animation, Flash is great for integrating programming.

If you really do just want to start from scratch, though, I can’t recommend Python highly enough. It’s much simpler than most programming languages, so there’s less ‘Oh, crap, forgot a semicolon’ nonsense, which is super-helpful at first. Another option is Processing - it’s a much less mature language, so there are some gaps in documentation and so on, but it has the really nice feature of having graphics built-in (and sort of being the point). It was designed as a programming language for non-programmers, so the graphic integration is very deliberate - for a lot of people, being able to see what your program does is more helpful than reading lines of output (or, god help you, trying to figure out graphics libraries).

But here’s a really important point: languages don’t matter very much. Honestly, once you’ve played with a half-dozen languages, you’ll have the concepts down, so getting into a new language is as easy as a help file and google. To my mind, it’s way more important to have something you’re excited about, and have fun doing, so you don’t burn out. If you find yourself staying up later than you should figuring out how to fix that one line of code, you’re in it for the long haul.

If that’s anything like Learn Ruby the Hard Way. I wouldn’t recommend it.

It makes you learn things by rote without ever adequately explaining what he hell you’re actually doing.

How old are you? Are you looking for a career or a hobby? Web design or something else?

What language to start with will depend on application and your personal taste. It may sound silly, but I’d pick a language that strikes you as pleasurable to look at!

I agree with this. At my first job interview (during the L.B.J. Administration :smack: ) it was when I mentioned enjoying programming that the interviewer got excited.

I recommend picking a small source program off the web as a starting point, and hacking out code of your own invention. Bookmark good on-line tutorials but access them on an as-desired basis.

Hi and thanks for the responses.

I am 40. I work for a company that tests engines/transmissions. We have an in-house program that we use to run various tests on these devices. I know that its programmed in VB and there are macros involved with Excel. However, I don’t want to just learn enough to be dangerous…I want to learn enough to be good to great at it and be able to use that knowledge to help out my co-workers. I feel that that will only happen if I start from the ground and work my way up.

Awhile ago I was considering writing my own test so that it would check out all the instrumentation on the engine and transmission prior to running any real tests. That way an engineer can determine quickly that a transducer, or some other device is reading good, or not reading at all. This is no small task when we are talking about dozens and dozens of different devices/transducers.

My other motivation is that a co-worker who is an engineer laughed derisively when I said that I was thinking about writing my own test…and since I am not an engineer I guess she thinks that I don’t have the capability??? Perhaps I don’t at the moment, but I know that I can prove her wrong eventually. And if I can learn enough about programming to fix a bug, or at least be able to explain what the bug is doing would be great.

Find someone who will sit down with you and show you some basic operations with a simple programming language. You can get a good idea of the basics of programming in short time. Many people start with something called a “Hello World” routine. That is a waste of time, you already know how to type. You need to understand the concept of variables, forming expressions, arrays, if statements, and loops. From that point you need to read a book (or online docs) to get an overview of all the elements of a particular programming language. If you’re not good at picking up things on your own, consider taking a class at this point. Anywhere along the way that you get frustrated by the concepts may be a sign that programming is not for you. But don’t give up too easily either, anybody can have trouble grasping new processes.

How to Become a Hacker by ESR. Examines the philosophy and mindset behind programming as much as how to start programming.

I’d say the biggest hurdle nowadays is just getting set up.

I hear about people spending hours installing and setting up visual studio, downloading projects from the web, and finding they can’t get a single thing to compile. Then being put off programming forever.

I thinking starting with a scripting language like python is a good suggestion. And for very simple programs while you’re just getting used to variables, loops etc, you can run them on web sites like this.

Thanks all for your input.

What if I dove into VB as a first language? I am getting the impression that Python is the way to go if I want to get a truly fresh, baseline start in programming which will help me be a “wizard” programmer one day (haha). Any thoughts? I have read elsewhere that it really doesn’t matter…just pick one and start. Not sure though…seems pretty daunting and I want to make sure i start off on the right foot.

The language you choose to start really isn’t that important. You’ll be expected to pick up languages as needed, so the basic skills and concepts are more important.