Here is the question, in many books I read, everywhere start training in console applications … But here is the question why it is in them, and the second why the console applications ??
Answer 1, Authority 100%
There are different types of applications and their classifications. One of them: applications are transforming, interactive and reactive (real-time). So, the first of them, transforming, are characterized by the fact that they take the data at the input (simplified – input file), they work for a while, necessarily finite, and issue results (simplified – in the output file). There are a lot of such tasks and the person’s participation there is minimal in the process. (A special case is a subtas for any interactive application). Here for them and need console applications. Well, plus interactive tasks where the dialogue is not graphic, but textual. Somewhere so. Well, real-time tasks are rarely with a graphical interface. Plus all sorts of servers (http, ftp, etc.)
Answer 2, Authority 71%
In fact, most applications are precisely console or do not have a user interface at all. This includes various server applications, services that are transforming applications mentioned above, etc. etc.
The fact is that the console is just a form of the user interface. And to implement such an interface is usually easier than graphic. The main logic of the program does not depend on the interface, so training is more effective on console programs. In addition, cantilever applications are easier to test and debug.
Finally, the console interface is often more convenient and more efficiently graphic. Simply modern users are not accustomed to enjoy the console and do not know the possibilities of modern consoles. Read the Jef Raskin book about the interfaces. There a lot about it says.
Answer 3, Authority 29%
Going first on console applications to first understand the basic principles of the language, the basis of syntax, etc. Main work in applications generally goes for the GUI, so you must first master it all, and the construction of the GUI usually stands on the same basic principles as other applications: the same principles of the OOP, etc.
Not everywhere GUI is needed and not everywhere it is useful. For example, servers. Yes, and in ordinary programs, it is usually used to enter and output some data, and all processing goes behind the scenes. On the GUI servers will slow down work, create unnecessary safety problems. And he does not need there. And in general, programs without GUI (let’s say so wider) Actually much more than with a graphical interface.