[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 =
files.
> 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=EBl Mantione
More information about the fpc-pascal
mailing list