首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么理解C的强大之处在于底层

2012-05-01 
如何理解C的强大之处在于底层?人都说,C的强大之处在于底层,像Java,这些的在处理顶层时有优势,我一直搞不明

如何理解C的强大之处在于底层?
人都说,C的强大之处在于底层,像Java,这些的在处理顶层时有优势,我一直搞不明白,为什么C强大之处在于底层,如果说C可以和 底层打交道,我就发现了一个 register ,还有可以用指针操作内存,其他的那些语法也和别的语言(基础语法) 没啥太大区别,难道数就一个register ,和指针,就可以说C强大之处在于底层吗? 还是因为 有别的原因,请 赐教!

[解决办法]
简单地说,编程语言分成两种,一种是编译语言,一种是解释语言
编译语言直接将源代码转换为CPU可以执行的机器命令,解释语言需要将源代码转换为中间代码,在运行时需要一个实时将中间代码转换为机器命令的平台

C和C++都是编译语言,而C#和java都是解释语言
使用编译语言运行速度快需求低效率高,使用解释语言开发快速简洁更加安全。前者在底层有优势,后者在上层有优势

我只说一点
没有编译语言就没有解释语言,java不可能自己编写供自己运行的虚拟机
[解决办法]
看下系统和驱动程序,都是由c/c++(少量汇编)来完成,不管是Windows、Linux或者Android等等。
Java、 c#、或者是Python等等,它们没办法编写底层程序,因为它们本身都需要系统中提供虚拟机、解释器等等。它们都属于更上层的(高级)语言。
[解决办法]
没有用C写不了的东西,就这么简单,而且它快于其他语言。

楼主接触编程还不深入,不知道程序可以做哪些事情,举个简单例子,你用的浏览器,你访问的网站,都是程序员敲出来的,背后的网络通信,数据处理与展现都是程序员写的,而C作为一门基础语言,首先被用来开发其他语言,其次它已经是很古老的语言了,支撑它的第三方C库非常成熟高效,所以说C语言没有做不了的事情,只是看程序员是否有足够广的技术视野与能力。
[解决办法]
c#和java都有一个CLR,代码编译后必须在CLR的管理下运行。CLR负责内存收集等高级语言任务。而c编译后是直接执行的,不需要任何中间程序,你想想谁的效率高。也就是说你编译C#或java程序后其实有两个程序,一个你自己写的,另一个是平台自动生成管理你写的程序的程序,效率可想而知。并且c有很多底层语法特性
[解决办法]
好像有点跑题了
如何理解C的强大之处在于底层?

我觉得说 C的优势之处在于底层更好些 。 因为C语言可以更方便的反汇编进行汇编级别的调试 C#/Java也可以 但是你不能保证他不会变。 所以 C语言可以对目标机器代码进行精确的控制,对于不同的任务对执行的语句进行特殊的优化。
再者 无论Linux 还是windows 所有程序要想使用系统资源最终还是调用其系统调用(API) 所以 C可以更自然的和操作系统交互 了解其具体细节 并按需调试。。。
[解决办法]
c语言的精髓就在于简单,用c编程基于“简单即美”的思想类似于苹果手机。对于c高手来说,c++都是累赘。有人说c++的面向对象更容易理解,但我更倾向与认为c的“简单”才是思维最本质的东西
[解决办法]
1. 由于C语言语法足够简单,因而CPU的开发者在推出自己CPU指令的时候,可以很方便的实现支持自己CPU指令的编译器,相反,如果是去实现更高级的语言语法,成本就会高出很多。
2. C语言,汇编语言可以直接对CPU的指令控制,包括寄存器的读写,中断控制,位控制。因而在写驱动程序的时候除此之外别无选择,如写SPI,I2C通信的驱动程序时候。

[解决办法]
C是除了汇编之外最直接,最简单的编译转换成机器语言的语言,任何软件都是基于硬件和操作系统上面来运行的,也就是一系列的机器码,其他JAVA之类的都是基于C发展而来的。

热点排行
Bad Request.