Greetings, I'm enjoying this discussion.
On 7/14/07, Alan Gauld <[EMAIL PROTECTED]> wrote: > Hi, > > > books with maximum outside help, and others can't learn from books > > at all, they need to have their hands held from the first step to > > the > > final destination. > > IMO Anyone in that position is never going to be able to program > at any level of competency. Its a simple fact that to program at > anything beyond the most basic level you will need to read > manuals/references etc. If you can't read and learn you will > struggle to learn enough of anything to progress. Reading and comprehension are fundamental skills. I can show someone how to cut a wooden board with a saw, and join the pieces with a hammer and 10p nails, to make a bookcase. That doesn't require reading. They just need to watch me, then do it themselves until they get it right. It takes a little time to learn if they've never done it before, but it doesn't require reading. They can load books on the bookshelf. That doesn't make them literate. If they want to build anything more complicated than a bookshelf, then reading is a handy skill to have! But computer programming requires reading. The programmer has to be able to read in order to write a program. Why? Because documenting a program is something that every programmer should do, and if you can't read, how can you possibly WRITE documentation? =) > > > and crossword puzzles. I'm usually able to learn from books with > > minimal help. Even so, in the beginning, the documentation for a > > new computer programming language is somewhat difficult to follow. > > I'm intrigued by that statement. What do you find challenging? All of it seems complicated at first because I'm not familiar with the nuances of the new language. As you've noted, the language docs are written for experienced programmers, and may not be suitable for learning from. As I gain familiarity with the language, things that seemed over my head when I first started, start to make sense. I didn't understand anything at all when reading the OOP docs. Why? I'm completely new to OOP, and I don't have a good grasp of the vocabulary yet. However, as I'm reading more, and doing more examples, I'm feeling more comfortable with the documentation. That is not to say that I understand it yet. But it isn't quite as difficult to read the docs as it was, say, a week ago. As a hobbyist, I do my programming in my spare time. I do not have a CS background. Sometimes, documentation assumes a certain level of understanding. Often, I'm never able to understand certain things. > > Once you learn one language and understand the basic concepts > then learning a new language is usually a very straightforward > process. > After all there are relatively few new things to learn: > > How the basic control strucctures are done: > Sequences (including overall program structure) > Loops > Branches > Modules( ie. procedures/functions, later to include OOP if > relevant) > > How I/O is done - reading input and writing output, and file handling > > Data structures supported: > numbers, strings, boolean, collections > > Those can usually be learnt in a morning and after that > its a matter of gaining experience writing (and reading) code. Not everyone can pick things up as fast as some people do. I usually start out slowly. But the things I do learn, I try to learn well. I type in a lot of code, and I run a lot of code that others have written, to see what it will do. I agree that the basics are pretty much the same for most computer programming languages. One of the first languages I learned was a dialect of Lisp, a functional programming language called Logo. I was pleased to find a Logo interpreter written in Python a couple of days ago. What a treasure! =) [Only a hobbyist like me might think so?] (For more information about Logo, see: http://www.cs.berkeley.edu/~bh/ ) > > I generally expect someone at work (not a hobbyist) to be fairly > fluent in a new language within a week. I would never send > someone who can program on a training course for a new > language (except for C++!) I would expect nothing less from a professional programmer! Why the exception for C++ ? > > > use Internet search engines to look for relevant code snippets. > > This is fine but has a danger that you wind up stitching > together snippets without really understanding how they > work. This leads to a debugging nightmare! Yeah, I know, right? =) I got into the computer programming hobby shortly after buying my first computer. I'd download code snippets from BBSes and run them on MS-DOS. It could be very dangerous! Plus those ancient Borland compilers... > > > I can often learn how to solve a particular problem by studying > > source code that is already working, and modifying it to suit > > myself. > > > > http://www.google.com/codesearch/advanced_code_search > > That is the best way to do it IMHO. It ensures you pick up > language idioms, find interesting shortcuts and once you > start to see whays to improve the code you know you've > pretty much got on top of things! This is okay if you already know how to program a little bit. However, if you really don't understand the fundamental concepts of computer programming, it probably won't help much. Plus, this way requires that the student know HOW TO READ! =) Yes, we're back to that little snafu again... reading (and comprehension). > > > Computer programming is a a literate activity. If one can't > > read, a book is no good. > > Indeed. Some folks tried to introduce purely visual > programming some years ago but the limitations of > not using text were so high that most efforts would up > in a strange hybrid experience of limited value. > (One such experiment was Borland's ObjectWindows - did > anyone else ever use that?) Was that the one that used objects like old flowchart symbols to design a program? I may have seen pictures of it somewhere, but never actually saw it in person. =) > -- > Alan Gauld > Author of the Learn to Program web site > http://www.freenetpages.co.uk/hp/alan.gauld BTW, your book is helpful as well! Happy (Python) Programming! -- bhaaluu at gmail dot com _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor