[Tutor] Efficiency of Doxygen on Python vs C++?
alan.gauld at btinternet.com
Fri Aug 17 09:59:07 CEST 2007
"Stephen McInerney" <spmcinerney at hotmail.com> wrote
> Yes but it's still a canonical question about analysis of
> dynamic languages, since my Java friend makes separate comments
> about scalability when analyzing large builds - he claims 1-5m lines
> code is a threshold.
There is no doubt that analyzing large projects in dynamic languages
(its not much to do with strong or weak typing IMHO) is always
more difficult than in classical static languages. There used to be
complaints about C because it needed a two-pass compiler whereas
Pascal was designed to be compiled in a single pass - one reason
Delphi can compete with VB in build speed!
However because of the expressive power of these languages you
very rarely get huge projects. Based on anecdotal evidence only I
doubt if thare are any Python projects with over 1m lines of code.
A 1m line Python project would be equivalent in function to a 5m+
line project in C++ or Java, and there aren't that many of those!
Also at these sizes execution speed usually becomes a priority
and interpreted languages are invariably slower in that area.
Once you get over 10 million lines (C++ eqiuiv) the only languages
I've seen being used are C++, ADA and COBOL which are all
specifically designed for that scale of project. (There may be a
few big Java projects around but I've never seen one that size)
Also on projects this big the actual coding effort becomes
vanishingly small, often less than 10% of the total effort, whereas
on small projects coding can be as much as 30% or more.
So in small projects the choice of language has a much bigger impact.
Its an old fashioned enineering trade off - speed of construction v
of execution. And if analyzing code is of importance then that becomes
one more factor. In an increasing number of modern projects speed
of construction is top priority. (Ease of maintenance is another
too and interpreted languages also tend to win out there)
Author of the Learn to Program web site
More information about the Tutor