欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年漫谈C语言及如何学习C语言 .pdf

    • 资源ID:33388443       资源大小:825.39KB        全文页数:8页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年漫谈C语言及如何学习C语言 .pdf

    漫谈 C语言及如何学习C语言文章分类 : C+ 编程云风最近写了一篇博客C 语言的前世今生。作为长期使用C 语言开发网络游戏服务器的程序员, 云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C 语言在业界使用的现状没有怎么描写,有些意犹未尽。在这里想比较系统的谈谈个人对C 语言学习方式方法的理解。分别按照书籍、实验环境搭建、网络资源来分别介绍,希望能写的比较完整全面一些,给想学习C 语言的朋友一个有价值的参考。为什么要学习C 语言?为什么要学习、使用C 语言?为什么要学习一个可能比自己都岁数大的编程语言?我在前面如何学习编程语言的博客文章http:/ 为什么而学 ” 这个目的是最重要的,目的不明确就没法学好。这也是为什么很多学生朋友在大学里必修C 语言却觉得没学明白的原因。因为学习的目的不明确,学习当然也没有动力。还有一个原因是C 语言是工程实践性很强的语言,它不是来自某个研究所某个大学学院,而是实实在在从项目需要中产生,伴随着Unix 的兴起而流行,语义简明清晰, 功能强大而不臃肿,简洁而又不过分简单,实在是居家旅行工作学习必备之良友。C 语言相比 C+ 的优点之一就是最小惊讶原则,一是一二是二,不会在私底下产生一些莫名其妙的额外产物。用C+ 做个例子,比如这样一个函数原型void PassWithClassValue(COneClass clsParam1),稍微了解C+ 的朋友都会知道,如果你没有实现COneClass的拷贝构造函数,编译器会好心的帮你实现一个,而且在调用这个函数 PassWithClassValue的时候,偷偷地调用拷贝构造函数产生一个临时对象作为参数传递, 对于某些情况, 比如编写操作系统这类必须优化性能的情景下,这些自以为是的东西是非常邪恶的事情。C 语言本身只提供必要的语言特性,其它复杂一点功能如文件处理、数学计算等等都以库函数方式提供,甚至连malloc 、free这种 “ 必须有 ” 的功能,也是以标准库函数的方式提供,而不是作为C 语言核心出现。在伟大的著名的无所不包的K&R 开头部分就提到了,for 其实可以通过while来完成,只不过for 可以写的更简洁,言外之意,对于C 语言 for其实不是必要的。跑题一点说,在其它程序语言中Lua 可以说继承了C 语言简洁的设计哲学, 甚至连 continue这种几乎必备的关键字都一直拒绝加入,在 Lua 的 maillist以及 wiki里都提到过continue这个问题,Lua 语言维护者认为continue对于 Lua 而言不是必要的,也不考虑在后续版本中添加这个关键字。这种简洁哲学也让C 语言的可移植性、便携性特别优秀,也使得很多嵌入式系统依然使用C 语言作为主要编程工作语言。Java 语言有一个口号:“ 一次编写,处处运行” ,就是跨平台这个噱头。实际上C 语言从早期开始就几乎达到了“ 一次编写,处处编译” ,在 ANSI 在 1989年统一了C 语言标准以后(称之为C89 ),只要特定平台上的编译器完整实现了C89 标准,而且你的代码没有使用某些特殊的扩展(GCC 以及微软都有自己的编译器特定扩展),那么代码一定可以编名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - 译通过, 再实现一下操作系统相关的函数库,C 语言的移植就是很简单的事情。可以用 Lua作为例子, Lua 本身是完全遵循C89 标准,没有使用任何特定扩展,这也保证了有C 语言编译器的平台,都可以编译使用Lua 。可以编译运行C 语言的硬件平台可以从A 排到 Z,真是非常有意思的事情。C 语言也是一个比较少见的应用领域极为广泛的语言。比如编写操作系统这种高难问题,只有C+ 、汇编语言可以做到。C 语言可以编写服务器端软件如Apache 、Nginx ,或者编写GUI 程序, 如 GTK 。大多数程序语言的第一版是通过C 语言实现, 借助前面提到的“ 一次编写处处编译” ,最大的保证了这些程序语言的可移植性。在Web 开发领域, C 语言的应用相对较少,这也是一种取舍的结果,Web 开发需要使用PHP、Ruby 、Python这样的动态语言, 可以快速上线快速修改,可以最大程度满足用户时时变化的需求,这也是 C语言的弱项。如果把程序语言的应用领域从硬件到管理软件、Web 程序做一个很粗略从下到上的排列, C 语言适合领域是比较底层靠近硬件的部分,而新兴语言比较偏重于高层管理或者 Web 开发这种相对贴近最终用户的领域。比较流行的混合开发模式是使用C 语言编写底层高性能部分代码或后台服务器代码,而使用动态语言如Python做前端开发, 充分发挥它们各自的优势力量。提到 C 语言的缺点, 常常是它缺少这种或者那种特性,比如有人建议加入GC,有人建议加入并行或者并发支持,有人提到没有一个比较完整的类似C+ 的异常策略。这些特性有的可以通过引入第三方库来实现,但 C 语言的设计哲学其实决定了它不会像C+ 那样 “ 非常强大 ” 。即使引入了某些人期望的特性,依然会是某些人喜欢某些人不喜欢的情形,现在的功能对于C 语言应用领域来说已经够用,其它特性可以通过特定程序语言实现,并且通过 C API 与 C 语言编写的程序进行交互。任何一个工匠都不可能只使用一个工具完成他的工作,不同工具结合起来才能更快更好的完成任务。提到 C API ,也稍微介绍一下,我们知道windows操作系统的api 也好, Linux的系统 api 也好,或者是想给Ruby 、Python编写扩展模块,C 语言形式的函数定义都是唯一的选择。 C 语言就好像是一个中间层或者是胶水,如果想把不同编程语言实现的功能模块混合使用, C 语言是最佳的选择。提了这么多关于C 语言的好处,那么学习C 语言是否适合就看你自己的判断了,例如要进行一个嵌入式项目,或者需要进行服务器端开发,或者写一个性能相关的组件等等,C语言都是比较好用的选择。另外也可以在C+ 的使用过程中有意的使用C 语言的思考方式,汲取 C 语言简洁明快清晰地设计思路,对编程设计水平会有很大的提高。C 语言学习方法在前面 http:/ C 语言学习也可以按照类似的顺序:阅读参考书,阅读代码,编写调试实际程序,上网参与讨论,研究高级话题。学习语言的开始一般是阅读参考书。我建议选择几本非常经典的好书,仔细完整反复阅读几遍, “ 书读百遍其义自现” 。选择 C 语言学习的好处是,这几本书基本上完整涵盖了C语言编程领域的方方面面,不会像C+ 那样,即使读完一堆书还是有些糊涂,依然有这样那样难懂的陷阱。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 1 ,参考书籍在豆瓣上列了一个书单,大家可以直接参考http:/ C Programming Languagehttp:/ 语言,只需要买这一本就够了。如果你经费足够,建议你多买几本,办公室、家里都放上一本,随手都可以翻翻。用三个词语来形容它就是:经典!经典!经典!这本薄薄的只有二百多页的小书涵盖了C 语言的方方面面,前无古人而且后无来者,任何溢美之词都不足以形容它。The C Programming Language(后面称为K&R )里面包含了一个简单的语法解析器,包含了malloc如何实现,包含了一个完整的操作系统目录浏览程序,这些程序的实用性极高, 可以这样说, 如果学习任何一门语言能够自己独立动手实现以上的功能,基本上就可以算是入门了。K&R 书里面每段都蕴含着非常值得探究的软件开发工程实践经验,如果没有一定的开发经验,其实是看不出来这些冰山下面的内容的,比如开头一章就提出用写完整代码这种方式来教学,而在书中那些C 语言的陷阱或者可能出问题的地方,都有提到,但是由于篇幅所限,写的非常简约,很难让人一下就看懂。我正在完整的逐字逐句的阅读此书,希望能稍作注解,写几篇博客分享一下。C 程序设计语言 (第 2 版 新版)http:/ K&R 的中文译本,可以先从中文译本看起,然后再读一遍英文原版,既可以学习英文,又可以体会原文那种简约优美的风格。C 陷阱与缺陷 http:/ 专家编程 http:/ 语言的朋友必备的两本书,比如C 专家编程,专门用两三个章节详细介绍C 语言中数组与指针的不同之处,这两本书在某种程度上算是对K&R略过的地方做了详细补充,强烈推荐。C 语言参考手册http:/ 语言参考手册可以看作是 C 语言编程的新华字典,全面而权威。里面还涵盖了C99 的内容,紧跟时代潮流。下面几本书都可以作为交叉参考,也都很有价值, 也是建议大家都买下来,好书如朋友,日久弥新,像是我推荐的这几本书在douban或者 amazon上评分都非常高,而且反复再版。C 和指针 http:/ - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 指针的重要性如何,学过C 语言(或者C+ )的朋友都知道,这本书更是把指针拔高到了与 C 语言平起平坐的地位,其实也是从头开始介绍,作为教学参考书也是可以的。C 标准库 http:/ 语言的标准库如何实现的,比如malloc算法,用标准的C 语言该如何写? strlen这个函数应该如何实现?尽管书中不少代码与真实的C 标准库相差很多(由于标准库需要考虑性能优化,很多函数有一些特定的trick ),但是绝对值得参考。你必须知道的495 个 C 语言问题 http:/ C-FAQ 在各种编程语言的FAQ 中可以称得上质量一流。如果你想应聘或者招聘C 语言相关程序员,这本书一定要参考。Linux C编程一站式学习http:/ C 语言编程,可作为计算机相关专业的教科书或入门参考书,也是书单里面唯一一本国人原创的编程书籍,非常难得。 书中几乎所有内容都在网上直接公开,针对读者的意见进行修改,这也是非常难得的一种开放态度。非常推荐大家买一本。学习 C 语言,一定不能只读书,应该动手练习完成书里面的项目需求(比如编写一个目录浏览器) 以及每章的练习题目。这就需要有可以实验的环境,下面针对不同操作系统简单做一下介绍。2,动手实验环境搭建也没有调查过,不知道现在学校里学习C 语言是不是依然跟着谭浩强老师用TurboC2.0编程,如果还是这个组合的话,那就太差劲了,赶快抛开它们。下面主要介绍不同操作系统平台下的集成编程环境,基于初学者以及我个人喜好,就不推荐大家命令行下用vim 编程了,直接上IDE 。Windows系统下推荐大家使用Code:blocks这个软件。 这个软件最大优点是自带了基于 mingw的 GCC 以及 GDB ,只要下载70M 左右软件包,就可以完整支持C+ 、C语言编程了。各种功能(比如调试功能)也很强大,版本更新也比较快。注意下载选择名字有 mingw的文件,比如最新版本是codeblocks-10.05mingw-setup.exe(版本也许有所不同)。主页: http:/www.codeblocks.org/名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 如果需要做Windows操作系统的开发,可以下载Visual C+ 2010 Express。因为 Code:Blocks不包含 Windows编程头文件(实际是因为没有Windows SDK) ,无法编写 Windows操作系统相关的界面应用程序或者服务类程序。而VC+Express自带了这些头文件以及编程库,虽然功能稍微简陋,但对于练习使用基本够用。主页: http:/ GCC 这个组合(当然也可以选择Code:Blocks)。在 Xubuntu下可以通过apt-get install build-essential这个命令安装 gcc 相关程序,已经可以在Terminal下编译 C 语言程序了,但为了使用方便,大家可以选择 Netbeans的 C+ 支持包,在Netbeans网站上就能下载。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 主页: http:/netbeans.org/features/cpp/index.html如果使用苹果Mac 系统,毫无疑问XCode就是编程的绝佳选择,XCode可以在苹果开发者网站上免费下载,在IPhone SDK中也包含了XCode 。主页: http:/ - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - 另外建议大家申请一个的账号,在可以保存自己的练习代码,就不需要随身带着U 盘了。3,网络资源如果想用十分钟时间了解一下C 语言的来龙去脉、前世今生,维基百科这个页面http:/en.wikipedia.org/wiki/C_%28programming_language%29是最佳选择。从维基百科可以看到,C 语言 1972年由 Dennis Ritchie设计的命令式、结构化范式编程语言。类型为静态的弱类型,需要显式定义。最新国际标准为C99 。设计上主要受到了 B、ALGOL68 、汇编语言、 PL/I 、FORTRAN的影响, C 语言也影响了大量编程语言,如 C+ 、 Objective-C、C# 、Java 、Go 、PHP、Python等等(个人觉得受C 影响很大的是 PHP,基本上有C 编程基础的程序员,很容易就能上手PHP 了,除了 PHP 的 OO 部分)。在维基百科条目中有很大篇幅介绍了作者认为C 语言缺失的特性,比如面向对象、多线程、 GC、异常处理等等,当然这有些吹毛求疵,如果需要这些特性,完全可以用其它程序语言。另外一个介绍的重点是“ 未定义行为 ” ,有些我们认为理所当然的结果,其实在C语言标准中并没有明确定义,假定这些行为应该如何,当程序使用另外的编译器或者不同版本编译器编译运行,都可能有bug 产生。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 接下来维基百科条目谈到了C 语言的用处,必须承认尽管现在编程语言成百上千,能称之为 “ 系统级 ” 的少之又少, 新兴语言中只有Go 还能称得上。 现在大规模软件项目中完全选用 C 语言可能性不大, 但是核心部分完全可以用C 搭建,相对 C+ 开发工具的高昂价格,C 语言相关的免费辅助开发软件非常丰富,比如 splint ,valgrind,不少核心库经过长期使用也都非常稳定。由于 C 语言广泛支持各种平台以及编译器相对成熟可靠,不少编程语言选择C 语言作为一个中间层,比如Glasgow Haskell编译器就是这样做的。另一个可以找到大量C 语言编程相关资料的地方是“ 美味书签 ” ,通过搜索特定关键字(C + programming)就可以找到很多值得挖掘的资源http:/ C 语言分类http:/www.dmoz.org/Computers/Programming/Languages/C/相比美味书签时效性能差点,但是分类比较系统,查找也要容易一些。程序员往往是懒惰的,“ 拿来主义 ” 、“ 拷贝主义 ” 很流行也很有效,当对某个函数或者关键字不是很理解的时候,看看别人是怎么使用的,会非常有启发性。这里介绍几个常用的代码搜索网站,最常用的是google的 codesearch:http:/,可以通过不同条件及正则表达式搜索特定关键词。另外可以参考维基百科上一个“ 带有 C 语言示例的文章 ” 分类,里面代码写的也很不错。还可以在上搜索相关项目。在前面博客文章我还介绍了一个名为罗塞塔代码的网站http:/rosettacode.org/这个网站上可以找到不同程序语言针对某个问题的解决方案,用于学习比较非常便利。学习编程也需要大量阅读名家经典代码,与学中文英文需要大量阅读名著一个道理,C语言编程优质项目那是“ 彩旗飘舞,人山人海” ,个人建议可以看看Lua 、Sqlite 、Nginx这些项目的代码,代码量不多,而且代码质量也都比较高。另外可以看看Linux内核代码,坊间有不少书籍可以帮助解读。关于如何很好的阅读代码,大家可以参考 Code Reading这本书。书看了几本,代码写了一些,也略微读了读其他人的代码,就应该用C 语言来完成真实工作中碰到的问题,让C 语言真正成为你的瑞士军刀。只有当你经常使用C 语言来进行编程工作,经常思考如何通过C 设计一个优雅高效的系统,才能更深刻的理解C 语言设计哲学。还可以到 http:/参与回答问题,浏览其他人的问题解答来汲取知识,比如这篇http:/ 语言关于char 类型的小陷阱。C 语言学习当中,有一些难点需要多加注意,如pointer与 array的不同之处,复杂类型定义如何解读,如何正确使用预处理preprocessor以及宏定义。 其实这些内容在前面书籍都是反复提到,如果按部就班学习下来,应该不成问题。当 C 语言学习的差不多时候,还可以学习一门动态语言,比如Lua 或者 Python,试着在实际工作项目中混合使用动态语言与C 语言,一加一发挥出来的力量不仅仅是二,而是非常二(说笑一下,哈哈)。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -

    注意事项

    本文(2022年漫谈C语言及如何学习C语言 .pdf)为本站会员(H****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开