Goto (Posting On Python-List Prohibited)
bartc
bc at freeuk.com
Fri Dec 29 18:12:22 EST 2017
On 29/12/2017 21:55, Lawrence D’Oliveiro wrote:
> On Saturday, December 30, 2017 at 9:03:50 AM UTC+13, bartc wrote:
>> Why most newer, higher level languages don't, I don't know. Perhaps
>> because the people who design them want to make programming harder?
>
> I don’t use gotos in C code. Why should it be “harder” in a higher-level language?
>
Good for you.
Looking at 14 million lines of Linux kernel sources, which are in C,
over 100,000 of them use 'goto'. About one every 120 lines.
My own low level sources use about one goto every 400 lines. It's hardly
a lot. If one is used, it's because it was handy to use it, until such
time as it can be replaced with proper logic. But such logic will
usually be more convoluted.
BTW, looking at 220,000 lines of CPython sources, in C (an old
distribution I had to hand), there are 2600 gotos, about one every 85
lines. And those are the ones are directly visible as gotos, and not
hidden behind macros.
I understand that on Linux, the CPython dispatcher makes use of label
pointers, using 'goto *opcode_targets[*next_instr++]' to do a faster
byte-code dispatch than using switch.
You I guess would have written it without that, and we'd all have to
suffer 10% slower speed (or whatever) for your principles. That's
assuming you could have got rid of the other 2600 gotos as well.
--
bartc
More information about the Python-list
mailing list