您对haxe和其他可编译为PHP的语言的经验?[关闭]


23

我想听听那些使用可编译到php的语言的人的意见。我知道的一种这样的语言是Haxe。我读过的其他人是KiraPharen

这些语言与PHP的集成程度如何?在其中编写PHP CMS插件相对容易吗?

它们的实现和工具有多成熟?

您会推荐给必须使用php cms但又讨厌php的人吗?


1
HaXe很好。Atleast放手一搏。我刚刚安装了它,并在9分钟内(包括下载haxe的时间)上传并测试了我的第一个PHP页面,这很容易,并且背后还有一个强大的社区,提供了许多文档
JTS

我创建了pratphall.org,这是一种可编译为PHP的类型化语言。
乍得·雷斯

Answers:


9

我是Pharen的创建者,该人将Lisp方言编译为PHP。为了回答您的问题,它与PHP集成得很好。包含现有库调用函数/使用它们的对象很容易。

至于成熟度,尚未在生产中使用Pharen代码。就语言而言,您想要的一切都可以使用并且可以工作,但是诸如部署之类的工作仍需要付出一些额外的努力。

就是说,如果您选择Pharen,我将很乐意为您提供帮助。如果您还有其他问题,请告诉我!


“包含现有库调用函数/使用它们的对象很容易。” 对于大多数外部库(包括用于CMS的插件API)而言,这应该足够了。最初的帖子对集成的含义不太明确。我还解释了其(缺乏)成熟度的状态。
Scriptor

感谢您的回答和提供的帮助。pharen是否与任何其他Lisp相容?它有自己的运算符,还是只使用php中的运算符?例如,pharen中的==是否与php中的行为相同?

它现在是自己的方言,灵感来自Clojure。这样做的主要原因是,其他标准(例如自己的标准库)有很多负担,这是不必要的。它使用与PHP相同的运算符,因此可以使用(==“ foo”“ foo”)
Scriptor

3

Josh K在某些方面是正确的,最好了解php,以便更好地针对php运行时。但是,这样做的主要原因不是haxe是一个错误的编译器,而是php是一种“异质”语言。

Php在其基本名称空间中具有大量功能。因此,为了防止命名冲突,您必须了解很多保留关键字和特殊功能。有人对此很好,我认为这是糟糕的语言设计。HaXe通过在php中创建自己的名称空间来解决此问题。

PHP会在溢出时自动将整数转换为浮点数。当然,这打破了HaXe之类的语言用于类型安全性(并启用诸如快速哈希算法之类的简单事物)所依赖的严格类型。我认为这是另一个可怕的语言功能。同样,haXe在这里无济于事,因为无法更改此php行为。

所以,你去了。我认为haXe使php更好,因为它可以清除php的一些(可感知的)语言缺陷。但是,关于php的事情太多了,您最终需要学习好才能修复某些特质。

话虽如此,haXe语言还是非常令人惊奇的。它使您可以将php代码组织到更好的命名空间中,具有相当复杂的类型系统,具有一些用于处理php特定问题的条件编译选项,并且具有一些不错的文档操作。仅出于这些原因,设计一个复杂的库就不是一个坏选择……即使对于php之类的东西。

相关链接:

php魔术:http//haxe.org/doc/advanced/magic

(另请在haxe.org主网站的社区部分中查找“平台怪癖”)


感谢您的回答。您是否有从haxe调用php的问题,反之亦然?

那么PHP(动态语言)在haXe方面有问题(取决于静态类型)吗?惊人!PHP是一种有点奇怪的语言,但是考虑到它起源于Perl,这是可以理解的。您认为是“可怕的语言功能”和“标准动态主义”似乎非常相似。
Josh K

1
您可以同时具有静态语言功能和动态运行时功能。它们不是互斥的。HaXe为此使用“动态”类型指示器。命名空间和数学运算实际上与语言动态性没有任何关系。这些只是php的怪癖。
jdonaldson 2011年

2

可怕的垃圾

我是根据某人的推荐使用haXe的,绝不会出于任何原因任何人推荐。

语言之间的交叉编译会导致混乱,错误和错误。这也使调试成为一项艰巨的任务。

您会推荐给必须使用php cms但又讨厌php的人吗?

没有!我建议您要么正确学习PHP,要么使用其他CMS。由于似乎您在CMS部分没有选择,所以另一种选择是学习语言并加以处理。

它们的实现和工具有多成熟?

最好是年轻,最坏时是不稳定的。您不会为他们提供很多支持。


听起来您已经为PHP应用程序编写了一些工作。除了明显的问题,您的代码必须导入现有的PHP函数/对象才能工作,以及上述垃圾邮件之外,从事此工作的其他人现在都必须向语言编译器学习语言。否则,它们将使脆弱的“ PHP”代码混乱。这也意味着,如果他们在上面工作,您将不得不在代码中重新实现那些更改,否则可能会失去其他任何人所做的更改。

如果您讨厌使用PHP,请等到必须处理这些语言输出的一些代码。


““语言之间的交叉编译”

这会导致混乱,错误和错误。当您编写将代码翻译成另一种语言的代码时,您会将自己从最初的来源中删除。您编写的内容以及生成的内容完全取决于编译器。编写代码以生成代码的确会引起混乱,您会犯错误,并且会发现意想不到的错误。我不建议您使用它们。


5
请尽量不要对此太过情绪化,也不要做出太多假设。是什么让您认为我没有“适当地”学习php?我还会怎么讨厌它?生成的代码对我来说不是问题,因为我不想碰它。调试不是问题,因为我很少使用调试器。其他开发人员也不是问题,因为大多数CMS插件都不是大项目。您对haxe提出了非常广泛的主张。您能举例说明支持他们吗?将不胜感激。另外,您使用它多久了?
金(Kim)

5
因此,您是说编译器创建了错误的php代码?这是我要求您举例说明的广泛主张之一。另一个广泛的主张是“语言之间的交叉编译会导致混乱,错误和错误。” 请举例说明。如果您想讨论PHP是否是一种值得使用的语言,那么我相信您会在互联网上找到成千上万的人来与您一起使用。我不是其中之一。
金(Kim)

10
“语言之间的交叉编译-导致混乱,错误和错误”。很奇怪,我当时在想,任何编译器都可以做到这一点-将一种语言翻译成另一种语言(如汇编语言,C语言,JVM代码...)。
foo

1
实际上,HaXe是一名专业程序员,拥有多种语言/框架/ API(java,c ++,python,php,ruby,javascript等),对我来说,是灯塔。有史以来第一次我遇到一种我发现做对的事情是正确的,并且在所有方面都是“可以”的语言。我无法理解别人怎么会不喜欢它。对于PHP,虽然有限制。
dagnelies

1
完全同意大多数条款(特别是关于六六)。但是使用lisp语法使用php真的很有趣!因此,我只是想在代码中加入怪异的部分。
cnd 2012年

1

我使用过许多语言翻译器,最后您总是要避免使用它,因此,如果您讨厌PHP,请等到遇到一个非常晦涩的问题,要求您深入了解它的肠子。不过,我一定是个嘴,因为我认为使用haXe定位neko会很酷。


所有的编译器都是“语言翻译器”。您是说我们不应该使用编译器吗?;)是否必须“深入了解其肠子”完全取决于编译器是否做得很好,而这正是我要找出的问题。从这里的答案来看,我想我必须做自己的调查。

我想使用haXe定位Neko,但我不想依赖Apache的httpd。我喜欢能够在Web服务器上进行选择。
stesch 2011年

1

如果要为PHP CMS创建插件,请继续使用PHP。

尽管我使用了HaXe并发现它确实很棒,但是在这种情况下我不建议这样做。间接调用太多了,代价将比仅仅使用一个小插件要高。


-1

我已经尝试过Haxe,因此不建议将其用于Web开发。

但是,我喜欢这种方法,这就是为什么我实现了自己的简约语言(也可以编译为PHP)的原因,但是它的方式比Haxe更直接,因此调试生成的代码并与现有的PHP代码进行交互仍然很容易。 。


您能否详细说明为什么不推荐Haxe?
杰伊·埃尔斯顿
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.