1. 编程学习网 > 编程教程 > C语言教程 > C语言是不是过时了?

C语言是不是过时了?

 

 这是一个必须在课程开头和大家探讨的问题。很多人可能会看到网上宣传的语言大多数是以Java,Python,Javascript,php等等,其他语言居多。并且,C语言作为一款1972年创立的语言,到今天已经将近有半个世纪了。并且,计算机又是一个日新月异的学科。肯定会让大家有这样的想法。其实,在初学C语言的时候,我也会有这个疑问。我会觉得,与其花时间学一款已经没人用的冷门语言,为什么不去学习正当势头上的热门语言呢。

  首先,我们来看看C语言,它究竟是不是过时了?

从TIOBE指数看C语言

 

  为了确认C语言是不是真的过时了,已经没有人在使用它,讨论它了,我们看一下TIOBE编程语言指数。TIOBE编程语言指数是怎样工作的呢?引用官方的介绍:

  TIOBE指数是一个基于全球熟练的工程师,课程和第三方供应商的数量。诸如Google,Bing,Yahoo!,Wikipedia,Amazon,YouTube和Baidu等流行的搜索引擎用于计算评分。重要的是要注意,TIOBE索引与最佳编程语言或编写语言的代码行数无关。

  TIOBE虽然不能告诉我们什么是最佳语言。当然,也不会存在这么一种语言。也不能告诉我们世界上到底哪种语言的行数最多。这种事怎么统计的过来,虽然开放到网络上的代码还有办法统计,但是公司或组织的私有代码呢,这也是没法做到统计的。但是TIOBE能告诉我们,在当前的时间点上,哪种语言被广泛使用或讨论了。

下图是1985年到2020年的各语言的年度语言指数。 tiobe各语言年度指数   我们可以从图中看到C语言的年度指数从1985到2020年依然十分稳定,保持在第一或第二。从图中呢,我们也可以看出python是怎样从95年的21一直爬升到当前的当红语言的。Java是1995年问世的,到2000年时,已经爬升到第三了,毕竟赶上了互联网这一波热潮。C++在90年代可是王者,但是随着时间流逝,C++的领地已经被其他语言有所抢占了。从图表中此起披伏的数据中,我们可以看出。

   事实上,C语言并没有过时,但是在做一件事情上,有了更多选择。

  我们当然希望用更合适的选择来做一件合适的事情。例如,Java,php被广泛的应用于开发后端接口,Python被用于一些工具类脚本,爬虫,数据处理、可视化,人工智能的算法实现。JavaScript现在的使用范围也很广泛,包括浏览器脚本,移动app,后端接口,桌面端等等方向,都可以看到有一些选择了它。是的,它在猛烈地蚕食其他语言的领地。那是不是有一天能有一种语言一统天下呢?目前看来,还没有这种语言。例如,虽然JavaScript虽然可以开发桌面端应用,但是也有自己的适用范围,目前暂时用于一些小中型,非行业专业级应用。像PhotoShop,AutoACD这种对性能要求较高的行业应用,仍然是用C++开发的。

从学习的角度看C语言

 

  我们常常听到有人说,学习C语言有助于理解底层的知识。我的观点是,确实如此。C语言当时的开发目的就是希望有一款语言可以代替汇编来写操作系统代码(UNIX)。因此,C语言的抽象层次是比较低的,在使用这款语言的时候,你需要理解很多较为底层的知识,才能把这款语言用好。这确实也是一个挑战,目前有观点认为新手可以从一些抽象层较高的脚本语言开始入门,例如Python,后期再学C。但是也有反对者认为,学C有利于以后学其他语言,但是,学其他语言却对学C语言,除了逻辑、流程方面,其他的益处不是很大。我认为这是一个仁者见仁智者见智的问题了。各有各的说法,没有一个统一答案。可能得要各位读者自行以自己的学习状态来决定了。


TIPS:

  UNIX:Unix是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单机操作系统使用。Unix作为一种开发平台和台式操作系统获得了广泛使用,目前主要用于工程应用和科学计算等领域。


从职业生涯的角度看C语言

 

  在职业生涯中,我们不能只学一门语言,熟悉一种语言的运作方式。例如:Java,IOS开发中,可能会遇到用其他语言调用C或C++编译的动态链接库。这时候,了解一些C/C++相关的编译技术,会对这样的工作有所帮助。在其他场景中,你可以需要开发与硬件相关的代码,嵌入到微控制器中执行。由于微控制器的内存和只读存储非常小,往往经不起执行程序时,附带额外的工作量。例如:额外运行一个解释器来运行脚本语言(Python,JavaScript),或运行一个虚拟机来运行一些语言(Java,C#)。这样的需求,微控制器肯定是难以满足的。通常情况下,只能用C/C++来开发这种代码。因此,我们需要学习目前常用到的语言,以应对各种应用环境。


TIPS:

  微控制器:一种用于控制其他电路工作的集成电路,较经典的有8051。我们在街上看到的五彩缤纷的彩灯就是由微控制器来做彩灯的闪烁控制的。

  脚本语言:脚本语言是一种解释型语言,它需要一个解释器来分析代码的意图,并作出代码需要表达的动作。

  虚拟机:虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。例如:Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。


实战化的心态

 

  我希望你是抱着学完课程后可以自己写一些代码的心态来学习这一门课程的。所以,在课程中,会穿插一些实际开发生产环节中的一些工具的使用。所以,本课程并不是纯粹的C语言教程,它还包含了一些能把你所学的代码用出来的知识章节。并且,为了紧跟前沿节奏,我们将在这门课程里面使用较新的集成开发环境(IED)。并且,还会涉及到一些编译技术相关的知识。例如:怎样使用动态库和静态库。到后期,可能还会涉及到一些项目工程编排相关的知识。当然,熟悉这些知识后,对于通过计算机二级可能是绰绰有余了。读者可以根据自己目前的需求,对整个课程有的放矢地学习。

我什么时候可以写出图形化程序

 

  立刻,马上。   课程开始不久就会教你怎样写一个撞球小动画。

ball

  当然,这是借助于EasyX这一款图形库完成的。EasyX是一个以教育、学习为目的而诞生的项目。可以帮助大家很快地就写出图形化程序。

  课程之所以这样编排,是为了调动大家的学习积极性。我一直觉得带有兴趣地学习,才能快乐地坚持下去。

本文由IT教学网整理发布,转载请注明出处:http://www.itjx.com/jiaocheng/cyuyan/574.html

联系我们

在线咨询:点击这里给我发消息

咨询电话:400-998-2681

工作时间:7*24小时无休