技术文章

为什么说java语言比c语言简单、易学、易用?

先说说Java优点,Java隐藏了C的晦涩难懂的指针,内存管理等机制,把这些难懂且容易出错的部分交由虚拟机去处理,这是Java最方便之处。Java拥有强大的类库,学语言可能要花费较多的时间学习别人创建并组织好的知识库,Java奉行拿来主义,组装主义,这使得开发效率大大提高,但有时拿来并不一定是好事情,你可能用到的只是某个类库中一项简单的功能,你却不得不花费大量的精力弄懂这个类库的框架和内部错综复杂的类关系,有时你会觉得开发者的思路晦涩难懂,等你真正学习并理解了开发者的意图,估计你自己就能写出功能相仿的类库了,所以说,学Java难就难在学习类库上。

java语言

再来拉拉C,一个很重要的问题,说C没有封装,没有面向对象的同学们真的要好好学学编程基础了。C的结构体就是C++和Java语言面向对象和封装技术的始祖,在结构体里面封装变量指针和函数指针就是一个类。虽然C的指针和内存管理很难学,但是这确实是编程基础,还有编译,链接,动态装载,虚拟内存,操作系统,数据结构等等,这些基础都要学,还都要学好,可恰恰很多人学不好,这就不难理解三十岁就失业的程序员大有人在了。Java虽然不提指针,但是却处处都用指针,从普通变量的声明,到类对象的构造,以及函数参数的传递都是指针。每次说到这,我都真心地佩服能写出JVM的程序员们,在程序和操作系统内核之间多构架出这么一个虚拟层,提供自动指针和内存管理机制,又能提供即时编译,并重便捷和效率,JVM绝对堪称编程世界的一个伟大发明。

说到JVM虚拟机,又得说回编译器,不管什么语言开发的程序,最终要被编译链接成机器能识别二进制机器语言。对于Windows或Linux平台上开发的程序来讲,不管是C的编译器还是Java的虚拟机,其整个编译链接和内存装载的过程,以及虚拟内存的管理,多线程的实现,都要受操作系统监管,对操作系统内核的了解程度,决定了程序开发的深度。Windows和Linux的系统调用层接口千差万别,C设计者艰难的制定了能适用两种接口的标准库,但是涉及到图形、多线程等深度开发,标准库的能力就显得捉襟见肘了,还需要各自平台的专业库,这样开发出来的程序受操作系统平台限制。为了实现编程语言跨平台的机制,JVM出现了,但是虚拟机的本质还是在不同平台的系统调用层之上的标准接口,所以涉及到硬件驱动和系统内核关联开发时就无能为力了,当然JVM也允许程序中调用本地C函数库,做到多语言联合开发,以达到底层开发的目的。

java语言

说了这么多,也说的很乱,总体上的意思是说,用便捷的Java语言开发程序绝对没有问题,但一定要学习掌握编程的基础,知道程序运行的来龙去脉,这样遇到深层次的问题时,就有能力解决,这也是高级程序员的必经之路吧。