I bought a copy of "Sams Teach Yourself C++ in 24 Hours" at a CompUSA in 1999. The guy at the checkout looked at it, laughed, and told me about this article.
When I was 16 I was looking at programming books at Borders and a guy handed me a copy of "The C Programming Language"; changed my life.
So much of my career has been shaped by running into developers or just people interested in programming out in the world.
Thanks.
I wonder who's going to write the "Teach yourself Rust from scratch in 21 days" book. If C and even C++ can be learnt effectively as a first programming language, there's little reason why Rust couldn't be. And if not Rust, maybe Golang could play that role.
Golang yes, but not rust. I think rust is a terrible beginner language. Despite having decades of experience it took me about a month to feel productive in rust and stop “fighting the borrow checker”. I learned Go in about 12 hours.
Let beginners cut their teeth on stuff like Python and Go. Rust can wait.
Yes but that's the thing, if you pass everything by value or read-only reference you don't have to deal with the borrow checker, and that's quite acceptable when you're first writing code. That's why I think Rust is almost a FP language in disguise with imperative features added after-the-fact - and it could be taught as such.
You’re not wrong, but precluding tons of concepts not suitable for beginners. “Just .copy() everything” shouldn’t need to be mentioned in an introductory book.
Yep; and cloning boxed objects everywhere often leads to slower rust code than the equivalent javascript or Go. And if you only teach a subset of rust without references, people can't read code snippets online, or most of the standard library documentation.
In comparison, Python, Go, Javascript and C# are all much easier to teach and leave students more able to make real software.
This only gets you so far. In today's software landscape, somebody is going to want to hit a HTTP JSON API to automate something in their second week, and they'll have a really rough time with how async Rust works today. Try explaining to a total beginner why they need Arc<Mutex<T>> and why the payload struct needs to be :Send+Sync+'static.
For all of Go's faults, "just send it over a channel bro" is easy to explain for trivial cases even if it often risks deadlocks and data races. To avoid the worst risks of this kind of code, Rust makes even trivial cases a big exercise. Go has an opportunity here to become more resistant to bugs without becoming less simple, but resistance to bugs doesn't appear to be a priority even for the Go team itself (e.g. even recently https://github.com/golang/go/issues/64474 )
I completely agree but do feel it needs qualifying. The problems beginners run into aren't usually the same as the problems experienced devs run into when adopting a language new to them, but where I see the two overlap I know something is a serious hazard in a language.
Java as a first language: won't like the boilerplate but won't have any point of comparison anyway, will get a few NPEs, might use threads and get data races but won't experience memory unsafety.
Go as a first language: much less boilerplate, but will still get nil panics, will be encouraged to use goroutines because every tutorial shows off how "easy" they are, will get data races with full blown memory unsafety immediately.
Rust as a first language: `None` // no examples found
I think Go as a beginner language would be better if people were discouraged from using goroutines instead of actively encouraged (the myth of "CSP solves everything"), otherwise I think it needs much better tooling to save people from walking off a cliff with their goroutines. And no, -race clearly isn't it, especially not for a beginner.
And in one respect I've found Go more of a hazard for experienced devs than beginners: the function signature of append() gives you the intuition of a functional programming append that never modifies the original slice. This has literally resulted in CVEs[1] even by experienced devs, especially combined with goroutines. Beginners won't have an intuition for this and will hopefully check the documentation instead of assuming.
[1] https://github.com/grafana/grafana/security/advisories/GHSA-...
The Rust book is basically that. An hour per day would probably get you through it in good time.
TRPL assumes familiarity with some existing programming language, such that much of its focus is how Rust differs from more common languages. A true "from scratch" book would probably first teach idiomatic Rust as something not too different from a pure functional language (in that the default approach in Rust is to pass objects by value and forbid all shared mutable state, just like FP languages do) and introduce interior mutability subsequently as a way of supporting more "imperative" patterns of coding.
You must not be very familiar with Rust.
Some of those books were laughably bad. But thing I miss from back then, was the feeling that the book was going to be the key to getting you started writing whatever crazy idea you had for a program in your head.
I think the last time I had that feeling was walking out of Microcenter with a new MacBook and an iPod Touch, ready to make the next Angry Birds...
I actually didn't think that the Sams books were so bad, albeit a bit misleading if you think you're really gonna grok C or C++ in 24 hours.
I learned C first in high school because I found a pirated copy of "Learn C in 24 Hours" online, and I actually felt that they did a reasonably good job getting me started, though if I recall correctly some of their examples with pointers and memory management were actually incorrect. Still, it was enough to make programming interesting to me, and when I dropped out of college the first time I was able to salvage a somewhat decent career because of that interest.
Ah the Sams books. I once thought that writing tech books was going to be a career (having contributed a single chapter to “Microsoft SQL Server Programming Unleashed” by Papa, Shepker et al. I was one of the Al’s).
I think the “in 24 hours” thing was more a case of “I’m going to tell you everything I know about XYZ in 24 hours”. Still, I have so many fond memories from the late 80s and 90s spending countless lunchtimes at McGills or the Technical Bookshop in Melbourne (now since long gone), flipping through tech magazines and wondering which of the many weighty tech tomes I’d spend my precious hard-earned on.
For me that is a nice discussion on its own - for me there’s multiple levels of knowing X - so anything,
Yes in 24h you are not going to learn enough to contribute to Linux kernel - but also will be ahead of something like 80% of general population.
I know exactly what you mean. Felt like the world was opening up.
I don't know who it was, it might have been one of the guys my dad worked with, be they said "You won't be able to write a game with a book like that, but you might be able to write a phone directory." Didn't phase me.
I remember someone asking me later on if I was going to write a game. I just looked at them blankly and said: "I'm going to write a phone directory".
I just learned today that "Sams Teach Yourself C++ in 24 Hours" was co-written by Jessee Liberty, one of my all-time favorite technical book writers. "Programming C#, 2nd Edition" was a great book.
I loved tech stores too. I still have all of the Apple pamphlets that CompUSA had sitting next to the display units.
CompUSA and Borders have a special place in my heart. I'm from a 3rd world country, so visiting them was a sacred ritual anytime I had the privilege to visit the US. I always brought an extra bag mostly for books, and sometimes a Sound Blaster, some extra memory or a US Robotics card, or a fancy Handspring Visor and some Dreamcast games :)
Back when Creative Labs was a company deserving of consumer support, nowadays I actively avoid them completely.
Yes! I miss it too. For me, that book was Head First PHP & MySQL[0] - Late 2000's, I was living and working in Thailand for a family friends small logistics company in the capacity of a BA, trying to move them into this century. We were trying to find a vendor for any system that would allow us to keep track of the movements of shipping containers within a container yard, and something sparked and I thought "hey, I did a semester of programming at Uni, how hard can it be?!", over the span of the next 6 months or so, this book helped me put together a solution that scarily, they are still using to this day.
Fast-forward 15ish years and here I am, still cutting code, although in the capacity of a dev lead, but after all that, I have the book to thank.
[0]https://www.oreilly.com/library/view/head-first-php/97805961...
How long did it take you to learn what you needed to learn, and how long to "ship" your "product"?
IIRC, 3 months to hack together a CRUD like app, another 3 to “ship” the “product”, and yes, quotes very much intended.
I did spend the next year or so adding features, bug fixes, etc. It was very much a case of learning on the job and I was quite fortunate to be in the position that I was. I think it was 2 or 3 years later I managed to land a dev role at Agoda (who had offices in Bangkok at the time)
I miss CompUSA.
I still firmly believe that the move to transparent bags is what killed them. For me it ruined my annual tradition of buying Christmas presents while family was next door in another store, but I’m sure for others it was being treated like a criminal. Those magnetic readers aren’t great but they aren’t in your face.
Once I stopped going in routinely I stopped going in at all.
Really? It hasn't killed Costco yet.
Is family ever in the store next to Costco (which is a null pointer exception), such that meeting on foot with clear bags holding presents is no longer secret?
I think that’s the challenge he described.
I'm talking about the other thing
Ah; makes sense
It seems unlikely to me that the majority of CompUSA purchases were presents while running errands with the recipient.
Yeah i had never done that either, and also miss CompUSA.
The CompUSA that opened in Cambridge, MA, had a guard who insisted on checking your purchases after the registers, like you were a criminal, or implying it was a crime-heavy area.
Not the kind of insult or atmosphere anyone should have to put up with, and, further, the generally affluent people of Harvard and MIT, which the store was located right between, weren't accustomed to it.
I called this out in 2000, when I made Web page about assembling PCs, during the rise of Web ecommerce retail. https://www.neilvandyke.org/cheap-pc-2000/
Still better than Circuit City. I bought a graphics card there once. It was dead on arrival. I took it back to the store to exchange it, but that was their last one. I asked for a refund then, and they told me about their restocking fee. The kindly offered to give me 100% credit to another card that was twice as expensive.
That was the only time I’ve been asked to “sir, please keep your voice down” and “sir, we need you to leave”. I still think I was on the right side of that one.
My credit card company eventually handled it for me.
I had my dad buy me a copy of Teach Yourself HTML in 24 Hours at a CompUSA and wouldn't you know, it was true! I had https://web.archive.org/web/19970415190140/http://www2.rpa.n... up and running in no time!
<ul><ul><ul><ul><ul><ul><ul><ul><ul><ul><ul><ul><ul>Looks great! Reminds me of some of my early classics!</ul></ul></ul></ul></ul></ul></ul></ul></ul></ul></ul></ul></ul>
You forgot <blink>, which was my bread and butter as a 12 year old. Bonus points if it’s wrapped inside <marquee>.
https://web.archive.org/web/20091018220958/http://www.geocit... endlessly
Unfortunately "The C Programming Language" has enough typographical errors in it to seriously undermine it's utility as a book with which to learn programming.
What are the typographical errors? I didn't think it had any.
It does use features of C89 that may not compile after C99, but those aren't weird.
But, as someone who actually did try to use K&R to teach themselves to program, I agree it's not ideal for that. It's definitely not the best programming book ever, which some people say. The exercises are pretty good, though.
In the section on Pointers and Addresses there are a few spots where the pointer or dereference operator is not included in the code examples.
The first edition maybe?
I used to love standing at borders looking at all the computer books. I still have my copies of Ivor Hortons beginning C and beginning c++. I never see that guy getting love in the programming author world, but that was my guy when I was a teen.
I still love going to the bookshop and looking at the programming books! (I'm in my 40s)
I wrote a few things for Wrox back then. Ivor managed to get his books onto the reading lists for a few US colleges, and that ensured a steady flow of royalties (and requests for updated versions). I was quite jealous.
One of the hills on which I am prepared to die on is that "The C Programming Language" is the best programming language book I've ever read. Every developer should read it and learn C at least once, even if they promptly forgot it all.
You’re not going to die on that hill. There are so many people that share your opinion that you might have trouble finding space, but you’re not going to die on that hill.
Javelins have an easier time finding people if there are a lot of them on a hill.
So someone will.
This is probably less common now, but remember not to laugh at young girls in the programming section of a bookstore. In the 90s, that was a pretty standard response: no advice, just incredulity.
I can't believe anyone needs a reminder to act like an actual human being, much less not to belittle someone -- anyone! -- who is interested in learning anything constructive.
Unbelievable that anyone, ever, would act that way.
Sadly it’s almost always “learned” from (or actively “taught” by) others, mostly parents or peers who themselves learned it from parents.
Children/young adults aren’t even necessarily aware that their behaviour is inappropriate as it’s “normal” based on what they’ve seen happen around them their whole lives.
Adults should know better, but may do it anyway due to the human tendency to often dig their feet in, or consciously/actively do it for a reason which really has nothing to with the persecuted group.
Bigotry/racism/sexism persevere largely due to the above.
I got started buying Borland C++ Builder in… 1997, I think, and read the book that came with it which was similarly named. It was quite bad, I remember the chapter on pointers more or less said “I can’t explain why you’d want to use them, but when you find a situation that requires them you’ll know you need them” or something like that.
Jeff Duntemann? or was he the Pascal books guy?
Maybe Robert Lafore.
For me it was "Visual Basic Professional 3.0 Programming by Thomas W. Torgerson" from Barnes and Nobles in 1997. I had downloaded Visual Basic 3.0 from 100 different email attachments on AOL and wanted to learn how to make punters/progs.
I remember transcribing code from the book to attempt to play a sound file when my program opened. I remember being stunned when it actually worked!
What an honor it has been to make a career in software development since.
Haha yes, similar for me. It was word scramblers as games in AOL chat rooms that lead me to my love of programming... and of course Visual Basic 3.0. What an amazing product back then.
Love reading the comments here and how these books changed lives.
For me it was dBASE III PLUS programmer's reference guide from 1987 and it imparted enough knowledge to start a programming career. Read that dog eared thing end to end and still have it in my book collection.
Thank you, Alan Simpson wherever you might be.
my first book as well; good memories
Wow, what a checkout guy!
He also had a bunch of thoughts on the CD burner I was buying.
I remember reading a "Teach Yourself C++ in 24 Hours / 21 days" type book on a bus trip in the 1990s and learning C++ that way! It was a great start!
Might have been 2001.
My particular life-changing book was the BASIC manual that came the C64.
This was then reinforced when (~8 years later) I got Turbo Pascal, and it came with everything needed to get up to speed, then further reinforced when I started with Linux in 1995, and discovered that manpages (and info) were installed that basically got me up to speed on everything needed to write programs for that system. Later, late-90s, ISTR reading through the EGCS manual front-to-back.
I miss the days when the software came with all information required, instead of simply requiring you to search google for a product page or a manual.
I guess in about 5 years I'll miss the ability to easily google stuff (which I used to get in manuals) because all the relevant information got posted to discord and remained unindexed.
In early 2000s I learned sockets programming on Linux and FreeBSD completely from the manpages. Later I got Stevens' book and got through it very quickly, thanks to having already tried the manpages and written a few programs.
My first ever programming book, a well-intentioned gift from my parents, was “Sam’s Teach Yourself C++ in 10 Minutes” - meant of course as a quick reference but always conceptually funny to me because… it’s C++.
Sheet. Thank YOU for that comment!
It connected me back to some of that magic.
The same magic at "computer fairs (faires)". That same magic when you happened across that other nerd in the college/school lab doing something cool and subversive.
My intro to programming was "Getting Started with Extended Color BASIC" for the Coco 2.
Another favorite book was Turbo Pascal DiskTutor.
My C++ book was C++ How to Program.
Still, I kind of feel like I want to print a fake “Teach yourself open-heart quadruple bypass surgery in 24 hours” sleeve and leave it on the shelf to see what happens.
i bought two books in 2000 at 17, same as you, the sams teach yourself C and C++ for dummies. Small world. thanks for sharing!
I must say that for myself, I still learn/reference many things from programming books... Mostly Perl and Java, but none of them have promise of teaching me programming in any time interval. Rarely do I ask for help online as I was ridiculed for most of the time. Nowadays, if paper is insufficient I consult with the AI, but I still refuse to use copilot.
Boy I had the same book that I borrowed from a friend. I was truly in love with that book and went over it a few times. My friend ended up giving it to me as a present, something that truly shaped who I am now.