D Programmer Jobs at Sociomantic Labs

Nick Sabalausky SeeWebsiteToContactMe at semitwist.com
Tue Nov 5 19:37:38 PST 2013


On 11/5/2013 1:20 AM, H. S. Teoh wrote:
 > On Mon, Nov 04, 2013 at 06:12:33PM +0100, PauloPinto wrote:
 >>
 >> Well I was looking at Z80 Assembly code at the age of 12.
 >
 > I started programming Applesoft BASIC around that age too,

Yea! Applesoft BASIC!! That was my first, too :D. Learned on the Apple 
IIc with the packed-in tutorial disks (which I think are *still* better 
designs than most training materials we have today.) Later on I did a 
whole bunch of QBASIC, and a little GWBASIC.

I tried a bit of the Apple Logo too, which was nice as an electronic 
Spirograph. But it never stuck me as being quite as well-suited to 
interactive programs as basic, so I didn't use it much.

I've actually tried to trace back just when it was I started on 
Applesoft BASIC, and best I can figure I must have been around 7 or 8. I 
know I had already learned to read (obviously), and I also remember it 
was definitely before second grade (but not *immediately* before, IIRC). 
Not intending to compete on ages of course, it's just that when you're a 
kid and you're at the Grandparent's place for the evening, all the 
adults are watching the news, and the only thing remotely toy-like is an 
Apple II...well, what else you gonna do? :)


 > and when I
 > was 14 or so, I was programming in Motorola 6502 assembly language.

Much the same here. I was about 12 or 13 (I remember I was in 7th 
grade). Although it wasn't so much "assembly language" as it was the 
machine code memory editor built into the Apple II. Didn't do a lot with 
it though because it was very shortly after I started *trying* to learn C...


 > When
 > I was 16 one of my assembly programs was sold in a bookstore. Thereafter
 > I moved on to Intel 8088 assembly language. It was only years later, in
 > college, that I learned C and C++.
 >

Heh, again, somewhat similar: I *tried* to learn C at 13, but found it 
awkward. So I went back to QBASIC, and later on Visual BASIC 3. When I 
was around 15, maybe 16, I found this book at the local "Electronics 
Boutique" as part of a Starter Kit bundle:

http://www.amazon.com/Teach-Yourself-Game-Programming-Cd-Ro/dp/0672305623

That book made C (and pointers) finally "click" for me (plus the 
occasional 386/486/586 asm in the bottleneck sections). Then at around 
16-17, I got a Breakout/Arkanoid clone in a few of those 
several-budget-games-on-one-CD packages that were in all the computer 
stores at the time. Didn't make much off it, (even McDonald's paid more) 
but I was thrilled :)

Then in late-HS/college I did a centepede clone that didn't really take 
off (wasn't anything spectacular anyway), wound up in web development, 
and didn't really get back to indie games until now. Sometimes I'm 
amazed at some of the game-dev tools we have now (like Unity3D), and at 
other times I feel like a dinosaur playing catch-up. ;) Which is strange 
- at my age, *nothing* should be making me feel old. And yet...


 > I think BASIC introduced me to the concept behind imperative
 > programming,

Exactly. I feel exactly the same way about it.


 > even if at the time it has almost no structured constructs
 > and most programs were just GOTO spaghetti soup. Going from there to
 > assembly language was actually not that much of a stretch, and with big
 > performance payoffs, too.
 >

Yea, I didn't realize it at the time, but years later it occurred to me 
just how bizarrely similar BASIC and Assembly are, considering that one 
is seen as "high-level" and the other is the quintessential "low-level".


 > Of course, the world has moved on since those days, so nowadays we don't
 > usually bother with that level of performance fine-tuning except in
 > performance critical bits of code.
 >

Strange thing is, I can't decide whether or not I miss it.

I certainly don't think I would want to do that sort of low-level 
tweaking on modern hardware. With all the performance-related 
complications and nuances of modern processors (even pilelining is way 
beyond old-news now), not to mention the variation, cycle counting would 
be a nightmare. Of course, I'm sure cycle counting's outdated anyway!


 > But anyway, w.r.t. the OP, if I were to be in charge of designing a
 > curriculum, I'd put assembly language as the first language to be
 > learned, followed by a good high-level language like D. On this, I agree
 > with Knuth's sentiments:
 >
 >     By understanding a machine-oriented language, the programmer
 >     will tend to use a much more efficient method; it is much closer
 >     to reality. -- D. Knuth
 >
 >     People who are more than casually interested in computers should
 >     have at least some idea of what the underlying hardware is like.
 >     Otherwise the programs they write will be pretty weird. -- D.
 >     Knuth
 >

If I were designing a Programming 101 curriculum, I honestly don't know 
what language I'd pick. In many ways I don't think a lot of the details 
really matter much. But what I do think are the most important things in 
a first language are instant-gratification and a strong emphasis on 
flow-of-execution. Heck, I might even pick Applesoft BASIC ;)

Of course, a lot of the choice would depend on the audience. For 
graduate-level math students, Haskell would be a real possibility.



More information about the Digitalmars-d mailing list