[fpc-pascal] even linus torvalds prefer pascal over c

Daniël Mantione daniel.mantione at freepascal.org
Sat Dec 2 20:35:49 CET 2006



Op Sat, 2 Dec 2006, schreef John Coppens:

> On Sat, 2 Dec 2006 19:39:34 +0100 (CET)
> Daniël Mantione <daniel.mantione at freepascal.org> wrote:
> 
> > However, assembler coded is not portable. A hand optimized Pascal 
> > based solution with goto statements might be preferable over assembler 
> > code. For example, in the file rtl/unix/video.pp , the procedure 
> > update_vcsa uses a goto for speed reasons.
> 
> Yes... I understand that, of course. But my arguments against this are:
> 
> 1) Except the compiler writers, few people know what code is generated
>    for which source (should they know?). How do I know that a goto is
>    really translated as a jump?

You can compile with -a and check the generated assembler code.

>    I'm no expert, I did see that in many
>    cases ifs, cases, whiles etc, are sufficiently 'recoded' by the 
>    compiler such as to make it difficult to garantee that (or know if)
>    the goto is reached fast enough to matter.

Correct. Unless you are aggressively hand optimizing code, always rely on 
your compiler.

> 2) Compiler semantic analysis is evolving (I imagine), so I'd suspect
>    that optimising is also improving continuously...

Of course, and compilers can do really amazing optimizations today, 
sometimes beating hand-coded assembler code if it wasn't written with 
care. However, today, anno 2006, it is still not that hard to beat 
compilers with hand written assembler code.

> 3) I also believe that gotos are somewhat like guns. If they're available,
>    it's more probable that people shoot themselves in the foot (or worse).
> 
> Mind, I don't want to remove gotos. I'm all for free choice. But I'm
> still very much a proponent to discourage its use for fledgling
> programmers.

Well, this is the very point Torvalds was trying to make in the cited 
discussion; he wants to use goto in Linux source code, because he 
considers it the right thing to do in certain situations.

Daniël Mantione


More information about the fpc-pascal mailing list