Goto (Posting On Python-List Prohibited)
MRAB
python at mrabarnett.plus.com
Fri Dec 29 19:09:12 EST 2017
On 2017-12-29 23:12, bartc wrote:
> 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.
>
I too use goto in C code, principally to go to clean-up code after
checking the result of a call.
In Python, on the other hand, I have automatic garbage collection,
exceptions, etc.
It's OK for code that's close to the metal, but in high-level code? No.
Python has managed for >25 years without it, and I've yet to see a
convincing use-case.
More information about the Python-list
mailing list