

Brother Needs Help Learning to Program - chirp

My brother is looking to get into programming/hacking after a degree in theater. He's smart but has not had any exposure to programming before. As he is currently in Japan teaching English I'm looking for good online materials.<p>What is the best way for him to get started? Any good introductory courses he can take?
======
karlzt
<http://www.htmldog.com/>

<http://ruby.learncodethehardway.org/>

By far the best to start is: <http://learnpythonthehardway.org/>

<http://learncodethehardway.org/>

~~~
chirp
Awesome links, thanks for the info!

~~~
karlzt
upvote me instead of thanking me with a comment to avoid noise.

------
NinetyNine
This book will get him up and running fastest and with the most competency.

<http://learnpythonthehardway.org/>

------
Jebdm
Can you be more specific about why he wants to learn programming? What is he
hoping to do with it?

If he's smart and dedicated, I recommend SICP, but it's fairly difficult (and
assumes things like exposure to calculus): <http://mitpress.mit.edu/sicp/full-
text/book/book.html>

Think Python is a bit easier, but still good:
<http://greenteapress.com/thinkpython/thinkpython.pdf>

~~~
jinfiesto
Seconded. I don't think you can beat Scheme for an introduction to Computer
Science. Not having to think about syntax really goes a long way towards
making it easy to focus on the concepts. That said, I agree with the above
poster about not tackling SICP if he doesn't like math.

Alternatively HTDP, Concrete Abstractions and Touretzky's book (Common Lisp)
are interesting alternatives.

------
TMK
To learn programming with python he should head to the python documents page.
<http://docs.python.org/py3k/tutorial/index.html>

To learn programming with PHP he should head to the PHP manual.
<http://www.php.net/manual/en/>

To learn C or C++ I suggest on reading the standards, even though they might
be somewhat hard to understand, but they have the best information available
on those languages.

For C <http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf> For C++
[http://www.open-
std.org/jtc1/sc22/wg21/docs/papers/2010/n309...](http://www.open-
std.org/jtc1/sc22/wg21/docs/papers/2010/n3092.pdf)

~~~
sixtofour
Python is an excellent first programming language, and has enough legs to
support or launch a career if there's an inclination that way.

I would, however, still recommend Python 2 rather than Python 3. Although the
world is slowly walking toward Python 3, it's still unclear when the majority
of libraries and frameworks will support it. Starting with 2 will in no way
inhibit someone from eventually moving to 3 when that's appropriate. Virtually
everything (including 3rd party packages) in the Python world is available in
2, and a big chunk is not available in 3.

One of Python's deserved claims to fame is "batteries included." It comes with
just about every facility you could ever want, and they're all generally easy
to use. For example, to get input editing in a console program, "import
readline" and you're done. Astounding.

But another benefit of Python is 3rd party library and framework support;
"extra batteries available." Everything that can be done in and outside of
Python can be done with Python 2, but a substantial portion of the 3rd party
world has not yet converted over, and it's difficult to say when that will
happen. The only people, IMO, who should use 3 are people who already know
Python _and_ who have a _specific_ need for something provided in Python 3 or
a 3rd party package.

I'd go with Python's excellent online tutorial to see how it goes, and then
look at other resources if interest remains.

<http://docs.python.org/tutorial/index.html>

You'll note that python.org still defaults to Python 2 in their doc URLs.

Here's Python on the 2 vs 3 question:

<http://wiki.python.org/moin/Python2orPython3>

I wouldn't go with PHP as a new programmer, unless there's a specific desire
to work on WordPress or Drupal sites. PHP is fundamentally a web language,
whereas Python is widely used in all areas of programming. You can still do
web work in Python if you want, so there's no advantage with PHP except with
specific frameworks that use PHP; there's every advantage with Python because
of the huge number of domains covered by it, including the web.

C and C++ are going to be very difficult first languages for someone learning
on their own. Lots of system programming is done in C, and C++, and they have
their advantages. I would wait until at least one language is learned, and an
appreciation for programming in general is attained, before learning C/C++.

<http://www.google.com/search?q=learn+c+programming>

I'd make the same comment for Java as I made for C/C++, for someone learning
their first language on their own: wait. Learn Python first.

~~~
TMK
I agree almost with everything you said, except I forgot to mention in my
comment that the order I listed the languages would be good way to learn them.

Though about PHP. I don't see it as useless language if you learn Python
first. One thing I have noticed is that PHP hosting services are offered more
than for Python, which makes it kinda easy in my perspective to use PHP for
web development. PHP does offer everything you need for web development in the
standard libraries, I have never had need for using any of the existing
frameworks even though they make MVC easier.

You can always write desktop applications with PHP if your really want. Look
at something like PHP-GTK.

~~~
sixtofour
"I forgot to mention in my comment that the order I listed the languages would
be good way to learn them."

Ah. I kind of agree with you now. I personally might still shy away from PHP,
but I have nothing against it (I didn't mean to imply that it's useless). It
would depend on the conversation I'd have with the hypothetical student, but
by that time (after learning Python), the student could probably decide for
themselves.

EDIT: changed parenthesized comment from "after learning a more general
language like Python" to "after learning Python"

~~~
chirp
Yeah, I agree that learning Python would be a good first step. Thanks for
taking the time to reply.

