Wednesday, November 7, 2012

How to Become a Programmer - Computers, Math, Science, and ...

Here's a lot of rambling, some small part of which might be useful. Hopefully. It jumps around a bit, so if the first part looks irrelevant there may still be something useable later.

Personally, I learned by reading the GW-BASIC reference we got with our first PC cover-to-cover, then writing simple programs in it for fun (this was in the 80's). Later, I bought a C compiler and did the same with that. After that, it was just a matter of continuing to read and experiment, and writing programs for my own use until I eventually got a job programming in Delphi.

One thing I've noticed when I've looked at materials for learning Java (especially for introducing programming using Java) is that many of them focus on the ideas of objects, classes, and an object-oriented way of approaching problems upon the student right from the start, and then fill in the other details later; They focus on using classes before explaining anything about how to actually make them do something. Sometimes it helps to work in the opposite direction, and start with simple, procedural programming, and then tackle objects and classes later.

Also, the concept of classes/objects is often introduced in an awkward way that can give the impression that a class needs to mirror a real-world object directly -- of course, it doesn't, and attempting to design classes this way often leads to overly complex and/or awkward designs. It's important to understand that an object is really just a collection of related data relevant to a single instance of something, and maybe some functions used to work with it (simplifying things a bit). It doesn't need to correspond to anything that's distinct or meaningful outside the program, and it doesn't need to perfectly model a real item even if it represents one. I think failing to dissociate classes from the real, outside world is something some people stumble over at first.

I didn't start with object-oriented programming right away, I learned about it later after I'd already been programming for some time. And it got a lot less awkward when it clicked that classes/objects could be used much the same way that I was already using structures, but with the structures and related functions merged into classes; that classes were more of a way of organizing code than anything else, and didn't need to be a radically different way of doing things.

Another thing I've found is that when I first learn something I may sort of understand it, but it requires a lot of mental effort to apply it and it goes slowly... then once I become comfortable with the concept there's a sudden, dramatic improvement. If that's what's happening with your friend, he may surprise you after things have had some time to soak in. It's also more difficult to try to soak in several new things at a time, though, so it's probably best not to rush things too much.

It could also be that he's having trouble because he's trying to work on too many different aspects of the process at once. Possibly when he's gotten more comfortable with the language and with basic concepts like functions and variables, he'll be better able to focus on the algorithm and how to implement it. It's also possible that he can understand the core concepts just fine, but gets stuck trying to decide what approach he's supposed to take -- in which case he's not using your guidance as a way to solve the problem, but as a way to resolve his indecision. If so, he'll probably get better when he's gotten more comfortable with things, and when he's under less pressure. It might also help in that case to make sure he feels he can choose his approach freely and doesn't feel like it's imperitive that he select exactly the "right" way, and to remind him that if it doesn't work he can always try something else. I realize he's probably expected to learn good practices, but it might be best to focus on simply getting it done first, then worry about correcting his style later.

The issue of abstract thought and Asperger's is not necessarily as simple as "aspies don't understand abstract concepts". The strange thing is, that although they're noted for having problems with some kinds of abstraction (like figurative speech) they're also noted for (at least sometimes) excelling in fields that depend on abstractions (like math, computer programming, various forms of art, etc.). It's always seemed paradoxical to me, and suggests that there are some very significant things that are very poorly understood about Asperger's in that respect.

Source: http://www.wrongplanet.net/postt214733.html

appleton super bowl recipes denver weather planned parenthood what time does the superbowl start kobayashi margaret sanger

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.