2

为什么50年前发明的C语言今天还那么多人学?

 2 years ago
source link: http://www.androidchina.net/12580.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

为什么50年前发明的C语言今天还那么多人学? – Android开发中文站

最新消息:欢迎访问Android开发中文站!商务联系微信:loading_in
你的位置:Android开发中文站 > 热点资讯 > 为什么50年前发明的C语言今天还那么多人学?

在权威的编程语言排行榜TIBOE中,关于C语言有一个有趣的数据,就是自2001年统计以来,C语言的排行最低的时候是排到了第2。

TIBOE中C语言的排行数据

TIBOE中C语言的排行数据

是的,相信小异,你没有看错,C语言热度最低的时候都是排在第2位。在这个每过一阵子就有一个新语言被创造出来的时代,生于50年前的C语言仍然处于编程语言中的统治地位。

为什么2022年C还如此活跃

因为C语言是基础。

这个基础表现在两个方面,一方面C语言是大多数操作系统内核使用的编程语言,它是最接近硬件的编程语言。也就是说其他应用程序在一定程度上都需要依赖C语言构建的内容,不管是服务器还是一般用户使用的操作系统,大多离不开C语言,比如Unix、Linux、Windows等。

正是因为C语言与硬件沟通效果更好,在需要程序高速运行的单片机、嵌入式开发、通信等领域都需要C语言的支持。有着这种优势,C语言的应用广泛是其他语言无法替代的。

在PDP-11模拟器上运行的Unix System III

在PDP-11模拟器上运行的Unix System III

另一方面,C语言是其他编程语言的基础,很多编程语言和编译器是在C语言的基础上发展而来。这样的话,在有C的基础上去学习其他编程语言时,就可以获得事半功倍的效果——因为它们的语法大多是从C语言的基础上拓展的。

50年前专为基础系统而生的C语言

贝尔实验室作为20世纪最伟大的实验室之一,有着“诺奖摇篮”之称,被人们认为是改变人类命运的地方,里面诞生过 9 项诺贝尔奖、5 项图灵奖。

从贝尔实验室走出来的发明今时今日仍然影响着我们的生活:数据型网络、晶体管、移动电话技术、太阳能电池、激光、语音信号数字传输、无线电天文学、UNIX 操作系统,还有今天我们的主角——C语言。

1983年获得图灵奖的肯·汤普逊丹尼斯·里奇就曾在贝尔实验室共事颇久,创造出许多在计算机科学中发挥着无可替代作用的东西。

1969年,肯·汤普逊为了在 Multics 系统被贝尔实验室放弃后能够继续玩自己的“Space Travel”游戏,他找到了一台老式的 PDP-7 机器,重写了这个游戏。移植好游戏之后,肯·汤普逊着手把自己的一些工具扩充成为一个完善的操作系统。

他和丹尼斯·里奇带着团队实现了文件系统、进程、设备文件、命令解释器和一些小的工具程序,并在布莱恩·柯林汉的建议下将这个系统命名为“UNIX”。

在基础开发完成之后肯·汤普逊创造了B语言,应用于系统级的编程活动。但因为该语言过于简单、移植性差的原因,丹尼斯·里奇在这个基础上于1972年开发出了更高效、简洁、易于移植的C语言——伟大的C语言就此诞生。

1973年,UNIX 使用C语言重写。之后这两个伟大的发明便相辅相成,在计算机世界大放异彩。

UNIX 系统因为用C语言重写变得效率,更容易移植,很快便流行起来。C语言因为重写了 UNIX 而发展,它也成了系统程序设计的完美选择

而50年过去,C语言依然表现优异。

50年间不断自我更新的C语言

当然,C语言作为一个已步入“知天命”阶段的编程语言,一直更新的语言标准才是它具有如此强大生命力的重要原因。

C 语言的标准从最初的 K&R C,到ANSI C 和 ISO C,再到美国国家标准协会(ANSI)发布的 C89 和C90,9年之后又发布了 C99,到现在较为普遍支持的 C11,经过了数次发展。

在2018年,C语言新的标准 C17(也叫C18)发布,被用来替代 C11。新标准没有增加新特性,只是对 C11 进行补充和修正。

持续发展,并且是“有用”的,那么C语言便会一直走在时代前头,不会落伍。

作为大多数操作系统和编程语言基础的C语言,经过不断地优化迭代,适应更先进的硬件与技术,保持和发挥着自己占用少、执行快、可移植性强的特点,在当下编程语言百花齐放的时代占据着无可撼动的统治地位。

这样老牌、强大的编程语言会不会学起来很难?

在某些方面,C语言的确可以说得上“难”。

因为C语言是基础,它会涉及到很多的计算机底层知识和基本概念,这在初学者看来就多少有那么些“无聊”,感觉到“难学”。这种“难”并非是因为C语言太复杂、涉及概念方法太高级而带来的,相反是来源于它的过于基础与“低级”——不积跬步,无以至千里,想要真正成为一个程序员把编程当成一份职业,扎实的基础永远是最重要的。

另一方面的“难”,很大原因是因为没有选对一本好书。C语言出现这么多年,针对它的教程没有一千,也有八百本了,琳琅满目,良莠不齐。如果选择了一本不合适,甚至“错误”——没跟上C语言更新的书,那它不仅不能成为你C语言学习路上的助力,而且会成为一个巨大的阻碍。

今天小异就为大家带来C语言学习的正确打开方式,选择合适的C语言教学图书,将这个历经50年发展仍然强大无比的C语言轻松拿下!

02

学C语言,从选对书开始

入门书如何选?首先它不能太厚,动辄上千页可以垫显示器那种完全会直接把人吓跑。其次它内容不能过于表面,这会让新手整个人都处于一种云雾笼罩的状态,对于那些知识全都是似懂非懂,效果很差。

那么,作为C语言入门图书,小异推荐这本整体内容深入浅出、翔实而不累赘的《C Primer Plus 第6版 中文版》

《C Primer Plus 第6版 中文版》

百万C语言编程入门必选

百万C语言编程入门必选

作为畅销了30多年的经典C语言入门图书,《C Primer Plus 第6版 中文版》得到了一代又一代的C语言程序员的验证。随着C语言的不断更新,本书也不断再版,以适应新的需求。

国内无数读者选择了这本书之后,便立马抛弃了以前那些老旧落伍的教材,真正在本书的引导下无压力畅游C语言编程。作者使用风趣的语言与简洁的图示与代码把那些“高深莫测”的概念与方法娓娓道来,把它们剖析成一个个简单的内容模块让读者较为轻松地理解和掌握。

而且,作者不仅告诉读者什么是正确的,更告诉读者什么是错误的,把那些错误的操作展示出来,让读者全方位地去认识和理解C语言。为什么正确?为什么错误?错误会带来哪些问题?这些作者都会详细而清楚地讲解出来。

动手是编程最重要和最快的学习方式,本书中带有大量的示例代码,并且针对C11进行了更新,读者可以照着示例代码自己键入到编辑器中,得到真实确切的运行结果。在操作的过程中,真正去理解代码的作用与对应的知识内容。

更重要的是,本书还提供了配套的电子版和在线练习实验环境,轻松方便!此之外,本书的所有章节都附带了对应的习题,读者在学完一章内容之后,可以利用习题检验自己的学习进度,看自己对于这部分内容掌握程度如何。

现在,这本书还得到了重大升级!有了书课包的新形式!

全新升级!书课包一体化学习

全新升级!书课包一体化学习

使用书课包大家可以一边看书,一边听课程讲解,一边在老师的带领下进行代码实操。多角度地去理解和认识C语言,多个维度进行C语言学习。

《C Primer Plus 第6版 中文版》与本书专门的视频课程《C Primer Plus官方视频解读》有了全面的升级:书、课以一种有效的方式结合,搭配线上编程环境,提供了一个全方位立体的学习环境。

“书课一体”的新模式,不仅仅可以降低读者学习难度,更可以让读者对于书中的知识点有更深的理解,达到事半功倍的学习效果。

这种“书课包”的新形式,提供了更多学习资源,包括:

  • 《C Primer Plus 第6版 中文版》纸质书1本;
  • 思维导图和源码 1个;
  • e 读版电子书 1本;
  • 在线编程练习实验环境 1个;
  • 《C Primer Plus 》图书解读视频课 1个;
  • 电子版附录赠送。

并增加了更多的服务内容:

服务更多,价格更少!

服务更多,价格更少!

针对本书的习题,小异也带来了配套的习题解答!

《C Primer Plus 第6版 中文版习题解答》

配套习题解答,名师讲解

配套习题解答,名师讲解

作为《C Primer Plus 第6版 中文版》配套习题解答图书,本书所有章节与原书一致,每章开篇都用清晰的思维导图模式把本章涵盖的知识点展现给读者看,并且使用简洁的语言对理论内容进行了提炼。

之后,对于原书每章的练习题进行详细的剖析,然后给出具体的思路与最终的代码。

作为配套的习题解答,本书确保读者在彻底夯实理论基础的同时,可以打开和拓展读者的编程思维,提升编程能力。

读者对于原书的练习题,可以先自己进行思考,使用自己的思路进行解答,最后再与本书的答案进行对比:如果自己错了,通过本书的剖析部分发现自己的错误是如何产生,并且找到解决的方法;如果自己的解题方法与本书不一致,也可以对比各解法的优劣,通过不同的解题方法拓展自己的编程思维。

编程入门,学与做同样重要,缺一不可

当你使用上面两本书真正入门C语言,并且可以熟练地编写C代码之后,就会面对到新的问题——过分依赖if语句,导致代码自己都看不懂;符号使用不规范,找bug半小时后才发现是一个分号用错了等等。

这时候,你就需要这本《C 陷阱与缺陷》的帮助了。

《C陷阱与缺陷》

避开C语言编程中间的所有障碍

避开C语言编程中间的所有障碍

当然,这本书不是在说C不好,或者说它缺点多,而是用以指导程序员避开在使用C语言进行编程开发过程中容易中的陷阱

本书作者安德鲁·凯尼格是世界级C编程大师,他是AT&T公司Shannon实验室大规模编程研究部门中的成员,同时也是C++标准委员会的项目编辑,编程经验超过30年。

在多年的使用C语言过程中,他自己和他人都在遇到过各种陷阱与障碍,针对那些问题,在贝尔实验室的时候他发表过一篇论文。后来,他以这篇论文为基础,结合自己的工作经验扩展了那些问题与解决方法,写成了这本指导C语言程序员避开陷阱与障碍的珍贵指南,成为经典。

在这本书中,读者可以通过阅读和理解作者在词法陷阱、语法陷阱、语义陷阱、链接、库函数、预处理器、可一致性缺陷等方面的问题讲解,看它们是如何在实际编程工作中发生,又该如何解决的。

通过阅读本书,读者可以发现大部分C语言编程过程中可能会遇到的问题,并从书中得到有价值的解决方案。

解决这些问题的同时,很多人会遇到头疼的“指针”。

《C和指针》

在很多C程序员间流传这样一句话:不会用指针就不会 C 语言。指针是C语言中精髓!想要学好C语言,指针这关必须要过去。

小异推荐的这本《C和指针》,就是专门为解决指针问题的。

指针难?一本书解决!

指针难?一本书解决!

这本书的作者是肯尼斯·里科(Kenneth Reek),他是美国Rochester工业学院计算机系教授,有着20年的C编程教学经验。

作者在书中将各种指针用法都写出来了,甚至连一些堪称奇葩的指针用法也没有放过,以简洁准确的文字、配合贴切的图示来进行讲解,让广大读者对指针和数组有了更加深刻的认识,特别是多维数组指针的指针指向数组的指针指针的数组这些平日里让人头疼的知识点。

针对这些问题,作者提供了非常多的编程技巧与提示,帮助程序员把指针的强大功能融入到自己的程序中去,真正地掌握指针。同样的,针对每一个问题,章节后都有丰富的练习题,而练习题的答案就在附录之中。

小异相信,有这本书加持,大家在学习C语言过程中的所有指针问题会迎刃而解!逐渐成为一个真正的C语言程序员!

当然,每一个程序员都不甘平凡,都想有着更为精进的C编程技巧和方法,成为一个真正的C编程专家!这时候,就轮到这本《C专家编程》出场了。

《C专家编程》

▲ 趣话C编程!你也可以是专家

顾名思义,这本书就是为了让你从一个普通C语言程序员成为一个C语言编程专家的。

本书作者彼得·范德林登是一名技术专家和技术作家。他曾在Sun公司和苹果公司工作多年,并曾任摩托罗拉公司首席Android技术布道师、Immersion公司首席Android开发布道师,后在硅谷担任技术顾问。

这本书中充满了各种关于C语言的奇闻轶事,还有曾出现各种匪夷所思的bug,读者在读这本书的时候可以从那些趣事中了解C语言是如何产生并发展的,从一件件切实好玩的案例中真正认识和理解数组、指针到底该怎么用

作者使用幽默的语言和有趣的故事向读者展示了一个充满魅力的C语言世界,认识到学习C语言编程并不是那么枯燥和无聊。作者还从编译器的角度解释C语言的“奇葩设计”,并且把那些先驱和大师在这个过程的探索与抉择描绘得无比精彩生动,读起来非常有意思。

正是以这种非常规形式书写,这本书获得了无数读者的喜爱,在豆瓣上大家对它称赞有加,给予了9.2分的高度评价!

很多读者喜爱本书作者的风趣幽默

很多读者喜爱本书作者的风趣幽默

很多读者在读完之后都给出了诸如“作者太有趣了”、“技术八卦很有趣”、“八卦与技术结合,作者俏皮”之类的评价。他们在读这本书的时候同时获得了技术思想的提升和八卦之心的满足,读来毫不费劲、趣味十足。

当然,这本书不仅仅讲了C语言特性、声明、数组、指针、链接、运行时、内存的内容,还对如何学习C++进行了深入而专业的分析,给出了细致的建议。使用本书,不仅仅可以成为C语言编程专家,还能够开始学C++,一举两得!

03

说在后面的话

这五本书整体形成了一条完善的C语言学习路线,从各方面为C语言的学习提供了有效帮助。从简单到困难,从系统到具体问题,都给出了极佳的解决方案。

选择C语言,选择这些书。

参考来源:

[1]The C Programming Language.TIOBE Index – TIOBE.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK