简短回答:当然值得!
如果你是一个Web开发者,你知道不能长期坚持一种技术。迟早你将不得不应对环境或目标的变化(你为.NET开发,但重要客户需要PHP,或者那个小部件应该用Flash而不是Javascript),这是最好的情况。在最坏的情况下,你将不得不经常切换,甚至在同一工作日内多次切换。
这些切换可能会浪费很多时间,因为你需要多次改变编程范式,并且可能会在针对特定目标的编码库中有很多重叠。 Haxe通过只有一种源语言(Haxe语言)和许多输出(通过Haxe编译器)来试图缓解过渡的痛苦。该语言非常友好,而且相当容易学习,无论您的背景如何。
无论您部署到哪个平台,该语言都是相同的。因此,您可以以相同的方式为JS、Flash、C++等定义类/接口/枚举/typedefs。如果您定义的这些类型不依赖于特定的平台API,则可以轻松地从一个平台重用到另一个平台。所有平台还共享常见的API,如XML访问、HTTP连接和反射。具有共同之处的平台(即Neko和PHP)共享诸如文件访问或Web服务器开发之类的相同API。
谈到服务器端,我们都知道PHP是多么普遍。您可以使用Haxe开发应用程序,并将其定位到Neko甚至C++,如果您的Web应用程序增长。
这里是常见误解的列表:
Haxe年轻且不成熟
实际上,Haxe已经有近4年的历史了,发布了25个正式版本(而不是构建版本)+ 13个alpha和beta版本,它在持续更新,并拥有一个非常专注的社区。许多人在多个开发领域专业使用它;看一下邮件列表档案以找到人们如何使用Haxe。
Haxe很复杂
因为Haxe的主要目标毫无疑问是AS3,人们希望它必须有向导或GUI。正如所述,Haxe是一种语言和编译器,这使得它适合程序员,但对于设计人员来说并不是很好。
没有任何IDE
这确实是真的,IDE在很多方面都需要改进才能更好地与Haxe集成,但已经有很多有效的选项。
唯一出版的书已经过时
这里也有一些真实性,不幸的是,在一次重大发布之前的几个月出版了这本书(从V1到V2)。那次重大发布并没有改变太多,但确实增加了一些不兼容性。这本书仍然是一个有效的资源(我不是因为我写过它才这么说;))
如果您喜欢为快速开发视觉创意而编写代码,我认为Haxe是理想的语言,即使作为自由职业者,我也会商业使用它。
我对Haxe的看法:
注意,以下段落非常哲学化(实用性的部分在后面):
作为一个短时间内接触过许多编程语言并且发现某些语言不适合自己就会换用其他语言的人,在我的眼中,Haxe是一种我无法超越的,我无法更好地掌握它。
在过去,我发现我使用特定语言所花费的时间与两个关键因素有关:我需要使用该语言来获得结果的频率以及我发现该语言的容易程度。但是,我在Haxe上掌握的时间要短得多,我把这归功于我在各种语言上积累的一点知识。在遇到Haxe之前,我从未找到过真正适合我的语言,它们要么太难理解,要么毫无用处;至少从我的角度来看是这样的。
Haxe使我能够更加自由地表达我的写作方式,我不是指每个人都谈论的语言质量方面的“自由”,我指的是能够拥有一个想法并且按照自己的想法进行尝试的能力,不管它成功还是失败。
Haxe对我来说是一个非常容易上手的学习曲线,因为我有c风格语言和AS2/3方面的一般背景,所以我真的没有遇到什么困难。阻碍我学习新语言进展的一件事是理解特定语法/框架背后的概念,但即使我克服了这个障碍,我经常会发现该语言本身要么受限,要么限制着我。但是,在Haxe上,我既不受限制,也没有发现语言本身限制了我。在Haxe中,没有天花板,但有一个玻璃地板,你可以看到你如何到达那里。
学习Haxe不像是拿起一些木棍点火,但也不像是去买个氧乙炔装置点火。从这个意义上说,Haxe更接近于可以重复使用的火柴。它遵循你所熟悉的几乎所有转换,但添加了有用的新功能。但为了做到这一点,它并没有完全重新发明轮子,而是修复了一些糟糕的部分。有哪些陷阱或坑?
附言:我认为学习一门新语言总是值得的,因为它能提高您的编程技能和经验。
您的问题已经得到回答,但我想补充几句话。
我在Haxe的第一个beta版本后学习并广泛使用它,并一直使用至今。这是我学习的第一种语言(当时我还在上大学),真正让我理解了语言和API之间的区别。
你看,在大学里我首先学习了AS2,然后是PHP,再学了一些Javascript。我们没有接受过正式的编程介绍(而且我也没有学习计算机科学)。这些语言都与平台紧密相关,所以作为新手程序员,我自动地认为像strlen()是PHP,MovieClip是AS2等等。
通过使用Haxe,我真正理解了面向对象设计的价值,因为平台不再限制我的类。如果我足够好地将它们与平台特定内容分离,我可以在常规Web代码中重用为Flash项目编写的代码。
由于优秀的远程类,您可以使用它们在平台之间进行通信,我也意识到XML并不是特别重要,JSON也不是,除非有针对它的代码。
对于像我这样刚开始编程的人来说,这是一个相当重要的启示,在XML“很酷”且适用于所有方面的时代,这一点非常重要。
#line
支持被添加到了Haxe中。我认为Adobe永远不会认真考虑我的请求。就我个人而言,我发现在Haxe中比其他任何语言都更具生产力。我主要使用Haxe来定位Neko和JavaScript。
编译器本身非常快,这使我可以像使用脚本语言一样使用Haxe。它倾向于面向对象,但具有许多功能工具:一等函数、函数匹配、lambda库。
我发现Neko的速度足够快,并且其小图像大小非常适用于受限环境。它的C FFI非常出色——非常简单地添加新功能。
我将Haxe用于我的JavaScript客户端控制器,向标准jQuery视图触发事件。这非常有效,因为您可以同时检查客户端和服务器代码的类型,同时保持未经过类型检查的原始JS最少,并保留通常JS库的好处。JSON库可用。顺便说一下,虽然Haxe确实带有mod_*用于Apache等,但我发现使用代理更加灵活,这样我就可以在Web服务器后面设置多个Neko实例。
总的来说,我认为它非常全面和周到——关键是它在所有平台上都能按照广告所述正常工作。
是的,完全正确。
但它需要一个更好的IDE和文档,对我来说缺乏像基于eclipse的伟大IDE一样的工具,使得我的生产力无法达到其他语言的水平。
语言=很棒 - 是最好的
开发环境=差(目前而言,个人观点)