There are a wide variety of languages used for mobile development: Swift, Objective C, Java, Kotlin, Delphi, C#, and C++. What are the reasons to choose C++?
Consider a language along three axes: expressiveness, conciseness, and performance.
C++ occupies an unusual position among languages. It is powerful: code can be expressive, concise, and performant all at once. This is unusual. Languages can be expressive but non-concise, expressive but not performant, performant but low-level and unexpressive in that it takes a lot of code to write complex behaviour, and so forth. C++ has always had a reputation for performance, but especially in recent years with modern C++ (’11 and newer) the language allows powerful expressions and algorithms in very tightly compiled code.
Finally, there are a large number of useful libraries written in C++. From app basics like JSON through to maths like fast fourier transforms or linear algebra to image processing to data recognition to graphics, there’s C++ code to do it.
Thus, C++ tends to be the choice when a developer wants something that runs fast, allows good data manipulation, and is concise onscreen. It’s also used when you want to make use of third party libraries. C++ used for games: performant, and they may have a lot of code, and pull in many common libraries. It’s used for key desktop apps: performant, lots of code, and unusual data manipulation (Explorer does interesting things with files and COM objects. Word manipulates text, layouts, references and more.) And as it happens, mobile fits this perfectly.
Mobile app development has a few key differences to typical desktop or server app development:
A UI is not necessarily something you tie to a language. (C++Builder has great UI tools for cross-platform UI, without losing the benefits of using C++.) The other two are worth considering in more depth, because both points say the same thing in different ways: using less CPU cycles for the same work is better. It’s better for the user, because they see their app running faster; it’s better for the device, because it spends less energy. You always want well optimized code on a mobile device.
What does that mean for a choice of language? It means you want a language that optimizes and runs natively, of course, but also means you want a language that makes it easy to write code that will be well optimized. Here, we circle back to expressiveness and conciseness: write powerful concepts in small clear code that runs fast on the target device.