漫谈C语言及如何学习C语言.doc_第1页
漫谈C语言及如何学习C语言.doc_第2页
漫谈C语言及如何学习C语言.doc_第3页
漫谈C语言及如何学习C语言.doc_第4页
漫谈C语言及如何学习C语言.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

首页 大连天气预报 网站及家庭介绍窗体顶端窗体底端我的宝贝孙秀楠 C+, Lua, 大连,程序员sunxiunan漫谈C语言及如何学习C语言作者: admin 日期: 2010年06月29日 发表评论 (41) 查看评论 云风最近写了一篇博客C语言的前世今生。作为长期使用C语言开发网络游戏服务器的程序员,云风是有理由写这样一篇文字,不过还是感觉谈的不够深入,C语言在业界使用的现状没有怎么描写,有些意犹未尽。在这里想比较系统的谈谈个人对C语言学习方式方法的理解。分别按照书籍、实验环境搭建、网络资源来分别介绍,希望能写的比较完整全面一些,给想学习C语言的朋友一个有价值的参考。为什么要学习C语言?为什么要学习、使用C语言?为什么要学习一个可能比自己都岁数大的编程语言?我在前面如何学习编程语言的博客文章/?p=1597 里提到,选择一门编程语言,“为什么而学”这个目的是最重要的,目的不明确就没法学好。这也是为什么很多学生朋友在大学里必修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以及微软都有自己的编译器特定扩展),那么代码一定可以编译通过,再实现一下操作系统相关的函数库,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语言学习方法在前面/?p=1597 曾经提到过一个比较系统学习一门新的编程语言的方式,C语言学习也可以按照类似的顺序:阅读参考书,阅读代码,编写调试实际程序,上网参与讨论,研究高级话题。学习语言的开始一般是阅读参考书。我建议选择几本非常经典的好书,仔细完整反复阅读几遍,“书读百遍其义自现”。选择C语言学习的好处是,这几本书基本上完整涵盖了C语言编程领域的方方面面,不会像C+那样,即使读完一堆书还是有些糊涂,依然有这样那样难懂的陷阱。1,参考书籍在豆瓣上列了一个书单,大家可以直接参考/doulist/636329/在下面简单点评一下,阅读顺序最好参照列出的顺序。The C Programming Language/subject/1230004/如果你只想买一本书学习C语言,只需要买这一本就够了。如果你经费足够,建议你多买几本,办公室、家里都放上一本,随手都可以翻翻。用三个词语来形容它就是:经典!经典!经典!这本薄薄的只有二百多页的小书涵盖了C语言的方方面面,前无古人而且后无来者,任何溢美之词都不足以形容它。The C Programming Language(后面称为 K&R)里面包含了一个简单的语法解析器,包含了malloc如何实现,包含了一个完整的操作系统目录浏览程序,这些程序的实用性极高,可以这样说,如果学习任何一门语言能够自己独立动手实现以上的功能,基本上就可以算是入门了。K&R书里面每段都蕴含着非常值得探究的软件开发工程实践经验,如果没有一定的开发经验,其实是看不出来这些冰山下面的内容的,比如开头一章就提出用写完整代码这种方式来教学,而在书中那些C语言的陷阱或者可能出问题的地方,都有提到,但是由于篇幅所限,写的非常简约,很难让人一下就看懂。我正在完整的逐字逐句的阅读此书,希望能稍作注解,写几篇博客分享一下。C程序设计语言(第2版新版)/subject/1139336/这是K&R的中文译本,可以先从中文译本看起,然后再读一遍英文原版,既可以学习英文,又可以体会原文那种简约优美的风格。C陷阱与缺陷/subject/2778632/C专家编程/subject/2377310/这两本书也是学习及使用C语言的朋友必备的两本书,比如C专家编程,专门用两三个章节详细介绍C语言中数组与指针的不同之处,这两本书在某种程度上算是对K&R略过的地方做了详细补充,强烈推荐。C语言参考手册/subject/2132084/这是最后一本强烈推荐你最好买回家作为案头书必备的参考书。前面几本书或者稍显简略,或者专注某个特定专题,都不适合遇到问题时翻查。这本C语言参考手册可以看作是C语言编程的新华字典,全面而权威。里面还涵盖了C99的内容,紧跟时代潮流。下面几本书都可以作为交叉参考,也都很有价值,也是建议大家都买下来,好书如朋友,日久弥新,像是我推荐的这几本书在douban或者amazon上评分都非常高,而且反复再版。C和指针/subject/1229973/指针的重要性如何,学过C语言(或者C+)的朋友都知道,这本书更是把指针拔高到了与C语言平起平坐的地位,其实也是从头开始介绍,作为教学参考书也是可以的。C标准库/subject/3775842/这本书是专门介绍C语言的标准库如何实现的,比如malloc算法,用标准的C语言该如何写?strlen这个函数应该如何实现?尽管书中不少代码与真实的C标准库相差很多(由于标准库需要考虑性能优化,很多函数有一些特定的trick),但是绝对值得参考。你必须知道的495个C语言问题 /subject/3422332/这本书其实就是C-FAQ的印刷版本,C-FAQ在各种编程语言的FAQ中可以称得上质量一流。如果你想应聘或者招聘C语言相关程序员,这本书一定要参考。Linux C编程一站式学习/subject/4141733/这本书是基于特定操作系统Linux来介绍C语言编程,可作为计算机相关专业的教科书或入门参考书,也是书单里面唯一一本国人原创的编程书籍,非常难得。书中几乎所有内容都在网上直接公开,针对读者的意见进行修改,这也是非常难得的一种开放态度。非常推荐大家买一本。学习C语言,一定不能只读书,应该动手练习完成书里面的项目需求(比如编写一个目录浏览器)以及每章的练习题目。这就需要有可以实验的环境,下面针对不同操作系统简单做一下介绍。2,动手实验环境搭建也没有调查过,不知道现在学校里学习C语言是不是依然跟着谭浩强老师用TurboC2.0编程,如果还是这个组合的话,那就太差劲了,赶快抛开它们。下面主要介绍不同操作系统平台下的集成编程环境,基于初学者以及我个人喜好,就不推荐大家命令行下用vim编程了,直接上IDE。Windows系统下推荐大家使用Code:blocks这个软件。这个软件最大优点是自带了基于mingw的GCC以及GDB,只要下载70M左右软件包,就可以完整支持C+、C语言编程了。各种功能(比如调试功能)也很强大,版本更新也比较快。注意下载选择名字有mingw的文件,比如最新版本是codeblocks-10.05mingw-setup.exe(版本也许有所不同)。主页:/如果需要做Windows操作系统的开发,可以下载Visual C+ 2010 Express。因为Code:Blocks不包含Windows编程头文件(实际是因为没有Windows SDK),无法编写Windows操作系统相关的界面应用程序或者服务类程序。而VC+Express自带了这些头文件以及编程库,虽然功能稍微简陋,但对于练习使用基本够用。主页:/express/windows/对于计算机专业的学生朋友,建议大家使用Linux操作系统,或者更详细一点是使用Xubuntu操作系统作为桌面,使用Netbeans和GCC这个组合(当然也可以选择Code:Blocks)。在Xubuntu下可以通过apt-get install build-essential这个命令安装gcc相关程序,已经可以在Terminal下编译C语言程序了,但为了使用方便,大家可以选择Netbeans的C+支持包,在Netbeans网站上就能下载。主页:/features/cpp/index.html如果使用苹果Mac系统,毫无疑问XCode就是编程的绝佳选择,XCode可以在苹果开发者网站上免费下载,在IPhone SDK中也包含了XCode。主页:/technologies/tools/xcode.html如果手头没有合适的编程环境,还需要实验一些简单的代码,可以用/ 提供的服务,在线编写运行代码。另外建议大家申请一个的账号,在可以保存自己的练习代码,就不需要随身带着U盘了。3,网络资源如果想用十分钟时间了解一下C语言的来龙去脉、前世今生,维基百科这个页面/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产生。接下来维基百科条目谈到了C语言的用处,必须承认尽管现在编程语言成百上千,能称之为“系统级”的少之又少,新兴语言中只有Go还能称得上。现在大规模软件项目中完全选用C语言可能性不大,但是核心部分完全可以用C搭建,相对C+开发工具的高昂价格,C语言相关的免费辅助开发软件非常丰富,比如splint,valgrind,不少核心库经过长期使用也都非常稳定。由于C语言广泛支持各种平台以及编译器相对成熟可靠,不少编程语言选择C语言作为一个中间层,比如Glasgow Haskell编译器就是这样做的。另一个可以找到大量C语言编程相关资料的地方是“美味书签”,通过搜索特定关键字 (C + programming)就可以找到很多值得挖掘的资源/search?p=c+programming还可以参考的C语言分类/Computers/Programming/Languages/C/ 相比美味书签时效性能差点,但是分类比较系统,查找也要容易一些。程序员往往是懒惰的,“拿来主义”、“拷贝主义”很流行也很有效,当对某个函数或者关键字不是很理解的时候,看看别人是怎么使用的,会非常有启发性。这里介绍几个常用的代码搜索网站,最常用的是google的codesearch: ,可以通过不同条件及正则表达式搜索特定关键词。另外可以参考维基百科上一个“带有C语言示例的文章”分类,里面代码写的也很不错。还可以在上搜索相关项目。在前面博客文章我还介绍了一个名为罗塞塔代码的网站/ 这个网站上可以找到不同程序语言针对某个问题的解决方案,用于学习比较非常便利。学习编程也需要大量阅读名家经典代码,与学中文英文需要大量阅读名著一个道理,C语言编程优质项目那是“彩旗飘舞,人山人海”,个人建议可以看看Lua、Sqlite、Nginx这些项目的代码,代码量不多,而且代码质量也都比较高。另外可以看看Linux内核代码,坊间有不少书籍可以帮助解读。关于如何很好的阅读代码,大家可以参考Code Reading这本书。书看了几本,代码写了一些,也略微读了读其他人的代码,就应该用C语言来完成真实工作中碰到的问题,让C语言真正成为你的瑞士军刀。只有当你经常使用C语言来进行编程工作,经常思考如何通过C设计一个优雅高效的系统,才能更深刻的理解C语言设计哲学。还可以到 参与回答问题,浏览其他人的问题解答来汲取知识,比如这篇/questions/2054939/char-is-signed-or-unsigned-by-default 就介绍了一个C语言关于char类型的小陷阱。C语言学习当中,有一些难点需要多加注意,如pointer与array的不同之处,复杂类型定义如何解读,如何正确使用预处理preprocessor以及宏定义。其实这些内容在前面书籍都是反复提到,如果按部就班学习下来,应该不成问题。当C语言学习的差不多时候,还可以学习一门动态语言,比如Lua或者Python,试着在实际工作项目中混合使用动态语言与C语言,一加一发挥出来的力量不仅仅是二,而是非常二(说笑一下,哈哈)。还有什么问题,欢迎留言。附录一些有用的C语言网络资源:C语言标准化组织ISO JTC1/SC22/WG14的主页,在这里可以找到ISO C的文档:/jtc1/sc22/wg14/The Development of the C Language作者Dennis Ritchie,极为经典的论文。 /cm/cs/who/dmr/chist.html“C语言全景”这个网站内容很全面:/Lang/c.shtmlDan Saks在上的专栏Programming Pointer ,里面文章很有深度,值得一读。http:/www.lysator.liu.se/c/c-www.html 这也是一个C语言资源汇总页面。/index.html 混乱C语言代码大赛,很著名。/wiki/Underhanded_C_Contest 另外一个C语言编程大赛,主要面向黑客。comp.lang.c以及c.moderated这两个讨论组推荐订阅,相当于互联网最大的C相关编程问题论坛:/group/comp.lang.c/group/comp.lang.c.moderated这里对C语言的各种bit操作做了收集整理,不少题目在面试时候经常出现。/seander/bithacks.html台湾的惯C达人Jserv博客,建议大家订阅:.tw/jserv/一些值得关注及研究的C语言相关项目:TinyCC,被很多项目用作动态编译C语言的编译器引擎:/tcc/GCC的标准库实现:/wiki/GNU_C_LibraryGlib是GTK的底层辅助编程库,与C标准库是不一样的,在C语言上实现了面向对象机制:/wiki/GLibdietlibc在前面博客文章介绍过,C标准库的另一种实现:http:/www.fefe.de/dietlibc/一些C语言编程时可以使用的工具软件,帮你提高代码质量:///flawfinder/PMD可用于检测重复代码 /cpd.htmlllvm的静态分析项目 /C语言编程规范编程标准:/wiki/MISRA_C/ellard/CS50-96/programming-style.html/solaris/articles/secure.htmlcert这个文档国内有中文翻译版本:/confluence/display/seccode/CERT+C+Secure+Coding+Standard/dept/old/texinfo/standards/standards_toc.htmlC语言编程电子书及教程:http:/publications.gbdirect.co.uk/c_book/ 这一本写的非常详细,你可以把它看成是类似谭浩强版的教科书。http:/www.knosof.co.uk/cbook/cbook.html 这一本云风曾经推荐过,相当深入的介绍了C99标准,深入细节时候需要读读。/bugfreec/index.html 这本书在网上流传一个中文版本,编写优化、高效、无错地代码,另外也有英文影印版编程精粹。/blog/?page_id=196 作者王聪,也是相当hard geek,从两个样章看,包含了相当多的内容。C语言深度解剖这本可以在百度文库或google搜到,可以读读,有些参考性。C标准和实现作者姚新颜,他的深度探索C、C+算是当年比较有深度的书籍,可惜已经绝版了。这本书也可以在百度文库搜到。这本书也比较值得读。良葛格C语言学习笔记 /Gossip/CGossip/CGossip.htmlC与C+的兼容性问题 /wiki/Compatibility_of_C_and_C%2B%2B另一个文档关于C与C+标准兼容性问题:/text/cdiffs.htmC Elements of Style/books.free/style/index.htmlLinux安全编程/secure-programs/C Craft电子版 /blynn/c/The function pointer tutorials函数指针教程。http:/www.newty.de/fpt/index.htmlC语言编程及Unix系统调用,想用C在Unix或者Linux编程的朋友可以参考。http:/www.cs.cf.ac.uk/Dave/C/优化C、C+代码 /RealtimeMantra/Basics/OptimizingCAndCPPCode.htm图文并茂介绍C语言的指针 /pointers/另外一篇介绍C语言优化的文章 http:/www.prism.uvsq.fr/cedb/local_copies/lee.html一个C语言教学ppt /petdance/just-enough-c-for-open-source-programmers一些Unix下C语言编程相关的文章 http:/users.actcom.co.il/choo/lupg/tutorials/index.htmlUnix下如何建立静态、动态C语言函数库 http:/users.actcom.co.il/choo/lupg/tutorials/libraries/unix-c-libraries.html如何使用GDB http:/users.actcom.co.il/choo/lupg/tutorials/debugging/debugging-with-gdb.html一些C语言编程技巧 /ctips/Advanced C programming,高级C语言编程,可以提高水平,非常有帮助 http:/www.mpi-inf.mpg.de/departments/rg1/teaching/advancedc-ws08/literature.htmlC语言问答,这些题目也可用于面试 /c/tech 学习C语言的免费电子书梳辫子的视频 发表评论? 41 条评论。1. nio 2010年06月29日 在 7:34 下午 这个网站值得向学习者推荐:/回复 2. 陌上清溪 2010年06月29日 在 7:55 下午 你推荐的这些书都是顶好的书。同时我还想推荐一本c interfaces and implementations中文唤作C语言接口与实现。回复 o admin 2010年06月30日 在 9:16 下午 C语言接口与实现我有,但是感觉翻译的很差劲,难读难懂,也不觉得对C语言学习帮助多少,所以没有推荐。回复 3. admin 2010年06月30日 在 9:18 下午 nio,codeguru以及codeproject这类网站偏重C+C#,另外也偏重Windows特定相关问题,与文章整个介绍不太符合,故此没提。回复 4. jyf1987 2010年06月30日 在 10:42 下午 好奇的问下 为何特别推荐Xubuntu 是作者对xfce情有独钟么回复 5. admin 2010年06月30日 在 10:56 下午 jyf1987 现在大多数朋友还是用Windows,可以尝试用VirtualBox虚拟机安装Linux来做开发平台,Xubuntu兼顾了界面与CPU负载内存使用,相对Ubuntu要轻量一些,而且底层也是用GTK,界面库与Ubuntu一脉相承的。学用Linux还是应该尽量少用图形界面,多试试终端,Xubuntu可以作为很好的过渡。回复 6. Chunlin Zhang 2010年06月30日 在 11:44 下午 个人觉得从 windows 过渡到 linux 最好的就是 puppy linux 了,一个 U 盘就能搞定.最新的 puppy5 基于 Lucid Lynx,也是 ubuntu 的.回复 7. lveyo 2010年07月1日 在 12:13 上午 C语言很强大的说,是主流linux编程语言,还有linus的大力支持!好好学吧。回复 8. Kenny Yuan 2010年07月1日 在 12:19 上午 收藏之,因为每次有新人问我的时候,总想有这样一个较全面的东西能够推荐。(不过我总在想:新人真的能按照老手期望的那样一路高歌前进么?)回复 9. 排版不错 2010年07月1日 在 1:18 上午 内容错误挺多回复 o admin 2010年07月1日 在 1:34 上午 有错误欢迎指正回复 10. Beyonder 2010年07月1日 在 6:13 上午 不错的文章“C语言就好像是一个中间层或者是胶水,如果想把不同编程语言实现的功能模块混合使用,C语言是最佳的选择。”个人觉得把c语言说成是中间层,或者是胶水是不合适的, 恰恰相反 python之类的动态语言才是胶水. 而c则是用于实现系统中对效率要求较高的模块.文章第一部分:为何要学c语言 并不是很集中论据来说明学习c语言比其它语言对一个开发者来说好处在哪里.其实真的要深入c语言, 是要尽量避免使用IDE的. 个人觉得把环境换成gcc会更好.回复 o admin 2010年07月1日 在 3:41 下午 Python是胶水这种说法我也听说过很多次,在某种程度上同样这样认为,比如博客里也介绍了一些appengine的使用。但是这里的胶水与Python常用的胶水含义略有不同。打个比方,如果我们有多种编程语言,Python、Ruby、Lua、Haskell,它们之间需要相互作用,一种方式是编rpc(如xmlrpc)这种通用格式的调用,或者用这样那样手段,但还有一个C语言能起作用的方式,就是它们都能很容易的使用C来扩展(Haskell不是很确定,也许不是),这就相当于Python-C-Ruby-C-Lua-C-Haskell,当然这种混合模式也不准确,没有真正项目验证过是否可行,理论上问题不太大,而这种情况下Python是没法起到C的作用,很少有其它语言直接支持与Python的交互。总而言之,我需要在文章中稍作强调的是,这篇文字只focus在语言层面,不涉及ide好不好的问题,不涉及哪个操作系统的问题,也不涉及与其它语言比较问题。用C语言开发,我个人学习的原因,就是想学习C语言的设计方式、设计哲学,没有太多比较,而且这种语言选择,再多的比较意义不大,各自都有各自的长处短处,适用领域千差万别。BTW,除了VC+Express和Xcode没有使用Gcc,其它方案都是Gcc的,不知道这个环境换成Gcc还能如何换?回复 Beyonder 2010年07月2日 在 10:06 下午 其实楼主不用这么激动哈我只是觉得文章没有把重点放在c语言本身.另外我说的是新手学习C时尽量避免使用IDE, 而不是针对编译器. 因为IDE掩盖了太多的细节. 而真的想要用好一门语言, 除了语言本身的东西, 还需要深入理解计算机系统, 否则也写不出好的代码.回复 11. AminBy 2010年07月1日 在 7:13 下午 楼主强大. 个人觉得附这么多的书有点卖弄的意思. 也就是目标读者不明, 谈如何学习C, 有两种情况, 一种是写给新人看的. 一种是和人交流.如果是给新人的话,这么书一放可以吓走一片, 而且就没有一个流程说应该先读哪本,再读哪本, 虽然有重点推荐,但还是让人感觉茫然. 建议把文章再细化一点, 分书籍的选择(电子书和实体书都是书,没必要把电子书分到网络资源去); 网络资源是一些论坛,代码参考,程序员交流的地方.然后入门教程另起一文吧,这样结构更清晰一点._ 愚人之见, 请多多包涵.回复 o admin 2010年07月1日 在 7:40 下午 AmiBy 我在文章里写的很清楚啊:“阅读顺序最好参照列出的顺序”。如果你仔细读完全文,应该知道我只推荐了5本书,几乎本本经典,没有互相替代的可能性。而且写的再清楚不过,如果只需要一本就是第一本,反复地说,还没看到,只能说你太粗心了,不知道这个茫然从何而来。另外我对电子书的看法是;可以看,但是用于学习是不合适的。如果连买这些书的钱都凑不齐,就不如去干点别的更合适。也许有人喜欢电子书,但我个人感觉这不是一种好的学习方式。另外这不是入门教材,不是让你如何入门的,只是提供一个”如何钓鱼的方法”。如果真想学C语言的话,可以把我这篇文章再重新仔细,注意是仔细读一下,应该对你有所帮助的。回复 12. 3ai/少年饭 漫谈C语言及如何学习C语言 - pingback on 2010年07月1日 在 7:57 下午 13. goodappli 2010年07月1日 在 8:10 下午 就冲有这么多的链接,也得顶啊。迷茫的学生飘过.,看完不再迷茫。回复 14. xuruoji 2010年07月2日 在 5:01 上午 博主似乎漏掉了douban书单里面的第一本C语言程序设计现代方法个人认为这本书非常不错,仅次于TCPL,而且还适合初学者,并增加很详细的C99相关内容。回复 15. 这周我加星 2010年07月8日 : 这周我加星 - pingback on 2010年07月7日 在 11:12 下午 16. glq2000 2010年07月20日 在 6:02 上午 博主知识很渊博,列出的众多的链接和书籍都很有用,Linux C编程一站式学习我快看完了,是本不错的书籍。自己在学习C语言的过程中走过很多弯路,现在才慢慢步入正轨,博主的这篇博文对我很有帮助,收藏之回复 17. zhaiduo 2010年08月26日 在 9:38 下午 C语言对我来说太过底层和陈旧,c+比较有吸引力回复 18. 咔咕 2010年09月10日 在 7:08 上午 最早学的也是C语言,后来学C+,C#,Java,出来后也没找到这方便的工作,现在都快忘光了。回复 19. fbcon 2010年10月18日 在 3:08 上午 应该去掉对vc的介绍。这个编译器/IDE从来不打算完全遵守c标准。回复 20. 王元毅 2010年11月16日 在 12:02 上午 果然是C的高手啊。没有意见,只有收藏。7/8年没有动过C了。有时间重新学学。回复 21. 一些技术摘选及随想 | 孩子气 | C+, Lua, 大连,程序员 - pingback on 2010年11月17日 在 5:28 下午 22. ddd 2010年11月18日 在 9:13 上午 alert(“this may be a test”)回复 23. 漫谈C语言及如何学习C语言 博術談 | Power Tech Talk - pingback on 2010年11月23日 在 4:09 上午 24. SErHo 2010年12月4日 在 3:51 上午 现在大一开始学C语言,看了看,很有帮助,不过现在大学教学似乎只是将C语言作为入门语言,以后的实际用处应该不太多吧?回复 25. Xshagua 2010年12月5日 在 3:18 上午 写的太详细了回复 26. 转载漫谈C语言及如何学习C语言_九原山区 - pingback on 2011年01月3日 在 1:39 上午 2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论