{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

为什么人工智能岗位有些招聘C/C++,有些招聘Python?到底哪门编程语言更重要?

WalkerXuWalkerXu 回答10 收藏1
问题描述:人人都说Python是最适合人工智能的编程语言,难道C++在人工智能中就毫无用处吗?它就不适合人工智能吗?为什么人工智能岗位有些招聘C/C++,有些招聘Python?除数学基础外,到底哪门编程语言重要?哪门是核心语言?
收藏问题

10条回答

sevi_stuo

sevi_stuo

回答于2022-06-22 19:07

C++属于研发工,Python属于装配工。

你要知道Python调用的那些库都应该是C++写的,没有C++写出基础库,那Python也无米可炊;

当然,你让研发工去搞装配,不是不行,但浪费了,而且Python是个非常优秀的胶水语言。尤其在试验过程中,可以降低成本。

说实话,如果不求深入研发,Python用用已有的C++库,够了。

评论0 赞同0
  •  加载中...
sean

sean

回答于2022-06-22 19:07

这个问题我有答案,顶我上去。

因为这两个岗位要干的活完全不一样。

第一个要求python和tensorflow说明整个工作主要在设计模型,训练模型,最后可能的输出形式是用模型离线算一批数据或者用GPU在服务器部署;所以不需要太多的C/C++工程能力。

第二个工作要求C/C++,特别有一条要在手机客户端部署,这个要求就高很多了,不只是模型训练,你还需要在手机上实现模型,手机上可没有CUDA生态的GPU,主要是一些协处理器,没法直接上tensorflow。所以此时,比较好的方案就是用C/C++来进行CPU编程实现模型。

评论0 赞同0
  •  加载中...
ideaa

ideaa

回答于2022-06-22 19:07

人工智能,就是让机器可以像人一样思考问题。典型的场景有:图像识别、自然语言处理、语音处理、动态物体跟踪、可运动的机器人,等等。

智能,就是人类可以很容易作出判断,但是却根本描述不清楚为什么是这样。比方说,一张人脸,人类盯上不超过一秒钟,然后几乎不需要思考,就立刻认出这是谁。但是人类却根本无法用文字作出该脸特征的描述。读文章,有“语感”,听音乐,有“乐感”。为什么某首乐曲听上去悲伤?感觉,乐感,真的说不清楚悲伤的原因。开车,也是讲“感觉”。只有学驾照的时候,教练才教很多公式,教很多特殊点(雨刷铆钉,右边玻璃的右下角等等)。AlphaGo为什么是人工智能?对了,就是“棋感”。

而早期的深蓝下国际象棋,胜过人类,就不能叫智能。因为它基本上是以穷举为主,深蓝的每一步操作都是精确可描述的,是“可知”的,是机器思维而不是人类思维。相反,AlphaGo就连开发者都搞不清楚这机器是怎么运作的。它就是个“黑匣子”。它模拟的是人的“感觉”而不是一堆人类发明的精确围棋算法公式。感觉是无法用语言描述的。

简单算术运算也不是智能,因为人类列算式计算的每一步都是可精确描述的。同样电子计算器在算术运算时的每一个步骤同样也是如此(虽然它用的是二进制计算,数字电路,泰勒级数展开等与人类不太一样的方法)。

人工智能要模拟人的“感觉”,就必须训练,也可以叫做“学习”。比如让它区分猫和狗,就给它几万张猫和狗的图片,让它自己去慢慢学习。在学习前,人类只需要告诉它某张图是猫或是狗,其他信息一概不用多说。比如完全没有必要提醒它有胡子的就是猫。

从目前的技术来看,训练是非常考验技术和花费时间的。以致于大家一提到人工智能,就是以为在说机器训练(机器学习)

训练是个反复迭代的过程,就是说需要不断地探索,此路不通,就换一条路,非常艰辛。现实中,往往是不断地调整神经网络的参数,不断地对比训练结果。多数时候还要数据预处理,以及辅助传统的机器学习、传统图像处理、模式识别等技术。

那么,上述过程,谁最擅长?现在公认的就是Python

Python是解释性语言而,弱类型,用起来很方便,开发效率大大高过C++、JAVA等语言,而且有很多现成的机器学习、深度学习、科学计算库,这些都是它作为人工智能语言的优势。AlphaGo的顶层代码大部分是用的Python,AlphaGo的成功,也对Python起了很大的推动作用。

数据的训练还可以细分为两类。一是前期的算法探索和小样本数据训练,二是后期正式的大规模数据训练。比如实验的1万个样本,可能要训练1个小时才能得到理想的网络。而最终的100万个样本时,可能就需要100个小时。这已经很长了。这时候,C++的作用就体现出来了。可以用C++花很多的人力成本投入去优化算法。概括说来就是,前期用Python进行算法探索,待算法和相关参数确定,后期用C++重写算法实现生产环境的真实的正式的训练

训练是人工智能的很难的一部分,但是绝对不是人工智能的全部。人工智能还包括前期的数据获取、数据预处理和后期的实际应用

训练得到的只是一个巨大的神经网络,有了它以后就可以预测了。预测所需要花的时间远远短于训练。比如训练花100个小时,而用训练好后的网络预测可能只需要5秒。可别小看这5秒的短时间。我们仍然有必要优化,比如是否可以1秒就完成,0.1秒完成?试想,设计一个无人驾驶系统,那可是分秒必争啊!稍微反应迟缓就可能酿成事故。

这时候,C++的作用又一次体现出来了

这还没完。人工智能的载体可能会很精简。比方说嵌入到人体,嵌入到汽车,这么小的系统,不是Python的天下。还有机器人,是可以运动的,如何驱动机器动,这不还是C++的强项嘛。

另外,还涉及到前期的数据采集和预处理。比如图像、音频、视频,需要实时感知,包括必要的预处理(比如灰度化、关键部位快速定位)。这就要用到音频视频的高效处理,数据通信,物联网等技术。这不还是C++的强项吗?

总之,在人工智能开发的整个过程中,Python主要处理算法模型部分,而具体的前期数据获取和后期与外部设备部分的交互则可以用C++来实现

说个最夸张的例子。假如我们已知X要预测Y,Python做的工作就是找到Y=aX+b这测关系式,特别是a和b的具体数值最值钱。而除此之外的所有工作,从数据采集,软件架构设计,数据库设计与读写,后台运作,分布式处理一直到前端展示可能都是用的Python以外的技术(比如C++)来实现。Python的工作仅仅是得到a和b,仅此而已!

不过,从目前来看,人工智能最主要和最难的部分依然是由Python来实现的

评论0 赞同0
  •  加载中...
luodongseu

luodongseu

回答于2022-06-22 19:07

py用来训练、测试、验证模型,c++用来部署模型。拿mxnet来说,开发的时候,用py-mxnet来训练测试模型,当模型达到性能和速度需求后,用mxnet的c动态库来deploy部署,可以编译不同硬件平台的动态库。

评论0 赞同0
  •  加载中...
hikui

hikui

回答于2022-06-22 19:07

其实人工智能可以用到很多种语言,不只是Python和C/C++,还有Java,以及lisp,prolog.不过目前来看,还是Python和C++用得更多。

而Python其实是人工智能的首选语言,而且想要入门Python比其他语言都会容易些。当然了,不是说C++在人工智能中就毫无用处了,而是相比Python,它更不适合用在人工智能上。为什么?

看看它的缺点:1.遵循自上而下的方法,语言比较复杂;2.仅仅是更适合实现特定系统或者是算法核心/基础。

而Python呢?优势更多:1.开发速度明显比C++更快;2.有各种各样的库和工具;3.它面向对象;4.它还支持算法测试。

评论0 赞同0
  •  加载中...
Nekron

Nekron

回答于2022-06-22 19:07

C++是所有语言的基础,现在很多编程语言都是由此衍生过来的,因为精通C++太难了,其语言的繁琐性,很多人都在半路上就放弃了,所以才出现了之后的很多简洁版的编程语言。

所以就当前的学习趋势来看,很多人都会选择Python,不仅仅是因为Python具有强大的数据库,对人工智能技术有着更多的优势,还因为相对于C++语言来说,是简单容易入门,容易上手的!很多零基础的同学也是可以学会的!

评论0 赞同0
  •  加载中...
awokezhou

awokezhou

回答于2022-06-22 19:07

这么说吧,C++学精了,上手其他编程语言会简单许多,有很多优势,python主要是上手简单,但是精通也不容易。程序语言也没有哪个更重要,只有哪个更适合。人工智能的开发的核心库一般都也是C++写的,只是提供了python程序语言接口,因为它更便捷。在开发过程中遇到性能调优的问题时还是会绕回到C++的。

评论0 赞同0
  •  加载中...
JackJiang

JackJiang

回答于2022-06-22 19:07

首先,什么是人工智能要搞清楚。机器学习 深度学习不能代替人工智能。第二,用于人工智能的语言很多,lisp,prolog,smalltalk是传统人工智能语言,forth, C/C++,fortran,Cobol,JAVA,Python,...都可以并实际用于人工智能。第三 关于机器学习,C/C++是Python算法库的根。算法实现需要C/C++。应用可以用Python.因此,真正搞机器学习,还是需要C/C++。搞人工智能需要的知识更多。lisp,prolog也往往需要C/C++来实现。我自1983年进入人工智能领域。几十年没有多少同行。去年冒出那么多专家。懵了。第四,我本人不赞成Python是最适合人工智能的语言。请问lisp,prolog,smalltalk放哪?可解释推理。Python怎么实现?

评论0 赞同0
  •  加载中...
Chao

Chao

回答于2022-06-22 19:07

这个主要看这个岗位招收的人员是需要进行哪个层次的编程工作。

C++在继承了C语言的优点的同时加入了面向对象的内容。所以C++语言不但可以构建效率较高的底层具体的算法实现,又有良好的扩展性和代码重用性。所以一般在追求高效运行的底层算法中,我们一般使用C或C++来进行构建。

python语言作为一种解释性语言,运行效率比较低。但是python上已经具有了大量构建好的人工智能算法库。所以python语言更适于构建上层框架。这样不但构建效率高,容易调试。因此在上层算法中通常使用python语言构建应用层框架。

通过两种语言的配合方式充分利用了两种开发语言的长处和有点,也利于保持原有语言类型上所进行的原有开发。

因此,在人工智能岗位的招聘中,大一些的公司都会分开来进行招聘。需要底层算法实现的招熟悉C或C++的人,需要高层算法实现的招熟悉python的人。

评论0 赞同0
  •  加载中...
trilever

trilever

回答于2022-06-22 19:07

平常训练使用python,真正上线的时候用cpp。因为如果用python环境是个问题,一台机器一台机器的搭建paddle or tensorflow太麻烦了,况且效率也不高。将预测的代码写成cpp的,只把依赖的库拷贝出来放到每台机器上就行了。

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<