David Rowland <email@hidden> wrote:
On 2007 Dec 20, at 07:46, Jeffrey Oleander wrote:
I think it's best to start with assembly language,
without pre-processor macros, micros and such,
to begin. It's more genuine. There's less clutter.
Pointers are just addresses. You can add off-sets
to a base address, etc.
Unfortunately, Intel assembly languages are kind
of messy, too, but still worth the effort because it
builds a solid foundation for understanding all
of the languages layered on it.
Couldn't disagree more. Getting mired in the
peculiarities of a cpu is death to motivation,
Yes, it would if you're stuck with peculiar CPUS, I
suppose. I did minimal work with those, in the beginning.
and it teaches you nothing about structured
programming or OO programming.
Yes, it doesn't require you to design and write in a
structured or OO manner.
Better to start with "Hello World" in some
higher language and go from there with
a good tutorial or text or class. I think
that learning proceeds best when one can
accomplish a set of simple tasks and feel
rewarded at each step by the accomplishment.
Assembler presents too high a threshold
for the beginner.
Actually, it's probably best to start with machine code,
with a simplified table of instruction codes and write a
program to add a couple integers. The nice thing is that
it's NOT abstract. You can even show the circuit designs
needed to execute the instructions, and put your hands on a
full adder, for instance (and, no, I'm not talking about
snakes:) and trace through what happens to the signals
passing through them.
Then move to assembly language subroutines, with the
instructor providing a wrapper that will call the
function(s) and print results.
The most baffling, distracting part, at first, was all that
gibberish required to compile/assemble, link, load and
execute.
Then move to a non-structured "higher" language like
Fortran, and tell the compiler to show you what the
assembly language would look like; do separate runs to see
the differences between the unoptimized and the optimized.
Then a structured language like C.
Then OO concepts and languages.
I always found "Hello world" programs to be useless and
frustrating. They illustrate very little, don't do
anything interesting, and don't provide that first rung to
get you going up the ladder by showing and explaining how
things work. I have the same impression of the vast
majority of the Objective-C materials available, and too
often the error messages and such don't push you along the
way; things tend to either just work and look so slick, or
just flat not work.
The moment of enlightenment for me was when the COMPASS
prof assigned us to write a program to print a
cross-reference table of variable declarations and other
references (separated into sets and gets). Suddenly, all
of the mysteries of what had seemed to be arbitrary
punctuation, etc., became clear as I tried to figure out
how to find those variable names vs. register references,
macros, micros, etc.. Then all of the languages with which
we were working at the time in various classes just clicked
into focus. (Though I still hate parsing and the attendant
layers of context rules. By the same token, there were
some things in math that were an arbitrary jumbled blur
until I read a history of the development of the concepts
and saw the bumbling path by which the ideas had been
worked out. The texts were too sparse, sanitized, and the
classes too driven by a rigid time schedule toward
unspecified goals.)
I suggest Java as a starter, because it is in the C
family and one can move easily to C or C++.
But Python wouldn't be bad.
Different people learn things better in different ways.
Try to notice what works best for you at each stage so that
you can advise the next n00b who asks.
One I forgot, but which I think someone else mentioned that
might be worthwhile is REALbasic.
____________________________________________________________________________________
Never miss a thing. Make Yahoo your home page.
http://www.yahoo.com/r/hs
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden