A single 05AB1E char takes all 8-bits of a byte, whereas BF only has 8 commands, so 3 bits per char, 2.5 BF commands per byte.
I'm not suggesting we change the judging rules, but why do we use the term bytes, and not chars?
A single 05AB1E char takes all 8-bits of a byte, whereas BF only has 8 commands, so 3 bits per char, 2.5 BF commands per byte.
I'm not suggesting we change the judging rules, but why do we use the term bytes, and not chars?
Many characters may take up several bytes, depending on the encoding used. Especially for challenges about reproducing a certain number/text/image, etc. storing all of the data in large multi-byte characters could be abused because the amount of information per character is much higher.
Scoring in bytes is convenient because then each language must have a consistent encoding, and it limits the total number of commands available to a golfing language. For example, an ultra compressed golfing language with two commands per byte is limited to only 2^4 == 16
possible commands, whereas a language like Jelly that takes advantage of the full 2^8 == 256
byte space has to create an encoding where each character can be stored in exactly one byte.
To address specifically the languages you have mentioned, 05AB1E code can fit it's commands in one byte! It is encoded in CP-1252. Now, I don't actually know a whole lot about 05AB1E, so I can't definitely say one way or another how many commands there are, and how they are encoded other than what I can tell from the Github page. But if there really are 259 different commands and every one is counted as a single byte, every answer ever posted with this scoring method is invalid.
My best guess is that either you counted wrong (with the two-byte functions) or some commands allow multiple different characters for convenience when run in UTF-8 mode. You'd have to talk to Adnan to find out more.
As for brain-fuck, you're absolutely right, you could easily store each command in 3-bits. However, we store each one as a byte because that's how the language works. It expects files encoded in ASCII. There are many brainfuck variants that use sub-byte encodings, but these are different languages. This has also been discussed here and here