朱莉娅:有件事是朱莉娅,开发团队想告诉你关于编程语言。

  • A+
摘要

\\N\\在Julia1.0正式发布一周多后,官方称它已经积累了十年来雄心勃勃的程序员的辛勤工作。Julia可以被看作是一种结合家庭优势的编程语言,开发团队在第一次披露时就确定了它的需求:我们需要一种具有免费许可、C速度和Ruby灵活性的开源语言。我们想要一种同构的语言,有像Lisp这样的实宏,以及像Matlab这样简单而熟

\\N\\

在Julia1.0正式发布一周多后,官方称它已经积累了十年来雄心勃勃的程序员的辛勤工作。Julia可以被看作是一种结合家庭优势的编程语言,开发团队在第一次披露时就确定了它的需求:

我们需要一种具有免费许可、C速度和Ruby灵活性的开源语言。我们想要一种同构的语言,有像Lisp这样的实宏,以及像Matlab这样简单而熟悉的数学符号。我们想要一种可以在一般编程中使用的语言,比如Python,像R一样容易计数,对于字符串处理自然像Perl一样容易,像Matlab一样强大,对于将程序粘合在一起就像shell一样好。这是容易学习,但它可以使严厉的黑客爱上它。我们希望它具有交互性和可编译性。

毫不奇怪,每个月都有编程语言排名,排名前10位的是Java、JavaScript、Python、PHP和C#等等。但在RedMonk语言排行榜上,开源编程语言Julia成功地吸引了人们的注意,连续第四季度增长(52,40,39,36),并上升到本季度的第36位。

同时,朱莉娅开发人员也参与了在Reddit上的AMA问答活动。Jeff Benzanson、Stefan Karpinski、Alan Edelman、Virus B.Shah和Keno Fischer回答了社区关于语言的创建和发展的问题,并透露了一些内部信息。

让我们先来看看参与Reddit AMA活动的Julia开发团队的关键成员。

问题1:由于各种原因,从零开始开发一种语言变得非常困难,其中之一就是如果结果是不可预测的,那么如何从现在开始就必须做出设计决策。那么事后来看,你做的最好和最糟糕的决定是什么?

;;

正如您所说,从头开始开发语言是很困难的,这也是我们花了几年时间开发“试验性\\”0.x版本的主要原因之一。在大约一年左右的时间里,我们收集关于什么是有效和无效的经验教训,然后进行重大的改变-有时是很多变化。我们这样做了七个周期,直到我们觉得我们真的有能力处理这个问题。

最好的决策是为Julia开发一个多调度(多重调度),并使用多个调度作为编程范例。在短期内,最初的目标是不明确的,功能,如多种方法和外部分配似乎很酷,但我们不知道它有多强大,它可以有多有用。

最糟糕的决定是在终端加厚所有的文字:-谢天谢地,我们现在解决了这个问题。

Lola Diro

有时,我感到惊讶的是,看似微小的特性改变了语言的使用方式。

在第一次JuliaCon会议之后的黑客马拉松中,Tim教廷和我实现了一个名为(生成函数)的函数(阶段函数分段函数),它基本上是一个钩子回到编译器中,允许您根据参数的类型生成代码。我希望在我的C+包中使用它(基本上允许Julia充当CC+REPL),Tim希望它加速数组。今天,它不再用于数组,因为编译器已经改进到没有必要,但它是https://github.com/jrevels/Cassette.jl,的基础,这是我们计划用于从调试到自动差异(自动区分)的所有东西的一个常见的非标准(非标准)执行框架。

问题2:一般来说,开源开发人员的辛勤工作是不受欢迎的。所以,首先,感谢你为朱莉娅所做的努力!

我的问题是:许多年前,我觉得朱莉娅有很强的战斗力-取代R和Python作为数据科学的一种语言。但最近我觉得这种势头已经放缓。你同意我的观点吗?如果是的话,你认为你需要做些什么来重新点燃这种热情?

Lola Diro

我不像以前那样用“决斗”这样的词来描述我们与R或Python的关系。我们开发它们时集成了PyCall.jl和RCall.jl,以及木星笔记本,并且与它们具有良好的兼容性。我想每个人都有足够的空间。

关于数据科学,我承认朱莉娅在其他数字应用领域确实有点落后。但是在1.0版中,我们试图做很多底层的基本工作来改变它。使用版本1.0,我们的编译器支持高性能的缺失值(https://julialang.org/blog/2018/06/missing),是朱莉娅数据科学社区的调用之一,所以我也希望用户充分利用它,因为它需要花费大量的精力。

在包生态系统方面,元软件包(如https://github.com/queryverse/Queryverse.jl(Meta-Package)开始确保统一包中提供所有不同的功能。如果你碰巧有一个很大的数据集,可以把它看作是熊猫的分布式核心替代品。然而,我认为朱莉娅的前途是光明的,尤其是在核心语言特征已经稳定的今天,我们可以更多地关注核心生态系统的建设。

你认为朱莉娅能代替Python吗?在科学计算领域

我正在学习机器学习,主要是用Python编程。一年前,我试着使用Julia,我非常喜欢它,但问题是,我在Python和它的库的生态方面投入了大量的精力和时间(我也讨厌MATLAB用来重置的操作符)。

您打算如何说服开发人员转而使用Julia进行开发?您是否打算将流行的库(如skLearning和py手电筒)迁移到Julia。

;;

我一直记得史蒂夫·马丁的话:“你太好了,人们不得不关注你。”

在生态系统方面,Julia的优势在于它的库是由纯Julia编写的,而不是使用C或C≤+编写的。这给我们带来了很多便利。使用Julia开发灵活、高性能的库是很容易的.因此,功能方面也会慢慢迎头赶上。

& gt;>, Stephan of Cabinski.

很多年前,我以为很多人都不会相信朱莉娅包的生态系统会发展到今天的样子。Julia生态系统在优化(优化)、微分方程(微分方程)、线性代数(线性代数)、数值分析等领域都有很好的应用。这使我们能够在短时间内赶上并超越其他生态系统。

朱莉娅已经有了OpenMP风格的循环多线程,我们已经准备好合并一个PR,以实现任务的M?n映射到硬件线程,这将使Julia的线程系统类似于Go,但我们将改进它的计算性能,而不是编写并发服务器(尽管您也可以这样做)。

问4:作为一名主修CS的学生,你能告诉我为什么你可以学朱莉娅而不是其他已经被广泛使用的语言吗?

我应该使用什么类型的项目朱莉娅?

;;

我能告诉您的是,Julia允许您访问异常广泛的编程语言。您可以使用良好的性能来操作位和字节(和<;b;(晓白广告联盟最赚钱的CPC和CPA点击广告联盟,如百度联盟http://www.xiaobaiadmin.com]<;/b>;)查看汇编代码),然后您可以进行更高级的编程、宏和面向对象的设计,所有这些都可以结合在一起。开发人员经常需要转换编程语言来完成不同类型的任务。Julia程序员在不同的任务中使用不同的技术和样式,但是继续用同一种语言进行开发。

& gt;>, Stephan of Cabinski.

添加JeffBezanson提到的\\“视图程序集代码”

当然,这在任何编译语言中都是正确的,但在Julia中是很容易的:

正如你所看到的,Julia的易用性是完全不同的-我从来不想费心看C中的汇编代码,因为它很痛苦,但是我一直在看Julia程序集代码,因为它是可读的,而且我知道很多其他代码是相同的。这不仅是一个学习的工具,也是引导整个生态系统取得优异表现的一种方式。

问题5:是否有计划为机器学习和人工智能工具包创造一个一致的环境?也许喜欢为Python学习滑雪?

目前,Julia的生态系统还比较分散,大多数软件包与Julia1.0不兼容。

那么,朱莉娅的路线图是什么?你如何设想这个项目的未来?

;viralbah

社区非常关注Julia在人工智能中的所有合理使用,但重点不是创建另一个框架,而是确保Julia可以用于机器学习。这几乎可以归结为两件事:对自动微分(自动区分)的良好支持和对硬件加速器(主要是GPU)上原生代码生成的良好支持(主要是GPU,但也越来越多地支持TPU和管道中的各种新事物)。

在JuliaCon会议上,JarrettRevel宣布了Cassette.jl(https://github.com/jrevels/Cassette.jl)和Capstan.jl(使用盒式编译器增强功能的AD包)。有了这些包之后,我们现在有了一种在整个Julia应用程序中执行AD操作的共同方法。[今天扫描应用一个短视频信息平台,观看短视频和赚钱应用下载http://www.jinrishuadian.com]<;/b>;和相关的GPU软件包也为我们提供了一种在GPU上运行朱莉娅应用程序的通用方法,而底层重构可以很容易地找到tpu和其他专用处理器。随着所有这些项目在1.0版中稳定下来,我们相信Julia已经成为人工智能研究人员和用户关注的语言。

同时,我们开发了由MikeInnes(https://github.com/FluxML/Flux.jl)和Knet.jl(DenizYuret开发的https://github.com/denizyuret/Knet.jl)开发的Flim.jl,它们都提供了重要的人工智能功能。目标是实现无框架(Frameless)AI。通过直接编写Julia代码,我们可以对其进行微分,将其粘贴到优化器中,在GPU上运行,而无需编写新的编程模型(如编写计算图),或重新实现所有库的框架。

问题6:当Julia能够处理矩阵操作(矩阵操作)时,你认为人们还需要购买Matlab许可证吗?

Lola Diro

这取决于你现在做什么样的开发。据我所见,更多的开发人员是从自定义遗留系统或C+迁移的,而不是Matlab。特别是如果MATLAB对你来说是完美的,就没有理由去切换了。如果您现在要开始一个新项目,Julia可能是一个不错的选择,其他语言,例如Python,也可能是一个不错的选择。但是没有理由选择MATLAB来开始一个新的项目。

问题7:首先,我要感谢你创造了这样一个伟大的项目,如朱莉娅。

对我来说,观察这种伟大的语言是如何进化的,这是一次很棒的经历。

如果方便的话,我有三个问题:

Lola Diro

1.我不认为我们的工作日与任何其他开发人员的工作日相同,但主要的区别可能是在公共场合进行了多少交流工作。我通常会花一天的时间来处理GitHub问题、电子邮件、交流等等。在此之后,I<;b>;(浏览互联网信息产业文化和娱乐网站http://www.shuadianzixun.com]<;/b>;)通常有一个长期的项目(在过去六个月的大部分时间里,我一直在重新设计优化器,以处理新的迭代协议和对新丢失数据的支持),以及一些需要我解决的高优先级错误。还有各种各样的电话和会议。例如,每个星期四,我们都会召开一次电话会议,名为“分流”(Triage),讨论我们需要处理的最紧迫项目,新版本的发布会受到什么影响,并且通常会试图对遇到麻烦的事情做出决定。这些电话可以非常密集(他们已经尝试了六个多小时)。

二.每天都有很多设计决策要决定,但我认为未来最大的领域是多线程。我们正在增加对多线程调度协作例程(https:/github.com/Juliaang/Julia/PULL/22631)的支持,并充分利用这一点,因此我们必须了解并行内存和执行模型的所有方面。

3.我没有真正喜欢的编程语言,我认为我们可以在几种语言中相互学习。例如,我真的很想对受限内存所有权模型(它允许在各种情况下进行更主动的优化)做些什么,而且Rust开发人员显然在那里做了很多思考。当然,我们不能完全复制他们的设计,因为我们的用户有不同的期望,但我仍然希望我们可以做些什么。

Q8的起源:朱莉娅的名字,为什么叫朱莉娅的语言?

ViralBshah说,朱莉娅来自一个更老的项目,杰夫·贝赞森说,这个项目没有任何意义。

但杰夫·贝赞森(Jeff Bezanson)的回答是:“我们在1.0发布时发布的Twitter会告诉你一切。”朱莉娅来自美国著名厨师兼主持人朱莉娅·查尔德(Julia Child)的名字。我们通过朱莉娅给用户带来了优秀的编程技术,就像她给观众带来了出色的烹饪技巧一样。“

问题9:讨论JuliaV2.0的开发计划。

KenoFischer:v2.0将优化多线程模型,并在分析和调试方面带来一些惊人的变化。此外,v2.0的主要重点将是支持核心语言所需的软件包。JuliaV2.0的确切发布日期尚未确定,大约时间为2020至2022年。

要获得更多精彩的问题和答案,请到Reddit查看。

.

分享当前页面将至少获得10%佣金,点此获取推广链接(规则说明)。

本站VIP源码资源永久免费下载!持续更新!www.526bt.com

加入999永久VIP会员带做项目包赚钱!教引流包搭建,社群资源共享!

新项目更新通知QQ群:767688774 站长技术交流QQ付费群:552760713

点击这里给我发消息备用QQ:点击这里给我发消息

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 源码安装视频教程
  • 教程项目网赚APP扫码下载
  • weinxin

小白源码资源站!站长!
做网站 PHP源码修改二次开发程序页面美化/功能定制/仿站/仿模板
认证服务号 现成服务号 现成公众号 现成认证公众号 微信公众号
苹果签名200一月!不掉的苹果企业签名
H5牛牛游戏开发只要你有演示站,我们就能定制,精仿道游
点击注册

发表评论

您必须才能发表评论!