谈论C语言以及如何学习C语言

电脑杂谈  发布时间:2020-06-04 23:09:05  来源:网络整理

自学c语言_c语言自学软件_c语言自学书籍

为什么要学习和使用C语言?为什么要学习一种可能比您年龄长的编程语言?

在我以前关于如何学习编程语言的博客文章中c语言自学书籍,我提到选择编程语言时,“为什么要学习”的目的是最重要的. 如果目的不明确,您将无法学习. 这也是许多学生朋友不理解大学必修C语言的原因. 由于学习目的不清楚,因此当然没有学习动机. 另一个原因是C语言是一种具有较强工程实践能力的语言. 它不是来自研究机构或大学学院,而是真正源于项目的需求. 它随着Unix的兴起而流行,其语义简洁明了,功能强大但不肿,简洁但又不太简单,它确实是家庭旅行工作研究的好朋友.

C语言相对于C ++的优势之一是最小惊喜原则. 一是一,二是二,有些莫名其妙的额外产品将不会私下生产. 以C ++为例,例如一个函数原型void PassWithClassValue(COneClass clsParam1),对C ++有所了解的朋友会知道,如果您不实现COneClass的副本构造函数,则编译器将帮助您实现一个,并且调用此函数时,在某些情况下(例如编写操作系统和其他必须优化性能的情况),秘密地调用复制构造函数以生成一个临时对象作为要传递的参数时,这些自以为是的事情非常邪恶.

C语言本身仅提供必要的语言功能. 其他复杂功能(例如文件处理和数学计算)作为库功能提供. 甚至“必须拥有”功能(例如malloc和free)也基于标准库. 提供功能而不是将其显示为C语言的核心. 正如伟大而无所不包的“ K&R”一开始所提到的,for可以在一段时间内完成,但是for可以更简洁地编写,其含义是C语言不是必需的. 题外话说,在其他编程语言中,可以说Lua继承了C语言的简单设计理念,甚至拒绝了几乎必需的关键字Continue都被拒绝加入,而lua的邮件列表和Wiki中都提到了Continue. 问题,Lua语言维护者认为继续对于Lua不必要,并且不考虑在后续版本中添加此关键字. 这种简洁的哲学也使C语言特别具有可移植性和可移植性,也使许多嵌入式系统仍将C作为主要编程语言.

Java语言有一个口号: “写一次,到处运行”是跨平台的头. 实际上,从早期开始,C语言就几乎达到了“编写一次,到处编译”的目的. ANSI在1989年统一C语言标准(称为C89)后,只要特定平台上的编译器完全实现了C89标准,并且您的代码就没有使用某些特殊扩展(GCC和Microsoft具有自己的编译器特定扩展),然后必须先编译代码,然后实现与操作系统相关的功能库,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语言学习: 阅读参考书,阅读代码,编写和调试实际程序,参与讨论,学习高级主题.

语言学习通常始于阅读参考书. 我建议选择一些非常经典和好的书籍,仔细并完整地重复阅读几次,“书籍被阅读一百次,其含义就会出现. ”选择C语言学习的优势在于,这些书基本上涵盖了C语言编程领域的所有方面. 不会像C ++. 即使阅读了一堆书,它仍然有些混乱. 仍然有这样的陷阱.

豆瓣上列出了一个图书清单,您可以直接参考

下面简单评论一下,阅读顺序最好参考列出的顺序.

“ C编程语言”

自学c语言_c语言自学书籍_c语言自学软件

如果您只想购买一本学习C语言的书,则只需购买一本. 如果您有足够的资金,我建议您多买一些,在办公室和家里放一个,您可以轻松地将其上交. 用三个词来形容它: 经典!经典!经典!这本薄薄的小书有两百多页,涵盖了C语言的所有方面. 以前没有古人,也没有人. 没有美的话足以描述它.

“ C编程语言”(以下称为K&R)包含一个简单的解析器,包括如何实现malloc,以及一个完整的操作系统目录浏览程序. 这些程序非常实用,可以说,如果您学习任何一种语言并可以独立实现上述功能,则基本上可以作为入门. K&R书中的每个段落都包含值得探索的软件开发工程实践经验. 如果没有一定的开发经验,这些冰山下面的内容将无法看到. 例如,第一章建议编写完整的代码. 快来教书,并在书中提到C语言的陷阱或可能出现的问题c语言自学书籍,但是由于篇幅所限,写作非常简单,人们一眼就很难理解. 我正在逐字阅读这本书,希望发表一些评论并写一些博客以供分享.

“ C编程语言(第二版·新版)”

这是K&R的中文翻译. 您可以先进行中文翻译,然后再阅读英文原版. 您可以学习英语,并欣赏原始文本的简洁美观.

“ C陷阱和缺陷”

“ C专家编程”

这两本书也是两本供朋友学习和使用C语言的必备书籍,例如“ C Expert Programming”,它在两到三章中专门介绍了C语言中数组和指针之间的区别. 在一定程度上,这本书是对K&R跳过的地方的详细补充,强烈建议使用.

“ C语言参考手册”

这是最后一本强烈建议您最好在家购买的参考书. 先前的书籍有些简单,或者只针对特定主题,因此当您遇到问题时不适合进行搜索. 该《 C语言参考手册》可以看作是C语言程序设计的“新华字典”,内容全面,权威. 它还涵盖了C99的内容,与时俱进.

以下书籍可用作交叉参考,它们也非常有价值. 还建议大家购买它们. 好书就像朋友,而且它们正在不断更新. 就像我推荐的这些书一样,它们在豆瓣或亚马逊上也有评级. 很高,并反复转载.

“ C和指针”

指针的重要性是什么?学习过C语言(或C ++)的朋友知道,本书将指针指向了与C语言相同的位置. 实际上,它也是从一开始就引入的. 它也可以用作教学参考书. 的.

“ C标准库”

这本书致力于如何实现C语言的标准库,例如malloc算法,如何用标准C语言编写? strlen函数应如何实现?尽管本书中的许多代码与真正的C标准库有很多不同(由于标准库需要考虑性能优化,所以许都有一些特定的技巧),但这绝对值得参考.

“您必须知道的495种C语言问题”

c语言自学软件_c语言自学书籍_自学c语言

这本书实际上是C-FAQ的印刷版本. 在各种编程语言的FAQ中,C-FAQ可以被视为一流的质量. 如果您想申请或招募与C语言相关的程序员,则必须参考这本书.

“ Linux C编程的一站式学习”

本书是基于特定的Linux操作系统来介绍C编程的. 它可以用作计算机相关的教科书或入门参考书. 它也是本书清单中唯一由本地人编写的编程书籍. 本书中几乎所有内容都直接在Internet上发布,修改读者的观点是一种非常罕见的开放态度. 我强烈建议每个人都买一个.

学习C语言一定不能是一本只读的书,您应该练习以完成书中的项目要求(例如编写目录浏览器)以及每一章中的练习. 这需要一个实验环境. 以下是不同操作系统的简要介绍.

我还没有调查过. 我不知道学校里是否还在使用C语言与Turbo Haoqiang Tan Haoqiang学习编程. 如果仍然是这种组合,那就太糟糕了.

下面主要介绍不同操作系统平台下的集成编程环境. 基于初学者和我的个人喜好,我不建议每个人都从命令行使用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附带了这些头文件和编程库. 尽管该功能有些粗糙,但基本上足以用于实践.

主页:

对于计算机科学的学生,​​我建议您使用Linux操作系统,或更具体地说,使用Xubuntu操作系统作为桌面,并将Netbeans和GCC组合使用(当然,您也可以选择Code :: Blocks )在Xubuntu下,您可以通过命令apt-get install build-essential安装gcc相关程序. 您已经可以在Terminal下编译C语言程序,但是为了易于使用,您可以在Netbeans网站上选择Netbeans C ++支持程序包. 下载.

c语言自学书籍_自学c语言_c语言自学软件

主页:

如果您使用Apple Mac系统,那么毫无疑问XCode是进行编程的绝佳选择. XCode可以在Apple开发人员网站上免费下载,XCode也包含在iPhone SDK中.

主页:

如果没有合适的编程环境,则需要尝试一些简单的代码. 您可以使用提供的服务编写和运行代码.

还建议您申请一个github.com帐户. 您可以将练习代码保存在gist.github.com上,因此无需随身携带USB闪存盘.

如果您想在十分钟之内了解C语言的来龙去脉,那么Wikipedia页面%28programming_language%29是最佳选择.

从Wikipedia可以看到,C语言是由Dennis Ritchie在1972年设计的命令式,结构化范式编程语言. 类型是静态弱的,需要明确定义. 最新的国际标准是C99. 该设计主要受B,ALGOL68,汇编语言,PL / I,FORTRAN和C语言的影响,并且还影响多种编程语言,例如C ++,Objective-C,C#,Java,Go,PHP,Python等(个人认为,PHP受C语言的影响很大. 具有C语言基本编程知识的程序员可以轻松地开始使用PHP,除了PHP的OO部分之外. )


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-234099-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...