It is a very complex issue for the development of programming language. Sometimes developers have no rooms, such as customers may use a language that the project must adopt a language, or a manager with a decision, as you have used the experience of using a language and requires the developers managed by themselves. Use this language to start projects. Throps these situations, when you have a developer, have the right to choose the language you are using, what principles make choices?
There are very many debates on this issue. There are often C supporters to submit C to meet various fields. Or Java's user claims that C is outdated. I recently saw some people advocate using Lisp because of its beautiful.
As a long-term user of C , I used C to complete almost everything, from the development of the project, to some small, but need to write the program to complete, such as some file format conversion. Long-term accumulated experience makes me understand a lot of details in the C language, I am also familiar with C standard class libraries, so there is no big obstacle to the mastery of the language. But I feel so that the development efficiency is still relatively low.
My development platform has always been DOS, which later is Windows. Windows is not friendly for developers that it does not provide a good shell. If you want to use a batch file to complete a slightly complicated task, such as a project's build, it will be a challenge. Later I installed Cygwin, I started using some UNIX tools, such as TR, SED, LEX, YACC, etc. I found that some tasks no longer need to use C . Because it is more convenient to use other tools.
Python language further reduces my use of C . Despite me, Python is a new language, but I found that even if it is the time you need it, sometimes it is necessary to use Python or higher than C efficiency. One reason is that Python has more ready-made libraries.
Compared with Java, the weakness of C in the library is more obvious. Processed from XML to the graphical user interface, Java provides powerful class libraries. Although C has some corresponding libraries in certain aspects, the complexity of C languages has led to difficulty of writing class libraries and the difficulty of using class libraries. The lack of class libraries means having some repetitive work unless you write some class libraries for yourself.
Development tool support? Eclipse, Intellij Idea, JBuilder, NetBeans, so many excellent IDEs make me no longer miss the convenience of Visual C IDE. More importantly, Java's IDE usually provides a strong refactoring feature. And Ant also made me alleviate the dependence on shell.
But I still have to use C / C . Recently I have participated in a project-related project, the hardware's Firmware can only write (okay, do not need too much assembly).
Now my selection criteria for programming languages are: according to development needs, select the highest efficiency. Of course, maintenance work is to consider in "efficiency".