No drawing commands. No real control over the computer's graphics modes. Very limited control over sprites. No great commands for the SID (arguably the best soundchip of any 8-bit system). Everything is done with POKEs and magic numbers. Slow as hell. And the list goes on.
Just dreadful.
I'd go as far as to say that in many of the ways that mattered, and even taking into account the weird key combinations required to write code, and the fact that it wasn't particularly well regarded either, but I think Sinclair BASIC on the ZX Spectrum range was actually better. You had drawing commands, you had sound commands (although the PLAY command on the 128K honestly didn't give you that much access to the power of the Yamaha FM soundchip so it still wasn't great, and on 48K you were limited to BEEP). You didn't have sprites but you had UDGs and they were easy to use. And I think it might have run faster - it certainly felt faster.
It did still have some annoying oversights: e.g., want to read the joystick? Well, I can't remember the damned address but in the end I figured out enough to realise I was going to have to PEEK the right location in memory, which I duly did after a quick study of the memory map and trying out a bunch of different addresses.
Anyway, point is I remember being so frustrated when I upgraded/crossgraded from a ZX Spectrum 128K +2A to a C64 with how difficult it was to get anything done in BASIC.
I started on Atari BASIC and that BASIC was pretty bad, too, but even so I made use of it and did all kinds of graphics stuff, and wrote games, etc.
I did all kinds of stuff in BASIC on the C64 between 1986 and into the 90's. But, after a few months of learning all about BASIC, I went right into Assembly language. The C64 manual taught BASIC, but it also had the memory map and documentation about all the 6510 opcodes, registers, custom chips, and even a schematic of the computer in the back. It was incredible compared to all other computers at the time, because it was made for DIY, you could go as deeply as you wanted with it.
https://archive.org/details/Commodore_64_Programmers_Referen...
I created so many cool things with the C64, got into the Demoscene, and made crack intros, etc. I even wrote some code to do 3D vector rotations in C64 BASIC and displayed the data with an assembly language line drawing routine.
I don't know you, but if you couldn't do amazing things with the C64, that says more (to me) about you than it does the C64. And like all machines, the system is what it is, you either make use of it or you don't.
It wasn't until my dad sold the C64 and upgraded the family to a C128 (with a built in assembler/monitor) that I finally got to try my programs, but by that time, the 8 bit world was winding down and everyone was moving to PCs. To this day I wish C64 shipped with the 64MON cartridge.
I did my own BASIC programming, and I was satisifed with experimenting at that level. It was the systems architecture that enthralled me, though. Just to peruse the diagrams of how RAM and ROM were laid out; the bank switching; registers and I/O routines; programming the SID chip; sprites and colors and fonts.
By the time I went into college I was quite well-primed for subjects like systems architecture, and the upgrade path at home from 286 to Windows PCs was bittersweet, as I left behind those raw system internals for more opacity and high-level sysadmin tasks. But I never forgot the 6502 and 6510 that started it all for me.