【CSDN现场报道】2015年11月19-21日,由CSDN重磅打造的“ 2015 中国软件开发者大会 ”(以下简称SDCC 2015)在北京朗丽兹西山花园酒店隆重召开。今年是第七届,大会为期三天,除了阵容强大的全体大会外,主办方还精心筹备了九大技术专场论坛,包括:架构实践论坛、前端开发论坛、数据库实战论坛、研发管理论坛、安全技术论坛、算法实战论坛、编程语言论坛、产品与设计论坛、微信开发论坛。此外,还有五场特色活动及展览展示。
Java泛型作者、JVM规范核心制定者、Dart语言标准作者Gilad Bracha进行了主题为《The Essence of Objects》的分享。他在演讲中就Dart编程语言各方面进行了介绍,包括Dart的主要思想、优势、要解决的问题,并用了很多简单易懂的例子进行了解释。
以下是Gilad Bracha发表的主题演讲:
Java泛型作者、JVM规范核心制定者、Dart语言标准作者 Gilad Bracha
感谢大家参加会议来听我的发言,也要谢谢主办方组织了几次会议并邀请我来到中国,非常的高兴,再次回到北京,我十几年前来过北京,我看到北京有这么好的发展,非常为它感到高兴!我们今天的讨论应该是技术的讨论,但是到目前为止技术性都不是特别强,我会给大家介绍更多的技术,我会给大家介绍一下对象的实质,编程是存在于各地,中国有非常多的编程的语言,Java是主要的语言,还有一些其它的编程语言。前面所提到的话题非常好,展示了我们所做的工作,我的问题是这些语言是否不能再进一步改进了?我是不是可以让软件开发者能够更深入的了解对象呢?我们怎么做才能使我们语言以对象为导向呢?大家会问你们你有Classes吗?Java还有C++他们根本就没有原形,Go呢?现在是没有这样的继承,但还是有对象的。面向对象的编程语言究竟是什么样的一种语言呢?也许我们是在这样的语言上做出了非常多的改进,很多语言他们不是面向对象的,还有一些面向对象的语言运作的并不是特别良好,但是将来他们会运作良好。
面向对象的编程语言到底是什么样的语言呢?我们看一下一个程序到界面并不是实施,而是口号,我在Java工作的时候就有这样的口号,对象比较重要,因为我们必须有程序的界面,我们有一系列的流程、方法和功能。他们是在共享的数据上去运营,我们只能通过这样的界面来运营和操作,就像API一样,每个语言都有API这样的想法。有一个模块任何的语言他们都有API这样的功能,还有这些对象,他们第一是跨价值的,你可以储存,我们可以去操作他们,这给我们提供了很大的灵活性,因为现在我们可以去用一个对象替代另外一个对象,一个对象的学识可能不一样,只要我有API我可以在单一的程序中进行多个实施,这是我核心的想法。
关于Classes和原形继承提到的东西没有那么重要!他们连二级的重要性都没有。关注的要点都不是问题,虽然我这样说,但是很明显,在实际上很难去应用!比如说我们常用的语言,阻止了我们用新的语言操作的能力,如果大家去考虑一下,比如说Java这样的语言,就是公众的场地应用的Java语言,那么就是应用的场所实际上也决定了我们定义了我们对于对象应用的形式,我们目标是让它更加的灵活,因为如果我们能够变换语言的话,我们就可以去开发更多的这种客户和用户,然后还可以去进入到更多的领域,以及可以进入到更多的公司,实际上对象为依据的语言是非常重要的。一会我给大家举一个例子。
另外建站者,语言也是巨大的问题。非常复杂的方式来去解释语言的问题,或者解决语言的问题。另外还有一些静态的方法,静态的方法比如说这些我们已经应用了60多年,我们认为静态的东西不是太适用于未来的电芯,另外是不成熟的模式和范式,有一些原因,我们可能要更好的原形,因为我们的客户对我们的要求更高。所以有很多的方法,我们应用的语言让我们失去了灵活性。我的问题是,我们能够设计一种语言没有这些问题,同时还在完全的纯粹的原则下进行工作吗?我们大部分的程序开发者都是85后,小于30岁的人,非常简单,但是这个解决方案的方式也是非常深远的方式。在70年代,在之前Been是我开发的语言,大家都没有听说过这些语言,Smalltalk这种观念是非常重要的,每次用的这种语言都包含了技术和对于业界的影响和范式的影响,这是最重要的。有了这些影响大家可以知道未来发展的趋势。
在中国,美国人不注重历史,但是对于中国人来讲你们的历史非常久远,大家都非常尊重我们的历史和传统,这个也是可以贡献给技术的。给大家一个观念,在SMALLTALK上面做了什么产品?比如说IDEs,还有builders,这个用苹果、和windows交互的都是来自IDES,JVM是一家公司,支持了我的应用。他们没有投资,认为没有选择性去进行支持,还有GUIs,所有这些都是SMALLTALK的结果。大家都会用到拉动条来进行控制界面的上下拉动。其他的比如说Unittesting也是因为SMALLTALK的介入。Java的发明和创造是非常少的,所以说refactoring就是应用SMALLTALK这种语言介入的。还有重构和直播的编程,这些都是在SMALLTALK应用中做最好的产品。CELF也做了很多的贡献!比如说所有的比较流行的语言,JavaGUIS等,他们用的技术是执行,所以在实际运营中的交互性的概念是由SELF来承载和创造的,我们希望编程的优化,然后进一步改进,这些都是SEIF承载的概念。Java把这个热点的技术拿走了,我也非常高兴。我的儿子开了一个新的公司,他把SMALLTALKSEIF构建起来,和Java结合起来,这些都是经过了很多的设计和测试,所以,那个时候整个业界的环境并不是太好,开发这些东西并不是很容易!另外是UIs的自动化,在我们移动终端上UIs自动化用的非常好,也是用SELF来承载的,如果没有这些语言的话,我们没有进一步创造和发明,我们怎么办?还在树上,我们还是持续的成为猴子,所以我们要进行持续的改进,持续的采取新的语言和新的东西。
大家可以说,你今天讲这些我们从来没有听过,大家都用其他的语言也没有什么问题!你们提的这个问题是非常复杂的问题,我没有时间进行回答!我要说的是我们要让更主流的语言,我们应该有一些观点来设计我们会引领我们未来的主流语言。比说Dart,这是由谷歌设计的,它的重点是在编程和程序员之间比较熟悉的,对于我们很多程序员来讲Dart语言非常常用,采用了之前的观念和想法。另外就是有一些研究者,他们也去建立一些语言!有的时候要做一个真的工业化产品来讲不是很容易的。所以Dart可以给我们创造了非常好的平台,它的运营速度比较快,整个平台运营也比较稳定。更加的高效!更加的有用,也可以更加的移动化。所以也是一个非常热点的话题,所以我们的语言现在都可以符合这些以对象为目标的所有的要求和观点。
所以对于Smalltalk来讲我们的运营速度是非常快的,谷歌在这方面是领先的地位,所有的Dart是以对象为中心和向导的观点和理想。我们程序设计不仅仅是通过交互界面,我们看一些实际的代码,这里如果大家是程序员大家可以读懂这些程序。那么可以看到Dart语言,Dart没有用非常常用的EXAMPLE,你把XY做相关的数学指令公式,实际上有一点点长,有时候我们希望我们的语言更利于程序者和开发者进行使用。var,X,Y,我们不需要重复式编写和数据的等式一遍遍写,这是非常冗余的工作,所以我们就把这个词给简化了!我们DartX和Y的写法不是通用的,我们用了简写来表明我们公式和程序的编码。如果我们再加一个点,大家一般都是用数学+式的方法来进行加一个点的,有一个词叫operator,你需要定义它,它是一个斜体的字符,大家需要去定义这个operator,如果这个是新的点,然后我们就需要回车,写一个新点,然后X+A点,这个是非常难的方法,很有意思。
然后还是有一点太长了这个编码,我们要把它缩写,成为这方样的方式,我们如果有方法的话,我们就会有一个功能,然后我们把这个结果不停的重复,所以我们用一个箭头来进行语意的编写。更加的简单,也更加容易进行使用。
我们需要一种语言,这种语言可以帮助我们实现简便的语言的范式化和简便的编写模式。我们有所有的点,为什么用这些共性的点呢?我们大部分都有,但是就像我们之前编写的程序一样,如果大家看一看,我们要去看一下operator的话,如果我之前有这个客户他们希望用X、Y这样的场,所以我就不能够变,因为别人的编码我不能在别人的编码进行随便的改变,那怎么办呢?这就是Java面对的问题了,如果变了这个编码就无法进行程序重新的编写了!这是我在大的语言中可以进行解决的方法,如果看一下这个建站的话,我们有X和Y,这些我们都叫他Get,你读之前的编码进行重新的计算,就把他们当作是场来进行计算,也许他们是场或者不是,你并不知道,你说我取名叫getX,你的客户并不知道,客户也并不需要去重写或者说改变!所以我们之前我不要去重新编写或者打破我之前的编码来进行重新的修改和编写。另外它也有一些问题,比如看到建造者我写了一个X,Y,但是实际我没有X,Y,我们可以衍生出新的X和新的Y的值,表明我的用户可以在外部来进行重新的编写和设定XY,同样的方法,如果你有一个任务的话,你不知道我的编写和任务是已经存在的场还是不是存在的厂里面!你仍然可以进一步进行工作!这个例子还有其他的一些问题!主要的问题在Dart主要的问题,每个CLass都必须要执行,你必须想好了写出不同的执行方法。我们没有建立这个观念,任何的Class都可以来进行编程,我们需要具体的知道,如果我们有X和Y的场,我们会有XY和新的XY我们四个场,我们不希望有太多的内存!我们可以去定义新的级!这个新的级并不是一个次级,我们执行这个界面,是由我们新的级来进行定义的。
我们这么做的时候,所以我们重新的更正了一下之前的建造!有的时候大家会去争论,为什么S和Y之间不会有新的X和Y的介入和影响?我们甚至可以去做一个新的名字的建造者,比如说polarpoint,我们可以多方式的进行建造,然后把所有的界面都保存下来,所以之前的这些界面都已经保留得完整了,在后来我们进行加入和改变的过程中,之前原始的模板和原始的编码不会被损害。
接下来给大家介绍一下Dart的特征,哪些特征是比较重要的!在语言当中,你要有可选的类型!这是一种执行和实施。你这样做的话无法变成其他的东西的。Type是比较好的,你做的话,必须有一些界面,可选类型有非常多的好处,我这里列举出来了一系列的优点和好处是按照他们的好处重点列举出来的,对于类型注解来说,对于人和项目来说有记录,人们可以去阅读类型,因为这些类型可以让他们知道出现了什么样的状况,也可以使项目来进行信息的记录,如果大家要进行重构有这些项目的记录会让你去寻找过去信息,你有一个P,你可以写X或者Y,如果有Type类型会更简单,它帮助你识别出鼓掌,还有Dart的虚拟设备,是非常快的。我们不需要Type来进行实施的,大部分优化的技术,即使是Java也不需要这个类型的,只有几个比较例外的情景,另外一方面Java也有劣势,有一些人没有认识到类型的缺点,而实际上会限制工作流,而且你要去Type你的需求,你撰写一个需求特别有意思,但是你Type相关工具无法认可,识别不出来,大部分我们要转换!如果有一些功能没有界定,我们转换完了以后会告诉你这个时候应该停止,因为有一些缺失。我们会给你提供预警,我们的代码编写还可以进行!我们不希望老是提醒我们进行编写,但是我们可以改变,我们现在改变能显示出Type是黄色的,我们更容易去阅读,我们知道X、Y是一个类型是一个数字,有了这样的类型,我们的工具可以利用它更好的进行重构,也可以给我们提出故障的预警。因此指出类型是有帮助的,但是我们不一定强制人们去写出它的类型,它是可选的,大家可以去登陆我们的网址,在我们网站上了解进一步的信息,我们有非常多的和API的连接和解释,还有几本书是涉及到Dart的!这本书是在美国、在12月18号的时候会上市,大家可以买到,我不知道是否会翻译成中国的版本,我借此机会去跟大家介绍一下我的这本书,尽管还没有上市。
我给大家介绍的信息大家以前从来没有听说过,我主要是为了拓展大家的视野,希望激起大家的思考!这就是我全部的介绍,我们可以进行问答了。
问:刚才提到程序员在年轻化,从您这边来说,您一直在技术一线,这一块的话,您有什么感受?可以给大家分享一下。
Gilad Bracha:非常好,现在有越来越多的年轻人在参与到我们领域中,年轻人对我们的工作非常的感兴趣,我当然觉得这样的领域是充满了前景的,是蓬勃发展的,不是很多人都是我这样的年龄比较大的人去工作,有人说年轻人没有经验,不知道过去怎么样,但是人们确实要了解历史的发展,在我的发言中我给大家讲了很多老的东西都得到了创建,我们有计算机的科学和编程,我们有很多不同的方式来进行编程,我们不能只是关注语言的窄的层面,我们要扩大我们的视野,了解其他的语言。
更多精彩内容,请关注新浪微博:@CSDN、图文直播专题: 2015中国软件开发者大会 。