Answers:
Haxe值得学习吗?
简短的答案是:绝对!
对于使用Haxe的人们来说,它对您有用吗?
如果您是一名Web开发人员,那么您就不会坚持单一技术太久。迟早,您将不得不应对环境或目标的变化(您为.NET开发,但重要的客户需要PHP,或者该小部件应该在Flash中而不是Javascript中),这是最好的情况。在最坏的情况下,您将不得不在同一工作日内不断进行切换,通常需要多次切换。
这些开关可能会浪费大量时间,因为您需要太多次更改编程范例,并且可能因为在为特定目标编写库时会出现很多重叠。Haxe尝试通过仅使用一种源语言(Haxe语言)和许多输出(通过Haxe编译器)来减轻过渡的痛苦。无论您的背景如何,该语言都非常友好且易于学习。
阅读网站看起来很有希望。它提供了重要的可移植性吗?
无论部署到哪个平台,语言都是相同的。因此,您可以以相同的方式为JS,Flash,C ++等定义类/接口/枚举/类型定义。如果定义的类型不依赖于特定的平台API,则可以毫不费力地在平台之间重用它们。 。所有平台还共享通用API,例如XML访问,HTTP连接和反射。有共同点的平台(例如Neko和PHP)为诸如文件访问或Web服务器开发之类的东西共享相同的API。
什么是现实世界,也许处于欣赏优势下?
谈到服务器端,我们都知道PHP无处不在。您可以使用Haxe开发针对性的应用程序,并且如果您的Web应用程序可以扩展,则可以扩展到Neko甚至C ++。
有什么陷阱或陷阱?
以下是常见的误解列表:
Haxe is young and immature
并非如此,Haxe已有将近4年的历史,已经看到25个正式发行版(而非内部版本)+ 13个Alpha和Beta版,并且会不断更新,并拥有非常敬业的社区。许多开发领域的许多人专业地使用它。查看邮件列表档案,了解人们如何使用Haxe。
Haxe is complicated
因为Haxe的主要目标毫无疑问是AS3,所以人们希望它必须具有向导或GUI。如前所述,Haxe是一种语言和编译器,它适合程序员,但对设计师而言却不是很好。
There aren't any IDEs
真正的部分是IDE可以在很多方面进行改进以更好地与Haxe集成,但是已经有很多有效的选择。
The only book published is already outdated
这里也有一些道理,不幸的是,这本书是在主要发行版本(从V1到V2)出现前几个月才出版的。该主要版本并没有太大变化,但确实增加了一些不兼容性。这本书仍然是一个有效的资源(我并不是仅仅因为我写了这句话;))
“对于使用Haxe的人们来说,它对您有用吗?”
作为一个创新的闪光灯,我真的再也看不到AS3的意义了!因此,我来自Flash用户编码器/艺术家:
在我当前的项目中,我有一个19岁的男孩,在我的指导下,他从时间表AS2 / AS3转到了Haxe类,并且正在移植AS2和AS3代码。因此,我认为Haxe不会比AS3更难使用,也不会在Flash中使用时明显不同。就稳定性而言,我目前的主要抱怨是当前Flash播放器的各个方面,在开发Flash时,Haxe确实比AS3稳定或更稳定。
Flash演化一直是创建库的持续过程,该库随着Flash的变化而变得无用(可能是它们每年都需要出售软件!?),组件一直是我所需要的,但是大小却很愚蠢,所以我不愿意像羊一样进入Flex,甚至转向替代XAML。
Haxe的主要优点是,您可以开始真正考虑创建脱离平台的类,并且从现在起五年内可以使用,我怀疑您创建的任何AS3都是如此,Haxe的关联性较少,可能我可以将代码编译为JavaScript,Silverlight或Google接下来推出的任何代码。
我对Haxe的主要问题是,大多数开发不是在Mac上进行的,因此编译C ++的各个方面以及Haxe的新功能有时都来自Windows用户,但是我对核心Haxe并没有诸如Flash编译之类的问题。
在设计人员方面:我使用在运行时加载的Flash IDE电影作为视觉资源,而在AS3中进行开发时也这样做,因此实际上我的工作流程不依赖于AS3 / Haxe,我喜欢简单的生活,因此我将Textmate用于AS3或Haxe。我对Flash IDE及其功能充满热情,但永远不会将其用于代码,我的大部分Flash工作大部分是代码,因此我不是Linux的核心人物,Haxe不会阻止您使用Flash IDE,但是如果您愿意可以使用swfmill或sam。
问题是:为什么要花时间在可能会改变以仅出售未来版本且仅限Flash播放器的商业语言AS3上浪费时间?
不久之后,我就可以使用javascript而不需要jQuery等就可以使用JavaScript创建游戏或复杂的想法了。Haxe ...它可以跨浏览器运行... Haxe让我带上Flash编程技巧和界面开发了解Flash之外的知识(以前从未真正使用过JavaScript),如果我要学习纯JavaScript的话,我可能不会感到那么启用,更像是有人切断了我的手臂,而我将编写非常特定于平台的代码,虽然现在我可以使用FEffects进行补间,然后再添加一些编译器开关并编译到其他平台并使用一些neash / nme。
实际上,我非常喜欢像编译器这样精巧的类型,从而使我的代码更简洁。Typedef很棒。
我看了看PHP,发现它是一种混乱而愚蠢的肮脏语言,与JavaScript一样。我很高兴我可以用Haxe来锁定它们,而不必花太多时间在黑魔法上。
如果您喜欢为快速开发视觉创意而创建代码,那么我认为Haxe是理想的语言,即使作为自由职业者,我也在商业上使用它。
我对Haxe的看法
警告以下段落非常有哲理(实用段落在后面):
作为一个在我的短时间编程中对许多编程语言都开放的人,以及一个在我感觉某事对我不利的情况下继续前进的人;我发现Haxe是我无法发展的,我不能“更好”。
过去,我发现用一种特定语言写作所花费的时间与两个关键因素有关,我需要使用该语言多少才能获得结果,以及如何轻松掌握该语言。但是对于Haxe来说,掌握时间要短得多,这归因于我在各种语言中积累的知识很少。在Haxe之前,我还没有找到一个真正适合我并且感觉不错的人,他们要么很难理解,要么根本就没用。在我看来,至少是没有用的。
Haxe使我的写作方式更具表达性,我的意思不是“表达力”,而是每个人都在谈论语言的质量,我的意思是能够拥有一个想法并付诸实践,尝试我觉得正确的方法是正确的。无论成功还是完全失败。
Haxe对我来说是一个非常容易学习的曲线,因为我具有使用c样式语言和AS2 / 3的一般背景,而且我在使用它方面也没有任何困难。一直困扰着我使用一门新语言的一件事是了解特定语法/框架背后的概念,但是即使我克服了这一障碍,我也常常会发现该语言本身要么是受限的,要么是受限的,或者是两者兼而有之。有了Haxe,我既不受限制,也找不到语言本身来限制我。使用Haxe时,没有玻璃天花板,但是有玻璃地板,这是因为您可以做的事没有限制,但是您可以清楚地看到自己是如何到达那里的
拿起Haxe并不像拿起棍子来生火,也不是像出去买氧乙炔装置然后以此来生火。从这个意义上讲,Haxe更接近于匹配项,您可以重复使用它。它遵循了您以前所进行的几乎所有转换,但增加了有用的新功能。但是这样做并不能完全重新发明轮子,它只是可以修复烂掉的钻头。(在下一段中减少类推)
实际的事情:
该语言简单易用且标准化,同时仍允许程序员按自己的喜好发展。
您可以编写非常高级的代码,也可以随意处理一些零碎的代码(在某些平台上是严重的错误)
Haxe并不决定在任何一个平台上可以做什么和不能做什么,它可以(或计划为您提供)对所有内容的完全访问权限,但是可以在哪里添加标准化的做事方式。
邮件列表非常有用且反应迅速,论坛现在甚至还在加快步伐。
语言不断变化(以较小的方式),每个版本中都添加了新内容。
主要API遇到的真正错误很少,而编译器则更少。
每个人都公开谈论该语言的方向以及他们对Haxe的建议方向(或当然为什么要采用该方向)
最后,Haxe不是一家大型(甚至小型)公司以开发者的身份从您那里赚钱的大型私营企业,而是为所有开发人员使用,建立和改进而创建的。这就是为什么我觉得Haxe是我想要的地方。(现在回到编码)
如果您想简短回答:是的!
对于使用Haxe的人们来说,它对您有用吗?
在大多数情况下,我在服务器端使用Haxe。(这意味着PHP或neko目标)。在我看来,PHP是我使用过的最糟糕的语言,这就是我开始使用Haxe的原因:拥有一种可用的语言。
对我来说,另一个大优点是Haxe是开源的。
它提供了重要的可移植性吗?
在不同目标上具有相同的代码!我无法想象有任何方法可以提高可移植性。
将网站从PHP迁移到mod_tora,其执行速度是PHP的40-80倍,通常只需要5分钟的工作?
什么是现实世界,也许处于欣赏优势下?
有什么陷阱或陷阱?
PS:我认为学习一门新语言总是值得的,因为它可以提高您的编程技能和经验。
好了,您的问题已经回答了,但是我想补充一些简短的内容。
自从第一个Beta版开始,我就大量学习和使用了Haxe,从那时起就一直在使用它。这是我所学的第一门语言(当时我还在上大学)确实使我理解了语言和API之间的区别。
您可以看到在大学时我首先学习了AS2,然后学习了PHP,然后学习了一些Javascript。我们没有正式的编程介绍(而且我也不是在学习计算机科学)。这些语言都与平台紧密相关,因此,作为一个新手程序员,我自动假设strlen()是PHP,MovieClip是AS2,...
通过使用Haxe,我实际上了解了面向对象设计的价值,因为该平台不再限制我的课程了。如果我能很好地将Flash项目的代码与平台细节区分开来,则可以重用为Flash项目编写的代码。
由于您可以使用优秀的远程处理类在平台之间进行通信,因此我也意识到XML并不是那么特别,JSON也不是,没有作用于它的代码,它们都是没有意义的。
对于像我这样刚开始编程的人来说,这在XML很“酷”并且对所有内容都有利的时代是一个很大的启示;-)
Haxe是一种宝贵的语言。它的许多优点经常被忽略。例如,它具有出色的内置库,这些库使应用程序开发变得非常容易,例如简单但功能强大的ORM(Neko / PHP),完整的跨平台远程处理(Flash / JS / PHP / C ++ / Neko)受支持的平台可以与任何其他平台进行无缝通信,包括可靠的正则表达式库(除Flash <8外,所有其他支持)。
值得注意的是,我最近使用Haxe为PHP / JS / Flash编写了一个应用程序,发现开发速度呈指数增长。
诚然,Haxe可能不是以设计师为中心,但也不是硬派。Haxe非常易于学习和重用,并且随着目标平台数量的增加,Haxe开发人员也可以针对这些平台,而无需学习任何新知识。
Haxe的主要用途仍然限于Flash开发。我只是慢慢想起它可以用于其他目标的想法。我仍然看不到这方面的优势,而是直接在PHP和JS中执行我的PHP和JS。
即使我不为Neko后端开发程序,它也提供了很大的支持,因为这意味着我可以编写代码的测试用例并将其集成到构建脚本中,而不是只能在Flash Player中运行它们。这是一个很好的优势。
代码的开放性和开发性也是一个很好的优势。我确实需要一个预处理器,因此#line
为Haxe添加了支持。我认为Adobe不会认真对待我的要求。
我发现,与许多新的现代语言相比,作为一种类型的语言具有巨大的优势。
在语言一致性和后端透明性方面存在多个陷阱。我在这里列出了一些影响我的因素。当然,在这方面没有一种语言是完美的,但是我对一种新语言有这么多感到失望。
我从事个人和专业用途的Haxe编码已有大约2年了。它具有某些其他语言无法提供的优点,其中最大的优点是它几乎从一开始就被设计为现代的生产级编译器,可以灵活地适应新平台并利用其独特功能。 。这使得它最接近C的更高版本。如果您使用Haxe编写代码,则可以依靠它。
社区的接受程度比您想象的要强-我对列表流量进行了压缩千字节分析(根据http://lists.motion-twin.com/pipermail/haxe/的数据),结果显示自2006年以来,年初至今(每年1月至9月)增长了25-50%。在过去的六个月中,流量确实激增了,我正在认真考虑进行消化,因为如果我离开的话,我的收件箱中会塞满数百条关于Haxe的消息它超过一天。它没有像其他语言那样被大肆宣传,但是这反过来意味着,向Haxe狂奔的人们往往是自信,消息灵通的程序员。
人们已经在其他环境(任何地方的方案,JS中的Python或Ruby等)中尝试了语言到语言的编译器,但是这些语言是为不同的位置和目的而设计的,并且在翻译中失去了很多最佳方面,结果很酷,但对于日常工作并不满意。Haxe并不是那样。虽然它不具有来自其语言/运行一体化的便利,它有很多其他有趣的东西来报价现在。
从主观上讲,我发现我在Haxe方面比任何其他语言都更有生产力。我使用Haxe主要针对Neko和JavaScript。
编译器本身非常快,这使我可以像脚本语言一样使用Haxe。它倾向于面向对象,但是具有许多功能工具。头等函数,函数匹配,lambda库。
我发现Neko的速度足够了,它的小图像尺寸非常适合受限的环境。C FFI非常出色-添加新功能非常简单。
我将Haxe用于我的JavaScript客户端控制器,将事件触发到标准jQuery视图。这非常有效,因为您可以同时进行类型检查客户端和服务器代码,同时将未类型化的原始JS最小化,并保留常规JS库的优点。可用的JSON库。顺便说一句,尽管Haxe确实为Apache等提供了mod_ *,但我发现使用代理更为灵活,因此我可以在Web服务器后面设置多个Neko实例。
总的来说,我认为它是经过全面考虑的,并且至关重要的是,它在所有平台上都像广告中所述。
是的,完全
但是它需要更好的IDE和文档,对我而言缺少出色的IDE(例如基于eclipse的Eclipse)会带来所有不同,因此我无法达到我在其他语言中所能达到的生产力水平。
语言=很好-最好的开发环境=差(目前和恕我直言)
自从Haxe开始以来,我就开始关注它。我同意这似乎很有希望,但是我注意到开发人员没有像您期望的那样采用它(与RoR甚至Flex相比)。
无论现在的Haxe多么适合您,您仍将是早期采用者之一,并且您一定会遇到早期采用者通常会遇到的问题。
尽管有一个非常活跃的邮件列表,其中有非常有用的成员,但我仍然要等到更多的人加入并写出更多的书籍和资源之后,再进行讨论。
最后,Haxe帮助您使用一种语言编写并针对不同的平台(主要是JS和Flash,现在是NekoVM,PHP和C ++),您真的需要吗?