158

对于那些使用Haxe的人,是什么让它对你有用?阅读该网站,它看起来很有希望。它是否提供了显着的便携性?

什么是现实世界,也许是受到赞赏的优势?

有哪些陷阱或陷阱?

4

11 回答 11

130

Haxe值得学习吗?

简短的回答是:当然!

对于那些使用 Haxe 的人,是什么让它对你有用?

如果您是一名 Web 开发人员,您知道您不能长时间坚持使用一种技术。迟早你将不得不处理环境或目标的变化(你为 .NET 开发,但一个重要的客户需要 PHP,或者那个小部件应该是 Flash 而不是 Javascript),这是最好的情况。在最坏的情况下,您将不得不不断切换,通常在同一工作日内多次切换。

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

阅读该网站,它看起来很有希望。它是否提供了显着的便携性?

无论您部署到什么平台,语言都是相同的。因此,您以相同的方式为 JS、Flash、C++ 等定义类/接口/枚举/typedef。如果您定义的这些类型不依赖于特定的平台 API,则它们可以在不同平台之间轻松重用. 所有平台还共享通用 API,例如 XML 访问、HTTP 连接和反射。具有共同点的平台(即 Neko 和 PHP)共享相同的 API 用于文件访问或 Web 服务器开发等事情。

什么是现实世界,也许是受到赞赏的优势?

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

说到服务器端,大家都知道 PHP 是多么的无所不在。如果您的 Web 应用程序增长,您可以使用 Haxe 开发应用程序并扩展到 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)。该主要版本没有太大变化,但确实增加了一些不兼容性。这本书仍然是一个有效的资源(我不只是因为我写了它;))

于 2009-09-06T10:38:57.697 回答
25

“对于那些使用 Haxe 的人来说,它对你有用吗?”

作为一个有创意的闪光者,我真的看不到 AS3 的意义了!因此,来自 Flash 用户的编码员/艺术家是我的看法:

在我目前的项目中,我有一个 19 岁的孩子,他在我的指导下从大部分时间线 AS2/AS3 迁移到 Haxe 课程,并且正在移植 AS2 和 AS3 代码。所以我不认为 Haxe 比 AS3 更难使用,或者在 Flash 中使用时明显不同。就稳定性而言,我目前的主要抱怨是当前 Flash 播放器的方面,Haxe 在开发 Flash 时确实与 AS3 一样稳定或更稳定。

Flash 的演变一直是一个不断创建库的过程,随着 Flash 的变化而变得无用(难道他们每年都需要出售软件!?),组件一直是我需要的东西,但尺寸很傻,所以我不愿意像羊一样跟随进入 Flex,甚至转向替代 XAML。

Haxe 的主要优势是,您可以开始真正考虑创建与平台分离的类,并且从现在开始五年后基本上可以使用,我怀疑您创建的任何 AS3 都是如此,Haxe 的绑定更少,可能我可以将代码编译成 JavaScript、Silverlight 或谷歌接下来推出的任何东西。

我对 Haxe 的主要问题是大多数开发都不是在 Mac 上进行的,因此编译 C++ 的方面和 Haxe 的新功能有时会落后于 Windows 用户,但我没有遇到核心 Haxe 的问题,例如 Flash 编译。

就设计师而言:我使用在运行时加载的 Flash IDE 电影作为我的视觉资产,并在 AS3 中进行开发时也这样做,所以我的工作流程实际上并不依赖于 AS3/Haxe,我喜欢简单的生活,所以我将 Textmate 用于 AS3或斧头。我对 Flash IDE 及其强大的功能充满热情,但永远不会将它用于代码,而且我的大部分 Flash 工作主要是代码,所以我不是 Linux 硬核,Haxe 不会阻止你使用 Flash IDE,但如果你想可以使用 swfmill 或 sam。

问题是:为什么要把时间浪费在商业语言 AS3 上,这种语言可能只是为了销售未来的版本而改变,并且仅限于 Flash 播放器?

我很快就到了一个阶段,我可以在 javascript 中创建游戏或复杂的 ide,而无需 jQuery 等开箱即用 Haxe ......它可以跨浏览器等工作...... Haxe 让我带上我的 Flash编程技能和对 Flash 之外的界面开发的理解(以前从未真正使用过 JavaScript),如果我要学习纯 JavaScript,我可能不会感到如此有能力,更像是有人切断了我的手臂,我会编写非常特定于平台的代码,而现在我可以使用FEffects进行补间,然后添加一些编译器开关并编译到其他一些平台并使用一些 neash/nme。

我实际上非常喜欢编译器对类型的智能等方面,让我的代码更干净。typedef 非常棒。

我查看了 PHP,并认为它是一种凌乱愚蠢的肮脏语言,对于 JavaScript 也是如此,我很高兴我可以用 Haxe 来定位它们,而不必花太多时间在黑魔法上。

如果你喜欢为快速开发视觉创意而编写代码,我认为 Haxe 是理想的语言,即使作为一名自由职业者,我也在商业上使用它。

于 2009-09-06T12:20:05.027 回答
18

我对 Haxe 的看法,

警告以下段落是非常哲学的(实用的在下面):

作为一个在我短暂的编程时间里对许多编程语言持开放态度的人,以及当我觉得有些东西不适合我时简单地继续前进的人;我发现 Haxe 是我无法进步的东西,我只是不能“更好”。

过去我发现,我用一种特定语言写作的时间与两个关键因素有关,我需要使用该语言多少才能获得结果,以及我找到该语言的掌握程度。但是使用 Haxe 时,掌握时间要短得多,我将此归因于我对各种语言的少量知识积累。在 Haxe 之前,我从来没有找到一个真正适合我并且感觉很好的东西,它们要么难以理解,要么就是毫无用处;从我的角度来看,至少没用。

Haxe 让我的写作方式更具表现力,我并不是指每个人都在谈论语言的质量中的“表现力”,我的意思是有一个想法并按照它运行的能力,去尝试有些事情我觉得是对的。无论是成功还是完全失败。

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

拿起 Haxe 不像拿起一些棍子生火,但也不像出去买一套氧乙炔装置然后用它生火。从这个意义上说,Haxe 更接近匹配,您可以重复使用。它遵循几乎所有您曾经使用过的东西的转换,但添加了有用的新功能。但要做到这一点,它并没有完全重新发明轮子,它只是修复了腐烂的部分。(好的,下一段中的类比较少)

实用的东西:

该语言简单易用且标准化,同时仍允许程序员随心所欲。

你可以写一段非常高级的代码,或者去摆弄一些零碎的东西(在某些平台上严重程度)

Haxe 并没有规定您在任何一个平台上可以做什么和不能做什么,它提供(或计划让您)完全访问所有内容,但它可以在其中添加一种标准化的做事方式。

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

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

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

每个人都公开谈论语言的方向以及他们为 Haxe 建议的方向(以及为什么它应该采取这个方向)

最后,Haxe 不是大型(甚至小型)公司的大型私人企业,目的是从作为开发人员的你身上赚钱,而是为所有开发人员创建,供所有开发人员使用、构建和改进。这就是为什么我觉得 Haxe 是我想去的地方。(现在回到编码)

于 2009-09-06T13:35:29.197 回答
13

如果你想得到一个简短的回答:是的!

对于那些使用 Haxe 的人,是什么让它对你有用?

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

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

它是否提供了显着的便携性?

在不同的目标上使用相同的代码!我无法想象有什么方法可以拥有更多的便携性。

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

什么是现实世界,也许是受到赞赏的优势?

  • 最大的优势是代码的可移植性和平台之间通信的出色选择,在客户端和服务器之间处理数据从未如此简单。(查看 wiki 中的Remoting部分。)
  • 社区很棒。(如果您至少喜欢邮件列表。:-)
  • 另一件事是:如果您需要执行 Haxe 不支持的非常平台的原生操作(这种情况很少发生),Haxe 总是为您提供针对它们的选项。它被称为Haxe 魔法。换句话说:你可以用平台的本地语言做所有你能做的事情 + Haxe 为你提供的所有好处。

有哪些陷阱或陷阱?

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

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

于 2009-09-06T13:52:33.050 回答
8

好吧,您的问题已经得到解答,但我想添加一些简短的介绍。

在第一个 Beta 版之后,我学习并使用了 Haxe,并且一直在使用它。这是我学习的第一门语言(当时我还在上大学),它真正让我理解了语言和 API 之间的区别。

你看我在大学时首先学习了 AS2,然后是 PHP,然后是一些 Javascript。我们没有正式的编程介绍(而且我也没有学习计算机科学)。这些语言都非常依赖于平台,所以作为一个新手程序员,我自动假设 strlen() 是 PHP,MovieClip 是 AS2,......

通过使用 Haxe,我真正理解了面向对象设计的价值,因为平台不再限制我的类。我可以在我的常规 Web 代码中重用为 Flash 项目编写的代码,如果我将它们与它们的平台细节分离得足够好的话。

由于您可以使用出色的远程处理类在平台之间进行通信,我还意识到 XML 并不是那么特别,JSON 也不是,如果没有代码作用于它,这一切都是毫无意义的。

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

于 2009-09-06T17:18:58.950 回答
5

我对 Haxe 的主要用途仍然仅限于 Flash 开发。我只是慢慢地接受它可以用于其他目标的想法。我仍然看不到那个方向的优势,直接在 PHP 和 JS 中做我的 PHP 和 JS。

尽管我不是为 Neko 后端开发,但它是很好的支持,因为这意味着我可以为代码编写测试用例并将它们集成到构建脚本中,而不仅仅是能够在 Flash 播放器中运行它们。这是一个非常好的优势。

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

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

在语言一致性和后端透明度方面存在一些缺陷。我在这里列出了影响我的那些。当然,在这方面没有一种语言是完美的,但我有点失望,一种新语言有这么多。

于 2009-09-06T11:24:02.910 回答
5

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

作为说明,我最近使用 Haxe 为 PHP/JS/Flash 编写了一个应用程序,发现开发速度呈指数级增长。

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

于 2009-09-06T12:14:31.250 回答
3

我已经在个人和专业用途中编写 Haxe 代码大约 2 年了。它有一些其他语言无法获得的优势,最大的优势在于它几乎从一开始就被设计为现代生产级编译器,可以灵活地适应新平台并利用它们的独特功能. 这使它成为最接近 C 的高级版本的东西。如果你用 Haxe 编写代码,你可以指望它继续存在。

社区的接受度比你想象的要强 - 我根据压缩千字节对列表流量进行了一些分析(来自http://lists.motion-twin.com/pipermail/haxe/上的数据),结果显示自 2006 年以来,年初至今(1 月至 9 月)每年增长 25-50%。在过去的六个月里,流量确实爆炸式增长,我正在认真考虑消化,否则如果我离开,我的收件箱就会被 Haxe 上的数百条消息淹没超过一天。它不像其他语言那样被大肆宣传,但这反过来意味着搭车到 Haxe 的人往往是自信、见多识广的程序员。

人们已经在其他上下文中尝试了语言到语言的编译器(Scheme Anywhere、Python 或 Ruby 中的 JS 等),但是这些语言是为不同的地方和目的而设计的,并且在翻译中失去了很多最好的方面,使得结果很酷,但不适用于日常工作。Haxe 不这么认为。虽然它没有语言/运行时集成带来的便利,但它现在提供了许多其他很酷的东西

于 2009-09-09T06:19:16.570 回答
3

主观上,我发现我在 Haxe 中的工作效率比任何其他语言都高。我使用 Haxe 主要针对 Neko 和 JavaScript。

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

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

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

总的来说,我认为它非常全面并且经过深思熟虑 - 并且严格来说它可以在所有平台上宣传。

于 2009-09-06T16:20:53.047 回答
2

是的,完全

但是它需要一个更好的 IDE 和文档,对我来说缺乏一个很棒的 IDE(比如基于 eclipse 的)会产生很大的不同,因此我无法达到我在其他语言中所做的生产力水平。

语言=很棒-最好的开发环境=差(此时和恕我直言)

于 2009-09-06T11:55:26.383 回答
1

Haxe 从一开始就引起了我的注意。我同意这看起来很有希望,但我注意到开发人员并没有像您预期的那样迅速采用它(与 RoR 甚至 Flex 相比)。

不管现在 Haxe 对你来说有多好和合适,你仍然是早期采用者之一,你肯定会遇到早期采用者通常面临的问题。

尽管有一个非常活跃的邮件列表,成员非常乐于助人,但我仍然会等到更多的人加入并写更多关于它的书籍和资源。

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

于 2009-09-06T01:48:56.173 回答