[fpc-pascal] A question or two regarding the FPC
Mehmet Erol Sanliturk
sanliturk at ttmail.com
Sat May 9 03:58:32 CEST 2009
fpclist at silvermono.co.za wrote:
> Hi guys,
>
> Over the last few years, I have written hundreds of thousands of lines of
> object pascal code that compiles successfully using the FPC and Delphi. To
> date, I have not encountered any problems with the code generated by the
> FP Linux compiler. I don't have much experience with FPC within the MS Windows
> environment as my current interest lies in developing console Linux apps.
>
> Like most developers, I strive to write code that is as bug free as possible
> and at the end of each day, I'm left with a feeling of great satisfaction and
> achievment.
>
> IMO and experience, the code generated by the FPC is as resilient as the
> operating system it runs on.
>
> My question is directed to the FPC team and in particular, to those involved
> in the development of the compiler and more specific, the Linux compiler. (I
> would expect that Florian would have a say here).
>
> In your opinion, how would you rate the suitability of the FPC generated code
> for use in an environment where there is near zero tolorance to failure?
> Consider the question assuming that the ideal condition where that the source
> code is as close to being perfect as possible, (and I'm not suggesting that
> this perfect code would be written by me. I'm not that good).
>
> ...
>
> Regards,
> Nino
>
>
Actually this is a very difficult question to answer properly .
As a very productive program writer since ( approximately ) 1973
I can say that the problem has a significant number of parameters
to consider such as :
- Specifications about software
- Algorithm design of the software by the programmer
- Used language constructs of selected compiler
- Compiler itself
- Libraries used by the compiler
- Operating system
- Testing the developed software
- Hardware running the software
- and others ...
There is a definition that reliability of a system can not be greater
than its reliability of weakest
component ( having minimum reliability ) .
All of the above components and other unspecified components will
comprise a system as a whole .
When considering FPC :
- There are internal error points generated during run time triggered by
the user program .
It is necessary to write programs which avoid those points ( if
possible ) .
For an error free program , FPC generates very good code with the
reminder that all of the
software may contain bugs and an exhaustive test of FPC to generate
a fault-tolerant compiler
may require combinatorial steps which is beyond the existing
capabilities .
In that respect ADA could not be adopted widely because its
compilation depended on C compilers which they ( C compilers ) are not
conforming to ADA specifications .
- FPC is NOT compliant to Delphi ( a very obvious feature , at least FPC
is for cross-platform whereas Delphi is only for Windows platform ) .
A program compiled and working perfectly in one of them is not a
guarantee that it will work perfectly when compiled by the other .
- FPC ( and Lazarus are ) is using external libraries such as GTK
and/or QT which those are beyond of FPC team control . Bugs in FPC (
and Lazarus ) are corrected promptly by generating a very good work by
the FPC teams , but other libraries have their own development teams and
work schedules .
Since May 2008 I am trying to learn FPC as much as possible . Nearly all
of my problems are caused by the libraries used , NOT by the FPC
itself ( except a few ) .
- It is necessary to write programs to handle run-time exceptions
properly . Compiler can not do anything much about that . A ( try ...
except raise exception ) structure may have disastrous effects on
outcome of a program when it is run when a life-critical system is
controlled by such a program . The program should be designed properly
to handle such situations without causing disasters .
For example , in an airplane fall-down many years before (
approximately 110 deaths ) it has
been found that in the automatic pilot software an error situation used
a STOP statement . During landing it caused release of control of the
airplane by the automatic pilot ( then the related company had
discontinued the software automatic pilot and reverted to mechanical
control ) .
These are my ( partial ) opinions about the above question .
Thank you very much .
Mehmet Erol Sanliturk
More information about the fpc-pascal
mailing list