向前移动AS3?

Bef*_*rem 7 flash actionscript-3

嗨我在工作中使用AS3相当多,但我来自Java/C/C++教育并且发现语言相当严格.

在AS3世界中似乎有两个基本阵营:

  • 非技术性的创意阵营,他们希望让事情顺利进行,并且不会给他们带来太多的麻烦和计算机科学
  • 技术阵营(可能来自Java/C#等教育)谁有兴趣使用Flex,并习惯于语言中相对复杂的功能(泛型,方法/运算符重载).

AS3似乎挫败了两个阵营:

主要的创意阵营认为AS3比AS2更多的工作(并且它们是正确的)并且他们没有看到移动的重点,当需要的好处,但复杂性增加和学习曲线相对非常陡峭.

主要技术阵营发现AS3存在于Javascript和Java之间的某种不确定性,并且只有一半实现概念.

我对技术上的想法有所了解,但我认为这不是现在最重要的问题.为什么Adobe会让AS3更具技术性?它没有被其原始用户的大部分采用.

所以我的问题是Adobe和用户社区如何才能推动AS3向前发展,不仅在技术上,而且作为一个完整的工具,所有用户都希望采用它?

我的一个想法是,AS3应该考虑如何再次成为更多的脚本,但保留打字.可能通过Scala中的类型推断.而且,为了停止跟踪Java,就好像它是语言设计的顶峰,开始考虑典型用户试图解决的问题.

bac*_*dos 5

我非常来自第二阵营...我用pascal,后来的delphi和java做了很多编程,但后来我决定女孩和吉他更酷......当我在2006年偶然发现FlashPlayer时,我是着迷于所提供的可能性并再次开始编码,AS2 ... Flash 8更加偶然,当涉及到编码时,所以我很快就转移到MTASC和FlashDevelop并且非常了解语言......来自然后,我和任何认真使用FlashPlayer平台的人都有同样的困难...所以这是我的观点:

AS2与AS3

OK,最重要的是:!语言= API ...核心AS3语言是大部分内容是在顶层,以及从以下flash.utils:getDefinitionByNamedescribeType,以及Proxy,Dictionary和(可以说)ByteArray(别的任何接口与FlashPlayer的或与核心语言待建)......在AS2这是对收起JSON-值的所有有效类型(Boolean,Number,String,Array,Object),以及Function,以及ASSetPropFlags...语言AS3和闪光灯之间的联系播放器很小...例如mod_actionscript是尝试使用Tamarin VM作为apache模块,当然有一个完全不同的API ...

比较核心语言,有区别...... 最后,我说AS2是比AS3更强大的语言 ...你可以在运行时实际改变整个语言,它是原型导向的(这是一个很大的比基于类的继承更强大的功能),允许mixins,AOP等... AS2有一个非常清晰和激进的语言设计......很少有人真正理解... AS2遭遇了与JavaScript相同的误解(对于我是AS2的无类型和不兼容 - 折磨的兄弟...大多数人都喜欢它,因为它是如此宽容......例如PHP,这是(除了其庞大的市场渗透和易于安装)的主要原因因为它的受欢迎程度......但是JS和AS是非常高水平,富有表现力和强大的语言,而PHP更像是一个肮脏地破解一些东西的工具(这不是关于PHP,我只需要另一种允许的语言来比较) ......事实是,大多数人在AS2中使用的东西(一个 d JS)是宽松的...我很少看到在AS2中使用基于原型,功能,面向方面或甚至适当的面向对象编程... >这里<我列出了一组非常酷的AS2功能,它们要么是严重或很少被雇用......

AS3是Adobe向Java迈进的......它非常严格,静态,即使在运行时也是如此,但是表现得非常好......而且它非常无情,迫使你变得非常冗长...也提供describeType了一个非常新的内省水平,Dictionary是一个很好的节省时间,Proxy是AS2的超级突出版本Object::__resolve,弥补了所有失去的灵活性......

谈到这种语言,我认为AS3实际上是一个倒退 ......在高级语言逐渐普及的时候,当Sun决定创建JavaFX Script时,许多其他动态语言都可以在JVM上运行CLR,Adobe决定创建一个新的,更静态的AS2版本,以及一个适合执行它的VM ......我认为有点悖论......

比较API时,AS2和AS3 FlashPlayer API都有上下两侧......后者肯定更大......当谈到它们的交集(显示列表,网络,XML处理)时,有利有弊每个解决方案......很多人都有些不高兴,所有旧的回调都消失了,取而代之的是新的事件模型......严肃地说,如果你使用合适的IDE,没有区别......但后者是更清洁,更强大(任何人都记得一个鼠标输入回调是如何彻底关闭所有孩子的?)...而且,这也不重要,因为你可以在AS2中重新实现AS3事件模型,你可以在AS2中重新实现AS2回调系统,在几天之内......最后,我会说AS3有一个相当大和更强大的API,如果需要,你可以把它包起来,不那么冗长. ..所以最后,我真的说AS3 API更好 ......过度简化它真的没有意义......

每个人都在呻吟的一点是,它需要一个彻底的改变......直到AS2语言逐步发展,几乎100%向下兼容到以前的版本......后果是,你需要做一个彻底的改变,而不是一个缓慢的过渡...用一个明确的话来说:去AS3,意味着抛弃任何东西,这击退了许多人,特别是设计师,因为移植代码是可行的,但移植.flas真的几乎是不可能的,至少oldschool的,代码分布在无数的动画片中......但实际上它并不比AS2更难......它增加了一些东西,但它有更多的功能,并且解决了很多问题,真的是每个人都经历过的从以前的动作版本开始......

haXe的创造者尼古拉斯·卡纳斯(Nicolas Cannasse)曾多次被提及过,他也在博客上发表了一些有关此事的想法 ......当然,他对haXe作为替代品的介绍有点偏颇......但我认为这很自然.实际上,haXe的一个重要方面是替代AS3,而Nicolas非常渴望并能够提供一个,尽管最后他作为主要语言设计师,有自己的想法,语言在哪里. ..但是让我谈谈haXe作为替代方案(这可能与Nicolas的帖子部分冗余,但我只想总结一下我的观点)

haXe作为替代方案

我还没有尝试过Haxe,但是对于所有交易来说,它似乎都是真正取代AS3的.

这是错误的...... Nicolas工作的Motion-Twin适用于闪存...实际上,haXe生成更快的AVM2字节码,与AS3不同,允许使用炼金术操作码,所以最后,haXe允许你为AVM2写了更高效的解决方案......作为一种语言,它真的更丰富...... Nicolas的帖子指出,与AS3不同,haXe是一种开源语言......这在实践中意味着什么,你应该加入社区并提出功能请求,甚至学习OCaml,直接做出贡献...... FlashDevelop的主要作者之一Philippe Elsass 最近也对haXe 进行了很好的总结 ......稍微不那么积极,但给出一点概述......它还链接到Nicolas的一篇文章,展示了MTypes的最强语言特征,即在发布之前的haXe的内部工作标题,在它发布之前和开源......

haXe比AS3更具表现力......它具有泛型,类型化的第一类函数,带参数的枚举,提及MTypes功能列表中未列出的一些内容...... using关键字提供了一些超载的可能性,但我不知道真正理解为什么方法重载是有意义的...对于未来的版本,计划多类型,它们提供类似的功能......运算符重载已被多次讨论,并且很可能不会被实现,因为它使代码交换变得困难. ..

最后,我相信,haXe是AVM2的一种更好的语言......它变得越来越好......在这个stackoverflow问题中,一些社区研究员提供了学习haXe的更多理由......

AS3的未来

我认为AS3不会过快推进...... Adob​​e有更好的事情要做...... Adob​​e使用FlashPlayer作为平台来部署Flex应用......这些是用MXML编写的,毫无疑问它是一个非常强大的声明性语言,翻译成AS3 ...这就是为什么Adobe需要AS3和AVM2快速,但不是真的更具表现力...使用thermo aka flash催化剂,设计师将被排除在实际的编码过程之外,一切都会转移到Flex,使用所有Flex服务器解决方案......

我不喜欢Flex并且坚持使用AS3不是我的选择... Adob​​e正在将Flash平台移向Java平台,我不欣赏它...我总是喜欢flash到java因为它是如此轻量级和ActionScript,因为它非常高效......我对AS3的新功能非常兴奋,但我终于决定继续前进,因为在我看来,AS3的发展开始停滞不前......

最后,由你来选择你的路径...现在它是MXML(和一些AS3)或haXe ...或尝试编写一些具有LLVM前端的语言,并使用炼金术将其编译为AVM2 .. Objective-C可能是一个好主意......

无论你选择什么......祝你好运......

ps:我认为你不应该使用术语"脚本"语言,当你的意思是高级,表达和动态时... bash脚本也是一种脚本语言,但它真的不像Ruby,Scala或者所有ECMA方言......


Bef*_*rem 2

所以所有这些答案的总结是:

关于 Adob​​e 计划如何推动 AS3 发展的信息很少甚至没有。人们可能会认为他们会遵循 ECMA 规范,但目前这本身就存在一些政治动荡,所以我猜 Adob​​e 正在观望这一切的结果如何。

至于语言变得更简单,就像兼职/功利程序员更容易理解一样。这似乎不太可能,因为 Flex 的目标是赢得 Java 的青睐,因此,人们会认为 AS 将继续致力于让 Java 程序员感到舒适。

使用 Thermo/Flash Catalyst 将设计人员与代码完全分离似乎是 Flash 开发团队中程序员/设计人员关系最有可能的未来。

Haxe 团队正在尽自己的努力,让 Flash Player 的使用体验更具表现力、限制更少。但据我所知,他们没有得到 Adob​​e 的支持。因此,Adobe 似乎对 Flash Player 开发人员有更多语言选择不感兴趣。

如果 Silverlight 能够达到 Flash Player 插件的市场覆盖率,那么它可能会给 Adob​​e 带来巨大的威胁,并迫使其将 AS 打造为一种更具表现力/专业性的语言。由于 Silverlight 应用程序可以在强大且专业的 IDE、Visual Studio(而不是基本的 Flex Builder 插件)中开发。而 C# 是首选语言,这使得 AS3 在很多领域看起来相当有限。

总而言之,Adobe 对 AS3 的未来守口如瓶,并且该语言的发展过程是秘密进行的。所以最后,只有 Adob​​e 才能真正回答这个问题:AS3 将走向何方?