谁叫你不幸生在中国了?——何祚庥(中国科学院院士)

谁告诉你你不幸出生在中国?

——何祚庥(中国科学院院士)

这是一本面向非计算机大学生的C语言书籍。“我不是学计算机的,为什么要学C语言?” 这个问题每年在中国被问上百万次。被问到的人可能是老师,也可能是兄弟姐妹。弟兄姊妹常常假装清楚,重复老师依稀记得的东西。这些词大多是有远见的,比如“将来可能会用到”、“锻炼编程思维就好”、“C语言是学习编程的基础”等等。这些话没有错。所谓“技能不压身”。多学一点肯定比不学好。但问题是,如果把学习C语言的精力用来学习其他与专业更相关的东西,会不会更好?既然如此,为什么还要学C语言呢?

最现实的回答来自何祚庥院士:“谁告诉你,你不幸出生在中国?”

除了获得大学的“毕业证书”和“学位证书”外,还必须通过“4级”和“2级”。否则,可能会被扣留两证,或者求职受阻,难以“安家”。这里的二级指的是“全国计算机等级考试二级”,是“评估计算机基本知识和使用高级计算机语言编写程序和在计算机上调试的基本技能”的“程序员”考试。虽然社会只需要少数人会编程,但令人费解的是,几乎所有大学生都想(或被要求)通过二级,导致编程课程成为必修课。

2级考试的可选语言包括C、C++、Java、Delphi、Visual Basic、Visual FoxPro和Access。为什么要学习最古老的C?这里的原因复杂多样,每个学派都有自己的解释,我就不一一列举了。总之c语言程序设计上机指导与习题选解答案,中国一定是世界上“懂”C语言人口最多的国家,二级考试是主要功臣。

反正这门课既然已经开课了,不学就不行了,精力也已经赶上来了,那我们就认真的看一下C语言吧。虽然有点无奈,但好在C语言确实是个有趣的家伙,知道的越多越有趣。如果您不相信我,请继续阅读…

游戏、黑客和 C 语言

1969年的美国贝尔实验室是当时科技界的梦想工厂,汇集了世界上最具创造力的科学家和工程师,其中包括几位诺贝尔奖获得者,他们共同创造了影响全人类的无数发明。例如,数码相机的核心 CCD 于当年诞生于贝尔实验室。

这些家伙的成就看似高不可攀,但他们也是凡人,在某些方面与我们非常相似。例如,当他们看到一台功能强大的计算机时,首先想到的就是用它来玩游戏。那个时候,电脑是大机构才有的奢侈品,在上面玩游戏很浪费。不过谁在乎呢,追求快乐才是最重要的,所以他们就开动脑筋开心的玩游戏。

那个时候还没有商业游戏,所以要想玩游戏,首先要发挥DIY精神,自己动手制作。自己编的游戏被别人点赞,是当时最尴尬的事情。有一位名叫肯汤普森(以下简称肯)的工程师,26岁,闲置。看到阿波罗11号载人登月的成功,他觉得很酷,想亲自尝试一下,于是设计了一个名为“太空旅行”的项目。游戏。在游戏中,玩家驾驶宇宙飞船,穿梭在虚拟太阳系中,在欣赏美景的同时,还可以降落在各种行星和卫星的表面。该游戏最初是在 Mutlics 系统上编写的c语言程序设计上机指导与习题选解答案,后来在 GECOS 系统上重写。可以同时运行这两种系统的机器都是体积庞大的大型机,具有强大的计算能力,但显示效果不佳,机器时间成本非常高,这使公司花费了 75 美元(当时美国人的平均月收入约为 200 美元)。)。这要是被老大发现了,可不是开玩笑的。于是他和他 28 岁的同事 Dennis M. Ritchie(以下简称 dmr)在大楼里搜寻免费的“游戏机”。努力得到了回报,他们真的找到了一个。

由 DEC 制造的 PDP-7 小型计算机具有当时最先进的图形功能。当时的电脑主要是用来处理数据的,图形能力也不是太重要,所以 PDP-7 大多是静静地躺着,很少使用,直到 ken 和 dmr 的铁杆玩家发现它。.

比赛开始。但是,游戏的运行需要操作系统的支持。PDP-7 仍然是“裸机”,没有可在其上运行的操作系统。伟大的 DIY 精神再次发挥作用,两人挽起袖子开始为 PDP-7 编写操作系统,他们称之为 Unix。直到今天,Unix仍然是最值得信赖的操作系统。它不仅支持军队、政府、电力、电信、银行等大型机构的关键业务,还支持苹果Mac系列电脑的电源,甚至是iPhone和iPod Touch的魅力所在。也部分感谢他。

Unix 最初是用汇编语言编写的,这种语言比人更接近机器。计算机能直接理解的语言称为机器语言。它的所有句子都是由“0”和“1”两个数字组成的,根本不给人看。当最后一位机器语言程序员发疯的时候,人们终于开始想办法让计算机理解人类语言。其基本思想是制作一个直接将人类语言翻译成机器语言的翻译程序。这个翻译程序被命名为“编译器”。但是,直接理解人类语言太难了,一直到现在都做不到,所以我们做出了妥协,设计了一种尽可能接近人类语言,并且可以准确翻译成机器语言的语言。这种语言就是我们常说的编程语言。学习编程的过程实际上是学习用编程语言与编译器对话的过程。第一种必须最接近机器而远离人类的编程语言是汇编语言。虽然看起来有点像人类语言,比如加法叫“ADD”,减法叫“SUB”,但它的语法完全是机器语言,每行语句严格对应一条机器指令。编写的汇编程序不能在另一台计算机上使用,因为两台计算机的机器语言不同。在技​​术方面,

Unix 的优雅加上 Space Travel 的吸引力,让许多人想在他们的电脑上安装 Unix 并玩 Space Travel。因此 ken 和 dmr 决定改用高级语言编写 Unix,以便它可以在更多种类的机器上运行。

高级语言是几乎所有编程语言的总称,除了机器语言和汇编语言。它的特点是更接近人类语言,与机器语言关系不大。不同的高级语言编译器可以将相同的代码翻译成适用于不同机器的指令,因此大多数高级语言都具有良好的可移植性。

故事到此,本书的主角——C语言出现了。在决定使用高级语言后,ken 和 dmr 在语言的选择上遇到了麻烦。当时有很多高级语言可供选择,包括 BASIC 和 Fortran,它们至今仍在使用,但没有一个被认真对待。DIY基因再次发挥作用,两人决定自己设计一门漂亮的高级语言来重写Unix。那一年是 1972 年,Ken 继续改进 Unix,dmr 开始在 Ken 早年设计的 B 语言的基础上设计一种新的语言,两人一起开发了编译器。新语言被随便命名为——C。

1983年,由于Unix和C语言的巨大成功,ken和dmr共同获得了计算机界的最高奖项——图灵奖。玩游戏到这种程度,古今都只有这两个人。

Unix和C,如果你得到其中之一,你将有足够的钱与国家抗衡。然而,他们从一开始就没有考虑申请专利、商标、软件著作权等法律保护,而是将包括源代码在内的所有东西都分发到了他们想去的地方。对他们来说,自己写的程序被别人使用,是最大的幸福,也是最大的财富。正因为如此,许多机构和个人可以自由地为Unix和C做贡献,极大地促进了它们的发展。

从上面的故事中,我们可以发现他们的很多可爱之处:做事只凭兴趣,不关心未来;很有研究精神,信奉“自己动手,温饱”;乐于分享,不计回报。它们的这些特点,是地道的“黑客精神”的集中体现。他们也被视为黑客圈的英雄,甚至是山的鼻祖。每个人都将它们视为 ken 和 dmr(必须是小写)。几十年过去了,黑客圈里已经没有第二个人敢叫他“ken”了,这个英文圈子里的通用名。

Unix和C仍然是年轻黑客在被圈子接受之前必须努力练习的三项技能中的一和二(第三是任何脚本语言)。由黑客设计,被黑客推崇,C语言本身也处处闪耀着黑客精神的光芒。这种光彩使它永远保持年轻。

图片[1]-谁叫你不幸生在中国了?——何祚庥(中国科学院院士)-老王博客

C语言,不朽的传奇

最流行的歌曲一定是最常听到的,最流行的语言一定是最常用的。现在C语言用的多吗?在业界,一般的答案是:如果某事可以在 X 中完成,则一定不能在 C 中完成。

这里的 X 可以指任何语言。天哪,这似乎是在说“如果你能听X的歌,就一定不能听周杰伦的歌”。你是评价周杰伦还是曾一可?

哪种编程语言最受欢迎?每个人都有自己的主观意见。让我们谈谈客观数据。

TIOBE 2016年8月发布的编程语言流行趋势图(最新统计请访问以上网站)。可以看出,C语言一直位居前两名,最近又重新夺回了第一名。

有点令人费解的是,它仍然如此受欢迎。dmr 曾经说过:“C 很奇怪,有缺陷,而且取得了巨大的成功。” 因为怪异有缺陷,所以会尽量避免,代之以能弥补这些缺陷的语言;因为它确实取得了巨大的成功。,所以它今天仍然很受欢迎。一个成功的例子是,今天在图xx列出的10种最流行的语言中,不包括C语言,剩下的9种语言中有7种是直接使用、间接引用或部分借用C语言语法(例如,它们必须有语句末尾的“;”),只有Visual Basic和Python语法找不到C的影子。在这样一个世界第一的影响下,流行也是情理之中,尽管它与爱情交织在一起和恨。

C语言的爱与恨

C 语言设计的第一条原则是:“信任程序员”。对编程语言不太了解的人不会觉得这句话很好。但是对于真正的程序员来说,这句话足以让C语言爱一辈子,爱到死。

在 C 语言盛行的时候,计算机相当昂贵,但速度不如现在的手机,而且内存是以 KB 计算的。因此,当时程序最基本的要求就是效率。C语言充分满足了人们对效率的要求。设计良好的代码可以大大节省计算机资源,而且没有汇编语言那么难用,所以受到程序员的欢迎。后来硬件越来越便宜,性能越来越高。程序的运行效率不再是追求的主要目标。安全性、稳定性和易维护性变得更加重要,C语言的弊端也出现了。

C语言给了程序员最大的发挥空间,让他们在代码中自由地表达自己的热情和创造力,从不质疑代码是否会造成伤害,因为它“信任程序员”,相信程序员的决定一定是正确的是的,即使有错误,也绝对可以自己改正。不受限制的自由在某些人的手中可能是创造力的来源,而在另一些人的手中则是混乱的来源。随着软件系统规模的扩大,需要的程序员越来越多,综合水平越来越低,出错的概率越来越大,每一个低级的错误都可能造成灾难。许多人责怪C造成了这种混乱,并开始怀疑它,甚至讨厌它,但永远不要反思他们糟糕的编码技能。所以有人说,管住这匹野马,别让它再乱跑了。但是C拒绝了锁链,这么多语言披上了C的外衣,自己挂上锁链,站了起来。因为长得像C,所以容易接受;因为他们被锁住了,他们不再信任程序员,而是告诉程序员如何做这件事,如何不做那件事。如果程序员不听他们的话,他们就会拒绝工作。这样就消除了混乱,加快了开发速度,更容易多人合作,减少了错误,减少了对程序员能力的需求,因此工资也降低了,老板是幸福,行业繁荣。平心而论,“一件事可以用 X 语言完成,而这些创造力很少会产生负面影响,它们共同使老板、程序员和用户感到高兴。但是程序员,尤其是受人尊敬的程序员,生来就带着躁动的血液,向往自由的黑客生活,所以他们会爱抚自己身上的伤口,怀念那个鲁莽却无所不能的老将军,怀念他麾下无拘无束的日子,以及他激发的潜力层。这位老将军是程序员心中永恒的战神。而这些创造力很少会产生负面影响,它们共同使老板、程序员和用户感到高兴。但是程序员,尤其是受人尊敬的程序员,生来就带着躁动的血液,向往自由的黑客生活,所以他们会爱抚自己身上的伤口,怀念那个鲁莽却无所不能的老将军,怀念他麾下无拘无束的日子,以及他激发的潜力层。这位老将军是程序员心中永恒的战神。以及他激发的潜力层。这位老将军是程序员心中永恒的战神。以及他激发的潜力层。这位老将军是程序员心中永恒的战神。

C教会了我们什么

现在,使用C语言的需求大概仅限于以下三个方面:

C 仍然是编写操作系统的首选语言。为操作系统而生,可以更直接地处理计算机底层,精致、灵活、高效。最重要的是,操作系统的开发者都是有足够能力和经验掌握C语言的顶尖程序员。

在对程序运行效率要求较高的地方,如嵌入式领域,C语言也是首选。但是,目前嵌入式系统的硬件性能已经足够强大,功能要求也越来越高,C语言的生存空间越来越小。

在需要继承或维护现有 C 代码的地方也需要 C 语言。有很多影响深远的软件和库最初是用 C 开发的,所以 C 将继续被使用。但是,其中许多已经开始用其他语言重写,而 C 代码迟早会被抛弃。

应用范围这么窄,学习它有多大用处?

从“不会用”的角度得出“学C语言没用”的结论是不公平的。即使对计算机及相关专业来说,C语言的“用处”也不大。学习C语言的意义在于它为我们打开了一扇了解计算机的窗口。今天,几乎所有事情都可以在没有电脑的情况下完成,你对电脑了解得越多,你就能更好地使用它。

2006年,卡内基梅隆大学计算机系原系主任周以真教授发表了著名文章——《计算思维》。文章称,“计算机科学教授应该为非专业的新生教授一门名为‘如何像计算机科学家一样思考’的课程,而不仅仅是计算机科学专业的学生”,因为“机器学习”的统计数据已经发生了变化。… 计算生物学正在改变生物学家的思维方式。同样,计算的博弈论正在改变经济学家的思维方式,纳米计算正在改变化学家的思维方式,量子计算正在改变经济学家的思维方式 物理学家的思维方式”,所以“计算思维代表了一种普遍的理解和一种普遍技能,每个人,不仅仅是计算机科学家,

不幸的是,我们仍然很少有学校提供此类课程。所以编程课在某种程度上肩负着传播计算思维的责任。这对于不需要使用C语言的同学来说也是最大的意义。

总之,不管你要不要学C,不管它是否适合你,既然这门课已经开课了,并且有好老师带领,那就趁这个机会,不要浪费你的时间。也许一个学期后,你会发现自己在编程方面的天赋,努力工作,最终成为一名受人尊敬的程序员。

无关

要想在程序员的职业生涯中取得更高的成就,最重要的是尽可能提高自己的编程能力,与其想着怎么提高,不如现在就动动脑筋。如果你对C/C++有兴趣,或者想提高你的C/C++编程能力,可以关注+私信编辑【C/C++编程】里面有一些视频,希望对你有帮助。学习不怕从头开始,而是怕从不开始。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论