热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学习C++的意义

1,常见的观点:      1,并不是每个应届生都有机会写操作系统和驱动程序;   2,嵌入式系统也是软家系统,只不过是软件在出厂的时候已经被烧写到硬件中了,用户没有

1,常见的观点:  

 

    1,并不是每个应届生都有机会写操作系统和驱动程序;

    2,嵌入式系统也是软家系统,只不过是软件在出厂的时候已经被烧写到硬件中了,用户没有办法修改软件而已,因此嵌入式系统也是软件系统,c++还是应用的比较多的;

    3,今天软件行业飞速发展,一种语言支撑职业生涯,那是不可能的,并且今天的驱动开发也成为软件行业比较小的领域,绝对不能有以后就从事某个职业的观点,这在以后是不足以支撑整个职业生涯的;

    4,c 语言天生为开发操作系统而来的,linus 大神一生都致力于系统开发,至于他而言,确实只用掌握 c 语言就够了,并且 linux 也足够辉煌;

         

2,一些历史:

    1,uinx 操作系统诞生之初是直接用汇编语言写成的;

    2,随着 ninx 的发展,汇编语言的开发效率成为一个瓶颈;

       1,系统越来越庞大,找一种语言来替代汇编语言开发 uinx;

       2,1971 年,ken thompson 和 dennis ritchie 对解释性的 b 语言进行了改良,使其能够直接产生机器码,c 语言诞生;

          1,语法进行改良;

          2,解释型语言改编成编译型语言,直接能够编译成汇编语言;

       3,unix 开始用 c 语言重写,同时 c 语言在实践过程中得到发展;

           1,重写 unix 过程中,发现 c 语言各种不足,逐渐改善发展 c 语言;

          

3,c 语言特点:

    1,c 语言是在实践的过程中逐步的完善起来的:

       1,没有深思熟虑的设计过程;

       2,残留了过多低级语言的特征;

           1,指针直接操作地址;

           2,通过地址值能够直接跳转到那个地址值上执行;

    2,c 语言的目标是高效:

       1,最终程序执行效率的高效;

       2,开发的高效(相对于那个时代);

      

4,软件方法论的发展:

    1,面相过程程序设计:数据结构 + 算法:

       1,主要解决科学计算问题,用于需求简单而固定;

       2,特点: 

           1,分系解决问题所需的步骤;

           2,利用函数实现各个步骤;

           3,依次调用函数解决问题;

       3,问题:

           1,软件可重用性差;

              1,软件应用到了日常生活中了,开发过程低下;

           2,软件可维护性差;

              1,修改 bug 后又引入新的 bug;

    2,面相对象程序设计:由现实世界建立软件模型

       1,将现实中的事物直接映射到程序中,可直接满足用户需求;

       2,特点:

           1,直接分析用户需求中设计的各个实体;

           2,在代码中描述现实世界中的实体;

           3,在代码中关联各个实体协同工作解决问题;

       3,优势:

           1,构建的软件能够适应用户需求的不断变化;

           2,直接利用面向过程的方法的优势而避开其劣势;

              1,大的方面是面向对象的映射,小的方面还是可以应用面向过程的方法;

             

5,c 语言的加强:

    1,当面向过程方法论暴露越来越多的缺陷的时候,业界开始考虑在工程项目中引入面向对象的设计方法,而第一个需要解决的问题就是:

       1,高效的面向对象语言,并且能够兼容已经存在的代码:

 

    2,c 语言和 c++ 并不是对立的竞争关系;

       1,c++ 是 c 语言的加强,是一种更好的 c 语言;

       2,c++ 是以 c 语言为基础的,并且完全兼容 c 语言的特性;

       3,学习 c++ 并不会影响原有的 c 语言知识,相反,学习 c++ 可以让我们学习到更多的软件设计方法;

      

6,学习 c++ 的优势:

 

    1,c++ 天生支持 c,所以保持了过多低级语言的特性;

    2,对 c++ 进行剪裁,没有低级的以及面相过程的语言特性,得到 java 语言,更纯正的面向对象语言,语法上也更简单、更易掌握;但是 java 是半编译语言,需要虚拟机来运行,使得其效率比 c/c++ 要低很多;

    3,微软想得到 java 而不得,于是开发了 c# 语言,语法和运行机理上面几乎     和 java 一模一样,因此 java 和 c# 是竞争对手,优势劣势差不多的;缺陷都是运行效率低、半编译;

    4,语法特性好、开发效率高、比较简单,编写程序执行效率高,于是诞生了 d         语言;

    5,java 是半编译型的,有一个编译过程,编译完成之后来运行,运行效率又不高;好用、开发效率高、不需要编译、直接写了就可以运行,于是 javascrip和 actionscript 等脚本语言诞生了;

         

7,为什么要为以后学习其他语言做准备?

    1,现代软件产品架构图:

 

       1, 适用于各种类型的软件产品,包括嵌入式产品;

       2,硬件层:

           1,对于现在的系统而言,肯定需要硬件层的支撑,所以在当代软件产品架构图的最下面一定是硬件层;

       3,操作系统和驱动程序:

           1,一般而言用 c 语言完成的,其天生用来写操作系统;

       4,操作系统抽象层:

           1,这一层可有可无、非必须,但是移植性好的软件产品一定需要这一 层,其把操作系统提供的接口(函数)利用 c++ 的面向对象的特性做一层封装,封装之后再在这一层的基础上来设计应用程序  的框架,这样如果我们的产品需要移植到新的操作系统之上,我们只需要重新更改操作系统抽象层,在这之上的软件层都不用更改了;

       5,应用程序框架层:

           1,自己开发;

       6,功能模块:

           1,在应用程序框架层之上开发功能模块;

       7,用户界面和扩展模块;

 2,上面的 c 语言族中的每种语言基本上都会涉及到;

   

8,商场收银系统架构图示例:

 

    1,java 虚拟机某种意义上是操作系统抽象层;

    2,这个简单的系统用了很多种语言写而没单独用 c/c++ 语言写,是因为后期维护有问题;

    3,后期商场活动等原因要跟新系统,可以利用跟新模块实现,通过服务器、脚本等来实现;

   

9,现代软件产品的特性:

    1,系统一般是由多种语言写成的;

    2,系统架构的目标是拥抱用户需求的变化;

    3,系统拥有较好的移植性;

    4,系统能够方便的部署和更新;

       1,另一个商家也需要这个收银系统,则只用很小的修改就可以了,在更短的时间、创造更多的价值;

    5,操作系统的修改和驱动程序的开发在现代软件产品中占据的比重越来越小;

       1,驱动程序也是一种类型的程序,没有什么特别的地方;

      

10,学习 c++ 的意义:

    1,c++ 是一种更强大的 c,通过学习 c++ 能够掌握更多的软件设计方法;

    2,c++ 是 java/c#/d 等现代开发语言的基础,学习 c++ 后能够快速掌握这些语言;

    3,c++ 是各大知名软件企业挑选人才的标准之一;

   

11,小结:

    1,所有的软件系统都是为了满足用户的需求而开发的;

    2,对于一个开发团队而言,在短期内开发出用户满意的软件系统是其核心竞争力的体现;

    3,对于一个软件开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现;

    4,对于一个架构师而言,掌握各种语言的优势并合理运用到系统中,由此简化系统开发,是其核心价值的体现;

 



推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
author-avatar
执子之手2502891083
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有