这是知乎上的一个问题,大数据和AI与Java有什么关系呢?前者是高大上的数据和算法,后者是一种寻常的开发语言,它们是怎么联系上的呢~
说到大数据,不得不提到Hadoop,可以说大数据的兴起和它是密不可分的。
Hadoop是一种分布式系统的基础架构,通俗点说你可以把它理解成是一种解决方案,面对一个非常复杂的问题,过去我们是用一台电脑,不断加强它的CPU、内存来提高该电脑的计算和存储能力,但hadoop让我们可以把这个问题分解多个小问题,交给多台配置一般的电脑去并行解决它。
举个直观的例子:
假设你要统计一本100页英文书上26个字母出现的次数,一种方式是让一台高性能的电脑去完成这项工作,假设它的速度是每页1分钟,也就是需要100分钟;还有一种方式是把这本书拆成10个部分,分别给10台普通电脑去并行统计,即便每台普通电脑的处理是刚才高性能电脑的10倍,即每页10分钟,由于是并行解决,其实只要10分钟就解决了,用时仅仅是刚才那台超级电脑的1/10。
通过这个例子我们发现,因为分布式系统的诞生,显著提高了计算机解决问题的效率。而且还大大降低了成本。
而算力提高直接影响到统计学习领域的那群科学家们,其实像神经网络、机器学习这些理论在上世纪90年代就已经诞生,而且是几经沉浮,遇到的最大瓶颈就是当时的计算机算力无法完成满足研究的需要,而今分布式架构恰巧为他们带来的曙光。而实际上确实是如此,深度学习算法本质上就是神经网络的拓展和延伸,而他们依赖的就是分布式架构把上千台甚至更多高性能电脑联合在一起去并行完成计算工作,解决一些计算量大到过去人们根本不敢想的问题。
而Hadoop的底层是用Java实现的,也就意味着如果把Hadoop比作一个工厂,这个工厂的目标是实现AI的数学模型,来解决一个业务问题,那么流水线上工人就是用Java去沟通的,因为应用场景的多样化,大的业务问题如何去拆分,对应到一个怎样的模型,每一条流水线的组成和各自负责的功能,具体如何去运转,都需要根据实际情况去定义,这也就造成了人工智能行业在Java岗位上巨大的需求。
最后说一说WhyJava,很多人会说,“说到人工智能,首要语言不应该是Python么?”其实本质上说Java是编译型语言而Python是解释型语言,在计算机运行时,解释型语言比编译型语言还需要多做一层转化。对于深度学习任务而言效率是非常重要的一个因素,因此使用Java为宜。
但另一个方面,Java上手较难,深度学习更多涉及到用数学和统计学理论去解决一个实际应用问题,让擅长于数学/统计学的科学家再去学习计算机知识和Java就有些强人所难,而Python作为脚本语言最大特点就是易学,并且Python可以调用其他语言编写的代码,这也就给那些科学家们提供了一个非常棒的解决方案:专注于算法模型,用Python去调用那些用Java作为底层架构的工具去解决一个业务问题。
领取专属 10元无门槛券
私享最新 技术干货