I've had 4 "aha" moments in my computing career, well 5. 3 are from books.<p>My 5 "ahas" were expressions and assignment in BASIC. Arrays, and how they work. Dynamic memory, i.e. the first time I got a linked list to work in Pascal. Networking as a streaming service combined with "how Unix works", which was mind blowing. And, finally, lambda.<p>The first was my science teacher introducing me to the computer. He did this and that, and left me to flail helplessly for several hours before I gave up and went home. The next day he showed me BASIC expressions, again, "aha", and it stuck.<p>Next, was arrays. Did not grok arrays at all. And all of the example were something about "balancing a check book" (I'm 14, like I care a wit about balancing check books). But eventually, after typing in enough "101 BASIC GAMES", arrays clicked. I can't recall, which game, but I credit one of those BASIC game books for that aha.<p>I don't consider my dynamic memory aha to be book based. I'm sure I got it from some data structures book in theory, but pulling it off in Pascal was just a combination of raw effort and figuring it out with friends. It's an aha moment because visualizing the linked list, or tree exploding in your mind from the very few lines of code necessary to pull it off was, well, aha indeed.<p>Network streaming and Unix came in one hit. I'd been doing Unix application development for some time, but our machines and client machines were all standalone. But I was at another office and I saw a guy do, essentially, `cpio -xyz folder | rsh cat > /dev/tape` (yes, rsh -- does that date it?) And that really blew my mind. The idea of piping across the network to a streamable device. Wow. Very, very aha.<p>Finally, lambda. Always fascinated and interested in Lisps and what not, but I seem to be genetically coded against groking anything Greek outside of a Gyro sandwich. I've always hated reading texts that use the Greek alphabet for, well, anything. Because whenever I see a Greek letter, I assume that it must be conveying something beyond a simple unknown variable. People choose those letters for a reason, I just don't know what it is. So, θ is used not just to represent a variable, but to represent an angle (always seems in trig, they use θ). So, if you see θ, perhaps it also means that it's an angle of somekind.<p>Anyway, right or wrong, I assume that's whats happening and I simply don't know the "meta" of why, when, or how a Greek letter is chosen. And this hold true for Lambda.<p>Lambda was chosen because of its inspiration from lambda calculus (which I also don't know). So, if you know lambda calculus, you "know" what lambda means. I don't, so I'd be bouncing along in some Scheme or Lisp test and they start dropping those on my head and, well, my pooh brain doesn't grok it and I'd abandon it.<p>Then, I stumbled upon the book "Simply Scheme". What does "Simply Scheme" do? First thing they do, is they rename everything. Like "first" instead of "car". They just started with their own vocabulary and presented Scheme that way. Well, heck, I knew what all those words mean, maybe not the specific semantics in Scheme, but the general definition, and so the first few chapters were very successful in communicating the underlying themes of Scheme. Including things like anonymous functions (for which they used the word, I think, of all things, "function").<p>Later they conflate "lambda" and "function". Basically, "lambda" mean "anonymous function".<p>"Oh!" "Aha!", and the clouds parted, the seas calmed, the sun came out and like getting a few select Tetris pieces, the board cleared and a LOT of things made much more sense right away.<p>Aha indeed.