Next:Syllabus
Up: Overview
Previous: Algorithms
Languages
What's Wrong with Teaching Other Languages
What's Wrong with High Level Languages in General
- Close enough to algebra to be confusing
- Assignment looks like equality
- Equality testing uses a different operator than in algebra
- Implied multiplication doesn't work anymore
- State changes everything
- Key concept that needs to be taught first
- Functions
- Expressions are Hard
- Precedence
- Associativity
- The term binary - has double meaning
- Parenthesis are needed
- Especially confusing when functions are also used
- Balancing is difficult
- Variables
- Concept of scope has to be introduced
- Have to invent variable names
- More choices for the student to make
- Hard to make them descriptive
- End up either too short, or too general
- Risks students using vulgarities or other inappropriateness
- More mental bookkeeping to remember variable usage
- Keyword conflicts
- Certain letters (lower-case L, lower-case Z) look like numbers
- Too many ways to do the same thing
- Do while vs while do
- Syntactic sugar like for and switch
- Functions vs macros
- Mutator arithmetic vs expression arithmetic
- Student has no clear understanding of how to do what they need
- Hard to communicate succinctly
- Encourages terse, yet dense, lines of code
- Very difficult to pronounce out loud
- Semicolons are added noise
- Too many punctuation symbols that are difficult to tell apart
What's Wrong With Compilable Languages
- Have to declare everything
- Lots of redundant information
- Need to introduce compiler
- Errors are typically obtuse and can cascade
- Tend to require lots of extra noise
- (int main) in C, (public static void) in Java
What's Wrong With Scripting Languages
- Highly powerful concepts provide more rope to hang oneself
- Language tries make everything work, making errors harder to spot
- Fancy operations, like distributing functions over lists automatically, are confusing
- Operators often have multiple meanings and can show up in multiple places
- Everything is implicitly polymorphic, which is a very obtuse concept
- Burden of tracking type exists, but for programmer instead of compiler
- Magic symbols and pronouns are just more noise to deal with
What's Wrong With Matlab
- Too many windows
- Redundant operators, scalar vs matrix
- Lines are blurred between data types
- Vectors are also 1-rowed matrices
- Scalars are also 1-columned vectors
- Scalar functions automatically become vector functions, sometimes
- The semicolon for output suppression is very difficult to enforce
- Using 0 for false, and any other for true is flawed
- Interactive sessions are difficult to teach
- Input and output are intermingled in written notes
- Students get the two confused
- Ability to apply operators to entire vectors discourages using loops
- Very easy to have names conflict with keywords, especially when saving files
- Filenames can't use spaces
What's Wrong With Type
- Data is inherently ambiguous no matter what (int can be a height measurement, or an index, or a zip code)
- Concept useful, but difficult to digest for beginners
- Crux of the difficulty: external vs internal representation
- Have to differentiate type checking from execution
The Answer is Rex86!
Rex86 is a simplified assembly language. It provides the benefits of working closely with machine state and logic, and also avoids the messy circumstances involved with using real hardware. It benefits from high level languages' powerful functions and utilities, while also avoiding their awkward syntax and unpronounceable code.
Have a look at the lesson plan and first few lesson topics to get a feel for how Rex86 works, and how its benefits work within the ideal setup discussed in the introduction.
Next:Syllabus
Up: Overview
Previous: Algorithms
by dlong@progmatism.com. Plz don't copy kthx.