On Fri, May 27, 2016 at 03:04:07PM -0700, Ali wrote:
I was going to
suggest he introduce the lad to a wide range of
languages, especially non-procedural ones, and outliers such as Forth
and APL. It's much easier to grasp the concepts (and joy) of things
like functional programming if you're exposed to them before
confirmation bias limits your acceptance of the world.
Yes, of course that makes assumptions on my knowledge level as well....
which does not quite extend to Forth or APL.
Sorry for the late chime in, as I usually do. I am yet to read the
whole thread, so if my suggestions have been already suggested by
someone else, sorry for the noise too.
In case my wording makes you think otherwise, those are just humble
suggestions.
Now, learning "older languages" bears some stigma, right? Not in my
opinion, however. If you teach the young guy with intention to make
him wiser, do not use cheap copout. Or at least if you must, be
careful so he does not stick with it.
Given what most of people here could have used as their first
programming language, BASIC is not that bad. I know, I taught myself
BASIC first. However, it soon became obvious to me there were better
ways of writing software, so I progressed to Pascal and C. By that
time I have also heard about a handful of other PLs (Forth, Prolog,
LOGO, etc) so while I never was good enough to write using them
(except some Forth loaded from tape on a borrowed AtariXE), at least I
understood some problems were better solved in them rather than
banging a full time database in BASIC.
So, the main problem for you to solve is not really what book for this
particular dialect, but how to impress the kid enough to make him
curious. This, like every hard part, is left for the reader to do in
his spare time :-).
BTW, one word: demoscene, if you can. Either classical one (there are
new demoes written for old comps, there are sites devoted to them) or
some kind of modern incarnation. For LOGO, Andrea diSessa' book
(forgot English title, the Polish ed's title is "Geometria zolwia" or
"Turtle Geometry") - extremely interesting, with stuff like drawing
models of space-time and the like. If you'd like some hardcore demos,
a Postscript interpreter will give you stack based (Forth like)
proglang with gfx routines resembling turtle, a Postscript document is
just a program which one can run in the interpreter, then print
hardcopy on a laser. Under Unix one can write stuff into the
interpreter straight from code producing program (code = PS
mumbojumbo) by the pipes mechanism. One can, again, do some nice
looking stuff by pairing such "producer" with gnuplot (another
interpreter with more civilised syntax). One can have Forth
interpreter writen in /bin/sh language. One can have emacs - one of
the most portable Lisp environment, with tons of usable code and
modes, including interactive lisp mode (ielm - nice for quick
calculations and for defining more complicated things too) or org-mode
which can do very nice stuff (youtube it for more). Oh, and a builtin
psychiatrist (Esc-x doctor) and some games inside (look for 2048).
The possibilities are virtually endless. The wholly new Universe ot
them (ok, not really new, just overlooked and neglected). Just do not
suggest to him that BASIC and Java (or Javascript) are the way to go
(just in case you would like to do so).
I understand that the whole paragraph about demoscene is only half
interesting for 8 year old. Other ideas include Smalltalk interpreter
(Squeak - modern, portable, colorful, go find).
As of teaching him Python and/or Perl. I suggest Python. I am afraid
both are showing their age (so much about "older languages",
ahem). Python has cleaner design. In case of doubt, always choose
language which does not require strange out of place characters as
parts of variables names, or strange not obvious obligatory naming
conventions (e.g. global variables start from big letter, like in
Ruby, AFAIK). If he does not program anymore, at least he will know
some good looking language and maybe use it from time to time. If he
goes on and programs more and more often, he will find a way to
braindamage all by himself, so no need to give him bad memories right
now.
Ok, to sum it up:
1. Curiosity is a key. He can learn about the world by programming
computer the right way. (at least this is what I have heard)
2. Language is a tool. Teach him this one thing ASAP, he can choose
better tool.
As of "bits and nuts" stuff, I guess I would start with PDP8
emulator. Maybe PDP11, I am not sure. And treat it as a problem
solving game. Yes, go with assembly straight away, if you want to go
there. With paper tape to load. It may look like WTF but at least a
number of parts he will have to learn to handle is thus reduced to
manageable minimum. So I guess he should learn some programming first
(LOGO, Scheme, Smalltalk, even Prolog might be more interesting than
BASIC nowadays). Something not very hard to give him a kick. Prolog
with its conversatorial programming style looks like a winner for a
really quick 1-2 days intro to programming, but I have never really
used it, but then again some people supposedly use it for making great
things. OTOH he may be more thrilled by things like simple chatbot
rather than drawing sun over a house over a grass with turtle. After
that, PDP8 with paper tape to kick him from the other side... Um,
sounds cruel. But might be the right way to go, in parallel.
All of this is a brain dump, and I am only human... I hope you will
just pick something up from the mess I produced.
At this point my concern is more getting him
interested in being more than
just a consumer. He was astonished when I told him his iPad is a computer.
I'd like him to understand why things work they way they do, that the cloud
is not a magical thing, and that at a certain level an
iPad=PC=5110=System/360.
No. No. Unless they allow to run interpreter on i*'s (and load code to
it), this is more like iP* .EQ. TV. You (and many more people, so
perhaps no shame on you in particular) have been greatly
misinformed. Otherwise, I wonder if there is decent Altair emulator
for i* - the one I have seen once, looked like interactive animation
and could not take in anything that was not in the animation - at
least this is what I understood from description, because I never
bought any i*. Therefor i*'s are pitiful waste of cpu cycles and
pixels, techno evolutionary step backwards. Not a _programmable_
_in_situ_, in-the-field computer. Maybe a very complicated calculator
with soft circuits loaded from the store. If you keep brainwashing kid
with suggestions he can do the same on i* as one could do on
System/360, he will become braindamaged. Just MHO. Sorry if my tone
was too harsh and let us hope the message passed through.
Of course opinion from above will be invalidated if someone points me
that I could run, say CP/M on the i*. I think I _can_ do it on
Android. Or at least there are some decent emulators for old
architectures (soviet made PDP11 clone, some C64 emulator perhaps
capable of loading demos from "tape", decent gforth port with OpenGL
gfx routines - or so it seems, I definitely have to give it a try -
and so on).
--
Regards,
Tomasz Rola
--
** A C programmer asked whether computer had Buddha's nature. **
** As the answer, master did "rm -rif" on the programmer's home **
** directory. And then the C programmer became enlightened... **
** **
** Tomasz Rola mailto:tomasz_rola at
bigfoot.com **