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:[email protected] **
