代码之家  ›  专栏  ›  技术社区  ›  Gordon Potter

哈克斯值得学习吗?[关闭]

  •  145
  • Gordon Potter  · 技术社区  · 15 年前

    对于那些使用 Haxe 是什么让它对你有用?浏览这个网站看起来很有希望。它是否提供了重要的可移植性?

    什么是现实世界,也许是不被欣赏的优势?

    什么是陷阱或陷阱?

    11 回复  |  直到 5 年前
        1
  •  125
  •   eazimmerman    6 年前

    哈克斯值得学习吗?

    简短的回答是:绝对!

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

    如果你是一个网络开发者,你知道你不能太长时间坚持单一技术。迟早,您将不得不处理环境或目标中的更改(您为.NET开发,但一个重要的客户需要PHP,或者该小部件应该是Flash而不是JavaScript),这是最好的情况。在最坏的情况下,你必须经常转换,通常在同一个工作日转换多次。

    这些开关会浪费你很多时间,因为你需要改变你的编程范式太多次,可能是因为你在为特定目标编写库的时候会有很多重叠。haxe试图通过只有一种源语言(haxe语言)和许多输出(通过haxe编译器)来减轻转换的痛苦。这门语言很友好,很容易学,不管你的背景如何。

    浏览这个网站看起来很有希望。它是否提供了重要的可移植性?

    无论部署到哪个平台,语言都是相同的。因此,对于JS、Flash、C++等,您可以用相同的方式定义类/接口/Enn/Type,等等。如果您定义的类型不依赖于特定的平台API,它们可以从平台到平台再使用,而不需要任何努力。所有平台还共享通用API,如XML访问、HTTP连接和反射。具有共同点(即neko和php)的平台在文件访问或Web服务器开发等方面共享相同的API。

    什么是现实世界,也许是不被欣赏的优势?

    • 如果您有使用flash/flex的经验,那么您就知道编译器是如何减慢您的工作速度的(唯一的好处是可以在等待时休息一下)。haxe编译器的速度是它的很多倍,非常快,以至于大多数时候你甚至没有注意到它的工作。
    • 生成的字节码比Adobe工具生成的等效字节码快得多。
    • 同样在flash领域,haxe也可以“内联”函数或通过炼金术访问仅在别处可用的内存功能。
    • 如果您需要它,您还可以决定Flash的目标版本,从6到10;API已经改变了很多,但是haxe语言是完全相同的。

    说到服务器端,我们都知道PHP有多普遍。如果你的Web应用程序增长,你可以开发一个HAXE的应用程序,并将其应用到NEKO甚至C++。

    什么是陷阱或陷阱?

    以下是常见的误解:

    • Haxe is young and immature 不是真的,Haxe现在已经4岁了,已经看过25个正式版本(不是构建版)+13个alphas和betas,它不断更新,拥有一个非常专注的社区。它被许多开发领域的人专业地使用;看看 mailing list archive 以了解人们如何使用哈克斯。

    • Haxe is complicated 因为haxe的主要目标是毫无疑问的as3,人们希望它必须有向导或GUI。如前所述,haxe是一种语言和编译器,它使它适合程序员,但不适合设计师。

    • There aren't any IDEs 真正的原因是可以在很多方面改进IDE,以便更好地与HAXE集成,但是已经有很多 valid options .

    • The only book published is already outdated 这里也有一些事实,不幸的是,这本书是在一个主要版本(从v1到v2)发生前几个月出版的。这个主要的版本并没有改变太多,但是增加了一些不兼容性。这本书仍然是一个有效的资源(我不是因为我写了这本书才这么说;)

        2
  •  25
  •   Mark Knol    9 年前

    “对于那些使用哈克斯的人来说,是什么让它对你有用?”

    作为一个有创意的闪光灯,我真的不再看到AS3的意义了!因此,从一个Flash用户编码员/艺术家那里,我的观点是:

    在我目前的项目中,我有一个19岁的孩子,他在我的指导下从主要的时间轴AS2/AS3转到了HAXE课程,并且在AS2和AS3代码之间移植。所以我不认为haxe比as3更难使用,或者在flash中使用时有明显的不同。就稳定性而言,我目前的主要问题是当前Flash播放器的一些方面,在开发Flash时,haxe确实和as3一样稳定或更稳定。

    flash的发展是一个不断的过程,创建的库随着flash的变化而变得无用(可能他们每年都需要销售软件!)?)和组件一直是我需要的东西,但大小是愚蠢的,所以我不愿意像绵羊一样进入到灵活,甚至移动到替代的XAML。

    Haxe的主要优点是,您可以开始真正考虑创建与平台分离的类,从现在开始五年后这些类将基本上可用。我怀疑这对于您创建的任何AS3都是正确的,Haxe的关联更少,可能我可以将代码编译为javascript、Silverlight或Google下一步推出的任何东西。

    HAXE的主要问题是大部分的开发都没有在MACS上进行,所以编译的方面和HAXE的新特性有时会从Windows用户中走出来,但是我没有像Flash编译之类的核心HAXE存在问题。

    在设计师方面:我使用运行时加载的Flash IDE影片作为我的视觉资产,在AS3中开发时也这样做,所以我的工作流程确实不依赖于AS3/HAXE,我喜欢简单的生活,所以我使用textmate作为AS3或HAXE。我对flash-ide及其功能充满热情,但绝不会将其用于代码,我大部分的flash工作都是代码,所以我不是Linux硬核,haxe不会阻止你使用flash-ide,但如果你想使用swfmill或sam,你可以。

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

    我花了很长时间才到达一个阶段,在这个阶段,我可以用javascript创建一个游戏或复杂的IDE,而不需要jquery等现成的haxe…它可以跨浏览器等工作…haxe让我学习我的flash编程技能和对flash外部接口开发的理解(以前从未真正使用过javascript),如果我学习纯javascript,我可能感觉不到它的功能,更像是有人割断了我的手臂,我将编写非常特定于平台的代码,而现在我可以使用 FEffects 对于tweening和稍后添加一些编译器开关并编译到其他平台,并使用一些neash/nme。

    实际上,我非常喜欢编译器这样的方面,因为它对类型很聪明,允许我的代码更干净。而且,typedef很出色。

    我看了一眼PHP,发现它是一种混乱的、愚蠢的、肮脏的语言,对于javascript也是如此,我很高兴我可以用haxe来攻击它们,而不必花太多时间在黑黑客魔法上。

    如果你喜欢为视觉创造性的快速发展创建代码,我认为haxe是理想的语言,即使作为一个自由职业者,我也在商业上使用它。

        3
  •  18
  •   Mark Knol    9 年前

    我对哈克斯的看法,

    警告:以下段落非常具有哲理性(实际段落更详细):

    作为一个在我的短时间编程过程中对许多编程语言开放的人,当我觉得有些东西对我不起作用时,他会继续前进;我发现haxe是我无法进步的东西,我就是无法“改进它”。

    我发现在过去,我花在一种特定语言上的时间与两个关键因素有关,即我需要多少时间使用这种语言才能获得结果,以及我如何轻松地掌握这种语言。但是对于haxe来说,掌握时间要短得多,我把这归因于我在各种语言中积累的少量知识。在哈克斯之前,我从来没有找到一个真正适合我的,并且感觉很对的人,他们要么难以理解,要么就是毫无用处;至少从我的角度来说是毫无用处的。

    哈克斯让我对自己的写作方式有了更多的表现力,我的意思不是“表现力”,因为每个人都在谈论语言的质量,我的意思是有能力提出一个想法并付诸实践,尝试我认为正确的东西。是成功还是彻底失败。

    对于我来说,haxe是一个非常容易学习的曲线,我有C风格语言和AS2/3的一般背景,并且我没有遇到任何问题。有一件事总是阻碍我使用新语言的进程,那就是理解特定语法/框架背后的概念,但即使我通过了这一障碍,我也常常发现语言本身要么有限,要么限制,要么两者兼而有之。有了哈克斯,我既不受限制,也不觉得语言本身限制了我。Haxe没有玻璃天花板,但是它是玻璃地板,因为你可以做的没有限制,但是你可以清楚地看到你是怎么做到的。

    拾起哈克斯不像拾起一些木棍生火,但也不像出去买一台氧乙炔装置然后用它生火。从这个意义上说,haxe更接近于一个匹配项,您可以重用它。它几乎遵循了您以前所做的所有转换,但添加了有用的新特性。但要做到这一点,并不是彻底改造车轮,它只是修复腐烂的碎片。(好吧,下一段中的类比比较少)

    实际情况:

    该语言简单、简单、标准化,同时还允许程序员随心所欲地进行编程。

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

    Haxe没有规定你在任何一个平台上可以做什么,也没有规定你不能做什么,它给(或者计划给你)所有东西的完全访问权,但是在哪里它可以增加一种标准化的做事方式。

    邮件列表非常有用,响应迅速,论坛现在甚至加快了速度。

    语言不断地被改变(以微小的方式),在每个版本中都添加了新的内容。

    对于主API来说,真正的bug很少,而对于编译器则更少。

    每个人都公开谈论语言,它的方向和他们为哈克斯所建议的方向(以及为什么它应该这样做的原因)

    最后,Haxe并不是一家大公司(甚至小公司)为了从你身上作为开发人员赚钱而进行的大型私人投资,而是为所有开发人员使用、构建和改进而创建的。这就是为什么我觉得哈克斯是我想去的地方。(现在回到编码阶段)

        4
  •  13
  •   Mark Knol    9 年前

    如果你想得到一个简短的答案: 对!

    对于那些使用哈克斯的人,什么? 对你有用吗?

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

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

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

    在不同的目标上有相同的代码!我想不出有什么方法可以使它更轻便。

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

    什么是真实世界,也许 优势不足?

    • 最大的优点是代码的可移植性和平台间通信的最佳选择,在客户机和服务器之间处理数据从来都不容易。(看看 Remoting wiki中的部分。)
    • 社区是 伟大的 . (如果你至少喜欢邮件列表。-)
    • 另一件事是:如果您需要执行HAXE不支持的非常平台本地操作(这种情况很少发生),HAXE总是为您提供针对它们的选项。它被称为 Haxe magic .换句话说:你可以用平台的母语做你能做的每件事+哈克斯给你的所有好处。

    什么是陷阱或陷阱?

    • 文档,有时安装不是100%完美。对IDES的支持可以改进很多。
    • 另外,javascript目标有时也很难使用,因为haxe提供了一种非常好的语言,但是缺少用于最常见的DOM操作的某种框架,但我认为有些人正在研究它;-)
    • 如果我必须为客户工作,他们有时不喜欢用这样一种未知的语言来实现他们的项目。

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

        5
  •  8
  •   Gama11 zzapper    8 年前

    好吧,你的问题已经回答了,但我想加几个简短的警告。

    在第一次测试后,我学习并大量使用haxe,从那时起我就一直在使用它。 这是我学到的第一门语言(当时我还在大学里),它让我真正理解了语言和API之间的区别。

    你看,在大学里,我首先学习了AS2,然后是PHP,然后是一些JavaScript。我们没有正式的编程入门(我也没有学计算机科学)。这些语言都与平台紧密相连,所以作为一个新手程序员,我自动假设strlen()是php,movieclip是as2,…

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

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

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

        6
  •  5
  •   Mark Knol    9 年前

    哈克斯语是一种非常宝贵的语言。很多优点经常被忽视。例如,它具有奇妙的内置库,使应用程序开发变得更容易,例如一个简单但非常强大的ORM(NEKO/PHP)、完全跨平台远程处理(FLAS/JS/PHP/C++/NEKO),其中任何支持的平台可以与任何其他平台无条件地通信,一个实例化的正则表达式库(除了Flas之外,所有人都支持)。H<8)等等。

    值得注意的是,我最近编写了一个使用haxe for php/js/flash的应用程序,发现开发速度呈指数级增长。

    当然,haxe可能不是以设计师为中心,但也不是硬核。HAXE非常容易学习和重用,随着目标平台数量的增加,HAXE开发人员也可以瞄准这些平台,而无需学习任何新知识。

        7
  •  4
  •   Gama11 zzapper    5 年前

    我对haxe的主要使用仍然局限于flash开发。我只是慢慢地意识到它可以用于其他目标。我仍然没有看到这个方向的优势,直接在PHP和JS中使用PHP和JS。

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

    代码的开放性和开发性也是一个很好的优势。我真的需要一个预处理器,所以 #line 哈克斯得到了支持。我不认为Adobe会认真对待我的请求。

    我发现打字语言比许多新的现代语言有很大的优势。

    在语言一致性和后端透明性方面有几个陷阱。我列了一张影响我的名单 here . 当然,在这方面没有一种语言是完美的,但我对一种新语言有这么多感到有点失望。

        8
  •  3
  •   Mark Knol    9 年前

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

    社区接受度比你想象的要高-我用压缩的千字节(从上的数据)对列表流量做了一点分析。 http://lists.motion-twin.com/pipermail/haxe/ )结果显示,自2006年以来,本年迄今(1-9月)每年增长25-50%。在过去的六个月里,流量真的激增了,我正在认真考虑去消化,因为否则如果我把haxe放一天以上,我的收件箱就会塞满成百上千条的信息。它不像其他语言那样被大肆宣传,但这反过来意味着人们把车挂到haxe上往往是自信的、见多识广的程序员。

    人们已经在其他环境(Scheme Anywhere、Python或Ruby in JS等)中尝试了语言到语言的编译器,但是这些语言是为不同的地方和目的而设计的,在翻译中会失去很多最好的方面,这使得结果很酷,但不适合日常工作。haxe并不是这样的;虽然它没有语言/运行时集成带来的便利,但它还有很多其他很酷的东西可以提供 马上 .

        9
  •  3
  •   Gama11 zzapper    5 年前

    主观上,我发现我在哈克语中比其他语言更有效率。我使用的haxe主要针对neko和javascript。

    编译器本身速度非常快,允许我像使用脚本语言一样使用haxe。它倾向于面向对象,但有许多功能工具;第一类函数、功能匹配、lambda库。

    我觉得Neko的速度足够快,而且它的图像尺寸小,非常适合在有限的环境中使用。它的c-ffi非常出色-添加新功能非常简单。

    我将haxe用于JavaScript客户端控制器,将事件激发到标准jQuery视图中。这非常有效,因为您可以同时键入检查客户机和服务器代码,同时将未键入的原始JS保持在最低限度,并保留了通常JS库的好处。提供JSON库。顺便说一句,尽管haxe确实附带了mod_*for apache等,但我发现使用代理更为灵活,因此我可以在Web服务器后面设置多个neko实例。

    总的来说,我认为这是非常全面和深思熟虑-并至关重要的是,它工作的广告在所有平台上。

        10
  •  2
  •   Nathan    15 年前

    是的,完全

    但是它需要一个更好的IDE和文档,对于我来说,缺少一个伟大的IDE(比如基于Eclipse的IDE)会造成所有的差异,因此我无法达到我在其他语言中所做的生产力水平。

    语言=很好-英里数最佳 开发环境=差(此时和IMHO)

        11
  •  1
  •   Mark Knol    9 年前

    我从一开始就在雷达上看到哈克斯。我同意这看起来很有希望,但我注意到开发人员并没有像您预期的那样迅速地采用它(与ror甚至flex相比)。

    不管哈克斯现在对你有多好和合适,你仍然是早期采用者中的一员,你肯定会遇到早期采用者通常面临的问题。

    虽然有一个非常活跃的邮件列表,里面有非常有用的成员,但我还是会等到更多的人加入,并且有更多的书籍和资源被写出来。

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