Native vs cross-platform computer languages
New computer programmers often ask: What is the best language? And the usual and very true answer is: There is no best language. There is the right language for the right project.
The computing world is cluttered with thousands of technologies, very often doing similar things. Each platform usually has tens of computer languages. It is not unusual for a programer to wonder what if s/he could write one program that works in multiple platforms, instead of writing the same program once for each platform. There is clutter in that as well. There are tens of computer languages enabling programmers to write cross-platform programs.
So for example, if a programmer wants to write a desktop program for MS Windows, Apple OS X and Linux he can write it in Java, or Qt. If s/he wants to write a smartphone app for Android, iOS and Windows Phone he can write it in Titanium, or PhoneGap. Those are only some choices from a wide variety of cross-platform languages.
Should s/he choose a cross-platform or native language? For once more, the answer is not straight forward. Using cross-platform languages saves you money in the beginning. What happens next is not predictable. Cross-platform languages have important weaknesses:
1. Some of them are significantly slow. In some of those languages, programs are written in an abstract form and they are translated in the native language as they run.
2. Features may be clipped. When you write a cross-platform program, you need to use the common denominator of all of them. Unique advantages in one platform may be off limits to you.
3. Unpredictable bugs. All programs can have bugs. Computer languages are not an exception. When your cross-platform language has bugs, there is not much you can do to react. You can wait until the bug is fixed, and until then your only alternative is to find work-arounds.
4. Platform upgrades. When platforms upgrade they may brake programming assumptions made by your cross-platform language, causing bugs in your programs. Usually when game changer platform upgrades occur, they come together with fixes in their equivalent native languages. With cross-platform languages, you are trapped until the software house releases an update.
All the problems mentioned above can be smaller or larger depending on how dedicated the issuing software house is. Practically speaking, large software houses with proven dedication to their products don't need a lot of time to fix such problems. But still, you as a programmer and your end users are depended on them.
If your worry is the development time and cost, there is no doubt the initial version of your program will save you a lot of time and money. From then on, there is a lot of doubt on how much unjustified time and money you will spend as bugs and platform changes occur.
To sum up, cross-platform languages are good choices with their dark sides, and it is up to your judgement to choose them over native computer languages.