I would be surprised if your first program was C++? Specifically, getting a decent C++ toolchain that can produce a meaningful program is not a small thing?
I'm not sure where I feel about languages made for teaching and whatnot, yet; but I would be remiss if I didn't encourage my kids to use https://scratch.mit.edu/ for their early programming. I remember early computers would boot into a BASIC prompt and I could transcribe some programs to make screensavers and games. LOGO was not uncommon to explore fractals and general path finding ideas.
Even beyond games and screensavers, MS Access (or any similar offering, FoxPro, as an example) was easily more valuable for learning to program interfaces to data than I'm used to seeing from many lower level offerings. Our industries shunning of interface builders has done more to make it difficult to get kids programming than I think we admit.
Edit to add: Honestly, I think my kids learned more about game programming from Mario Builder at early ages than makes sense.
> I would be surprised if your first program was C++? Specifically, getting a decent C++ toolchain that can produce a meaningful program is not a small thing?
Visual C++ (some version) was in a book I received as a gift in high school, it was my second language after BASIC (some version on a Tandy running MS-DOS). It was not hard to set up. You ran the installer, you had the language set up. If someone had ended up in the same situation as me but without the BASIC experience, I could see it being an easy to set up (not easy to learn) first language.
Apologies for making you prove the statement. That wasn't my intention.
I was musing on how expensive a C++ capable setup was back when I was learning. I was probably closer to having it as an opportunity than I realize. But MS Access and the like was already something that was beyond my realistic budget for things. That was largely helping out with business software friends of the family were using.
I am probably also more sour on just how silly difficult it is to put pixels on a screen nowadays. Python's turtle graphics kind of works ok, if you are only doing turtle graphics. But just getting a sprite and moving it around can be surprisingly involved, it seems. I wanted my kids to learn with the Code the Classics book. May have them give that a try again, soon. First pass, they all have far more mileage with Scratch.
> I am probably also more sour on just how silly difficult it is to put pixels on a screen nowadays.
It seems like it's always been this way. I messed around with VB6 as a kid. It was an amazingly intuitive experience to work with forms, buttons, and hooking up simple actions to them.
However, when it came time to do some simple 2d graphics, like moving balls around the screen, you'd be in the deep end, trying to figure out BitBlt and double-buffering and the like. You might as well have been using C++.
Agreed that getting into the weeds has always been difficult. Especially if you needed it to go fast. Just setting up a double buffered set of screens was easy enough, though?
Fully agreed. I'd be happy with a stable API that lets me treat a window as an array of pixels.
I'll put another plug in for scratch, if you are ok with any of the limitations it has.
I seem to recall there were more options installed on a default Raspberry Pi than I expected. I think many of them fail the open source criteria? It even has a student edition of Mathematica, which is quite impressive for what it does.
Not really easy to make a traditional application/program and distribute it stand-alone from Scratch.
I'd love to see a Lisp compiler w/ GUI toolkit which would just compile to a stand-alone .exe or .app or .apk or even .html file w/ matching JavaScript library.
I think distributing a stand-alone application is beyond most any beginner level needs. They want to share, sure; but with a much more limited audience.
Not that I wouldn't love the same, mind you. I think a lot of toolkits and compilers make the mistake of trying to be universally distributable. Regardless of how much effort that happens to be.
You've now learned that the internet will provide counterexamples whenever you make a categorical statement :)
My first language wasn't C++, it was BASIC, but by the time I got hold of Microsoft QuickC and Borland Turbo C++ they were available as self-contained IDEs that Just Worked.
My first program was indeed C++. In 1998, my high school had a computer lab setup with Turbo C++, and I took a non-AP computer science class. In college, starting in 1999, after entering as a computer science major, we were guided to use Visual C++ on Windows. We got Visual C++ from our department - I can't remember if we paid or if it was just provided to us.
Ah, I see that not only did I accidentally force you to prove this, but I accidentally got others to do so. My humble apologies on that!
I'm not super shocked that some people got started with Visual C++ sooner than I would have had access to it. It remains surprising to me, though. See my other post on more of the why, for that.
Visual C++ is actually very easy to get started with (it wasn't my first though) You run a wizard which generates a full, runnable, skeleton application into which you can then easily plugin code from a book (thank you David Kruglinski). I had done Win32 C programming (thank you Charles Petzold) prior to getting into Visual C++ and it was shocking to see how the IDE/Wizards really made complicated things extremely easy. In fact many of the noob programmers in my team didn't even know how to run the compiler, assembler, linker separately (they did not come from a Unix background) since the IDE did it all for you at the press of a function key.
Yeah, my view was Visual C++ was not so difficult to use; but that it was difficult to have access to. You had to have a computer that could run it, and then you had to be able to afford it. Am I shocked that some people had access to it? No. It is surprising that it would be someone's first access, though.
Actually it was the norm for Microsoft technology programmers (there was/is a huge number of them) and not surprising at all. You went from MS-DOS to Win16/Win32 to Visual C++ as MS kept releasing them, specifically the transition from 16-bit to 32-bit was a major checkpoint. IIRC the first version of VC++ was released on Windows NT 3.51 (or was it 4?) on a Intel 386 platform. The PC clones were available everywhere and in true hacker fashion people ran cracked copies of Windows NT and VC++ if they could not afford to buy it. For many programmers VC++/MFC was their first introduction to C++ language programming and i still remember trying to explain to noob programmers the distinction between MS' libraries/additions vs. plain vanilla C++ language.
I'm not sure where I feel about languages made for teaching and whatnot, yet; but I would be remiss if I didn't encourage my kids to use https://scratch.mit.edu/ for their early programming. I remember early computers would boot into a BASIC prompt and I could transcribe some programs to make screensavers and games. LOGO was not uncommon to explore fractals and general path finding ideas.
Even beyond games and screensavers, MS Access (or any similar offering, FoxPro, as an example) was easily more valuable for learning to program interfaces to data than I'm used to seeing from many lower level offerings. Our industries shunning of interface builders has done more to make it difficult to get kids programming than I think we admit.
Edit to add: Honestly, I think my kids learned more about game programming from Mario Builder at early ages than makes sense.