Am 25.05.2017 um 16:18 schrieb Graeme Geldenhuys: > This is directed at Florian primarily, but any other FPC core member is > welcome to chip in. > > different to any other software project... It has really bugged me... > Why is it different, and What is different?
Because they are basically a mess of spaghetti code and modules :) And this is not the writers fault but simply their nature, they are a very complex piece of software were everything is inter winded. In theory, everything sounds simple: one has a front end consisting of a scanner and a parser and a back end consisting of an optimizer, a code generator and an assembler. Front end and back end are accessing the symbol tables. However, in practice things look different. We try to keep fpc layered and everything, nevertheless, the unit dependency graph looks terrible, see attachment (resized, I can send a full fledged pdf if someone is interested). Simple things often mean that one has to dig upside down and one is often bitten by several side effects or interferences of changes. I am really familiar with the code of FPC, but I do not want to know the hours I spent in e.g. r36325 (which is basically 100 lines of new code, rest is copy&paste and moving code around) due to such effects. Code sample for the "spaghetti" nature, just look at the needtemp function in fpc/compiler/ncal.pas at line 4589: it determines if an argument of an inlined subroutine needs to be copied to a temp. The code is commented very well, it is almost literate programming, everything is split into multiple if statements, nevertheless it is very unreadable. Of course, EveryIfStatmentCouldBeMovedToAnExtraFunctionWithADescribtiveLongName, but I doubt that it makes it more readable in the sense of being understandable.
_______________________________________________ fpc-other maillist - fpc-other@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-other