I am engaged in developmental work for Android for some time, and I gradually came to the conclusion that I have been lacking many things as a developer. At the beginning of 2010, I lacked only C++ exceptions and RTTI. Without them, any non-trivial C++ code could not be ported to Android, and it required almost complete rewriting. It was a very important limitation, which worried me a lot. Fortunately, Android is an open source, so I started working on that, keeping in mind old saying (if you need something, do it yourself). I got surprised, because to make support for C++ with exceptions and RTTI turned out pretty easy. It only took about a week of work. Then the website was made on which were posted the NDKs for Windows, Linux and Mac OS X, as well as a patch and the instructions for assembly.
The problem was urgent, so the project was very popular. During the first month I received many letters with the questions, requests for additional functionality and simple thanks. One of the most frequently asked question was: “Will Google include these changes to the mainline?”. I honestly replied that I do not know, but there is hope, because David Turner (system architect of Android) is very interested in my patches, and he promised to pay attention to them.
In the life comes a moment, when anyone who wishes to write programs for the products of Apple company has to learn a new programming language Objective-C.
Here is a banal theory of the object-oriented programming (OOP) appearance
The problem of reusing a written code and its portability make the programmers constantly look for the new ways to organize, structure and abstracting it. In order to solve these problems are created the new programming paradigms, design template tooling, new languages, compilers, standard libraries, software platforms and frameworks. Thus were formed the paradigm of subprograms (procedures) that is implemented by the processor’s commands CALL \ RET and the stack (in fact, moving the implementing stream at the address of random rather than following the current command with further return). Then, the paradigm of modules (each file is a separate translation unit) that produced a two-stage translation: compilation of modules and their linking (static or dynamic) in the executable module.