分享

为什么有些算法岗位,需要用C++而不是python?

 山峰云绕 2019-03-07

从事软件开发多年,从理论上讲算法适用于任何的编程语言,算法在实际工作过程中就是为了工作效率,如果什么事情都是按照穷举法或者别的串行的方式效率会太低了,算法能够极大程度的提升效率,算法其实就是执行一系列的指令在规定的时间内拿到输出结果,从这点看时间是存在边界的,要讲求时效性。

说到效率性方面问题就会涉及到编程语言的执行效率,如果不是解决实际的问题,单纯比较编程语言执行的效率没有太大的意义,一件事如果用两种编程语言都能搞定的情况下,谁用的时间最短而且消耗的精力最小就采用谁,说到python语言在人工智能里面算是明星编程语言了,有人称之为胶水语言,能够把各种编程语言组合在一起工作,现在很多人喊着学习人工智能搞定python就能差不多了,人工智能这个大学科够我们研究一辈子的,只不过入口的编程语言采用的python,相当于C语言里面的主函数入口,至于里面怎么实现未必都是采用python完成。

现在看多算法岗位上要求的编程语言基本上C/C++两种,一旦涉及到算法涉及到非常复杂的运算,就要讲求执行效率,在编程语言里面机能有面向对象编程机制,又能调用底层的实现模块,C++是非常合适的编程语言,现在都是在喊着底层的编程语言不吃香了,人工智能这块又将推动一大块,但是入门的门槛提升了许多,普通的c++工程师很难胜任这种职位,既懂得C++又能玩转高级算法的高级人才是现在各大企业争抢的重点。

所以讲学了python只能人工智能的敲门砖,真正底层涉及到复杂的算法,还得底层语言更加靠得住,在上层调用形式上还是采用python方式,底层的优化还是离不开C/C++,现在算法岗位属于非常稀缺的职位,据说一个博士毕业的高级算法人才,不是很懂编程的都能年薪60+了,可见这个职位是多么的稀缺。

对于一个真正的技术人员,不要迷信什么编程语言有多么的厉害,关键看解决实际问题的能力,人工智能也好,编程技巧也罢主要还是为了解决实际问题,最终落实到解决实际能力,也不要过份在自己设置界限一定要学好哪种编程语言,语言语法特性再漂亮距离解决实际问题很遥远其实意义也不是很大。落实到具体的程序员,一个程序员要的就是解决问题能力以及实际执行力,不要沉迷于是中级工程师还是高级工程师,概念性的炒作都不如解决实际问题有用。

希望能帮到你。

https://www.toutiao.com/a6665148175352856840/

谢邀。作为一名程序员,我来回答你问题。

C++和Python都可以算得上是面相对象的编程语言。他们都各自有各自的优势。

C++他是在C语言的基础上进行了改进,增加了一些面相对象的思想上去,所以用它一般适合开发一些底层性的东西。例如,我们常用的windows系统,他底层就是汇编语言,和C与C++配合使用来开发的。C++有一个特点,他有指针这个概念在里面,指针用的好绝对是大杀器,但是如果用的不好那就是大悲剧了。

Python呢,他的语法非常简单。可以说,这是目前为止最容易学习上手的语言了。他的底层库支持很多人工智能的一些技术,所以自从阿尔法狗打败李世石之后,人类进入了人工智能时代,可以说Python成为了放下最火的编程语言,受到了很多人的广泛青睐。

而刚刚题目时候说的一些车载之后的开发,其实这个东西比较偏向于底层的开发,所以python在应用层开发还好,如果跑到了底层系统层面的开发,他的优势略显不足,而这个时候C++的优势就发挥出来了。他比较适合于底层系统的开发,所以这个时候用C++比用python开发要好的多。

C/C++是比较底层的语言,可以对CPU/内存等计算机资源特别是硬件进行非常精细的控制,算法运算做到最精细自然要使用它们。

但是它们的优点自然也是他们的缺点,精细的操作自然需要精细的编程,精细的编程自然需要繁复的语言设定,比如什么是指针什么是指针函数什么是函数指针……等你搞清这些佶屈聱牙的概念,你大概也没有写代码的冲动了。更何况,你想写出高性能的代码,这些概念是必须精通的

python有一个很重要的特性,就是所谓的“胶水语言”,“胶水”的意思就是,它可以把不同语言编写的代码模块组合在一起,然后统一通过python去调用。其实绝大多数算法库都是使用C/C++编写,然后提供python的接口供用户使用,毕竟大部分人只需要知道怎么调用封装好的算法就好。但你要想实现自己的算法就必须会C/C++

打个不是很恰当的比方,python就像电视遥控器,C/C++就像遥控器里的电板,平时你想换换台,你只要按按钮就好。但是有一天你就是要个把画面旋转九十度的功能,而遥控器上没有这个功能,但是拆了遥控器电板插几个元件就能实现,你咋办?

c++是c语言发展得到的,比c语言功能更强,c++在中端与底层开发比较有优势,比如开发驱动程序,系统应用程序,网站通信系统,大型游戏开发等,都是使用c++开发,有人称“c语言或c++是标准编程”。

python是脚本语言,是用c语言开发的,它和c语言的复杂性相比之下,python简化了不少。虽然python算法扩展库众多,但是在单片机,终端开发python还是不能运行。



计算机视觉用opencv的话,c++用的比较多,所以计算机视觉算法工程师要求会c++

Python在ai算法应用的广的一大原因是,库多

而那些库,很多都是c,c++编写的,用Python封装起来

算法工程师不能流于表面调调api完事,如果要深度优化,需要自己重新写库或者修改库。至于为什么内部用c,c++,因为性能高啊,小数据量可能感受不出来,但ai大部分都是超大规模数据,c,c++的性能优势会体现的很明显



各有所长,Python有它的得到之处,C++亦是如此。还有啊,机器视觉不等于人工智能。视觉方向更多是偏向于图形学,计算机图形学什么的,C语言、C#、C++都是这方面的利器。



Python的许多算法包都是别人设计好的,你只要会用就行了,谈不上算法设计问题,比较方便,但是运行效率低点。在有些领域,需要开发特定算法,对效率有要求,那Python显然就不合适了。要具体应用了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多