2022年漫谈C语言及如何学习C语言 .pdf
《2022年漫谈C语言及如何学习C语言 .pdf》由会员分享,可在线阅读,更多相关《2022年漫谈C语言及如何学习C语言 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、漫谈 C语言及如何学习C语言文章分类 : C+ 编程云风最近写了一篇博客C 语言的前世今生。作为长期使用C 语言开发网络游戏服务器的程序员, 云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C 语言在业界使用的现状没有怎么描写,有些意犹未尽。在这里想比较系统的谈谈个人对C 语言学习方式方法的理解。分别按照书籍、实验环境搭建、网络资源来分别介绍,希望能写的比较完整全面一些,给想学习C 语言的朋友一个有价值的参考。为什么要学习C 语言?为什么要学习、使用C 语言?为什么要学习一个可能比自己都岁数大的编程语言?我在前面如何学习编程语言的博客文章http:/ 为什么而学 ” 这个目的是最重要的,
2、目的不明确就没法学好。这也是为什么很多学生朋友在大学里必修C 语言却觉得没学明白的原因。因为学习的目的不明确,学习当然也没有动力。还有一个原因是C 语言是工程实践性很强的语言,它不是来自某个研究所某个大学学院,而是实实在在从项目需要中产生,伴随着Unix 的兴起而流行,语义简明清晰, 功能强大而不臃肿,简洁而又不过分简单,实在是居家旅行工作学习必备之良友。C 语言相比 C+ 的优点之一就是最小惊讶原则,一是一二是二,不会在私底下产生一些莫名其妙的额外产物。用C+ 做个例子,比如这样一个函数原型void PassWithClassValue(COneClass clsParam1),稍微了解C+
3、 的朋友都会知道,如果你没有实现COneClass的拷贝构造函数,编译器会好心的帮你实现一个,而且在调用这个函数 PassWithClassValue的时候,偷偷地调用拷贝构造函数产生一个临时对象作为参数传递, 对于某些情况, 比如编写操作系统这类必须优化性能的情景下,这些自以为是的东西是非常邪恶的事情。C 语言本身只提供必要的语言特性,其它复杂一点功能如文件处理、数学计算等等都以库函数方式提供,甚至连malloc 、free这种 “ 必须有 ” 的功能,也是以标准库函数的方式提供,而不是作为C 语言核心出现。在伟大的著名的无所不包的K&R 开头部分就提到了,for 其实可以通过while来完
4、成,只不过for 可以写的更简洁,言外之意,对于C 语言 for其实不是必要的。跑题一点说,在其它程序语言中Lua 可以说继承了C 语言简洁的设计哲学, 甚至连 continue这种几乎必备的关键字都一直拒绝加入,在 Lua 的 maillist以及 wiki里都提到过continue这个问题,Lua 语言维护者认为continue对于 Lua 而言不是必要的,也不考虑在后续版本中添加这个关键字。这种简洁哲学也让C 语言的可移植性、便携性特别优秀,也使得很多嵌入式系统依然使用C 语言作为主要编程工作语言。Java 语言有一个口号:“ 一次编写,处处运行” ,就是跨平台这个噱头。实际上C 语言从
5、早期开始就几乎达到了“ 一次编写,处处编译” ,在 ANSI 在 1989年统一了C 语言标准以后(称之为C89 ),只要特定平台上的编译器完整实现了C89 标准,而且你的代码没有使用某些特殊的扩展(GCC 以及微软都有自己的编译器特定扩展),那么代码一定可以编名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 译通过, 再实现一下操作系统相关的函数库,C 语言的移植就是很简单的事情。可以用 Lua作为例子, Lua 本身是完全遵循
6、C89 标准,没有使用任何特定扩展,这也保证了有C 语言编译器的平台,都可以编译使用Lua 。可以编译运行C 语言的硬件平台可以从A 排到 Z,真是非常有意思的事情。C 语言也是一个比较少见的应用领域极为广泛的语言。比如编写操作系统这种高难问题,只有C+ 、汇编语言可以做到。C 语言可以编写服务器端软件如Apache 、Nginx ,或者编写GUI 程序, 如 GTK 。大多数程序语言的第一版是通过C 语言实现, 借助前面提到的“ 一次编写处处编译” ,最大的保证了这些程序语言的可移植性。在Web 开发领域, C 语言的应用相对较少,这也是一种取舍的结果,Web 开发需要使用PHP、Ruby
7、、Python这样的动态语言, 可以快速上线快速修改,可以最大程度满足用户时时变化的需求,这也是 C语言的弱项。如果把程序语言的应用领域从硬件到管理软件、Web 程序做一个很粗略从下到上的排列, C 语言适合领域是比较底层靠近硬件的部分,而新兴语言比较偏重于高层管理或者 Web 开发这种相对贴近最终用户的领域。比较流行的混合开发模式是使用C 语言编写底层高性能部分代码或后台服务器代码,而使用动态语言如Python做前端开发, 充分发挥它们各自的优势力量。提到 C 语言的缺点, 常常是它缺少这种或者那种特性,比如有人建议加入GC,有人建议加入并行或者并发支持,有人提到没有一个比较完整的类似C+
8、的异常策略。这些特性有的可以通过引入第三方库来实现,但 C 语言的设计哲学其实决定了它不会像C+ 那样 “ 非常强大 ” 。即使引入了某些人期望的特性,依然会是某些人喜欢某些人不喜欢的情形,现在的功能对于C 语言应用领域来说已经够用,其它特性可以通过特定程序语言实现,并且通过 C API 与 C 语言编写的程序进行交互。任何一个工匠都不可能只使用一个工具完成他的工作,不同工具结合起来才能更快更好的完成任务。提到 C API ,也稍微介绍一下,我们知道windows操作系统的api 也好, Linux的系统 api 也好,或者是想给Ruby 、Python编写扩展模块,C 语言形式的函数定义都是
9、唯一的选择。 C 语言就好像是一个中间层或者是胶水,如果想把不同编程语言实现的功能模块混合使用, C 语言是最佳的选择。提了这么多关于C 语言的好处,那么学习C 语言是否适合就看你自己的判断了,例如要进行一个嵌入式项目,或者需要进行服务器端开发,或者写一个性能相关的组件等等,C语言都是比较好用的选择。另外也可以在C+ 的使用过程中有意的使用C 语言的思考方式,汲取 C 语言简洁明快清晰地设计思路,对编程设计水平会有很大的提高。C 语言学习方法在前面 http:/ C 语言学习也可以按照类似的顺序:阅读参考书,阅读代码,编写调试实际程序,上网参与讨论,研究高级话题。学习语言的开始一般是阅读参考书
10、。我建议选择几本非常经典的好书,仔细完整反复阅读几遍, “ 书读百遍其义自现” 。选择 C 语言学习的好处是,这几本书基本上完整涵盖了C语言编程领域的方方面面,不会像C+ 那样,即使读完一堆书还是有些糊涂,依然有这样那样难懂的陷阱。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 1 ,参考书籍在豆瓣上列了一个书单,大家可以直接参考http:/ C Programming Languagehttp:/ 语言,只需要买这一本就够了。
11、如果你经费足够,建议你多买几本,办公室、家里都放上一本,随手都可以翻翻。用三个词语来形容它就是:经典!经典!经典!这本薄薄的只有二百多页的小书涵盖了C 语言的方方面面,前无古人而且后无来者,任何溢美之词都不足以形容它。The C Programming Language(后面称为K&R )里面包含了一个简单的语法解析器,包含了malloc如何实现,包含了一个完整的操作系统目录浏览程序,这些程序的实用性极高, 可以这样说, 如果学习任何一门语言能够自己独立动手实现以上的功能,基本上就可以算是入门了。K&R 书里面每段都蕴含着非常值得探究的软件开发工程实践经验,如果没有一定的开发经验,其实是看不出
12、来这些冰山下面的内容的,比如开头一章就提出用写完整代码这种方式来教学,而在书中那些C 语言的陷阱或者可能出问题的地方,都有提到,但是由于篇幅所限,写的非常简约,很难让人一下就看懂。我正在完整的逐字逐句的阅读此书,希望能稍作注解,写几篇博客分享一下。C 程序设计语言 (第 2 版 新版)http:/ K&R 的中文译本,可以先从中文译本看起,然后再读一遍英文原版,既可以学习英文,又可以体会原文那种简约优美的风格。C 陷阱与缺陷 http:/ 专家编程 http:/ 语言的朋友必备的两本书,比如C 专家编程,专门用两三个章节详细介绍C 语言中数组与指针的不同之处,这两本书在某种程度上算是对K&R略
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年漫谈C语言及如何学习C语言 2022 漫谈 语言 如何 学习
限制150内