Good Starter Language? (was Re: REALBasic and OpenAL)

Justin Dugger jldugger at gmail.com
Thu Mar 31 18:40:59 CST 2005


On Thu, 31 Mar 2005 13:56:59 -0600, Jeremy Fowler <JFowler at westrope.com> wrote:
> assembler... ;-) Learn from the inside out!

More than one reputable instructor actually prefers this method, of
using assembler to teach programming. It's very informative of how
programs work, after all.  If you intend to take such a route, you'd
have to pick up the books "Art of Computer Programming." I haven't
read the books, but I've read of them and if I understand correctly,
he introduces a computing machine similar to a MIPS machine and
creates a low level programming language around them.

Certainly, students who learn ASM first will pick up on how new
langauges translate to ASM faster than without.  With careful
instruction, it should be just as easy to learn on a z80 as say, LOGO.
 The very most important aspect, and the one that most often damns
LOGO, is that you have an adept instructor who's knowledge encompasses
and surpasses the book and the topic. LOGO was designed for elementary
students, and I would argue that it does a very good job at it, but
the important lessons of programming go untaught by the majority of
elementary teachers who use the system.

Choosing the language of instruction largely depends on your goals. 
Some people want to impart the undying constants of a programming
language, though they usually fail, because programming languages are
as varied as the forms of human expression.  Narrowing that down to 
teaching students impartive language techniques, you should probably
look for a language without too many confusing "because I said so, and
we'll see why later" aspects. This pretty much rules out Java, and
C++, which is also compounded by pointers.

Reguardless of the language, the basic topics (more of a bare minimum)
you should cover when teaching programming languages should be:

I. Arithmetic (including booleans and comparitive logic)
II. Variables & Datatypes
III. Control Flow
   A. Functions
   B. Conditionals (If Then Else)
   C. Iteration (While/For/Loops)
   D. Recursion

Any decent cirriculum woul probably include arrays, strings and maybe
some basic data structures.  But the above outline can be done in C,
python, java, ruby, perl, or Caml, to varying degrees.  Some languages
are more explicit than others about datatypes, but if you don't
understand them you'll almost invariably come up against a wierd
problem you don't quite understand.

If the instructor or the audience cares about viability of the
language, then perhaps you're best of making Java programmers.  It
seems to have the best usability for the "because smarter people know
when you can do this differently" ratio.  But it requires you at least
touch on the following:

* Objects
* Exceptions
* Permission types (i think i just made name that up, but basically,
public/private/protected)


More information about the Kclug mailing list