4 ms·
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 tu
by espeed 16y ago
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/answer/James-Thornton 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 you have a blog? That's usually a good first exercise. It's easy to do using Flask -- follow the tutorial (http://flask.pocoo.org/docs/ http://flask.pocoo.org/docs/).
Here are some tips to get you started:
Use Emacs as the text editor to write your code -- it usually comes pre-installed on Ubuntu, and it has a Python mode. Here are some Emacs tutorials (there are some good videos on YouTube too):
http://philip.greenspun.com/teaching/manuals/usermanual/emacs.html http://philip.greenspun.com/teaching/manuals/usermanual/emac...
http://www2.lib.uchicago.edu/keith/tcl-course/emacs-tutorial.html http://www2.lib.uchicago.edu/keith/tcl-course/emacs-tutorial...
http://www.gnu.org/software/emacs/tour/ http://www.gnu.org/software/emacs/tour/
http://cmgm.stanford.edu/classes/unix/emacs.html http://cmgm.stanford.edu/classes/unix/emacs.html
Use PostgreSQL as your database. To install it on Ubuntu, use this command:
$ sudo apt-get install postgresql
Use SQLAlchemy (http://www.sqlalchemy.org/ http://www.sqlalchemy.org/) to connect your Python website to PostgreSQL.
Here's a good SQL tutorial: http://philip.greenspun.com/sql/ http://philip.greenspun.com/sql/
When you build a blog, you don't have to worry about building a public authentication and comment system if you use something like Disqus (http://disqus.com/ http://disqus.com/) -- you just include the Disqus JavaScript tag at the bottom of the blog's entry page.
Here are some good JavaScript tutorials: http://www.quora.com/What-are-good-books-preferably-found-online-for-free-like-eloquent-javascript-for-learning-javascript http://www.quora.com/What-are-good-books-preferably-found-on...
Use StackOverflow to ask programming questions: http://stackoverflow.com/ http://stackoverflow.com/
- Zolomon 16y agoThis answer is of exceptional depth, even if it only mentions one of the infinite ways to learn programming. +1
- ConceitedCode 16y agoChange out Emacs for Vim and you'll be a pro in no time. Vim tutorial: http://blog.interlinked.org/tutorials/vim_tutorial.html http://blog.interlinked.org/tutorials/vim_tutorial.html
- Ixiaus 16y agoMmmm, unnecessary flame bait. You could have instead, said, "I like and am productive in VIM too, check out this tutorial". I think we all know, at this point, that you can be immensely productive in either Emacs or VIM. /me bias because I'm an Emacs user - but I don't think myself above VIM users...
- SpookyAction 16y agoI agree with the generalities of the response but disagree with some of the particulars. Learning programming should be language agnostic. The "best" language is the one that works for you. Everyone is different and every language is different, some work for some but not others. I'm primarily a Perl person, not that Python is bad, but it's not my language of choice. I advise experimenting with different languages and finding the one that best suits your mindset and needs. For me, Perl is the one that "clicked" with me. I like using it and am productive in it. I've experimented with many other languages (Python included), but Perl just fit me the best. I see the power of other languages and am constantly impressed by what I see others doing in different languages, but ultimately the "best" language is the one that works for you. Even when it comes down to development tools, I'm a vi person. Emacs has it's benefits, but I prefer vi. Pick what works for you. For web development the LAMP stack (Linux, Apache, MySQL, PHP) is arguably the most popular. Most of the open-source CMS platforms such as Drupal and Joomla use it. Facebook is built in PHP on Apache and Linux. I respect PHP as a web programming language, it's accessible, has many of the conveniences of Perl (without many of the idiosyncrasies) and is web-centric. There's a reason it's popular on the web. Experiment and pick what seems to work best for you. There's no single solution. As we say in the Perl world, TMTOWTDI, There's More Than One Way To do It.
- rglullis 16y ago> I advise experimenting with different languages and finding the one that best suits your mindset and needs. The problem is, someone who is just starting doesn't even know what to look for. They don't know their mindset or needs, yet. The OP advice should be taken as "these are good defaults, when you grow older you'll be able to tell what to change and, more importantly, why to change".
- SpookyAction 16y agoBut at the same token, just saying "use this language" presents the same problem. What if Python doesn't work for the OP but picks it because he/she was "told" too. Maybe the OP is a math-centric person and would excel at a functional language, but didn't know anything about them because they were never informed. I think the better answer would be to recommend a few languages and let the OP decide what works for them. There's plenty of good information about all the major languages on the web, including tutorials. After you go through a few tutorials you'll know if that language works for you or not.
- niels_olson 16y agoPrint 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 am on chapter 18 of Mark Lutz's Learning Python, very easy read, the only problem is to not get impatient). It took 3 years to figure out that line 7 (including line 8) was the best way to go for databases. 10 years ago was the first time I read Greenspun's stuff and decided to march down this path (lines 6 and 10). I still use vim as my primary editor, but I'm learning emacs. Most valuable starter tip on emacs I ever got: you should have hundreds of files open. That is a great answer.
- eliben 16y agoI 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.
- niels_olson 16y agoI have another, unrelated, career (military physician) and I'm married, with two kids. So I'm doing this on scant marginal time, and the knowledge gained one day decays quickly unless I can get back in there and cement it the next day. A more efficient path would have been very valuable.
- rudiger 16y agoI agree with most of your points, except... Use gedit as your text editor. It's the default GUI text editor in the Ubuntu operating system, and works well enough for programming, and is significantly easier than Emacs for someone just starting out programming. I'd also suggest MySQL instead of PostgreSQL, for the same reasons (works well enough, significantly easier for beginners).
- forkandwait 16y agoPostgres is no harder than MySQL, except maybe to set up; plus, postgres wont bite you in the ass down the road due to the plethora of reasons that make MySQL a pretty lame solution these days. On the other hand, MBA types will have heard of MySQL -- that might be an advantage, of a sort.
- chamakits 16y agoI agree with you in that emacs isn't ideal for starting out (though I've been using it in the past few months and I'm not going back). But may I recommend geany instead? Its a pretty good GUI text editor. Alternatively Kate...it is quite awesome too.
- dgulledge 16y agoI agree 100% about Ubuntu, Python and PostgreSQL. They're an excellent tool set. You'll want to learn how to configure PostgreSQL. Go to the project website. The manuals are quite good.
- pbreit 16y agoAgree 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 http://web2py.com/book
- gcv 16y agoI totally disagree with espeed's comment. Setting up Linux teaches system administration skills. Useful, but nothing to do with programming. Learning Emacs is fantastic (I'm a huge fan), but again — nothing to do with programming. For that matter, writing a blog engine should not be someone's first exposure to programming. Frameworks and web development should be simply banned for people who haven't yet written a Fibonacci sequence generator. Please don't waste your time learning how to integrate other people's services and APIs. You aren't ready for this yet. Don't think about tools, think about concepts. Learn about how programs flow. Learn about data structures, the basics of algorithms, and recursion. Understand how and why programs are structured the way they are. This stuff isn't hard, and won't take more than a few weeks to learn. Then you should look around at tools and at the kinds of problems you want to solve. In the meanwhile, you'll only slow yourself down if you try to run (e.g., figure out why web frameworks work the way they work) before you can walk (e.g., understand functions).