{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

C语言是不是世界上最好的编程语言?真的永远不会过时吗?

stefanstefan 回答10 收藏1
收藏问题

10条回答

浠ラ箍

浠ラ箍

回答于2022-06-22 19:04

c语言是不是世界上最好的编程语言?答案肯定是否定的。

c语言真的永远不会过时吗?答案当然也是否定的。

任何东西,没有最之说,只有最适合之说。

一、c语言的最大优势是效率。提起效率,其实效率最高的语言是汇编语言,但是汇编语言是机器语言,不符合人类的使用习惯。所以综合编程效率和运行效率来看,c语言就是首选了。

然而,是不是在任何情况下,我们都对执行效率这么苛刻呢?

当然不是了。

在嵌入式系统里,比如像智能手表、针孔摄像头等,由于体积、能耗和硬件资源的限制,我们对代码的运行效率比较苛刻(这样才能能节省内存和cpu,从而节省成本)。所以我们使用c语言,就是最合适的。

二、但是在pc系统或者服务器系统里,尤其是随着硬件价格成本的不断降低(请参考摩尔定律),我们对代码的运行效率不那么苛刻了。反而随着软件复杂度的提升,我们对代码的编程效率和代码的集成度有了更高的需求,而这些却都不是c语言的强项,这个时候面向对象语言,比如java会更加合适。

所以,综合编程语言的发展历史,从来没有也不会有一款编程语言永远都不会过时。因为社会在发展,有些制约因素在以前是制约因素,现在可能就不是了,那么所谓合适的主体也就变了。c语言在过去的几十年里一直兴盛不衰,但是并不意味着以后不会消亡。我们看到随着嵌入式设备的和web化趋势的结合,golang语言开始崭露头角,在一些领域慢慢替代c语言了。相信在未来,开发语言会不断的进行进化,进化出符合当前需求的新的开发语言。

评论0 赞同0
  •  加载中...
tylin

tylin

回答于2022-06-22 19:04

是不是最好的语言?俗话说,文无第一,所以也不存在最好的语言,只有最合适某些领域的语言。


永远不会过时?计算机出现才几十年,现在任何的语言、设计,都远远谈不上永远。一定会有过时的一天。


但是,我们可以说,C语言是最经典的流行语言。从1970年代发展到现在,足够经典,也足够优秀。因为:

  • C语言方便、高效的完成了对计算机体系结构的抽象。而从1970年代到现在,计算机底层的体系结构并无巨大变化

  • C语言与UNIX系统构成了良好的共生关系。而UNIX及类UNIX系统到现在仍统治整个计算机界(Linux, macOS, Android, iOS等等,连Windows都号称POSIX兼容)

  • C语言是互联网TCP/IP编程的原生语言,很多基础协议内容如socket,都是基于C实现,也适合C实现。而TCP/IP正统治整个网络

  • C语言编译器容易实现,对一个新CPU,可以迅速实现对应的C编译器,移植成本低。现在大量的MCU都实现且仅实现了C编译器


小结一下:

  • C语言虽然谈不上最好,也谈不上永不过时,但在与硬件系统接近的领域,如操作系统、驱动程序、MCU编程等领域,C语言是最适合的,并且在硬件底层未发生巨大变化的情况下,仍会具备强大的生命力,是一个值得花时间学习的语言。

评论0 赞同0
  •  加载中...
ARGUS

ARGUS

回答于2022-06-22 19:04

首先,C语言是世界上最好的编程语言,它是其他的编程语言需要膜拜的编程语言,它是编程语言世界“神一样”的存在,永远不可能过时,因为它是指引初学者学习编程语言的“灯塔”。

其后任何的编程语言,都有C语言的身影。它们出现,由于时间的推移和应用的特殊需要,C语言搭建的家园必须扩建,但是它们的基石离不开C语言,至少摆脱不了C语言的影子。

C语言是最接近底层(汇编语言)的编程语言,它编译后的效率极高。

C和C++语言都有指针,特别是函数指针,而其他高级语言极力反对的就是指针的存在。

有些编程语言的崛起就是以指针为攻击对象而吸引眼球的。

在嵌入式领域,中断向量实际就是函数指针。

C语言的函数指针和结构及联合,构成了完美的“COM接口技术”,故在嵌入式领域,C/C++编程语言是其他任何编程语言无法取代的。

菜农认为,没有指针的编程语言,就别在嵌入式领域混了!

如图所示,菜农在2003年在PIC上用宏汇编实现的“HPL语言”(早已完美地应用到产品上),它也跑不出C语言的影子!

菜农从1981年就开始用汇编语言,BASIC,TC,BC,DBASE,FOXBASE,VB,VC++,FOXPRO,BC++,DELPHI,CVI,mysql,JAVA,C#,html,css,js,VB脚本到如今的PHP,也在2006年学过python,也看过QT……总之菜农用过、学过和看过几乎所有流行的编程语言。




评论0 赞同0
  •  加载中...
chunquedong

chunquedong

回答于2022-06-22 19:04


不请自来,作为一名长期使用C语言进行开发的老司机,来回答一下这个问题。

首先,C语言还真是一门永不过时的语言

答主本人从2000年开始接触使用C语言,那还是486计算机还是天价的时代,上一次计算机课和过年一样兴奋。迄今已经近20年的时间,很多其它语言有的衰落了,有的起来了,有的是起起落落。

像pascal、basic、fortran等等,现在有的学生可能连听说过都没有,现在几乎已经消失了,像C/C++/java/python/php/javascript等等都是经过大浪淘沙的胜利者,尤其是C语言,生命力是最顽强的。因为几乎所有的计算机系统底层都是用C语言开发,尤其是linux/unix以及其衍生系统都是以C语言为主的操作系统,windows系统也是如此,只不过微软花了大价钱开发了VC,但是还是以C语言为基础的封装的。

后来的嵌入式操作系统更是离不开C语言,所有嵌入式的BSP都是以C语言编程的,固件库也是用C语言封装的。包括已经一统手机天下的android操作系统,所有的driver层还必须是C语言开发,因为android的底层就是linux,android不过是在linux上开发优化了java虚拟机,然后用java语言开发了UI库。其实严格来说android并不是新的操作系统,而是一个适用于手机的UI库。

正如一个城市建筑群,所有建筑的地基都是用C语言打下的,你能把地基丢掉吗,显然是不行的,C语言青春永驻也是自然而然的事情。

其次、以后C语言会过期吗

答案是:不会,上面已经说了,C语言是可以直接和硬件驱动语言,是所有操作系统的基础。除此之外,C语言的效率是除汇编语言之外效率最高的语言,即使目前计算机的算力已经非常廉价的今天,在某些要求苛刻的关键计算任务上,首先仍然是C语言,甚至有时使用C语言有时并不是完全因为效率,而是因为可控。高级语言由于封装了操作系统的某些特性,比如线程安全、内存管理等等。这些高级特性再某些时候运行结果可能是未知的,比如有可能内存分配失败,线程得不到及时调度等。对于实时性要求比较高的场景,这些不可预知的问题都是致命的。而C语言的简单直接,就显得格外重要了。

最后、C语言是永不过期的语言

即使不断诞生新的语言,有一部分任务采用其他语言完成,但是和底层硬件打交道仍然离不开C语言,如果你打算在driver层面或者从事嵌入式开发谋一份工作,那就毫不犹豫的拥抱C语言吧,如果你是高手,高薪工作那都不是事儿。


如果您有什么不同意见,欢迎留言讨论。

评论0 赞同0
  •  加载中...
senntyou

senntyou

回答于2022-06-22 19:04

C与言是不是最好的编程语言这个不好说,但是在可预见的未来是不会过时的。

一、C语言,最好的编程语言?

这世上有很多优秀的编程语言,C语言,C++语言,Java,C sharp等,每种语言都有自己的特点和使用场景,也都有自己的缺点和无法弥补的遗憾。要说哪种编程语言是世界最好的编程语言这个问题是没有意义的。

二、C语言,会过时吗?

  1. 所有的语言之间都有相通的地方,比如语法上。C语言里有数组的概念,C++语言也有,Java也有。如果你理解了C语言数组的概念,你再去学习其他编程语言的数组将会很轻松。
  2. C语言中有指针的概念,很多人认为指针很难理解,经常会用错指针。为了免去学习C语言指针的苦恼,Java编程中就去掉了指针的概念,这给很多程序员带来了福音。可是去掉了指针的概念并不意味着就没有指针了,只是Java封装了指针而你看不到而已,也就是说在编程的时候依然要用到C语言的指针。可以说C语言中的很多概念是其他编程语言的基础。
  3. C语言能实现其他编程语言不能实现的功能。比如在音视频编解码方面的项目几乎都是清一色使用C语言开发的,几乎看不到使用其他的高级语言开发,尤其是那些能做出很漂亮的UI界面的编程语言。没办法,谁让C语言处理运行效率高呢!

C语言不一定是最好的编程语言,但它是一个不可被替代的编程语言,它的许多精髓仍然被其他的编程语言借鉴着!学好C语言吧!

评论0 赞同0
  •  加载中...
changfeng1050

changfeng1050

回答于2022-06-22 19:04

问一种语言是不是世界上最好的编程语言,实际上这种问法是不恰当的。C语言也好,Basic语言也好,或者是Python语言也好,不存在好与不好之说,只能说哪个更适合你,哪种编程语言更擅长哪种领域而已。

如对于C语言,应该说是一种比较重要的、比较基础的编程语言。如果你以后的工作方向更侧重于硬件方面(如单片机开发)、操作系统底层通信开发、复杂信号处理算法等等方面,那学习C语言是确实比较合适的。C语言是一种编译型语言,运行效率比较高,在这些领域更合适些。

但C语言的的缺点也比较明显,相对于Python等动态类型的编程语言来讲,它入门相对较大,自己在学习过程中必须要有足够的耐心、恒心,多多练习、多多调试才能积累更多的编程经验,得心应手的解决实际的工程问题。

在C语言是否会过时方面,应该也不存在过时之说,各种编程语言的编程思想方法(如程序结构都有顺序、循环、选择等结构,数据结构的组织)等思路方面都是相通的。学好C语言,对于你将来学习第二种编程语言肯定是有好处的,能够帮助你更快的学习理解其它的编程语言思想,会有极大的促进作用。

评论0 赞同0
  •  加载中...
陈伟

陈伟

回答于2022-06-22 19:04

C语言是不是世界上最好的编程语言

直接从数据来看,TIOBE公布了5月编程语言的排行榜,C语言时隔5年重回第一。


首先,C语言是编程语言世界中“神一样”的存在。现如今市面上大多数编程语言都或多或少的包含C语言的身影。C语言是最接近底层的编程语言,编译后的效率极高。C语言有指针,特别是函数指针,中断向量实际就是函数指针。

C语言的函数指针和结构及联合,构成了完美的“COM接口技术”,在嵌入式领域,C/C++是其他任何编程语言无法替代的。如果语言没有指针,那在嵌入式领域是非常难生存的。

C语言的思想

如果你要懂得C语言,那必须要懂得程序设计的思想,想真正学会程序的设计必须与数据结构打交道。如果初学者从Java或者VB入手,基本上很难理解如何构造数组、链表、树、图等结构,这些东西比较容易和封装、继承等概念冲突,反观C语言则可以清楚明白的表示。只有真正理解数据结构,才可以体验程序设计的思想和算法精髓。

C语言几乎无所不能

所有包含微处理器的设备都支持C语言,从微芯片到手机都可以通过C语言推动。C语言是一个比较少见的应用领域极为广泛的语言。所有的系统平台都支持C语言,所有的应用程序也都可以由C语言来开发。

不会过时的原因

1.C语言可以让你更好的了解计算机。

2.设备驱动程序和操作系统只能用C语言编写。

3.微控制器程序的编写。

4.相较于其他编程语言,在实现相同功能的前提下,C语言所需要的代码更少,运行效率更快。有时候,你程序所需要的速度,只有C语言可以完成。

5.几乎所有高级编程语言都是以C语言为基础,所以学习过C语言,在学习其他编程语言时会简单很多。

6.C语言的存在时间很长,使用团体非常广泛并且有大量的现成代码可以利用。这就使你能在过去程序的基础上,快速进行更新。

7.C语言是开源组织的语言。Linux就是用C语言编写的,Linux的功能有多强大,这个我不多赘述。

8.C语言是唯一一个阐述指针本质的语言,C#和Java跳过了指针,但是不可否认的是,指针却是让C语言更加强大。

评论0 赞同0
  •  加载中...
xiongzenghui

xiongzenghui

回答于2022-06-22 19:04

如果你是计算机专业的学生,几乎各大高校入门的第一种语言就是C语言。当然也会有以C++或者Java入门的。正经的说,没有一门语言可以被称为最好的编程语言,之所以会有这么一说,多半都来自程序员间的囧谈。IT行业,你适合的,对你来说就是最好的。

其次,C语言会不会过时,这个不会的。主要从两个方面聊聊:

第一:为什么更多的搞笑采用C语言作为入门语言?并不是说C语言简单(现在大部分程序员没有多少敢说精通C语言的),而是C语言可以更快的带你进入编程世界,了解编程的常规思维方法。C语言是一门面向过程语言,相对面向对象而言,很多逻辑可以看得更清晰,不至于对于初学者而言太过于抽象。从C语言学到的概念理论,也都可以很快的套用到其他编程语言。比如判断、循环、函数、数据结构等等。

第二:大家都知道C语言是一门底层语言,略高于汇编语言之上,低于Java/Python等高级语言。C语言的存在就是更方便的衔接硬件和软件。比如电脑开机,从按下电源按钮到屏幕显示开机Logo,这个阶段运行的绝大部分程序都是C语言(早些时候更多的是汇编)。换言之,C语言服务的行业更多的是制造业,制造业虽然说不如互联网那样让人眼花缭乱,但是也不可或缺。没有制造业,何谈互联网。

如果你想入门编程,还是先想好自己的方向。C语言多掌握一些,甚至你会觉得很多问题你都会有更深的理解。比如变量存储、对象生存期等等。

评论0 赞同0
  •  加载中...
CastlePeaK

CastlePeaK

回答于2022-06-22 19:04

c语言永远不会过时,为什么呢?要从我们解决问题的思维方式和方法上来看。人类的思维方式和方法基本原理都一样,都是通过抽象,分类,然后按照一定的步骤去执行。实际这就是计算机里对程序的定义。而c语言基本覆盖了这些,并且简洁,优美。它是我们解决问题的基本语言,什么都可以做。

而大家看到的很多高级语言,实际上他们更注重的是应用,让开发人员能更快,更方便的去开发应用。大家知道,应用是在不断变化的,也是在不断的被淘汰,而基本原理是不会变的,学会c语言,可以做到以不变应万变。

评论0 赞同0
  •  加载中...
light

light

回答于2022-06-22 19:04

第一、在没有界定范围的时候,没有人能够说什么是最好。每一种语言出现都有它出现的应用场景,在那个时代,那个场景下,那个语言才能说最好。如果你需要一个效率极高的语言,那肯定就是C语言或者汇编。如果你要搞嵌入式开发,那肯定也是C语言,java和C#没法在嵌入式系统上运行,所以他们在这方面不存在好不好。

第二、在现在看来,C语言是永远不会过时的语言。起码在冯诺依曼机的时代是这样的,我们也没有迹象能看出冯诺依曼机要被淘汰。

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<