The right tool for the job ? Not for everyone.
I recently had a discussion with a friend about why people choose a specific development enviroment to write their software, and not a better/easier/faster one. I think its a good discussion of my views in this subject, and since it was done using IM, I can post it verbatim (almost verbatim – I spell check better when I post then when I chat 😉 plus the names of the innocent were changed to protect their identity) :
I*:
oded, how is it, that i see many developers looking for many features in a programming language, that FPC/Delphi provide, and developers keep on choosing other, less friednly and usefull, languages – such as Java/C/C++. While these programming languages require developers to do a lot more work to achive the same things, and also require them to aquire and use many 3rd pary tools, in FPC most of said capabilities are part of the main package – and you can of course add many more tool kits?
Guss:
Two major criteria impact one person’s selection of a specific tool for a specific mission:
*) Familiarity with the tool
*) The market’s common conceptions (or misconceptions as may be the case).
Secondary to that you will find:
*) applicability of the tool to the job at hand
*) actual ease of use
Most developers (and it managers – as it often falls to them, unqualified as they are, to select the tool) are familiar with C/C++/Java and unfamiliar with other tools
More over, the market acceptance for Java (J2EE) and C++ is significantly higher then any other development tool. As such, more often then not, when its time to select a programming language to build upon, Java or C++ (and now more and more,C#) are selected regardless of the their applicability, performance, ease of use, robustness or any other criteria which you might think is relevant.
I*:
So it all comes down to how easy it is to be ignore modern developments in programming languages and hide in a dark hole doing your own thing, then to actually select something usefull to you…
Guss:
Not exactly. Lets take for granted (for the sake of the argument) that any developer knows C/C++ or Java (and IT managers are aware of it). ok ?
I*:
ok
Guss:
Now let us assume, that most developers are unfamiliar with other tools.
Now, for any given task, it would appear that it is much harder to choose anything other then Java or C++ – and the reason is that the otherwise the developer would have to sit down and learn all about the new tool.
Worse – Not only will the developer have to learn a new language and set of tools to work with: in order to make an intelligent choice, said developer would have to learn several tools/languages and compare them – probably 3 or more.
Only then can another tool/language be selected over the incumbent development platform.
For most software development projects, it is simply not worth the effort involved.
I*:
It may be true if people would not have gone to C#, python or perl…
but they do… and do it all of the time…
So they are looking for better tools, but its sounds like they are going around in circles..
Guss:
The “default tool for the job” can only be changed if the developer can learn a new development tool w/o compromising work on going projects. Once that is done, then a new tool is added to the arsenal, and if it appears better suited for the job, and has enough market acceptance – then it might be selected as the basis for a new project.
C# is making in roads because Microsoft is actively pushing it and putting a lot of resources into that. They are offering development courses for software houses for almost free, and are putting a lot of $s into advertising the benefits of the .net platform. When a software house has enough developers that can talk C# (because they went to .net courses), then the next project may be based on C#.
Some people (and you’d be surprised by how small a percentage they are) are learning new things by themselves – like Python.
These people most often go for what generates the most fan fair – the commercial highly advertised platforms such as .net, or the very large open source projects such as perl and python.
Only a very small amount of people will put in the extra effort to learn more then one or two tools and then compare them on their merits, and so few of those will choose something which does not appear to have a lot of market s/community support. And, of course, its a vicous circle that feeds itself..
When analyzing why people choose one thing over another, you have to realize that appearances are everything.
Pascal fell into a hole when it was started to be used as a teaching tool for high-schoolers and later younger kids. At once it lost its appeal as a “professional tool” and Pascal courses were removed from universities curriculums.
Once that was done, the end was near – except for people that are really interested in language design, theory or implementation (and they are very few and far between) almost no one treats Pascal and its derivatives as a serious development tool. I talk with people about Pascal/Delphi from time to time, and even from serious software developers, I often hear something along the lines of – “yes, I saw it once and it looks like a nice tool for simple windows programs, but you don’t really expect me to write serious stuff with this toy ?”
I*:
It reminds me when a friend looked how to do some thing in qt, and found a
Delphi tip on how to do exactly what he was looking for, and he didn’t believe it was so easy or possible to do it in Delphi..
people keep compering Delphi to VB, but it’s like comparing a car to an airplain. They both have wheels and an engine, but thats it… Delphi can do a lot more..
And fpc can do even more 🙂
On many places where borland was unable/did not do things, fpc did them much better…. today I heared how to hack Java to do something, that on fpc/Delphi it would have taken me two lines of code…. while on Java it requires implementation of an additional class, imlementation of an interface and combining all of them togather… with C++ you only need to implement a new class… and again on fpc/Delphi you need two lines of code to do the same thing.
Guss:
But you can’t sell it to the clients, because of the misconceptions. If you tell your client that your system is written using Pascal, you’ll find it much harder to make the sale. A friend of mine works for a company which up until recently had most of their infrastructure done in Delphi – clients, servers everything. Then they got a huge investment from a client, but the condition was that they have to do stuff in Java from now on, so they converted everything to Java, and now they’re moving to C#. And yes, its harder and more time consuming, but they wouldn’t have made the sale otherwise.
I*:
so sad
Guss:
yes 🙂