又要头秃?2020年七大AI编程语言大盘点
作者 | Claire D
译者 | 苏本如,编辑 | 伍杏玲
来源 | CSDN(ID:CSDNnews)
人工智能已成为我们日常生活不可或缺的一部分,它被广泛地应用到几百种实际场景中,极大地便利人们的工作和生活。
随着近年来的发展,人工智能促进企业的发展,这该归功于底层编程语言核心的改进。
随着人工智能的蓬勃发展和编程语言的持续改进,对高效、熟练的程序员和工程师的需求激增。虽然有很多编程语言可以让你在人工智能上开发领域轻松起步,但是没有一种编程语言可以成为人工智能编程的“一站式”解决方案,因为每种编程语言都有自己的独特之处。目的不同,对语言的要求也会不同。
接下来,我将列出一些最受欢迎的人工智能编程语言,一起看下:
Python
Python是有史以来最强大的编程语言。——Pau Dubois
Python诞生于1991年。据一项民意调查显示,超过57%的开发人员更愿意选择Python,而不是C++作为开发人工智能解决方案的编程语言。Python易于学习,为程序员和数据科学家们提供了一个更轻松地进入人工智能开发世界的入口。
Python是一个关于程序员需要多少自由的实验。太多的自由,会导致没有人能读懂别人的代码;太少的自由,会伤害到语言的表现力。——Guido van Rossum
使用Python,你不仅可以获得优秀的社区支持和大量的库,还可以享受编程语言提供的灵活性。Python最有可能让你受益的一些特性是:平台独立性和可以用于深度学习和机器学习的广泛框架。
使用Python编程的乐趣应该是看到简洁、可读性强的类,这些类使用简洁而清晰的代码(而不是一堆无聊至死的琐碎代码)完成了大量的操作。——Guido van Rossum
下面是一段Python代码的示例:
Python代码示例片断
Python的一些最受欢迎的库,列表如下:
TensorFlow,用于解决机器学习的工作负载和使用数据集问题。
scikit-learn,用于培训机器学习模型。
PyTorch ,用于计算机视觉和自然语言处理。
Keras,作为高度复杂的数学计算和操作的代码接口。
SparkMLlib,类似于Apache Spark的机器学习库,使用算法和实用程序等工具使得机器学习对每个人都可以很轻松。
MXNet,作为Apache的另一个库,用于简化深度学习工作流。
Theano,作为定义、优化和评估数学表达式的库。
Pybrain,用于强大的机器学习算法。
此外,对GitHub存储库贡献的分析结果显示,Python已经超越Java,成为第二大最受欢迎的编程语言。实际上,Stack Overflow认为它是“增长最快”的主流编程语言。
图源:Octoverse
适合初学者的Python课程:
3个供初学者学习的免费Python课程:2020版
https://hackernoon.com/3-free-python-courses-for-beginners-2020-edition-j7c23y3u
hackernoon.com网站提供的最好的免费Python课程,如果你想扩展你的Python知识,那么请来这里。
Python训练营:学习Python语言和编码的培训营
https://www.udemy.com/course/complete-python-bootcamp/?LSNPUBID=JVFxdTr9V80&ranEAID=JVFxdTr9V80&ranMID=39197&ranSiteID=JVFxdTr9V80-lB6TwxSdouentAk36.qjmw
这是Udemy上学习Python编程语言的最全面、最直接的课程!
Java
一次编写,到处运行。
Java被认为是世界上最好的编程语言之一,过去20年大伙的使用证明了这一点。
Java编程语言具有高度的用户友好性、灵活性和平台独立性,它已经以各种方式被用于人工智能的开发当中,以下是一些例子供你了解:
TensorFlow
TensorFlow支持的编程语言列表也包括带有API的Java。它对Java的支持不像其他完全支持的语言那样功能丰富,但它已经存在,并且正在以很快的速度得到改进。
Deep Java Library
由Amazon构建,使用Java来创建和部署深度学习能力。
Kubeflow
Kubeflow用于在Kubernetes上轻松部署和管理机器学习堆栈,提供现成的机器学习解决方案。
OpenNLP
Apache的OpenNLP是一个用于自然语言处理的机器学习工具。
Java机器学习库
Java ML为开发人员提供了几种机器学习算法。
Neuroph
在Neuroph GUI的帮助下,Neuroph使得使用Java开源框架设计神经网络成为可能。
如果Java有真正的垃圾回收,那么大多数程序在执行完后都会把自己从内存中删除。——Robert Sewell
Java代码的示例片断如下:
Java代码的示例片断
适合初学者的Java课程:
供初学者在线学习的五个最好的Java编程课程
https://javarevisited.blogspot.com/2018/05/top-5-java-courses-for-beginners-to-learn-online.html
如果你是一名计算机学科的毕业生,或者是想学习Java并寻找一些很棒的资源的人,那么请来这里吧。
R语言
R语言是由Ross Ihaka和Robert Gentleman开发,1995年推出第一个版本。目前它由R开发核心团队维护。R语言是S编程语言(以统计和绘图为目的)的一种实现,它被用来辅助开发统计软件和数据分析。
R语言被开发人员大量地用于人工智能编程,主是是因为它具有以下两个特点:
R语言擅长处理大量数据的基本特性,相比带有未经优化的NumPy包的Python语言来说,更有优势。
使用R语言,你可以以各种编程模式工作,如函数式编程、矢量计算和面向对象编程。
R语言可供使用的一些AI编程包有:
Gmodels,提供了用于模型拟合的多个工具的集合。
Tm,作为一种文本挖掘应用的框架。
RODBC,作为R语言的ODBC接口。
OneR,用于实现One Rule机器学习分类算法,适用于机器学习模型。
R语言因其如下特点/功能,在数据挖掘人员和统计人员中被广泛采用:
各种各样的库和包,以扩展其功能。
积极支持的社区。
能够与C、C++和FORTRAN一起工作
多个软件包帮助功能扩展。
支持生成高质量的图形
一个有趣的R语言应用例子:
使用R语言制作2019新冠肺炎(Covid-19)交互式地图:
https://www.r-bloggers.com/covid-19-interactive-map-using-r-with-shiny-leaflet-and-dplyr/
使用R语言制作2019新冠肺炎(Covid-19)交互式地图
Prolog
Prolog是Programming in Logic(逻辑编程)的简称,Prolog语言最初出现于1972年。它为人工智能开发,特别是自然语言处理提供了一个令人兴奋的工具。Prolog语言最适合创建聊天机器人,ELIZA是用Prolog创建的第一个聊天机器人。
第一个成功的聊天机器人,图源medium
要理解Prolog,你必须熟悉指导它工作的一些基本术语:
Facts(事实)定义了真实的声明。
Rules(规则)定义了有附加条件的声明。
Goals(目标)定义了根据知识库确定的报表提交的位置。
Queries(查询)定义如何使你的声明真实,以及如何对事实和规则进行最终分析。
Prolog提供了两种实现人工智能的方法,这两种方法已经在实践中使用很长时间了,并且在数据科学家和研究人员中广为人知:
符号方法(Symbolic Approach):包括基于规则的专家系统、定理证明、基于约束的方法。
统计方法(Statistical approach):包括神经网络、数据挖掘、机器学习等。
Lisp
用来创建一个有着N维输入和M个输出单元的单层感知器的Lisp代码
Lisp是List Processing的简称,它是仅次于Fortran的第二古老的编程语言。Lisp被称为人工智能的创始之父之一,由约翰·麦卡锡(John McCarthy)于1958年创建。
Lisp是一种语言,它能让你做到别人告诉你不可能做到的事情。——Kent Pitman
Lisp作为一种实用的面向数学符号处理的编程语言,它很快成为开发人员的人工智能编程语言的选择。Lisp如下的一些特性,使其成为机器学习人工智能项目的最佳选择之一:
快速原型创建
动态对象创建
垃圾回收
灵活性
随着其他与之竞争的编程语言的重大改进,Lisp特有的一些特性也应用到其他语言中。采用了Lisp开发的一些著名项目包括Reddit和HackerNews。
就Lisp而言,你知道它是世界上最美丽的语言,至少在Haskell出现之前是这样。——Larry Wall
Haskell
Haskell发布于1990年,以著名数学家Haskell Brooks Curry的名字命名,它是一种纯函数式和强静态类型的编程语言,经常和延迟计算和较短的代码搭配使用。
Haskell被认为是一种非常安全的编程语言,与其他编程语言相比,它在错误处理方面提供了更大的灵活性。在Haskell中很少发生错误。即使它们确实发生了,大多数非语法错误都是在编译阶段,而不是运行时捕获的。Haskell提供的一些功能包括:
强大的抽象能力
内置的内存管理
代码可重用性
易于理解
SQL、Lisp和Haskell是我见过的仅有的编程语言,在这些语言中,人们花在思考上的时间比写代码的时间要多。
Philip Greenspun
Haskell的特性有助于提高开发人员的工作效率。Haskell与其他编程语言非常相似,只是由一个小众的开发团队使用。抛开这些挑战不谈,Haskell可以证明它与其他竞争语言一样适合人工智能开发,并且越来越多地被开发社区采用。
Julia
Julia是一种高性能、通用的动态编程语言,适合创建几乎任何应用程序,尤其非常适合数据分析和计算科学。能够与Julia一起工作的各种工具包括:
流行的编辑器,如Vim和Emacs。
集成开发工具,如Juno和Visual Studio。
Julia源代码的目录结构
Julia提供的下列特性,使其在人工智能编程、机器学习、统计和数据建模中成为一个不可或缺的选项:
动态类型系统
内置的包管理器
能够进行并行和分布式计算
宏和元编程能力
支持多个调度
对C语言函数的直接支持
Julia是为消除其他编程语言的弱点而构建的,它可以与TensorFlow.jl、MLBase.jl、MXNet.jl等工具集成,用于开发机器学习应用程序,这些工具充分利用了Julia提供的可伸缩性。
Google Trend – Julia的用户数随时间变化图:
图源:Google trends
2019Julia开发大会的介绍视频:https://www.youtube.com/user/JuliaLanguage
有了以上几种人工智能编程语言可供选择,人工智能工程师和科学家们可以选择适合他们项目需要的语言。每一种人工智能编程语言都有各自的优缺点。
随着这些语言的不断改进,很快人工智能的开发就会变得比现在更加轻松和高效,更多人就可以加入到这股创新浪潮中来。好的社区支持使得新人们的生活更加美好,社区对扩展计划的贡献使每个人的编程工作生活更加轻松。
原文链接:
https://towardsdatascience.com/top-programming-languages-for-ai-engineers-in-2020-33a9f16a80b0
【end】◆精彩推荐◆推荐阅读百万人学AI:CSDN重磅共建人工智能技术新生态清华学霸组团的工业AIoT创企再获数千万融资:玩家应推动在边缘 AI 芯片上跑算法阿里文娱测试实战:机器学习+基于热度链路推荐的引流,让对比测试更精准另一种声音:容器是不是未来?1 分钟抗住 10 亿请求!某些 App 怎么做到的?| 原力计划探索比特币独特时间链、挖矿费用及场外交易的概念你点的每个“在看”,我都认真当成了AI
相关文章:

I.MX6 bq27441 driver hacking
/************************************************************************** I.MX6 bq27441 driver hacking* 声明:* 本文主要是记录对电池计量芯片bq27441芯片驱动注册过程进行代码跟踪。** 2016-2-…
PHP5.5的一点变化
之前一直使用eAccelerator,参考:PHP安装eAccelerator 注意PHP5.5以后暂时不能使用eAccelerator 原因:其中一个我知道的是eAccelerator中使用了: php_register_info_logo(EACCELERATOR_VERSION_GUID, "text/plain", (un…

虚拟机的操作系统的安装
虚拟机的操作系统的安装启动虚拟机进入下一步,按Enter键开始安装。按F8许可协议选则C创建分区再按C,将未划分的分区划分按ENTER继续,选择NTFS文件系统格式化磁盘分区写上姓名和单位,单击下一步直接点击关闭<?xml:namespace pr…
2020,国产AI开源框架“亮剑”TensorFlow、PyTorch
「AI技术生态论」 人物访谈栏目是CSDN发起的百万人学AI倡议下的重要组成部分。通过对AI生态专家、创业者、行业KOL的访谈,反映其对于行业的思考、未来趋势的判断、技术的实践,以及成长的经历。 2020年,CSDN将对1000人物进行访谈,形…

Centos下部署Solr 搜索引擎
一、环境准备:系统环境:centos 6.5tomcat 7.0.47jdk-7u9solr-4.7.0首先将软件包上传到/tmp目录下1、 jdk安装[rootsvn-server /]# cd /tmp/ [rootsvn-server /]#tar zxvf jdk-7u9-linux-x64.tar.gz[rootsvn-server /]#mv jdk1.7.0_09 /u…

Redis源码分析-TCMalloc
redis很多地方都在调用zmalloc函数 zmalloc在这里定义zmalloc.c void *zmalloc(size_t size) {void *ptr malloc(sizePREFIX_SIZE);if (!ptr) zmalloc_oom_handler(size); #ifdef HAVE_MALLOC_SIZEupdate_zmalloc_stat_alloc(zmalloc_size(ptr));return ptr; #else*((size_t…
让AI训练AI,阿里和浙大的“AI训练师助手”是这样炼成的
不久前,人力资源社会保障部发布了一种炙手可热的新职业:AI训练师。没想到,浙江大学与阿里安全的人工智能训练师马上创造出一个 “AI训练师助手”,高效打造AI深度模型,应对海量应用场景的增加,让AI训练模型面…

用 Navicat for Oracle 管理 Oracle10g/11g 数据库
Navicat for xxx 是一个优秀的数据库管理客户端,有 MySQL、Oracle 等版本。建议大家最好用 Enterprise 版本,功能全面一些,但较之于免费的 Lite 版,企业版可是要花银子买的。 安装 Navicat for Oracle 后,首先需要建一…

借一个同事的经历,谈一谈程序员的成长
一个很久之前的同事,今天找我,想让我帮他推荐下,去我们公司来工作,因为认识很久,就和他说了说公司的现状,也询问了一下他的状况,寒暄几句,让他下周等面试。 这位同事是之前一起做游戏…

select,epoll,poll比较
select,poll,epoll简介 select select本质上是通过设置或者检查存放fd标志位的数据结构来进行下一步处理。这样所带来的缺点是: 1 单个进程可监视的fd数量被限制 2 需要维护一个用来存放大量fd的数据结构,这样会使得用户空间和内…
华为开发者大会HDC.Cloud技术探秘:云搜索服务技术实践
搜索是一个古老的技术,从互联网发展的第一天开始,搜索技术就绽放出了惊人的社会和经济价值。随着信息社会快速发展,数据呈爆炸式增长,搜索技术通过数据收集与处理,满足信息共享与快速检索的需求。基于搜索技术…

从今天开始,自己做SEO。
1.购买了一点黑链。开始优化之路。 2.更改了关键词,描述。 3.整理了友情链接。 4.购买了VPS服务器:点击查看 转载于:https://www.cnblogs.com/zq535228/archive/2010/06/09/1754986.html

Elasticsearch2.2.0配置文件说明
为什么80%的码农都做不了架构师?>>> 官方配置文档 https://www.elastic.co/guide/en/elasticsearch/reference/current/setup.html 配置详解 # ---------------------------------- Cluster (集群配置)----------------------…

各种类型的字节数
int类型比较特殊,具体的字节数同机器字长和编译器有关。如果要保证移植性,尽量用__int16 __int32 __int64吧,或者自己typedef int INT32一下。 C、C标准中只规定了某种类型的最小字节数(防止溢出) 64位指的是cpu通用寄…
154 万 AI 开发者用数据告诉你,中国 AI 如何才能弯道超车?| 中国 AI 应用开发者报告...
曾经,软件吞噬世界。现在,AI 吞噬软件。作者 | 屠敏数据 | 杨阳、刘学涛可视化&策划 | 唐小引出品 | CSDN(ID:CSDNnews)从三年前年薪 25 万只是白菜价,到去年华为以年薪最高达 201 万招揽顶尖应届毕业生…

中国移动用户能不能用WCDMA网?(世界杯与通信2)
到南非有移动的用户也有联通的用户,联通的网络快这是肯定的,不过联通的通话价格也比移动的高,就有人希望拿着移动的号去南非,最好也能享受WCDMA的网络速度,这样就是两全其美了,对于这个问题,在国…

平安陆金所-点金计划,简直是骗子行为。
陆金所点金计划,让人防不胜防。平安保险,骗子中的教练。 转载于:https://www.cnblogs.com/hthf/p/5205921.html
深度分析define预处理指令
#define语句 预处理 宏替换 --以上出自《C语言入门经典(第四版)》 #和## --出自《C语言程序设计:现代方法(第2版)》 #undef取消定义 --以上出自《21天学通C语言(第6版)》

建立YUM服务器CENTOS
1 ,YUM Client:要保证安装有如下软件包:yum-3.2.19-18.el5.centosyum-metadata-parser-1.1.2-2.el52 ,YUM Server:要保证安装有如下软件包:yum-3.2.19-18.el5.centosyum-metadata-parser-1.1.2-2.el5yum-fastestmirror…
数据库设计的10个最佳实践
作者 | Emily Williamson译者 | 孙薇,责编 | 屠敏出品 | CSDN(ID:CSDNnews)以下为译文:数据库是应用及计算机的核心元素,负责存储运行软件应用所需的一切重要数据。为了保障应用正常运行,总有一…

十进制转化为十六进制分割高低位
2019独角兽企业重金招聘Python工程师标准>>> 将十进制1000,转化为十六进制,则为0x03E8,如果得到高低位,high0x03,low0xE8 BYTE high;BYTE low;int temp_data1nWeightValue;highBYTE(temp_data1 >>8);int temp_data2nWeightV…
Nginx内存池--pool代码抽取(链表套路)
ngx_palloc.c文件 ngx_palloc_large_hm是自己写的代码没有nginx原版的ngx_palloc_large写的好,细节要品味才会发现nginx的美 nginx链表的套路,正好是两种插入“从前插”和“从后插”,有些许差别 #include <stdio.h> #include <std…

阿里再次主办大数据世界杯, KDD Cup2020正式开赛
记者从国际计算机科学顶会ACM SIGKDD官网获悉,KDD Cup 2020今日正式开赛,本届比赛由阿里巴巴达摩院主办。随即,阿里公布了认知智能、曝光偏差两大赛题方向,并向全球参赛者开放最大规模的商品多模态数据集。阿里也是两次举办该赛事…

grep 正则表达式
grep 正则表达式来源:http://blog.rednet.cn/user1/213546/archives/2007/35795.html以下为整理的grep 正则表达式的大部分功能,详细参见man grep: 要用好grep这个工具,其实就是要写好正则表达式,所以这里不对grep的所有功能进行实例讲解,只列…

Mybatis缓存机制理解及配置
2019独角兽企业重金招聘Python工程师标准>>> 1. Ehcache EHCache是来自sourceforge(http://ehcache.sourceforge.net/)的开源项目,也是纯Java实现的简单、快速的Cache组件。EHCache支持内存和磁盘的缓存,支持LRU、…

浅谈无缓存I/O操作和标准I/O文件操作区别 (转载)
首先,先稍微了解系统调用的概念: 系统调用,英文名system call,每个操作系统都在内核里有一些内建的函数库,这些函数可以用来完成一些系统系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的…

Android之ListActivity(一):布局与数据绑定
Android中的列表,当然也可以用ListView来完成所需要的功能,用法是一样的。 废话不说,来关键的。 LiveActivity本身继承了关于List操作的众多接口,我们可以方便的重写这些操作中需要的方法来实现自己需要的功能。 如果要用ListActi…
用于单图像超分辨率的对偶回归网络,达到最新SOTA | CVPR 2020
作者 | Yong Guo, Jian Chen等译者 | 刘畅出品 | AI科技大本营(ID:rgznai100)通过学习从低分辨率(LR)图像到高分辨率(HR)图像之间的非线性映射函数,深度神经网络在图像超分辨率(SR&a…

老生常谈,joomla wordpress drupal,你该选择哪个CMS?
本人从事Joomla建站多年,给客户建站都是用Joomla,所以我会极力推荐你选择Joomla? No No No,这样未免太Hard sale了。 虽然这是一个会经常被提到的问题,网上也有不少优秀的答案,但我还是想把自己的想法跟大家…
利用TCMalloc替换Nginx和Redis默认glibc库的malloc内存分配
TCMalloc的全称为Thread-Caching Malloc,是谷歌开发的开源工具google-perftools中的一个成员。与标准的glibc库的Malloc相比,TCMalloc库在内存分配效率和速度上要高很多,这在很大程度上提高了服务器在高并发情况下的性能,从而降低…