A r t i c l e s
Navigation

Note: This site is
a bit older, personal views
may have changed.

M a i n P a g e

D i r e c t o r y

Might As Well Use Dot Net In Place of FPC


Update

I'm revising this article for you sensitive little children who read this article and can't take it. I have been made aware that not many people like this article (scroll down to "Article" section to read it). If you read my article below carefully, you will see that my negativity is trying to encourage the use of FPC.. FPC has a case, what case does it have? Play devil's advocate for a minute with me.

Consider this quote:

"Ideas will first be ridiculed, then violently opposed, and finally accepted as self-evident"
--A. Schopenhauer 1788-1860

What I say in this article is not for weak people. Don't read this article if you are sensitive or you have your feelings hurt easily. This article is exaggerated and it is here to make a point.

Consider this quote:

"...a philosopher who did not hurt anybody's feelings was not doing his job."
--Plato (source: Wikipedia)

Consider also:

"..one of the men who brings legal charges against Socrates, Anytus, warns him about the trouble he may get into if he does not stop criticizing important people."
--Wikipedia

Consider also:

"The ancient Greeks first identified the essence of critical consciousness when philosophers encouraged their students to develop an "impulse and willingness to stand back from humanity and nature... (and) to make them objects of thought and criticism, and to search for their meaning and significance."
--Wikipedia

Consider also:

"Critical nature: OCP says philosophy is critical thinking. PTB says that philosophy examines the beliefs we take for granted."
--Wikipedia

If you don't like this article, or you like it in some ways but not in others, then get your own website and make some articles about FPC (like this person has done) instead of holding grudges against people and bottling up all that tension.

The whole point of PasWiki is to promote FPC, and I love FPC, otherwise I wouldn't have called the wiki PasWiki, nor would I have compiled the frigging wiki with FPC, so take this article with a grain of salt, pepper, and hot sauce please.


Concrete Proposal

See Concrete vs Abstract and Dot Net vs FPC

Article

I'm getting the hint that some of the FPC team/community is missing the whole point of FPC when they continually rave about things like today's hard drive's are big and size doesn't matter, and hello world applications built with Lazarus are acceptable at 3MB by default without smartlinking, if you happened not to strip and do this and that and this and that to get it down to 1.5mb or similar. Then UPX is strongly encouraged... but why so, if the size doesn't matter? Then when .NET is mentioned everyone raves that Lazarus only produces 1.5MB exe's and doesn't require huge .NET download. But if size and all that stuff doesn't matter, then we shouldn't be worried about the .NET download, should we? Ironically, the folks arguing are proving my point (not to mention since we have such huge hard drives, why would anyone care if three versions of .NET were installed? I care.. because of footprint, size, and speed.. not just speed alone, since they are all related, which some people seem to miss completely).

To put it simply, that is the kind of talk that makes .NET worthwhile using. So how in the world is this encouraging FPC development? How is this encouraging people to use FPC?

FPC is (or should be) a niche compiler used for niche purposes. FPC is not an application development compiler. FPC is a systems/server/developer/embedded and maybe even a game programming compiler some day. Although games don't have to be portable.. because everyone uses MS Windows for those.. so the jury is still out on why FPC makes a good game programming tool (Jury hint: 64 bit! MacOS! The niche stuff!). If it does applications too, that is awesome. Hybrid compiler!

Linux and BSD operating systems are not used for GUI applications by the mainstream. Microsoft Windows is the main GUI application platform. So why in the world would anyone use FPC to create a GUI, if there are better tools out there like .NET and Delphi? I don't like .NET myself - but the libraries .NET offers for GUI programming are obviously better than FPC. FPC is good at portability. What needs to be portable? Servers. What needs to be portable? CGI programs. What needs to be portable? Systems tools. What needs to be portable? web related stuff. What doesn't need to be portable? Desktop applications. Because no one uses linux for GUI applications (when I say no one, I mean less than 2 people). What is the main focus of FPC development? Desktop applications.

When a systems programmer or an embedded programmer (I have seen them many times) goes on the FPC mailing list they get ridiculed or heavily questioned for requesting something that C has (such as STATIC or a tiny sysutils or system unit). This is bad - because FPC should really compete with C and offer these things. FPC should make good embedded software and it should make good server software, and good system software, and system tools. Microsoft and Borland control the GUI market and FPC should be finding its place in the systems/server/web/embedded/game market.

The desktop application market is not even that important any more, except for Excel, Word, and Web browsers. Niche desktop applications that run on a PC are rarely used. Niche websites are accessed hundreds of times each day (this wiki is niche and not popular, yet it gets hundreds of hits each day). People use Excel and Word processors, and Web browsers - but not too often they use other tools. So if FPC is good at something, what should it be good at?

Some rare people use Midi programs and niche tools where speed is important (Midi has to be near real time) - so FPC can excel maybe in the Midi market where things like size and speed are important. And maybe people can program with FPC instead of C/C++ for many things. But not for general desktop applications - Delphi has that covered.

Most people, use web browsers. Web browser GUI's do suck in general... but most people are lazy that are using the internet - people that use the internet need a lazy way to find things - the internet web browser is lazy and easy to use.

And who maintains these web servers that serves all these lazy people? Systems administrators and programmers - FPC can serve the needs of these systems administrators and programmers for many tasks, since it is nicer than C/C++ for these tasks. But will FPC be a Delphi killer and will it make good desktop GUI applications? Not really.. FPC is a replacement for C/C++ - but unfortunately FPC team thinks that FPC is a replacement for Delphi. They say otherwise - they say that FPC is not competing with Delphi. Then I ask, why is application development the main focus of FPC, if we aren't competing with Delphi? If FPC wasn't competing with Delphi, then it would be developed more for systems/cgi/embedded/administrator people. Portability only matters in certain situations - this is why Java is not as big of a deal as people think (90 percent or more of java apps run on MS Windows)

And who are the real hackers that are proving FPC useful in the real world.. There are some toy FPC desktop GUI applications out there but there are also some real world apps. There are several people using FPC for intranet and networking. There are Russians using FPC to power their web programs (glossary.ru). There are database programmers using FPC (tdbengine). There are some people building Lazarus applications that run on Windows for companies (which they could just use Delphi for). The real useful cases for FPC are the niche systems/server applications that actually require server portability, like this wiki and some server tools I use on BSD, Linux, and Windows. But do GUI apps really need to be portable? It's cool, but not essential. The real interesting software built with FPC isn't really desktop software in my opinion - all the desktop software applications can simply be built with Delphi/.NET/Visual C++.

But Visual C++ and Delphi, and .NET cannot build me a portable server extension, a portable system tool, a CGI program that can be compiled on all the common servers, a DSO/DLL that can be compiled on servers and many operating systems.

The phrases "portable" and "many operating systems" is not related to GUI! It is server/developer/system related. That's what FPC needs to focus on. The phrase "GUI" is centric to MS Windows. If FPC can create good GUI programs on windows, that is a bonus - and I'm happy (this article is exaggerated.. for example MSEGUI is interesting and Lazarus is interesting).

Delphi is supported by a big corporation - so companies are going to use Delphi for GUI. But server/developer/hacker people are willing to use open source tools. RHEL (red hat enterprise linux) is an example.

FPC is not 100 percent focused on the Niche market. I'm not saying they are all completely wasting time on things like Kylix compatibilities and a whole bunch of GUI stuff (Lazarus.. the Delphi killer.. yeah right, give me a break). Those tools are cool, to an extent - but they aren't a niche - they've already been covered elsewhere for Windows.. and I know some of you love your linux and BSD boxes.. but let's be realistic. There are people that seem to have time to develop that stuff.. and it is somewhat useful. But it isn't as important as the other stuff - FPC is a C++/C/D killer. Not a Delphi killer or a Visual Basic killer.

Many real world programmers, embedded programmers on the mailing list, game programmers, and several other CGI/systems programmers are proving what FPC is really useful for. Sure, there are a couple of toy GUI applications built with FPC - but so what? Couldn't those apps have been built with Delphi or .NET too? Not portable though? Portable GUI apps? For what? Hackers that create portable GUI apps just for the case of making portable GUI apps could instead be spending time making portable server and network apps, where portability really does matter.

FPC is okay at creating GUI applications - and again, I'm not mad at people for creating those.. and yes, I am giving a litle bit of direction here.. FPC is better suited for building system tools, developer tools, server tools, server programs, servers, web stuff, embedded devices, and maybe game programming (sarcasm: until delphi comes out with 64bit and then FPC will just be yet another buggy delphi clone for doing games).

If I want to make a program to maintain my system, I would use FPC - because it might be a linux or BSD or windows system I'm maintaining. But if I want to build a desktop application I will use Delphi, because no one uses desktop software on linux (by no one I mean less than 2 people, and yes, I know that 20 people visit my Wiki each hour on Linux computers, my point still holds).

So, what will it be - server, or GUI? FPC, find your niche. Please. It's the server.

The Size Doesn't Matter Scam

And since many people say that size doesn't matter, and that today's processors and hard drives are getting faster so we don't have to worry about FPC and Lazarus creating big executables - well, then I might as well just go download Java and .NET then because Java and .NET have better libraries (more of them too) than FPC. So FPC is defending the fact that hard drives and speed aren't really all that important - when in fact the whole POINT OF A COMPILED LANGUAGE (look up the definition of the word 'compiled') is to be a small, fast, shippable application.

What does the word compile mean? Oh, and by the way - if size doesn't matter, then why does everyone use UPX? UPX is not beneficial from many technical perspectives - it sucks.. it creates slower programs. But in the real world, UPX works, and everyone uses it, because size does matter. No matter what you argue, the facts prove that people like UPX. Even if technically UPX isn't really good since it causes the program to slow down, UPX is king - because people USE it and believe in it. So size does matter ! No matter how much you want to argue - look at the facts - look at how many people use UPX. Every darn shareware and freeware author seems to use it.

One cannot argue that FPC is not about size and speed - because if it isn't, then FPC is useless. That's what compilers do. That's what smartlinking does. If size doesn't matter and today's hard drives are getting bigger, and FPC is geared toward application development - then please take the smart linking feature out of the compiler because it isn't needed. In fact, send me back to Delphi - because most applications run on Windows. FPC isn't needed, then. And why would anyone turn debugging off, if hard drives are getting bigger and size doesn't matter, and FPC is geared toward stability? Why spend all that time implementing smartlinking into a compiler? Why spend time maintaining smart linking and maintaining features that allow one to disable debugging? If size doesn't matter, then leave all those options on - because wasting time maintaining those features could be better spent on other things.

What part of the FPC team/community doesn't realize, is that a COMPILER is basically useless - unless you prove to me that it does something USEFUL. FPC right now is not useful in the application market - because there are so many good application tools out there like Delphi that already fulfill the application programmer's needs. (Yes I know 5 of you make a living selling Lazarus Apps which you could have produced with Delphi too).

On the FPC wiki I saw that "FPC is geared toward applications and we are not as worried about embedded software, the size of the exe, or other special requests".

Clue: FPC is a special request! It is not an application tool. It's a c/c++ killer not a Delphi killer. Delphi is a VB killer.

Does Lars contribute anything himself?

Yes, I'm not just talking. I've built CompactSysutils and units and helped with the niche stuff. I've had people with Arm processors and embedded devices contact me and offer patches for CompactSysutils.pas and I've had people send me small system units for CGI and embedded programming.

FPC Consulting? In the Application market?

When I get consulting requests.. people and businesses on Windows computers ask me for a program to run in their web browser or on their Windows machine. FPC is basically useless for my consulting unless I use FPC on the server. If I try to convince customers that FPC will help me build a desktop application for them in BSD and Linux they will wonder what crack I'm smoking - I never say this unless for some odd reason the customer actually has a Linux computer and knows what Linux is.

Of course, maybe FPC can work well in poorer countries where they use Linux for the desktop. I've never had a single consulting request for a Linux GUI application.. but maybe some countries do use linux for the GUI. If that's the case, I stand partly corrected (but at the same time, in order to be taken seriously, FPC has to work well for companies with big money.. US Companies too.. and the only thing big US companies tend to need FPC for is.. what, server stuff? system stuff? or nothing at all?).

FPC: the delphi killer!

FPC is not an application tool and a Delphi killer - the serious hackers that have made FPC useful are the ones who have found FPC useful in niche situations. FPC development team keeps saying that FPC is a compliment to Delphi and it doesn't compete with Delphi - I wish it were true but the direction we are heading is not that way. All the focus seems to be Lazarus and Applications - and everyone hates Lazarus (yes, I know 50 of Love it) and there aren't even 2 really awesome desktop applications built with FPC out there (ugh, okay, there are 2, but not 3, or 4).

Morfik is built with Delphi and uses FPC as its system back end.. yes they use FPC for something other than the GUI since FPC is geared toward that sort of thing, you know - especially since FPC is open source and can be shipped with an application whereas a delphi compiler cannot be shipped if it competes with borland's IDE (licensing issues.. Morfik is essentially using FPC developers as slaves to provide their backend for them without having to pay them any salaries, no offence).

Pixel editor looks cool but Paint.NET works for me too. The first time I tried Pixel I noticed that ugly GTK/Gnome look that Gimp has, which I can put up with myself - but lots of Windows users hate.

MSEGUI is cool and I can put up with it too, but lots of users hate the look of non standard looking programs. Lazarus is attempting to cure that but is becoming one huge monolithic source code base in desperate need of modularization.

There are however plenty of servers that not many people know about who happily use tons of FPC programs, and love using them (glossary.ru, this wiki, tdbengine, intranets, networks, private consulting projects).

.Net is a systems tool?

Dot Net (.NET) is no good for systems programming or lower level server development, dynamic link libraries, systems tools, or embedded devices. FPC should be good in these areas. But every time someone asks about embedded programming or cgi programming FPC development team and community says "oh PHP is good and FPC is for applications, and oh FPC is a compliment to Delphi". But I get the feeling that FPC has no case. I try to make a case for FPC by writing this wiki - but there are 1000 other people out there who think FPC is an application language. See this page for example:
http://freepascal.org/wiki/index.php?title=Size_Matters&redirect=no

Learn your niche. Listen to the big guys who are actually using FPC in the real world. Don't ask the toy program developers - ask the real world developers what FPC is useful for. I think it is a c/c++/D killer myself. And what is c/c++/D used for? mainly systems tools, some applications, bigger systems, tight cgi programs where database speed and server speed and size ARE AN ISSUE (large, huge servers), server tools, server extensions (Apache modules in C? Bleh, use FPC!), embedded devices, games that run 64 bit. But desktop GUI applications are a dead end for FPC. .Net/C#/VisualBasic/Delphi are desktop applications programming languages.

FPC has just got to prove WHAT its niche is because it is NOT the desktop application market. Some will argue that portability is what FPC is designed for. Portability for what? Server tools, Developer tools, sysadmin tools, database tools, cgi tools, network tools, thin clients, embedded systems. Not desktop GUI applications - those run on WINDOWS and no portability is needed. However, a GUI is nice if it can be created in FPC too - it just shouldn't be the main focus.

(don't fire up your mac or BSD box and tell me that you use freepascal to create GUI applications on it - you are a minority geek - that is cool, and I do that too - I'm talking about the real world - even I'm guilty of using FPC for GUI stuff, but I'm trying to be realistic about making a CASE for FPC.. making it UNIQUE and NECESSARY in some way. WHY IS FPC NECESSARY? Although I enjoy tinkering around with GUI apps in MSEGUI and previously lazarus, the reality is that I think FPC is suited to a niche that no one at Borland has covered - systems, server programming, and game programming (64bit speed).. and having the FPC compiler which can create GUI's is a Bonus and a Second Focus.)

Note: this article has been exaggerated in order to prove a point. It may seem to contain negativity, but understand it is just me playing devil's advocate. My basic proposal is for people to look at a rhetorical question and answer it: what is FPC good for?. This isn't intended to offend.. it is just a question to answer. What is Java good for? What is Ajax good for?

About
This site is about programming and other things.
_ _ _