[fpc-devel] what fpc is good for?
Daniël Mantione
daniel.mantione at freepascal.org
Sun May 13 10:03:19 CEST 2007
Op Sat, 12 May 2007, schreef L:
> > As far as I know, Lars is a FPC fan, and he merely wishes to express co=
ncern
> > about some of the issues he has with FPC
> =
> Yes I'm a fan.
> =
> It's not just the issues that I alone have with FPC since I'm not even an=
embedded programmer
> myself. I'm putting myself in their shoes. It isn't just me who is saying=
lazarus is on the edge of
> becoming the next OpenOffice sized bloatware. It is a lot of the folks on=
pascal game devel board
> too who are saying the same thing.
Indeed. Most however, don't read the manual and complain about 6MB exes. =
Therefore, our opinion is that there is a perceived problem rather than an =
actual problem. Still, 1mb for an empty LCL application is on the large =
side. It is not unlikely that are at least some things that can be done, =
but often it isn't so easy since many factors need to be taken into =
account.
I'd rather approach the size problem from an engineering point of view; a =
50k exe is better engineering than a 500k exe, *if* there are no other =
factors (speed, memory use, portability, maintainability, compatibility, =
...) to take into account, who play a just as important role role in =
balancing the engineering. If we can improve the engineering, we will.
> Now to address the other people's emails..
> =
> Regarding my comments about D/C++ killer..
> You guys are nitpicking me.
> =
> Regarding the idea that I don't propose any solutions to the problem. Com=
e on now, I've written
> capstring and compactsysutils and many other units to solve many of my pr=
oblems that I complain
> about. The point of the articles are always to point out that FPC isn't t=
his *perfect* fanboy
> thing - instead of being a *fanboy* I find myself more productive jumping=
into a criticboy's shoes,
> while contributing code at the same time. Criticism and complaints are ju=
st like bug reports.
> Without these reports, we all just sit behind our PC's thinking that ther=
e is no room for
> improvement because FPC is already so good.
> =
> I think some of you should look at this URL below too, with regards to Ja=
va history and why Pascal
> had a big influence on Java:
> http://z505.com/cgi-bin/qkcont/qkcont.cgi?p=3DPascal%20is%20An%20Unrecogn=
ized%20Underdog
> =
> Above is one of my optimistic articles and doesn't contain too much pessi=
mism.
> =
> Just because you have seen not too many C programmers float over from C a=
nd join the Pascal
> community, does not mean that D programmers and C++ programmers and Java =
folks won't join ship. In
> fact, over at
> PasForum there is a PHP/C programmer who is considering using the powerfu=
l web utilities. Looking
> over my web statistics, I have found quite a few people looking for D lan=
guage information, and they
> bookmark my site since they accidentally stumble upon some of my pages wh=
ich mention D language.
> They realize that pascal seems interesting and more mature than D, and th=
at is a big advantage. D is
> new. Pascal is mature.
> =
> Whenever Linus Torvalds takes cheapshots on the Pascal language, I someti=
mes respond to the articles
> and I get some reasonable C programmers coming in to my site, and they se=
e that current pascal isn't
> just a dead end.. and some of them jump ship and test out FPC. Maybe not =
millions, but one or two
> can even make a difference to spread the word. In fact some of us Pascal =
programmers are so humble
> and so positive, and so anti-critical, that we misinterpret Linus' flames=
on pascal as compliments
> to pascal. He said something once that was so rude to Pascal, and everyon=
e thought he was
> complimenting pascal. Funny. (Bee, this was the structured vs unstructure=
d article on kernaltrap,
> I think)
I applaud you for your advocacy efforts :) They are often brilliant.
> Anyway, as we discussed on IRC one time, the real problem with Sysutils i=
s that it needs to be split
> up into smaller units but we would break Delphi compatibility.
Indeed. Few people disagree that sysutils is a bunch of everything. =
Splitting it up would be a good measure, for multiple reasons, one =
being exe size. However, compatibility needs to be taken into account, =
this is where things get difficult, since the compiler would need to get =
extra features in order to be able to be able to provide =
this compatibility. In other words, doing it the proper way is not so =
easy, for a small improvement in engineering (a few 10s of kilobytes at =
most).
Instead, we tried and succeeded to solve another engineering issue, namely =
that resourcestrings could not be smartlinked. This was not so easy =
either, it improves reduces sysutils overhead by several 10s of kilobytes =
too, and has a much larger impact than just sysutils alone.
> The problem with LCL is that a lot of
> initialization stuff may need to be moved out. I may not have a PERFECT p=
roposal for that myself..
> figuring out what we are going to do about that, so I complain and write =
an article and maybe other
> folk will come up with brilliant ideas. Do you see why it is important to=
write thoughts down,
> including both negative and positive ones?
To be honest, I think that if there were some good ideas, they would have =
already been implemented. The Lazarus team gets enough complaints.
A agree criticism can sometimes be usefull in case a team is needs =
refocusing or something. However, I think we are exactly moving in the =
right direction with the compiler.
> Even if I have tried to solve some of the problem by
> offering code such as capstring and compactsysutils, it still helps for m=
e to get the thoughts down
> on paper and have hundreds of other developers think up solutions based o=
n my comments - even if
> exaggerated.
I have never heard of those units. I have searched freepascal.org for both =
names and I found awfully little; assume that for the community those =
units don't exist.
Taking a look at compactsysutils. I see a cut down sysutils unit with a =
lot of assembler code inside. While such a unit could be usefull for some =
people, for the majority of our users it is not. For starters, see the =
"lack of compatibility" complaints elsewhere in this thread. Nor can we =
base FCL or even LCL on it, since in practise, both units would end up in =
end users their programs, increasing exe size instead of decreasing.
Sorry to say, but you are not interrested in embedded development at all, =
since if you were, you would have added Pascal versions of those =
procedures or added assembler versions for other processors. Assembler =
versions of common procedures are welcome, by all means, contribute them, =
as long as things stay portable.
The capstring unit is nice, but again does not take all factors into =
account and that is its usefullness for short strings. Its nice to =
increase strings by more than a kilobyte at a time, but most strings are =
small. For example, the amounts of string used by the compiler that are =
smaller than 8 characters is staggering. I.e. don't use it as ansistring =
or even shortstring replacement.
This unit addresses a widely known defficiency of ansistrings though.
> I'm not just complaining about sysutils and LCL being bloatware regarding=
exe size, I'm looking at a
> bigger picture here - it is bloatware as a piece of source code to mainta=
in, too, you know. It is
> hard to maintain the sysutils unit with all the include files and million=
s of functions and classes
> in it.
I agree, but there is nothing we can do about this, we need all that code =
for compatibility. You can assume it'll only grow and grow.
> The LCL - well I am not an expert there and I hoped someone else would fi=
nd a way to make it
> less monolithic. Sorry for complaining and not offering any LCL code. Pu=
tting a complaint out there
> in the air is like putting a bug report out there - I may not have a solu=
tion to the bug but at
> least I reported a possible issue.
Perhaps, a possible way out is to make the LCL more plug-inable. For =
example, the LCL needs to support many graphics formats, and the code =
ending up in the program has to be designed to support them all; you don't =
know what ends up in the resource files. As a solution you could design =
"plug-in" units that add the support; i.e. don't use BMP formatted icons, =
then don't use the BMP plugin.
But I'll leave this up to the Lazarus team. They have talented developers, =
and I'm sure they are brainstorming about ideas to reduce the exe size. =
However, Lazarus developers do the engineering balancing too and weigh exe =
size against anything else.
> I also complained and complained about websnap and asp and php, and of co=
urse I also wrote some code
> that solved my problem there which is all FPC based, the poor old wiki, f=
orum, and other utilities
> on my site that need updating. Others choose the easy solution and use AS=
P and PHP.. boring. I
> complained about FPDOC and wrote some extensions for my own lufdoc, and I=
complained about numerous
> other things and went ahead and wrote code.
> =
> I will offer you folks some system.pp units that I'm sure will help the e=
mbedded programmers too.
It is better to work on the existing embedded infrastructure that Florian =
included in the system unit: Add ifdefs to remove features.
=
> I also complained about a web based FPC compiler being a silly idea, sinc=
e people could just
> download the compiler.. how hard is that.. but then I went on and wrote o=
ne because I found another
> use for it. I see a lot of code being pumped out from myself here and th=
is is the reason I'm not on
> the mailing lists to reply as much any more.
Yes, it is nice :)
> Regarding the 64 bit stuff - well one real world example of where 64bit i=
s needed seems to be in the
> GO game that Frank De Groot is working on. He stated that he may be movi=
ng to C/C++ because delphi
> and FPC don't suit his needs. He could extend FPC, because it is open sou=
rce, instead of
> complaining, but he could also just do something easier.. maybe move to C=
/C++? I hope he doesn't and
> I hope maybe even he has the knowledge to help with the FPC compiler.. bu=
t realistically sometimes
> programmers choose the easiest option for them. However, since Daniel men=
tioned the next release of
> FPC will contain improvements, I hope it helps Frank a lot and I hope he =
doesn't choose to take the
> easy route and just move to C++/C.
> =
> The size stuff - oh no, not this again. Think about memory footprint and =
not just speed of
> algorithms please.
FPC programs (LCL included) have a smaller memory footprint than anything =
competing. Becuase we don't hide exe size in huge framework libraries.
> The reason I use Foxit reader instead of Adobe Reader is because it is mo=
re
> responsive.
Compared to Java, XUL, Lazarus programs are very responsive. Compared to =
bare GTK or QT, I don't notice difference.
> Whether this has to do with memory footprint, speed, size doesn't matter =
to me much - I
> just know it is faster by feeling it with my keyboard and mouse. I have t=
ried out many Lazarus Apps
> by feeling them, not by just looking at Exe size. Lately, they feel slow,=
probably because of the
> abstractions and footprint I suspect.
Well, this is not my experience, I think situations of unresponsiness are =
candidates for bug reports.
> It's not just cross platform abstraction, I assure you, since
> many cross platform abstractions can be solved with IFDEF's which are not=
stored in the exe.
You cannot bridge the win32/gtk/qt/carbon differences with ifdefs. This =
needs actual abstraction code.
> Other
> folks agree with me.. many people on the pascal game devel BBS are saying=
Lazarus is becoming huge
> and slow.
Disagree. There are many complaints about 6MB exes, or 10 second =
compilation times. While these are actual complaints, the conclusion that =
Lazarus is huge and slow is unwarranted.
> Hey, we are just reporting a bug okay? If a bug is reported, it doesn't =
necessarily mean
> that we have the solution for the bug. Reporting the bug is still useful.
> Memory is fairly cheap, but with things like VMWARE and Colinux running, =
my memory fills up darn
> quickly! Even on today's newer computers. Not to mention I have seen 1.5G=
hz laptops for sale for
> many years now.. when is the 100.00Ghz one coming out? We have hit a barr=
ier that you can tap into
> folks. A lot of people are dissatisfied with the speed and size of their =
applications - this is the
> REASON people are spending big bucks on faster computers and hard drives.=
.. Don't you see the irony?
> A lot of you folks recommend FastCGI whenever someone asks about web prog=
ramming.. and fast cgi is
> all about building tight code with a small footprint.. but yet whenever s=
omeone mentions a small
> system.pp unit or a small sysutils unit all of a sudden we are offended a=
bout an attempt to make a
> smaller program, faster program, etc.
No!
What happens is that the people that you perceive as "offended" take other =
engineering factors in account. They are not interrested to sacrifice =
compatibility (i.e. delete all those TP and Delphi compat procedures) for =
smaller exes, or portability (i.e. kick out Pascal code and replace it by =
assembler code), for example.
If you provide a patch which reduces exe size without disadvantages, be =
assured that it gets included.
> A smaller program in many many cases means a faster program -
> definitely a faster loading program in many cases. Not all cases. We are =
talking about general
> trends here.
Note that we have fastest startup time in the world.
> I think we AGREE on many things and your nitpickings are just as bad as m=
y nitpickings.
Yes.
> Also folks, I think some of you know that I'm not just *talking* on that =
paswiki, I really have
> offered hundreds of units for the FPC community and will continue to offe=
r more units for you all in
> order to make things go smoother. If you read something you don't like o=
n PasWiki, I expect you all
> to analyze me and write about me. Don't remain quiet! Make your own websi=
tes, bring it up on the
> mailing lists. I would like more people to shred me to pieces with their =
own websites so we can have
> some more FPC content out there. And even if you hate what I say, please =
continue to use my code and
> download my units - I appreciate criticism and am in no way offended by a=
ny of your comments.
Ok!
Dani=EBl
More information about the fpc-devel
mailing list