`
乱蓬头199303
  • 浏览: 81734 次
文章分类
社区版块
存档分类
最新评论

没学过 C 语言的代价

阅读更多

摘要: C 语言确实显得有些老旧。最近一版权威性的 C 语言还是 1988年 发布的;在接近 30 年的时间里,这个语言的作者一直都没有对它进行过更新,可见它有多过时了(这里有误。2011 年 12 月 8 日,国际标准化组织(ISO)和国际电工委员会(IEC) 旗下的 C 语言标准委员会(ISO/IEC JTC1/SC22/WG14)正式发布了 C11 标准。

C 语言确实显得有些老旧。最近一版权威性的 C 语言还是 1988年 发布的;在接近 30 年的时间里,这个语言的作者一直都没有对它进行过更新,可见它有多过时了(这里有误。2011 年 12 月 8 日,国际标准化组织(ISO)和国际电工委员会(IEC) 旗下的 C 语言标准委员会(ISO/IEC JTC1/SC22/WG14)正式发布了 C11 标准。C11 标准是 C 语言标准的第三版,前一个标准版本是 C99 标准。)现在,一说到必须有所了解的编程语言,大家都会想到 Rust、Go 或是 Clojure,却很少有人会想到 C 语言。

但是我的同事 Myles 和我都不是追求潮流的人,因此我们坚持让所有学生都熟练掌握 C 语言。

之所以要求学生学习这门古老的编程语言,我们有下面 4 个理由:

在湾区的 web 和移动初创企业之外的地方,C 语言依然是一个被广泛应用的编程语言;

许多现代编程语言都受到了 C 语言的影响;

C 语言能让你像计算机一样思考;

在编写软件的时候,你现在所使用的大部分工具,都是使用 C(或C++)语言所开发的。

对于第一条理由,如果你就是想在湾区的 web 或是移动初创企业找一份工作的话,你可以忽略它。但是第二条原因是你无法回避的。而大多数工程师,都应该重视第三条理由,要想做好计算机工作,你就必须要理解计算机的思考方式。对于第四条理由,它也是非常难以忽略的。

掌握 C 语言,意味着你可以更好的理解你所使用的各种工具。例如,对于 web 开发者来说,他们必须要透彻的理解浏览器、操作系统以及所使用的各种语言,而这一切都是以 C 语言为基础的。

我们的大多数学生,在使用直译式语言的时候,都会同时使用那些用 C 语言所编写的流行的实施工具。我们经常做这样一个联系:让学生们编写一个 Python 字节码解释器,从而让他们更好的理解堆栈式机器和直译式语言;在进行这个练习的时候,学生需要仔细阅读 CPython 的部署。另外,Ruby 的实施参考也是用 C 语言编写的,还有大部分 JavaScript 部署,他们是用 C++ 编写的。

在学习 hashmaps 和动态数组的时候,我们有两种方式:第一,自己进行部署,使用一种能让我们具体对内存布局进行思考的语言;第二,阅读相关优秀的部署实例。学生要想理解 Python 列表或是 Ruby 数组的工作方式,我们同样有两种方式:第一,让他们从头自己编写一个版本;第二,阅读标准库部署的资源——在没有接触过 C 语言的情况下,要想彻底理解这些概念,基本上是不可能的事情。

如果不掌握 C 语言,要想了解操作系统也会变得更加困难。我们现在所使用的大部分操作系统,都是用 C 语言编写的,C 语言的标准库与 syscall 接口紧密相连,而且大部分与操作系统相关的概念都需要你先熟悉 C 语言。

在计算机网络方面,虽然对 C 语言不熟练并不会影响你的日常工作,但是那些要想了解操作系统 TCP/IP 堆栈的从业者,会逐渐意识到 C 语言的重要性。

最后再来说说数据库,关键值存储,消息队列和其他分布式操作系统技术,要想获得较高的性能,它们都需要你对 C 语言有所了解。

很多软件工程师可能对 C 语言并不了解,在某一个狭小领域内的日常工作,或许并不需要你掌握基础知识。但是我们要求学生必须要打好基础,而 C 语言就是计算机科学工作的先决条件。如果你也有着较高的目标,那么我建议你暂时搁置那些潮流语言,花几个周末的时间去学学看上去有些过时的 C 语言。

​​​​​​​

原文链接

分享到:
评论

相关推荐

    【C++课堂课件】程序语言原理第二部分.pptx

    "C++课堂课件-程序语言原理第二部分" 本课件主要讲述程序设计语言原理的第二部分,...C语言的前辈语言包括CPL、BCPL、B和ALGOL 68。C语言的设计得益于ALGOL 60和ALGOL 68语言,并且它十分适合于广阔范围内的各种应用。

    C++语言程序 最小代价生成树(kruskal算法)

    ### C++语言程序最小代价生成树(Kruskal算法) #### 概述 最小代价生成树,也称为最小生成树(Minimum Spanning Tree, MST),是图论中的一个经典问题。给定一个加权无向图,寻找一棵包含所有顶点的子图,使得这...

    C语言程序员之路

    ### C语言程序员之路——高效学习...通过以上步骤,你可以以相对较小的代价高效地学习并精通C语言。记住,学习任何编程语言都需要时间和努力,没有捷径可走。坚持不懈地练习和探索,你将能够在C语言的世界里走得更远。

    20春东北师大《英语语言学》在线作业1-0002【标准答案】.docx

    在英语语言学中,我们探讨了诸多核心概念和理论。以下是一些关键知识点的详细解释: 1. **混合语(Pidgin vs Creole)**:混合语是一种混合不同语言元素的语言,起初通常作为不同群体之间的交际工具。A选项的...

    《现代语言学》自考真题试题与答案解析.docx

    现代语言学是一门深入研究人类语言结构、发展和使用的学科,涵盖了语言的多个层面,如语音、形态、句法、语义以及语言习得等方面。本篇内容是针对《现代语言学》自学考试的真题试题及答案解析,旨在帮助考生理解和...

    windows环境下32位汇编语言程序设计

    只不过使用的方式不再是中断方式而已,这不是Win32汇编语言“高级化”了,而是高级语言因为使用Windows的API接口而“低级化”了,其代价就是无法移植到其他系统,用Visual C++写的程序是无法移植到其他操作系统平台...

    21春北语《社会语言学》作业4题目及答案.docx

    《社会语言学》是一门研究语言与社会关系的学科,涉及到语言使用、语言政策、语言规划等多个方面。以下是对题目及答案中涉及的一些关键知识点的详细说明: 1. **语言兼用**:语言兼用是指一个民族在使用母语的同时...

    如果是初学C语言请看完 一些成功人士的心得

    这一点是高级语言如Java或.NET所不能比拟的,因为它们通常会有一层抽象,以牺牲性能为代价提供更简单的编程模型。 ### C语言的学习路径 文中提到了学习C语言的正确方法是从C语言入手,努力学好C语言。这是因为...

    20春东北师大《英语语言学》在线作业2-0003【标准答案】.docx

    ”的问题属于心理语言学(psycholinguistics)的范畴,所以正确答案是C、psycholinguistics。 3. 最小对立体(minimal pairs):最小对立体是指两个单词只有一个小的区别,导致意义不同。选项B中的"foot/food"就是这样...

    学习C++的五十条规则.doc

    C++是一门强大的编程语言,它既继承了C语言的底层控制能力,又引入了面向对象的编程思想,因此学习C++需要对这两种特性都有深入的理解。以下是对【标题】"学习C++的五十条规则"的详细解读: 1. 将C++视为一门独立的...

    Python3基础教程(网页)

    你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等。 那Python是一种什么语言? 首先,我们普及一下编程语言的基础知识...

    廖雪峰 python3 pdf教程

    你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等。 那Python是一种什么语言? 首先,我们普及一下编程语言的基础知识...

    廖雪峰Python教程

    你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的 Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等。 那Python是一种什么语言? 首先,我们普及一下编程语言的基础知识...

    python开发

    你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等。 那Python是一种什么语言? 首先,我们普及一下编程语言的基础知识...

    Python3教程-廖雪峰

    你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等。 那Python是一种什么语言? 首先,我们普及一下编程语言的基础知识...

    c语言寻找最短路径算法

    C语言作为基础的编程语言,被广泛用于实现各种算法,包括解决最短路径问题。本篇文章将详细探讨如何使用C语言来寻找图中各节点之间的最短路径。 首先,我们需要了解最短路径算法的基本概念。在图论中,一个图由节点...

    Python3-廖雪峰[带标签完整版]-www.yeayee.com

    你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等。 那Python是一种什么语言? 首先,我们普及一下编程语言的基础知识...

Global site tag (gtag.js) - Google Analytics