I’ve written this up enough times that it may be time to really gather this up…
(below is stuff I’ve written to people before that I need to clean up…)
Python is probably the best combination of easy to learn and useful. It also has the advantage of having many very good introductory texts and online docs:
* http://diveintopython.org/
* http://www.swaroopch.com/byteofpython/
* http://www.ibiblio.org/obp/thinkCSpy/
* http://www.freenetpages.co.uk/hp/alan.gauld/Python is also nice because it has widely used Web (Django) and GUI toolkits (among other things).
There are also some nice interactive shells/environments you can use, like iPython, Reinteract, or Nodebox* http://ipython.scipy.org/
* http://fishsoup.net/software/reinteract/
* http://nodebox.net/Once you’ve learned Python, you might want to try JavaScript. It’s definitely ubiquitous, and pretty useful, but confusing for a beginner since it’s linked so deeply into understanding the DOM and the server model. It’s also a functional programming language, and you probably want some more background while you wrap you’re head around that. If you *do* want to wrap your head around that, here’s the MIT weeder-class classic: http://mitpress.mit.edu/sicp/
Perl, PHP, and Java are all handy if you’re gonna touch random code on the web.
You’ll know a lot more about what you want to learn after you pick up the basics. You’re language choices will be to some degree dictated by what you want to program. ie, SQL if you’re dealing w/ DBs, C or ASM for low-level programming, Erlang for concurrent processing, etc. Anyway, you’ll after your first couple languages, you’ll most likely spend a lot more time dealing w/ language-independent concepts and learning APIs/libraries than picking up syntax…
I think everyone has a different style, but the best way I’ve seen people learn is by trying to program a real (non-toy) application. By having an end-goal, you’ll have something that’ll help guide (or require) what you learn to do, and you’ll also get something that at the end of it.
The other good way is to participate in an active open-source project. You’ll be able to start small by tackling small fixes/patches and hopefully getting support and feedback from other members. It’ll also force you to start reading more code purposefully (I suspect if you just d/l’d some open source code, you’d still the have the same problem of not knowing what you’re looking at/for).
http://catb.org/~esr/faqs/hacker-howto.html
Some intro books:
http://www.freenetpages.co.uk/hp/alan.gauld/
http://openbookproject.net/thinkCSpy/
http://www.swaroopch.com/notes/Python
http://docs.python.org/tutorial/index.htmlonline shell:
http://shell.appspot.com/installing:
http://www.activestate.com/activepython/
http://www.python.org/download/windows/I did a post w/ some more resources in the comments:
http://randomfoo.net/blog/id/4165more advanced stuff:
talking to excel:
http://pyexcelerator.sourceforge.net/parsing html:
http://www.crummy.com/software/BeautifulSoup/
http://codespeak.net/lxml/cookbook:
http://pleac.sourceforge.net/pleac_python/index.htmlVisual Programming
Processing
Nodebox