论《Java替代C语言的可能性》
在CSDN BLOG上看到孟岩兄的文章:《Java替代C语言的可能性》,挺有意思的,自己也来凑个热闹。瞎说两句。
1. Java真的不可能替代C语言吗?
引用一下孟岩兄中的文字:“C语言目前称王的主要领域是作系统、虚拟机和设备驱动程序开发。”,对这点,大家都没有异议,这太明显了,在这些领域,以目前的计算机技术现状来看,Java不太可能替代C语言。
然而,这只是现状,现在是这样,不等于永远是这样。
如果随着硬件的发展,将JVM直接做到硬件中,让计算机一起动就自动执行JVM,那么,Java倒也真的成为“底层语言”了,让C走开不是不可能的,使用这样的硬件基础,用Java开发一个操作系统又真的是一句笑话?我看不出有什么理由说这件事100%不可能发生。这种操作系统,可以说是一种抽象层次相当高的“操作系统”,底层硬件完成许多原先由软件完成的功能,因此,“Java操作系统”不可能是象Vista这样占了我十几个G的“霸道”OS,会变得相当简单,但会提供独具特色的服务,与现在的当红OS会有很大的不同,同志们:喝点啤酒,在头脑有点晕乎乎的时候想象想象吧!
如果没记错的话,计算机技术发展史上曾出现过ROM-BASIC(还记得那古老的时代吗?绿色的显示器,闪烁着一个光标,输入一句代码计算机就执行一句……)。这种电脑一启动就自动进入BASIC解释执行状态。当时在这种计算机上编程BASIC是绝对的“主流”,没C什么事,Java就更不知道在哪里了。
计算机硬件是“经济基础”,操作系统/应用软件是“上层建筑”,经济基础决定上层建筑。我们只能说在目前的计算机“经济基础”之上,Java取代C还是看上去不太可能的事。
2.JVM与OS一定要用C来开发?
不管用什么语言,编写出什么样的软件,最终都是由CPU执行的。但CPU根本不认识任何高级语言,它直接执行0和1的二进制代码。
所以,JVM与OS也不一定非要用C来开发。从理论上说只要是一种能生成可供特定硬件架构执行的机器指令代码的语言可以开发JVM和OS,最极端的,不用任何高级语言,用0和1直接编出JVM和OS(呵呵,梦回穿孔纸带的年代……),只是这样做,等把OS给写出来,地老天荒了……
当然,目前好象还找不到比C更合适开发JVM和OS这种基础软件的高级语言。用Java取代C只能当成笑话说说。
直接用0和1编程只具有理论上的可能性。现实开发中若真有人这么做,也许他不是天才就是疯子了。 :)
分享到:
相关推荐
尽管如此,对于需要高性能的应用,如嵌入式系统和操作系统等,C语言这种精细的内存控制能力提供了不可替代的优势。 三、垃圾回收的应用及优缺点 1. Java中的垃圾回收优点: - 自动化程度高,减少内存泄漏风险。 - ...
C语言和Java是两种截然不同的编程语言,它们在设计理念、效率、可移植性以及语言特性上有显著的差异。下面将详细阐述这两种语言的区别。 首先,从编程思想来看,C语言是一种面向过程的语言,它的核心在于流程控制和...
Java语言的难度相对较低,更易于上手,因此很多高校考虑用Java来替代C语言作为基础教学语言。 3. C语言的教学优势: 文章提到C语言够难,但这种难度能够区分学生的能力,更能培养学生的勤快和坚韧,从而培养出更...
这说明了C语言在系统级编程中的不可替代性。 2. **API与框架的基础**:Windows API提供了大量的C语言函数接口,许多应用程序开发框架,如MFC、ATL和WTL等,虽然表面上是基于C++或特定的IDE,但底层实现仍然依赖于...
Java和C#流行的一个重要原因是它们的可移植性,而C语言的可移植性相对较弱。 C语言的应用领域非常广泛,例如在编写操作系统、数据库、驱动程序等方面。C语言直接控制硬件的能力使得它在底层系统编程中不可或缺。...
这种格式为程序员提供了很大的灵活性,但也可能导致代码风格上的差异和争议。 - **与汇编语言的接口**:C语言能够直接与汇编语言进行交互,这使得程序员可以在需要时利用底层硬件的功能,提高了程序的性能。 - **...
在C语言中实现3DES加密算法,可以确保在不同平台上的兼容性和一致性,尤其对于需要跨平台操作的应用场景,如将C语言代码移植到Android平台,通过JNI接口与Java代码交互,能够很好地解决加解密结果不一致的问题。...
- **高效性**:C语言允许程序员直接操作内存,使得编写高效的程序成为可能。 - **可移植性**:C语言的程序可以很容易地从一个平台移植到另一个平台。 - **简洁性**:C语言语法简洁明了,易于学习和理解。 - **...
虽然现代编程语言在许多方面超越了C语言,尤其是在安全性和易用性方面,但C语言仍然在某些领域占据着不可替代的地位。例如,在操作系统内核开发、嵌入式系统以及高性能计算等领域,C语言依然是首选的语言之一。 ...
第二代编程语言是指汇编语言,它使用助记符替代了机器语言中的数字和地址,提高了可读性和可写性。 #### Declarative(声明式) 声明式编程关注的是“做什么”而不是“怎么做”。程序员只需描述他们希望程序达到的...
C语言的高效性和灵活性使得它即使在高级编程语言盛行的今天,依然保持着不可替代的地位。 首先,C语言是理解计算机工作原理的关键。正如描述中提到的,克劳德·香农和约翰·冯·诺依曼奠定了数字信息处理的基础,而...
尽管学习C语言可能会遇到一定的挑战,但它能够帮助程序员深入理解计算机底层的工作原理,并为后续的学习和发展奠定坚实的基础。无论是对于初学者还是经验丰富的开发者来说,掌握C语言都是一项宝贵的技能。
当然,C语言在实时系统、嵌入式系统以及需要直接访问硬件资源的场合仍具有不可替代的优势。开发者应根据具体项目需求和场景选择合适的语言。对于Java开发者来说,理解何时和如何利用Java的性能优势是提高软件效率的...
根据《C++编程思想》一书的观点,C++与C之间的效率差异往往在正负5%之间,因此,在大多数情况下,C++完全可以替代C语言(特别是在单片机等领域,但需要注意对硬件的直接操作或使用C语言的情况)。 Java是一种广泛...
Java替代了C语言中的指针,通过引用的方式解决了内存管理的问题,并且扩大了运行内存空间,优化了开发环境。这些改进使得Java在编程技巧和知识的掌握上变得简单易学,提高了程序员的编程效率。 Java还具备强制性的...
相比之下,像Java等语言虽然提供了更好的内存安全保护机制,却限制了指针等底层操作,使得语言变得更复杂,影响了开发效率和学习的便捷性。 兼容性强是C语言的另一个显著优势。C语言几乎可以在所有的计算机平台上...
3. **可移植性弱**:虽然C语言本身具有一定的可移植性,但相对于Java和C#,移植工作可能会更复杂。 【流程控制】 流程控制是程序执行顺序的管理。在C语言中,流程控制包括顺序执行、选择执行(条件分支)和循环执行...
它的设计目标是提供一种简洁、高效且可移植性良好的编程工具,这使得C语言在计算机科学领域有着不可替代的地位。"C语言大全"通常指的是包含C语言各个方面的综合教程或参考书籍,它涵盖了C语言的基础语法、数据类型、...
尽管随着时间的推移,出现了诸如C++、Java、C#等高级语言,但C语言依然保持着其独特的地位和广泛的应用场景。C语言的学习,对于编程初学者乃至专业程序员而言,具有不可替代的价值。 首先,C语言提供了对底层硬件的...