[fpc-pascal] Advantages of Pascal

Daniël Mantione daniel.mantione at freepascal.org
Tue Feb 20 20:22:54 CET 2007

Op Tue, 20 Feb 2007, schreef Patrick Leslie Polzer:

> Dear FreePascal adepts,
>   when I was younger (about seven years ago), I wrote several programs
> in Borland's Turbo Pascal version 7 (IIRC).
>   I then learned C and haven't looked much at Pascal ever since.
> However, I'm still fond of Pascal's clear syntax, so I would like
> to know more about its advantages.

Please try it. There is no better way to learn about its advantages than 
actual programming. This can better explain it to you than I can do in 
1000 words. For many C programmers, getting into Free Pascal is a very 
enjoyable experience.
>   I would be very grateful if you could answer the following questions,
> loosely based on the "Advantages" section of the FreePascal homepage.
>   1) "No Makefiles"
>      ...and yet you ship a Makefile generator with FPC.  Why?

Since the compiler is able to find the dependencies of files automatically, do 
this is not something you need a Makefile for. However, there are several 
other things, like creating a tar or zip of your program, installing it 
and some more things. A makefile is one way to provide this functionality, 
which we make easy and user friendly by providing a makefile generator.

Still we are going to kick fpcmake, since makefiles are hard to port. As C 
programmer you probably know this, to be able to execute a configure 
script on Windows you need an Unix emulator like Cygwin or Msys.

Building the compiler using fpcmake on Windows requires people to 
several Unix utilities, like cp, mv. In near the future we will move to a 
build tool which doesn't depend on external tools to copy files etc., 
increasing the portability of the compiler.
>   2) "Pascal compilers are Fast with a big F [...]"
>      Why is that?

The main reason for this is the unit system. If a C program uses a 
library, all header files need to be loaded and parsed, for each source 
file again. A Pascal compiler can simply load a unit from disk, so it 
doesn't need to parse headers. Further, once loaded, the unit remains in 
memory, so if the next file is compiled, it is ready to be used again.

Some C-compilers provide pre-compiled headers to provide some of the same 
advantages, but since the content of a header can change with a simple 
define, this is limited; until now this has not been very successfull in 
obtaining similar performance to Pascal compilers.

>   3) "Great integration with assembler"
>      Is being able to use Assembler easily inline really that much
>      better as opposed to having the code in separate object files?

Assembler at the Pascal level frees you from the trouble to access 
parameters. If you would write pure assembler you need to work with 
offsets on the stack that need to match what the compiler uses. This is 
very error prone.

Further, you can access any Pascal symbol directly from your assembler 
routines, which saves you all kinds of cubersome imports in your assembler 

>   4) "Smartlinking"
>      Ah, I think you can have that one in C with some obscure linker
>      flags, too.

Recently it has become possible to do real smartlinking with gcc. FPC has 
done this since the late 90's; while gcc could only remove unused files, 
FPC could remove individual variables and procedures.

Still, it works better. Try to statically link a hello world in C and then 
smartlink a hello word in FPC. Compare the executables.

>   5) Why use Pascal instead of Ada?

Ada is a good language. Pascal is good language too, and
modern Object Pascal might be even more advanced than Ada. For certain is 
that Pascal has better development tools, a much larger treasury chest of 
existing code and libraries and is much better documented due to the 
libraries of book been written on it.

>   6) Can I have run-time range checking of arrays/strings and *still*
>      use functions that accept arrays of any length?

Yes. We call this open arrays.

>   Thank you so much in advance for helping me.

You're welcome :)

Daniël Mantione

More information about the fpc-pascal mailing list