Learn Python The Hard Way: Warnings For Beginners
learnpythonthehardway.org
learnpythonthehardway.org
They'll learn the value of those tools easily soon enough. Before someone has actually written code, all of those things are barriers, not tools, and the only reason to use them is cargo-cult-ism. Once they've written a few lines, they'll start to appreciate the value on their own.
Any suggestions on how to explain what the terminal is and why it is necessary? I feel like there has to be a "pre-learn python" book that explains the basics of how computers work. This probably already exists though... anybody know?
2) When you want to do something very specific the terminal can be much more efficient, as well as easy to explain. example "copy c:\foo.doc c:\bar.doc"
versus (e.g.):
1) Navigate explorer to c:\
2) Find the file named "foo" with the MS Word icon and click and drag it, staying in the same window
3) Click on "Copy of foo"
4) Press F2
5) Type in "bar"
The shell way is both faster and easier to communicate to someone else (as long as they know how to open a terminal).
Having said that , I think there is some merit in showing somebody how to make their programs output to either a local GUI or to the web relatively quickly since they are more likely to perceive that as a "proper" application.
I can see how fast could things turn unmanageably hard when a novice try to tame the keyboard, an unfamiliar text editor, the command line, and a programing language at the same time. I think that should be the reason why all the programing systems, which are intended for non-professionals, and I know of have a tightly coupled ide. (Arduino, Logo, NodeBox, Fluxus, and the aforementioned Processing) Did I forget something out? Do anyone know any popular, or less known exception?
Not everybody that learns Python is looking to become a professional programmer, just leave them the fuck alone and let them learn to code in their own way.
I learned Javascript in shitty Aptana Studio and (thanks to Zed) Python in gedit. Now I use Vim for everything.
emacs gives you the power to do much more but it doesn't force you to use it.
To be fair making emacs a complete Python IDE that has the same features as Eclipse for Java has a steep learning curve and it is not trivial. But for the book you don't need it (some don't need it even for professional work with Python provided that there are other useful features in emacs).
Look, I love my editor just as much as the next guy. I have tremendous respect for emacs, and you can take vim from my cold, dead hands (and no, I will not start those wars now, either). But a beginner has far too much trouble just getting shit fucking installed and working consistently.
Case in point: the reason why a menagerie of tools and scripts for setting up programming environments make the front page of HN every week is because it's a total schlep to try and get your environment set up. And this is an audience of experts. That 30 second fabric deploy script is literally the most convenient that process will be for anyone, ever. A beginner might have a hard enough of a time touch typing.
I think Zed's entire point is to dissuade beginners to listen to people who are proselytizing as you are now. Let the beginner find emacs when they're ready. Trying to move them into that habit up front might be beyond the opportunity cost of programming for that individual. And then a community which is attacked left and right by ignorant people in power trying to legislate it away will have have lost an ally do to pithy zealotry.
Any amount of editor or environment advocacy on your part is really just injuring the signal to noise ratio.
The guy you're responding to is suffering from this: http://en.wikipedia.org/wiki/Curse_of_knowledge
Not everybody that writes code needs to be using Emacs or vim.
Just the same, not every 6 year old kid learning to play violin needs a Stradivarius.
I've been using Emacs for counts in head 13 years, almost 14 now. I've also spent many years teaching new people to use it and I can tell you right now, most people not willing to dedicate some time independent of anything else to just learning Emacs will get any value out of it.
Don't distract them from learning to code. End of story.
Even just the simplification of the visible interface and the docs is an underestimated source of comfort and ease of learning.
The odds of trying to become a programmer without cursory exposure are not great.
Knowing how to use a decent text editor is a more advanced skill, but after years of using one it's hard to remember how it was before.
With a normal text editor , copying and pasting is not especially difficult, especially with the small codebases that beginners will be working on.
With a featureless text editor, you can copy and paste for sure, but making edits to the pasted text is much more tedious.
I'm sure you can configure around this, but it's not something a newbie should be worrying about.
I actually know a number of competent programmers who've never touched vi at all.
Once you get interested and get some basic abilities, then you can worry about optimizing your efficiency with power tools.
It's all about reducing the number of hoops that they have to jump through to get results. Once you get up to speed, sure, learn a decent editor. But in the meantime, use gedit - it's reasonably good (eg. has auto indent and syntax highlighting), free and available for pretty much everything.
Or sign up for something like pythonanywhere.com.
Also, there is a difference between "easiest to learn" (e.g. uses keyboard + mouse) and "easiest to use" (e.g. keyboard navigation). In the hands of an expert, Emacs and Vim are more efficient than other editors--in a very real sense, they are easier to use, but only after you learn them.
Learning how to use an editor well enough to be efficient is an O(1) task. The benefit to using a powerful editor efficiently is O(n) to however much programming you do. Unless you don't plan on doing much programming, learning how to use a good editor is worth it.
There are some other reasons as well (e.g. Emacs is extremely consistent, customizable and supports every single thing you can imagine doing in a text editor, and then some). However, I think this is all secondary to just being more efficient and not having to think or switch contexts (e.g. never going from typing to using the mouse to using the arrow keys and back to typing).
That does not mean everyone should be doing the laborious "move hand to mouse, do visual scan, click" loop several times to initiate every action, because that often ISN'T the shortest path from A to B.
vim isn't unnecessarily complicated for the people who really need it. If you need to extend and automate and customize to any significant degree, you will need an editor which offers scripting that hooks into most of what it does, which is unavoidably more complicated than notepad.
That is apart from matters of taste, which aren't a matter of complication so much as "I want to use multitouch gestures to perform editing tasks" or "I love LISP as a configuration language" or whatever.
I do not know a whole lot about sublime, but from a skim over the first few relevant google results it looks like it's got some power to it. If someone wants to learn that, fine. What I object to is the "just use gedit" in the article. That means no syntax highlighting, and frustratingly little power in the editor.
There are some things the mouse is very good at - picking from a visual display, describing relative motion. The mouse is only useful in programming to the degree that these things can be made relevant. I have every expectation that this fits some people better than others, but I do think that people frequently overestimate ease of use with the mouse and underestimate ease of use without.
The good part is that it'll ignore capitalisation, underscores, etc. and you can start typing something in the middle - "foo" will pick up Foo, foo, test_foo, widgetFoo, foobar and FooBar.
But it is time you're doing something other than producing tangible output. That can cost you a student. Vimtutor can be done after you've learned to code a little.
But, realistically, there are low-barrier editors for learning programming; no sense in complicating the initial problem.
I realise that you weren't actually advocating showing this to a beginner programmer, but I can't help noticing the irony that the above would be meaningless to a newbie learning emacs for the first time. Indeed, exactly that kind of WTF moment can stop a fledgling programmer in their tracks, even though it has nothing to do with programming.
As you say, there is no sense in complicating the problem. If someone wants to learn Python, and they're working through beginner exercises, a REPL or at most a simple plain text editor will do just fine.
Coincidentally, I thought the tutorial was very well done. It certainly helped me get up to speed fairly quickly without being overbearing.