第0课 - 学习C 的意义.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式Linux技术咨询QQ号: 550491596 嵌入式Linux学习交流QQ群: 版权声明:本课件及其印刷物、视频的版权归成都国嵌信息技术有限公司所有,并保留所有权力:任何单位或个人未经成都国嵌信息技术有限公司书面授权,不得使用该课件及其印刷物、视频从事商业、教学活动。已经取得书面授权的,应在授权范围内使用,并注明“来源:国嵌”。违反上述声明者,我们将追究其法律责任。 第0课 学习C++的意义 提问 学习嵌入式开发有必要学习C++吗? C VS C++ 一般的看法 操作系统和驱动程序都是C写的, 学好C足够了。 C++在应用层用得多, 学嵌入式的没必要学。 Linus大神都认为C++一无是处, 还学它干嘛?! 我以后就做驱动开发, 没精力也没必要学习C++了。 一些历史 UINX操作系统诞生之初是直接用汇编语言写成的 随着UINX的发展,汇编语言的开发效率成为一个瓶颈 如何提高UNIX的开发效率??? 一些历史 寻找新的高效开发语言成为UNIX开发者需要解决的问题 BCPL语言成为了当时的选择之一 Ken Thompson对BCPL进行简化得到了B语言 B语言不直接生成机器码,而是编译生成中间码之后解释执行。 问题: 解释型语言的执行效率不足以胜任操作系统的开发。 一些历史 1971年,Ken Thompson和Dennis Ritchie对B语言进行了改良,使其能够直接产生机器码,C语言诞生 UNIX开始用C语言重写,同时C语言在实践的过程中得到发展 Ken Thompson Dennis Ritchie C语言的特点 C语言是在实践的过程中逐步完善起来的 没有深思熟虑的设计过程 使用时存在很多“灰色地带” … 残留量过多低级语言的特征 直接利用指针进行内存操作 … C语言的目标是高效 最终程序执行效率的高效 软件方法论的发展 面向过程程序设计:数据结构 + 算法 主要解决科学计算问题,用户需求简单而固定 特点: 分析解决问题所需要的步骤 利用函数实现各个步骤 依次调用函数解决问题 问题: 软件可重用性差 软件可维护性差 构建的软件无法满足用户需求 软件方法论的发展 面向对象程序设计:由现实世界建立软件模型 将现实世界中的事物直接映射到程序中,可直接满足用户需求 特点: 直接分析用户需求中涉及的各个实体 在代码中描述现实世界中的实体 在代码中关联各个实体协同工作解决问题 优势: 构建的软件能够适应用户需求的不断变化 直接利用面向过程方法的优势而避开其劣势 C语言的加强 当面向过程方法论暴露越来越多的缺陷的时候,业界开始考虑在工程项目中引入面向对象的设计方法,而第一个需要解决的问题就是:高效的面向对象语言,并且能够兼容已经存在的代码。 C语言 + 面向对象方法论 Objective-C C++ C语言的加强 C语言和C++并不是对立的竞争关系 C++是C语言的加强,是一种更好的C语言 C++是以C语言为基础的,并且完全兼容C语言的特性 学习C++并不会影响原有的C语言知识,也不会对学习嵌入式带来任何的负面影响。相反,学习C++可以让我们学到更多的软件设计方法,并带来更多的机会。 学习C++的优势 C Objective-C C++ Java C# D JavaScript ActionScript 为什么要为以后学习其它语言做准备? 问题 现代软件产品架构图 硬件层 驱动程序 操作系统 操作系统抽象层 应用程序框架层 功能模块2 功能模块1 … 功能模块n 用户界面层 扩展模块 C C++ C++/Java/C# 脚本语言 商场收银系统架构图 硬件层(显示器,键盘,收银箱,POS机,打印机等) 驱动程序 Linux/Windows 操作系统抽象层 应用程序框架层 网络通信模块 数据库模块 设备控制模块 更新模块 用户界面层 扩展模块 C C++ Java JavaScript Java虚拟机 现代软件产品的特性 系统一般是由多种语言写成的 系统架构的目标是拥抱用户需求的变化 系统拥有较好的移植性 系统能够方便的部署和更新 操作系统的修改和驱动程序的开发在现代软件产品中占据的比重越来越小。 小结 所有的软件系统都是为了满足用户需求而开发的 对于一个开发团队而言,在短期内开发出用户满意的软件系统是其核心竞争力的体现 对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现 对于一个架构师而言,掌握各种语言的优势并合理运用到系统中,由此简化系统的开发,是其架构生涯的第一步 学习C++的意义 C++是一种更强大的C,通过学习C++能够掌握更多的软件设计方法 C++是Java/C#/D等现代开发语言的基础,学习C++后能够快速掌握这些语言 C++是各大知名软件企业挑选人才的标准之一 让我们

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档