Haxe值得学习吗?[关闭]


153

对于使用Haxe的人们而言,它对您有用吗?阅读该网站看起来很有希望。它提供了显着的可移植性吗?

什么是现实世界,也许处于欣赏优势下?

有什么陷阱或陷阱?


从来没有听说过,看起来很有趣。
2009年

9
为什么社区会有严重的问题?社区不是很大,但是非常有帮助,只需看一下邮件列表的活动即可。
佛朗哥·庞蒂切利

4
简短的答案是肯定的,值得学习。如果其他人的回答不好,我将在后面写一个更详细的答案。
tylermac


2
我认为学习它没有任何危害。它与JS和AS非常接近,因此花时间学习可以将其延续到其他项目中。
Nosredna

Answers:


128

Haxe值得学习吗?

简短的答案是:绝对!

对于使用Haxe的人们来说,它对您有用吗?

如果您是一名Web开发人员,那么您就不会坚持单一技术太久。迟早,您将不得不应对环境或目标的变化(您为.NET开发,但重要的客户需要PHP,或者该小部件应该在Flash中而不是Javascript中),这是最好的情况。在最坏的情况下,您将不得不在同一工作日内不断进行切换,通常需要多次切换。

这些开关可能会浪费大量时间,因为您需要太多次更改编程范例,并且可能因为在为特定目标编写库时会出现很多重叠。Haxe尝试通过仅使用一种源语言(Haxe语言)和许多输出(通过Haxe编译器)来减轻过渡的痛苦。无论您的背景如何,该语言都非常友好且易于学习。

阅读网站看起来很有希望。它提供了重要的可移植性吗?

无论部署到哪个平台,语言都是相同的。因此,您可以以相同的方式为JS,Flash,C ++等定义类/接口/枚举/类型定义。如果定义的类型不依赖于特定的平台API,则可以毫不费力地在平台之间重用它们。 。所有平台还共享通用API,例如XML访问,HTTP连接和反射。有共同点的平台(例如Neko和PHP)为诸如文件访问或Web服务器开发之类的东西共享相同的API。

什么是现实世界,也许处于欣赏优势下?

  • 如果您有使用Flash / Flex的经验,那么您就会知道编译器如何减慢您的工作速度(唯一的好处是能够在等待时喝杯咖啡;)。Haxe编译器的速度快了很多倍,而且速度如此之快,以至于大多数时候您甚至都没有注意到它可以工作。
  • 产生的字节码比Adobe工具产生的字节码快得多。
  • 同样在Flash领域中,Haxe可以“内联”功能或使用Alchemy访问仅在其他地方可用的“内存”功能。
  • 如果需要,还可以确定要定位的Flash版本(从6到10)。API发生了很大变化,但Haxe语言完全相同。

谈到服务器端,我们都知道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)出现前几个月才出版的。该主要版本并没有太大变化,但确实增加了一些不兼容性。这本书仍然是一个有效的资源(我并不是仅仅因为我写了这句话;))


1
感谢您的回复Franco。以及IDE列表。HaXe的Xcode插件吸引了我。看起来超级甜!UI框架工具包和Haxe的故事是什么?例如,是否有可能使用HaXe定位说Cocoa并获得OS X的本机小部件?基本上使用接口生成器并与HaXe源代码链接在一起?
Gordon Potter,2009年

如果C ++对您来说足够本机,那么这是可能的。您应该包装可可调用,以便从haXe生成的代码中“可访问”它们。您可能已经知道,haXe的当前版本已经能够开发iPhone应用程序。当然,这仍然是非常实验性的。考虑到C ++目标仅在最新版本中引入。
佛朗哥·庞蒂切利

34
为haXe设置一些缺点也将有所帮助-不仅仅是赞美。
艾伦·克莱门特

我自己是AS3程序员,看到Flash快要死了,所以haxe对我们来说越来越好。
justnajm 2014年

同意可能的缺点,如果可以的话,如果可能的话,我真的很想要此答案的更新版本。
Prometheus

25

“对于使用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是理想的语言,即使作为自由职业者,我也在商业上使用它。


18

我对Haxe的看法

警告以下段落非常有哲理(实用段落在后面):

作为一个在我的短时间编程中对许多编程语言都开放的人,以及一个在我感觉某事对我不利的情况下继续前进的人;我发现Haxe是我无法发展的,我不能“更好”。

过去,我发现用一种特定语言写作所花费的时间与两个关键因素有关,我需要使用该语言多少才能获得结果,以及如何轻松掌握该语言。但是对于Haxe来说,掌握时间要短得多,这归因于我在各种语言中积累的知识很少。在Haxe之前,我还没有找到一个真正适合我并且感觉不错的人,他们要么很难理解,要么根本就没用。在我看来,至少是没有用的。

Haxe使我的写作方式更具表达性,我的意思不是“表达力”,而是每个人都在谈论语言的质量,我的意思是能够拥有一个想法并付诸实践,尝试我觉得正确的方法是正确的。无论成功还是完全失败。

Haxe对我来说是一个非常容易学习的曲线,因为我具有使用c样式语言和AS2 / 3的一般背景,而且我在使用它方面也没有任何困难。一直困扰着我使用一门新语言的一件事是了解特定语法/框架背后的概念,但是即使我克服了这一障碍,我也常常会发现该语言本身要么是受限的,要么是受限的,或者是两者兼而有之。有了Haxe,我既不受限制,也找不到语言本身来限制我。使用Haxe时,没有玻璃天花板,但是有玻璃地板,这是因为您可以做的事没有限制,但是您可以清楚地看到自己是如何到达那里的

拿起Haxe并不像拿起棍子来生火,也不是像出去买氧乙炔装置然后以此来生火。从这个意义上讲,Haxe更接近于匹配项,您可以重复使用它。它遵循了您以前所进行的几乎所有转换,但增加了有用的新功能。但是这样做并不能完全重新发明轮子,它只是可以修复烂掉的钻头。(在下一段中减少类推)

实际的事情:

该语言简单易用且标准化,同时仍允许程序员按自己的喜好发展。

您可以编写非常高级的代码,也可以随意处理一些零碎的代码(在某些平台上是严重的错误)

Haxe并不决定在任何一个平台上可以做什么和不能做什么,它可以(或计划为您提供)对所有内容的完全访问权限,但是可以在哪里添加标准化的做事方式。

邮件列表非常有用且反应迅速,论坛现在甚至还在加快步伐。

语言不断变化(以较小的方式),每个版本中都添加了新内容。

主要API遇到的真正错误很少,而编译器则更少。

每个人都公开谈论该语言的方向以及他们对Haxe的建议方向(或当然为什么要采用该方向)

最后,Haxe不是一家大型(甚至小型)公司以开发者的身份从您那里赚钱的大型私营企业,而是为所有开发人员使用,建立和改进而创建的。这就是为什么我觉得Haxe是我想要的地方。(现在回到编码)


13

如果您想简短回答:是的!

对于使用Haxe的人们来说,它对您有用吗?

在大多数情况下,我在服务器端使用Haxe。(这意味着PHP或neko目标)。在我看来,PHP是我使用过的最糟糕的语言,这就是我开始使用Haxe的原因:拥有一种可用的语言。

对我来说,另一个大优点是Haxe是开源的。

它提供了重要的可移植性吗?

在不同目标上具有相同的代码!我无法想象有任何方法可以提高可移植性。

将网站从PHP迁移到mod_tora,其执行速度是PHP的40-80倍,通常只需要5分钟的工作?

什么是现实世界,也许处于欣赏优势下?

  • 最大的优势是代码的可移植性以及平台之间进行通信的出色选择,处理客户端和服务器之间的数据从未如此简单。(查看Wiki 中的“ 远程处理”部分。)
  • 社区很棒。(如果您至少喜欢邮件列表。:-)
  • 另一件事是:如果您需要执行Haxe不支持的非常平台化的本机操作(这种情况很少发生),则Haxe始终会为您提供针对它们的选项。这就是所谓的Haxe魔术。换句话说:您可以使用平台的本地语言完成所有工作,以及Haxe为您提供的所有美好功能。

有什么陷阱或陷阱?

  • 文档,有时安装不是100%完美。对IDE的支持可以大大提高。
  • 同样,JavaScript目标有时很难使用,因为Haxe提供了一种非常好的语言,但是缺少用于最常见的DOM操作的某种框架,但是我认为有些人正在为此工作;-)
  • 如果我必须为客户工作,他们有时会不喜欢以如此未知的语言来实现他们的项目的想法。

PS:我认为学习一门新语言总是值得的,因为它可以提高您的编程技能和经验。


mode_tora听起来很有趣。但是,如果您没有/想要apache的httpd怎么办?neko中有一台服务器,但是文档说这只是为了开发。
stesch 2010年

8

好了,您的问题已经回答了,但是我想补充一些简短的内容。

自从第一个Beta版开始,我就大量学习和使用了Haxe,从那时起就一直在使用它。这是我所学的第一门语言(当时我还在上大学)确实使我理解了语言和API之间的区别。

您可以看到在大学时我首先学习了AS2,然后学习了PHP,然后学习了一些Javascript。我们没有正式的编程介绍(而且我也不是在学习计算机科学)。这些语言都与平台紧密相关,因此,作为一个新手程序员,我自动假设strlen()是PHP,MovieClip是AS2,...

通过使用Haxe,我实际上了解了面向对象设计的价值,因为该平台不再限制我的课程了。如果我能很好地将Flash项目的代码与平台细节区分开来,则可以重用为Flash项目编写的代码。

由于您可以使用优秀的远程处理类在平台之间进行通信,因此我也意识到XML并不是那么特别,JSON也不是,没有作用于它的代码,它们都是没有意义的。

对于像我这样刚开始编程的人来说,这在XML很“酷”并且对所有内容都有利的时代是一个很大的启示;-)


5

Haxe是一种宝贵的语言。它的许多优点经常被忽略。例如,它具有出色的内置库,这些库使应用程序开发变得非常容易,例如简单但功能强大的ORM(Neko / PHP),完整的跨平台远程处理(Flash / JS / PHP / C ++ / Neko)受支持的平台可以与任何其他平台进行无缝通信,包括可靠的正则表达式库(除Flash <8外,所有其他支持)。

值得注意的是,我最近使用Haxe为PHP / JS / Flash编写了一个应用程序,发现开发速度呈指数增长。

诚然,Haxe可能不是以设计师为中心,但也不是硬派。Haxe非常易于学习和重用,并且随着目标平台数量的增加,Haxe开发人员也可以针对这些平台,而无需学习任何新知识。


4

Haxe的主要用途仍然限于Flash开发。我只是慢慢想起它可以用于其他目标的想法。我仍然看不到这方面的优势,而是直接在PHP和JS中执行我的PHP和JS。

即使我不为Neko后端开发程序,它也提供了很大的支持,因为这意味着我可以编写代码的测试用例并将其集成到构建脚本中,而不是只能在Flash Player中运行它们。这是一个很好的优势。

代码的开放性和开发性也是一个很好的优势。我确实需要一个预处理器,因此#line为Haxe添加了支持。我认为Adobe不会认真对待我的要求。

我发现,与许多新的现代语言相比,作为一种类型的语言具有巨大的优势。

在语言一致性和后端透明性方面存在多个陷阱。我在这里列出了一些影响我的因素。当然,在这方面没有一种语言是完美的,但是我对一种新语言有这么多感到失望。


3

我从事个人和专业用途的Haxe编码已有大约2年了。它具有某些其他语言无法提供的优点,其中最大的优点是它几乎从一开始就被设计为现代的生产级编译器,可以灵活地适应新平台并利用其独特功能。 。这使得它最接近C的更高版本。如果您使用Haxe编写代码,则可以依靠它。

社区的接受程度比您想象的要强-我对列表流量进行了压缩千字节分析(根据http://lists.motion-twin.com/pipermail/haxe/的数据),结果显示自2006年以来,年初至今(每年1月至9月)增长了25-50%。在过去的六个月中,流量确实激增了,我正在认真考虑进行消化,因为如果我离开的话,我的收件箱中会塞满数百条关于Haxe的消息它超过一天。它没有像其他语言那样被大肆宣传,但是这反过来意味着,向Haxe狂奔的人们往往是自信,消息灵通的程序员。

人们已经在其他环境(任何地方的方案,JS中的Python或Ruby等)中尝试了语言到语言的编译器,但是这些语言是为不同的位置和目的而设计的,并且在翻译中失去了很多最佳方面,结果很酷,但对于日常工作并不满意。Haxe并不是那样。虽然它不具有来自其语言/运行一体化的便利,它有很多其他有趣的东西来报价现在


3

从主观上讲,我发现我在Haxe方面比任何其他语言都更有生产力。我使用Haxe主要针对Neko和JavaScript。

编译器本身非常快,这使我可以像脚本语言一样使用Haxe。它倾向于面向对象,但是具有许多功能工具。头等函数,函数匹配,lambda库。

我发现Neko的速度足够了,它的小图像尺寸非常适合受限的环境。C FFI非常出色-添加新功能非常简单。

我将Haxe用于我的JavaScript客户端控制器,将事件触发到标准jQuery视图。这非常有效,因为您可以同时进行类型检查客户端和服务器代码,同时将未类型化的原始JS最小化,并保留常规JS库的优点。可用的JSON库。顺便说一句,尽管Haxe确实为Apache等提供了mod_ *,但我发现使用代理更为灵活,因此我可以在Web服务器后面设置多个Neko实例。

总的来说,我认为它是经过全面考虑的,并且至关重要的是,它在所有平台上都像广告中所述。


2

是的,完全

但是它需要更好的IDE和文档,对我而言缺少出色的IDE(例如基于eclipse的Eclipse)会带来所有不同,因此我无法达到我在其他语言中所能达到的生产力水平。

语言=很好-最好的开发环境=差(目前和恕我直言)


1

自从Haxe开始以来,我就开始关注它。我同意这似乎很有希望,但是我注意到开发人员没有像您期望的那样采用它(与RoR甚至Flex相比)。

无论现在的Haxe多么适合您,您仍将是早期采用者之一,并且您一定会遇到早期采用者通常会遇到的问题。

尽管有一个非常活跃的邮件列表,其中有非常有用的成员,但我仍然要等到更多的人加入并写出更多的书籍和资源之后,再进行讨论。

最后,Haxe帮助您使用一种语言编写并针对不同的平台(主要是JS和Flash,现在是NekoVM,PHP和C ++),您真的需要吗?


1
我不确定采用率是否公平。使用Flex,它是Adobe的赞助语言。这自动使它具有“街头信誉”;)Ruby是围绕着它的,就像Rails诞生时已有10年的历史。从我所看到的来看,似乎有更多的人开始使用RoR,而不是普通的Ruby。相比之下,Haxe的年龄大约只有后者的一半,尽管在那里有许多针对Haxe的开发框架,但是肯定没有像Rails那样具有病毒性。
tylermac

认真吗?在RoR出现之前使用Ruby的RoR开发人员所占的百分比是多少?对我(作为开发人员)来说,开发平台是否由大公司赞助并不重要?HaXe IMO的适应速度真的很慢,这是我对此的主要担忧
Ammar

新方法并不总是对每个人都显而易见,我记得RoR和papervision这两个项目近年来都在扩展,这引起了我的兴趣,我不得不说haXe确实证明了它的潜力,我相信它将比这两者都更大。2-3年会告诉你;)
JLM

我的论点仍然存在:为时过早:)
Ammar

1
@JLM:4年过去了,您可以编辑答案并进行调整:)
Janus Troelsen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.