4 ms·
Set up a Linux computer (Ubuntu Linux is the easiest to set up), and spend the summer learning to program in Python. Python is easy to learn (not much syntax),
by espeed 15y ago
Set up a Linux computer (Ubuntu Linux is the easiest to set up), and spend the summer learning to program in Python.
Python is easy to learn (not much syntax), easy to read (explicit vs implicit), has a big ecosystem (more packages/libraries), is taught at universities so it's easy to find good programmers to help, and is used by many large websites/companies so it's a good language to know.
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/
UPDATE: Here are links to some commonly-used scientific Python packages (http://www.drewconway.com/zia/?p=204 http://www.drewconway.com/zia/?p=204).
- AlexMcP 15y agoI like all of this advice. The key threads running through it at which I nodded my head in agreement were: 1) Free software/languages 2) Cut corners (disqus) 3) StackOverflow. This was a super life saver as I never had someone next to me while learning to just ask a quick question. The response time on it is often incredible. Focus less on your 'platform choice' or whatever, as that can actually be quite fluid. Programming is programming, so spend more time writing code in the beginning I'd say.
- espeed 15y agoFocus less on your 'platform choice' or whatever, as that can actually be quite fluid Yeah, but programming on Windows is a PITA so I found its simpler to just eliminate that from the equation :)
- mattmanser 15y agoAnd this is why your advice is actually bad, op said nothing about his platform choice and you're recommending he should go run a marathon when he's never even jogged. Windows programming is not a PITA, that's a flat out lie from you. It's total and utter nonsense, especially as Windows has arguably the best IDE of all the platforms. In the end it's exactly the same as linux programming. And iPhone programming. And BBC Micro Programming. And Spectrum programming. It's just that you have some personal preferences. Programming is just programming and that's what he wants to learn, not your dogmatic preferences.
- espeed 15y agoThere's much more to a productive programming environment than IDEs, and most Python programmers don't use IDEs anyway. The OP says he wants to do a startup and plans to go to grad school for physics, but in terms of programming, he doesn't really know what he wants. That's why he is asking for advice on what path to take -- he is asking for "preferences," recommendations, and guidance. How many startups do you know that run Windows? How many high-performance physics labs? When people were asking for faster horses, they didn't know to ask for automobiles because they didn't know that was something to consider. The had no perspective. Helping someone onto a more productive path from the start can help them get to where they want to go faster in the long run. How long does it take to run a marathon? The OP has a timeline of 6 months.