GeekSpeak Cheat Sheet

Alex Tweedly alex at tweedly.net
Sun Oct 24 08:55:52 EDT 2004


At 10:43 21/10/2004 -0700, Judy Perry wrote:

>Hi,
>
>I am attempting to put together a GeekSpeak Cheat Sheet on Rev for my lazy
>CS majors (largely so that they'll stop whining about how they can't do
>anything 'real' in Rev).
>
>But, not being a real geek myself, I find myself at an impasse.  I have
>Coulouris & Thimbleby's "HyperProgramming" which has a few pages on Pascal
><-> HyperTalk.
>
>What would you all additionally suggest?  For example, one student asked
>about classes. Besides just telling him that there aren't any, what should
>I suggest as an analogue?  I know I should have a section on typeless
>data, but what else?
>
>Thanks for any suggestions you can offer!

I haven't seen other replies, so I'll take a shot at this ....

"classes" - unimportant. They're only significant as a representative of 
the general topic of Object Oriented design and OO programming. OO is 
sometimes treated as though it were the magic bullet that will save us all, 
but it's not. It's just another tool in our repertoire.

It's that latest in a fairly long line of proposed magic bullets to make 
software development into a science. Those that had little or no value have 
faded from memory - those that had value remain in our toolkits and have 
been built upon by later tools.

The important thing to understand about OO is which problems it solves, how 
it attempts to solve them, and how OO programming languages help by making 
those solutions more natural and easy to write (and the problem easy to 
avoid).  A CS student who understands that (and understand the same issues 
for other "magic bullets" in CS history) will be much further along the 
road to being an Uber-geek than one who learns yet another OO language. And 
they'll be better positioned to choose the right tool in the right 
circumstances - and when (not if) they choose a non-OO language to 
implement something, they'll know how to avoid or solve the problems using 
their own intelligence - not the crutch of a language that gives some help.

(top-down design, functional decomposition, data-driven programming, 
Jackson Structured programming, waterfall design, Extreme programming, Pair 
programming, genetic algorithms --- pick your own set of "fads" for the 
last few, or next few, decades.)

Things you should put on your "cheat sheet" ?

I'd be fairly explicit in dividing this into two lists - things that are 
easy for geeks to appreciate, and things that aren't.

Geek items.

1. Associative arrays.
    a.  just in themselves
    b.  pseudo-multidimensional arrays
    c.  power of split and combine

2. Text processing
   (parallel with Perl's origins)
   power of chunk expression, etc.
   use of string expressions where other languages use other techniques
   chunks instead of lists, tuples and sets

3. (G)UI is natural to Rev, not a bolt-on as it is to most languages.
You just say "Rev" - unlike Python w/ wxPython and Pythoncard, or Perl w/ 
GTK+, or Java w/ Swing (or whatever the latest ones are).

4. Blurred line between routines and event handlers.
    power of send, send in x milliseconds, etc.

non-geek items (or anti-geek items)
1. "english" like language
against:
    Learning curve for those already experienced programmers
    Verbosity
for:
    Simplicity of expression of concepts.
[ There's an argument that productivity in a programing language can be 
measured in how many "items" of programming you can write/debug in a day; 
"items" isn't "lines of code", and it isn't "number of characters" - it's 
more like how many decision points are needed - and hence is somewhat 
related to number of lines / characters. Transcript takes advantage of our 
years of experience of parsing and reading and writing English (or other 
natural human language - they're more alike than they are dis-alike) to 
reduce the number of such "decision points" needed.
       "the second word of line N"
might mean the same as
       line[N][2]
but I think you use less brain power reading it.]

2. The live environment.
It's not "run-time", it's not an IDE - it's the THE environment.
Powerful, subtle and may take a while before you learn to take advantage of it.


Sorry Judy - there's more I want to write, but I'm running out of time 
today. I'll send off what I've written so far, and try to get back to this 
during the week ...

-- Alex.


More information about the use-livecode mailing list