The C64 also had 64k of RAM, plus the VIC and SID chips (Video Interface Chip and Sound Interface Device) which took up memory space, all with a processor that could only address 64k of total memory space. The way that it handled this was that it used bank switching, so if you needed that full 64k or RAM you needed to switch banks to access certain parts of it.
Any machine with a flat memory space is going to be much easier to program.
Yep, and I did write quite a few programs in BASIC back in the day. Commodore Basic was very limited, and since it was interpreted it could be rather slow. When you needed better performance or you needed to do something fancier, you really needed to do it in machine language. That was true of all 8 bit computers at the time though.
The 6510 was a pretty good processor back in the day. It was basically the 6502 that the Apple II used with the addition of some I/O lines. Sure, it was rather brain dead compared to a modern CPU, but you could say that about all of the 8 bit processors (6502, z80, 8085, etc).
One thing I really liked about the Commodore architecture was that they intentionally put some smarts into their peripheral devices. The 1541 disk drive had its own variant on the 6510 processor in it, so it could handle a lot of stuff on its own. Compare this to other computers at the time that did not have smart peripherals and the computer’s processor had to do more work to control them.
The VIC and SID chips were pretty fancy for their time too.
One place that Commodore really failed at was their cassette interface. Their error checking method was to simply store each program twice, and then compare both versions when loading. If either copy had an error then the load failed. This made it twice as slow and half as reliable. Sure, this was the old days of computers, but there were much better methods of error detection and even error correction available back then. I was really glad when I finally got a 1541 disk drive and didn’t have to use that piece of crap cassette interface any more.
By comparison, the TRS-80 cassette interface used el-cheapo cassette recorders and worked really well with cheap cassettes. In fact, the cheap cassettes tended to work better than the more expensive “computer grade” cassettes that were available at the time.