Having non-CPU cycles is extremely common in emulators and VMs, you can just say it's a "virtual cycle of the eth VM", something along those lines.
At least "cycles" and "ETH per cycles" makes it very obvious that you should multiply them to find the fee. On the other hand it's completely unintuitive you should multiply "price" and "cost" to calculate the fee. If gasCost was called gasQuantity, at least it would have been a little more logical (multiplying price with quantity).
Also gas is not its own unit. gasPrice is the unit. Or... actually it's not even a unit. A "unit" implies a constant. But it's not constant since each tx can set its own gasPrice.
The more I think about the cycles metaphor the more I love it. Sorry I have zero sympathy for "gas"
[1] https://docs.google.com/spreadsheets/d/1m89CVujrQe5LAFJ8-YAU...
If you define the term gas as a unit then it refers to both a value, and the unit of that value, which is where most of the confusion comes from. The language "1000 gas" could mean either "1000 wei/szabo/whatever of gas" or "1000 gasCost" which are 2 completely different things!
"The price of this book is five dollars" vs.
"This is five dollars" (meaning "this book's price is") vs.
"This is five dollars" (meaning "five dollars are sitting here on the table.")
I know what you're saying, there is ambiguity, but these make sense to people based on context.
Note that there is also one more limit, the max gas per block limit..
Personally, I quite like gas, not too hard for a casual dev like me to understand. However, perhaps in the future it could be something that is totally abstracted, since asking everyone to understand how gas works is too much.