C/C++培训
达内IT学院
400-996-5531
C语言是一门非常干净、高效的编程语言!它主要用于操作系统内核以及驱动设计,高性能并行计算,图形图像处理、音视频编解码等多媒体处理优化上,另外还有通信领域也往往用C,当然通信领域往往也被划分进嵌入式系统领域。
C++的出现源于Bjarne Stroustrup在写他一个项目时感觉C语言功能有限,使得它的设计会过于繁琐,所以它在C语言基础之上加入了面向对象的特性,使得在应用层,C++的API看上去更加简洁一些,而且C++本身具有名字空间这个概念(C语言也有,但C语言的名字空间是编程语言设计中已经固定好的),所以对于大型项目开发不少公司开始采用C++,这样接口重名的概率低了~
不过现在有更多更先进的编程语言兴起,C++的份额也在逐步下降。比如Java、Python等等。但是这些语言本身是解释执行的,所以效率比C++要低不少,但是这些运行时环境都提供了与C语言API的交互接口,所以可以把高性能计算交给C语言去做!这就是引入JNI的原因!如果你让Java、Python去计算一个1024x1024的矩阵乘法,估计没个1分钟算不好,即便是C语言也要好几百毫秒,所以此时可以直接用汇编,可以优化到100毫秒以内!C语言的特性就是能与汇编无缝兼容——既可以调用汇编写好的例程,又能直接内嵌汇编!这个是很多高级编程语言无法做到的~
所以说现在很多人说C语言程序员工作难找…其实恰恰相反,有技术门槛的程序一定基于C,这个是毋庸置疑的~不过我们看看TIOBE以及GitHub上C语言的排名也就能理解了~C语言最近两年都稳坐第2,比C++要好3个百分点!而GitHub上C语言也稳坐第9位!可见其热门程度并不低~
C目前一般指LinuxC,写驱动当然是老本行因为快嘛,而且Linux操作系统本身也是C写的,所以凡是用到Linux或者Linux内核的全得用C,比如Android操作系统,就是谷歌那部分工作,还有图形图像的编解码,还有路由器交换机,但注意不是单片机,那是51C和C完全不是一个东西,在应用领域方面,各种高性能的软件比如Nginx,Apache等服务器,MySQL等数据库都是C来实现的,C的应用领域依然很广,但是国内的软件行业都是上层较多,这些底层的牛B工作国内大多做不了,或者太浮躁没人做。C++从业者呢是必须会C基础的,当然未必懂LinuxC的各种库,主要还是面向上层,Windows上的叫winc++,和标准C++还是有区别的,主要做游戏和CS架构的win程序,目前界面多用Delphi和C#做了,因此主做游戏,而标准C++应用范围就广了去了,除了不做web网页几乎你想到的领域都做,很通用,可以做上面列举的C应用领域到机器学习领域。
在运行效率上,C语言程序略高于C++。大约在5%以下,可以忽略不计。C语言适合写小型程序,尤其适合单片机,比如洗衣机等家电控制程序。一般不使用C语言写大型和结构复杂的程序,因为C语言是函数式编程语言,规模一大很难组织。
而C++由于加入了类,很合适构建大型\超大型程序,比如动不动几十个G的网游。当然,写这些游戏时也可以加入其他语言,但一般都是以C++为主。
个人理解,C更贴近硬件,更加透明,CPP偏向应用,编译器和运行时做了一些工作。C倾向于模块和库的重用,CPP则可实现代码级别的重用。稳定,变化不频繁,接近硬件的部分适合用C开发。变化比较频繁,属于应用层面的适合用CPP开发。这只是大方向上的理解,具体的项目还是要看具体情况,团队C程序员为主,即便是偏应用的程序也可以用C来开发的,如果要应对变化,C编写稳定的那部分,变化部分绑定动态语言如lua等来实现。选择语言我认为主要的还是看团队选择,特别是骨干程序员的选择。
c和c++最大区别应该是:c面向过程,c++面向对象。虽然应用不同,但是他们是一个整体,一个是父,一个是子
c语言应用于底层开发,如实时操作系统,单片机程序开发,c++应用于顶层开发,例如一些APP开发,经典开发工具如VC++6.0。
另外c++是c的一个超集,是在c的基础添加了许多功能发展而来的,所以叫c加加。
c的应用领域,总结起来就两个方向:
一是与硬件打交道的领域,比如计算机的操作系统,比如嵌入式,再比如gpu编程的cuda和opencl也是c接口。总之和硬件打交道的都得c或c++来干。
二是对运行速度有严格要求的领域,比如图像处理,视频处理,音频处理。再比如现在炙手可热的机器学习,人工智能底层也全部都是c,再比如游戏,很多也是c++。再比如创造别的语言,比如Python是c写的,jvm也大多是c写的。
而且在这两个领域,c可以一直稳稳的占领,在各种编程语言风水轮流转的时代,恐怕只有c的地位是最稳的,无可替代。
以这两种语言来讲,两者是包含关系。C语言是基础,其主要任务是将一项小的功能转化成一个函数。因此其目称是小功能需求——流程图——一个函数。解决大点的任务,使用分解的思维方式,将大任务逐层分解成一个个可实现的小任务,称为结构化的程序设计。而C++语言主要涉化对象之间的关系,即构建大型应用系统的框架,主要体现在程序的整体结构上。因此C语言要求学习者有好的微观细节能力,而C++要求宏观的构架思想。只要是大的系统,尽量采用后者。
做个简单的比喻吧,有一些语言,比如basic,PLC语言只能建两三层高的房子,c语言可以建二三十层的房子,c++可以建三五百层的房子。
你平常用的豆浆机之类的小家电都是c语言设计的,你用的windows.office都是c++构建的。
还有很多很复杂的电子设备,没有c++根本设计不出来。
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved