最近有不少大学在读的朋友问我关于软件学哪项语言比较好的问题。本人不是IT男,只能从网络上搜索资料和问身边的IT高手。答案内容芜杂,试梳理要点如下,希望有分享价值。现在先分析C语言和Java 之间的对比:

1、三大主流应用中,只有嵌入式不适合Java,其他的数据库和服务器应用,其实Java比C和C++方便得多。

2、C应用面太广,而不同的应用,除了计算机软件编程知识之外,还需要很多应用相关的知识,但是这么多的应用方向,很难说一个C程序员需要掌握哪些知识才够用。

Java语言由于面向应用面相对狭窄,框架模板众多,最重要的,其主要工作方向比较确定,就是做基于网络的跨平台数据应用为主,因此,其发展方向很容易确定,学习路线也比较好规划。

3、 C程序员如果做企业数据应用,一般需要具有编译原理的知识,我们一方面要实现用户的业务,还需要写一套Java这类脚本语言给用户做二次开发用,做数据库应用,最好直接用Java,直接用C,成本太高,而且不容易满足用户需求。

4、C语言偏底层,只要我们一做应用程序,或多或少都需要调用很多操作系统相关的api来完成工作,所以,要想成为C程序员,至少要学习操作系统,通常,至少应该把Windows和Linux常见的api学一遍。MFC是Win32API的C++框架表示,最好也学一点。

5、现×××发,C和C++一般不分:C++到了函数内部,其实是C;而C呢,有很多特性写程序不够方便,也需要使用很多C++的特性,如默认参数,如引用等等。所以,学习C,最好和C++套着学,这已经是两门语言了。

6、C和C++一般说来,很难做到程序通用,需要使用大量的编译宏,这需要了解语言之外的东西,即编译器的很多特性,不过,关于编译器特性的资料目前还是很少。

7、 现代的操作系统,都是多任务操作系统,多任务开发是个难点,这个多任务计算其实就是并行计算了,必须对进程,子进程,线程有很清楚的认识,对于时间片有清醒的认识,对于锁的使用,锁的作用域,去锁优化要很熟悉。但是目前市面上的书籍,对于这个多任务开发这块,同时需要结合语言和操作系统两方面知识的,几乎没有,需要自己摸索。

8、 C语言的基本库相对薄弱,很多近年发展的高级语言,对于哈希,List,队列,栈,树等常见数据结构都提供标准库函数,或者库模块来支持,但C一般是没有的,偏偏实际应用开发还经常用到,得自己找开源,或者程序员自己写,这也会耽误程序员很大一部分精力。

    总而言之,C语言之所以难学,并不是C本身难学,而是如果要成为一个C程序员达到实用级的地步,需要掌握很多方面的知识。如果大家把学习当成一种投资,讲求短平快的话,那么C语言似乎不太对大家的口味了。