1 / 12
文档名称:

漫谈C语言和如何学习C语言.doc

格式:doc   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

漫谈C语言和如何学习C语言.doc

上传人:beny00011 2016/5/3 文件大小:0 KB

下载得到文件列表

漫谈C语言和如何学习C语言.doc

相关文档

文档介绍

文档介绍:论坛漫谈 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 语言简洁的设计哲学, 甚至连 continu e 这种几乎必备的关键字都一直拒绝加入,在 Lu a 的 maillist 以及 wiki 里都提到过 continue 这个问题, Lua 语言维护者认为 continu e 对于 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++ 那样“非常强大”。即使引入了某些人期望的特性, 依然会是某些人喜欢某些人不喜欢的