2016年,C是GitHub上第9个最活跃的语言,全年有202k个pull请求。与前三种语言相比:JavaScript有1604k的pull请求,Java有763k的pull请求,Python有744个pull请求。Ruby、PHP、C++和CSS也击败了C.
乍一看,C似乎被更新、更新鲜、更令人兴奋的语言遗忘了——毕竟,C已经有45年的历史了——但GitHub并不是软件行业最准确的写照。GitHub对开源和潮流有着巨大的偏见。
C不是一种死语言。事实上,IEEE Spectrum杂志将其列为2017年排名第二的顶级语言,排在Java、C#和JavaScript之前。如果你今年要学C,那就不会浪费你的时间和精力。以下是五个原因。
你可能听说过C是一种“低级语言”,在编程的上下文中,“级别”是对你与计算机本机指令集的接近程度的描述。级别越低,就越接近于编写机器代码。级别越高,语言所做的抽象就越多,从而使您远离编写机器代码。
C语言是一种较低级的语言,具有一定的抽象性。您可以编写与硬件相当接近的代码并直接操作内存,而在Java这样的高级语言中,该语言本身通过垃圾收集器处理内存。
虽然这是C语言难以学习的部分原因,但这也是为什么C程序员更倾向于与计算机的工作方式保持一致的原因。为了写出好的C代码,你必须像计算机那样思考:内存管理、输入/输出流、字节顺序等。
确实存在比C低级别的语言(例如汇编语言),但C的级别和你想要的一样低。它保留了较低级别语言的大部分功能和控制,但它的抽象程度只够让人可读的代码,而不会让你大吃一惊。
有些程序员喜欢说“一旦你懂了一种编程语言,你就几乎了解了所有的编程语言。”尽管这是一种鼓舞人心的情绪,但这并不完全正确——除非你学会了C。
问题是,从一种语言到另一种语言的转换是最流畅的。从C这样的低级语言到Python这样的高级语言是相当容易的,因为Python更能握住你的手。但是从Python到C?没那么容易。
或者再举一个例子。C#是当今新手的流行第一语言,尤其是对于那些想进入游戏开发的人(因为心爱的Unity引擎使用C#)。但是,尽管C语言高度抽象且易于使用,新手还是经常会感到困惑,因为他们不理解抽象的内容。
通过学习C,你基本上是在学习现代编程的基础。如果你能真正理解C,你就能学会任何其他语言,因为几乎所有的现代语言都比C高级。
C语言的低水平是有代价的:复杂和乏味。
把它想象成做火腿三明治。在更高级的语言中,可以使用makeSandwich(“ham”)方法来生成即食三明治。在C语言中,您必须编写自己的makeSandwich()函数,该函数收集并准备所有必要的成分,组装三明治,然后将所有内容放回原处。
一方面,能够控制三明治的方方面面是很好的。您甚至可以编写一个更快的makeSandwich(),跳过您不关心的某些步骤。但有时你只想有人给你做三明治,而为你做的食物往往比你自己做的好吃。
大多数现代语言都是针对另一种语言的缺点而诞生的:C++响应C++,java响应C++,C响应java。等等,你可以更好地理解为什么某些语言是按照它们的方式设计的,并且更好地理解高级语言提供的便利性。
大多数现代编程语言都用于相同的三个方面:业务应用程序、web和移动应用程序以及数据分析。
更高级的语言对这些非常有用,因为不需要深入研究计算机体系结构的细节。相反,快速的开发周期和健壮的手握是王道——这是使用高级语言的两个主要好处。
但是如果你想开发与硬件直接接口的软件,你需要一种较低级别的语言——C是最常用的语言。值得注意的应用包括操作系统、编程语言和编译器、嵌入式系统、游戏引擎等。
例如,Linux内核是用C和汇编语言编写的。像Python、PHP、Perl和Ruby这样的流行语言都是用C实现的,你知道C也是用C编写的吗?由于许多嵌入式系统有严格的资源限制,C语言通常是首选语言,因为它的开销非常小。
有两种方法可以保证软件行业的工作:
高需求职位涉及可在多个领域使用的流行语言:JavaScript、Python和Java就是最好的例子。低供应位置往往涉及古老的语言,遗留系统,而不是作为浮华的项目。C很流行,但C程序员正在减少。
由于大多数代码训练营和在线培训课程都会将新手程序员推向高要求的语言,因此您可以通过学习C来脱颖而出。这会打开许多高级语言无法提供的工作机会。
C语言不容易学,特别是如果它是你的第一门编程语言的话。这就是为什么我们建议在开始之前阅读这三篇文章的原因:学习代码之前要问自己的问题,如何在没有压力的情况下学习编程,以及掌握一门新编程语言的技巧。
但是如果你对学习C很认真,一定要从C编程语言第二版(通常称为“K&R”)开始。它基本上是C编程圣经。它已经很旧了,但是它的所有内容现在仍然适用于C。一旦您看完了,您就可以阅读C89、C99和C11语言版本中发生的更改。
如果你买不起那本书,那就从C本书开始。它不再印刷,但仍然可以在网上以HTML的形式在其整个。
你怎么认为?C是过时的和无用的还是新的程序员在探索更现代的语言之前仍然应该学习它?在下面与我们分享你的想法!
...用程序时,有哪些选项可供选择?在任何特定的场景中,为什么要选择某些语言而不是其他语言?本文将提供一个问题清单,程序员应该问,以选择使用哪种语言。 ...
...说,计算机科学和计算机编程部分正在迎头赶上,这就是为什么它在这个名单上如此之低。目前你只能学习JavaScript,再加上算法和密码学的基础知识,但肯定值得关注。 ...
...是编程界的新手还是经验丰富的老手,熟能生巧。这就是为什么我们编制了一个编码应用程序列表来帮助你在任何地方编码,从而保持游戏的领先地位。 ...
...可以将JavaScript与Unity结合使用,但是知道它将要结束,您为什么要这样做呢? ...