PHP之上的新语言?

时间:2011-01-15 15:09:36

标签: php programming-languages language-design

我是一名PHP开发人员。我喜欢PHP!如果您知道如何使用它,这是一种非常好的语言,但我知道它有时允许very bad design

它让我想起了具有良好部件和不良部件的JavaScript。一个特殊的项目CoffeeScript试图只关注好的部分,迫使你编写好的代码。

我在想是否可以用PHP完成类似的事情...一种新的语法,只能编译成好的PHP代码,并且可以使用PHP 5.3获得所有新的和令人兴奋的东西。

所以,先行一些人,我会问:如果你可以只使用Ruby或Python或其他东西,为什么要在PHP之上创建一种新语言?

  • PHP易于部署
  • 语言本身有很多好的功能和想法
  • 有许多用PHP编写的好库
  • ...

所以,我真正的问题是......

  • 这是一个愚蠢的想法吗?为什么会这样?你觉得CoffeeScript很蠢吗?
  • 有人如何开始创建另一种新语言?我对此一无所知,但我想学习。从哪里开始?

12 个答案:

答案 0 :(得分:13)

这个想法绝对不是愚蠢的,特别是如果执行得好。

我非常喜欢coffeescript,但它的方法也有缺点。调试coffeescript脚本仍然需要您阅读生成的Javascript代码,这可能很乏味,因为您实际上并未自己编写它。

据我所知,咖啡师的创始人杰里米·阿什克纳斯在阅读"Create your own freaking awesome programming language" by Marc-André Cournoyer后开始研究咖啡因。

祝你好运!

答案 1 :(得分:10)

CoffeScript的一个好主意是,如果开发人员想要在客户端浏览器中运行代码,他们 使用javascript;因此,使用不同语言编程的唯一方法是允许该语言可转换为javascript。

我不确定这同样适用于服务器端编程。如果您遇到PHP问题并希望使用新语言,那么使用该语言生成PHP没有任何实际优势。

另一方面,一种与PHP非常相似的语言,但修复了一些缺陷将是一个好主意。

答案 2 :(得分:3)

嘿,好主意。我的想法,有些矛盾...

通过在其前面放置语法预处理器,有先例可以破坏不良语言。

  • 在Unix的早期,Fortran很受欢迎,并且是唯一的可移植语言,因为大多数机器都没有C编译器。但当时的vanilla Fortran甚至没有阻止结构化的 if-then-else ,只是一个愚蠢的单一语句 if if-goto < / em>的。因此, Ratfor 语言被实现为Fortran-66的预处理器。
  • 我相信有(有?)Cobol预处理器可能处理早期Cobol方言的冗长和局限。
  • 到目前为止,Unix派生系统附带一个名为m4的宏处理器。
  • 目前有几种CSS预处理器可用,最值得注意的是 Sass LESS

但是...

  • 让它死掉,越快越好
  • 问题不在语法中。
  • 我没有看到很多JavaScript-PHP并行。 JavaScript是一门很棒的语言。这与PHP相反。
  • 我不确定你为什么说PHP是一门很棒的语言。这是最糟糕的一次。每个体面的功能都是最近版本中的补丁或重新发送。
  • 正如您所说,已经有一个固定版本的PHP:它被称为 Ruby ,作为一种语言,它几乎是完美的。还有一个名为 Python 的固定版本。如果我们支持更好的系统,那么从长远来看,世界会更好。

答案 3 :(得分:3)

现在在这里。一个new language,这是PHP的CoffeeScript与Javascript的关系。 (即,太棒了。)

SNOWSCRIPT

Snowscript代码如下所示:


fn how_big_is_it(number)
    if number < 100
        <- "small"
    else
        <- "big"

PHP输出如下所示:


function how_big_is_it($number) {
    if ($number < 100) {
        return "small";
    } else {
        return "big";
    }
}

现在需要的只是you

答案 4 :(得分:2)

如果对PHP来说对CSS来说是什么样的东西,我会感兴趣的。但是你想要添加什么呢?或者你只是想清除坏事?

你认为什么是坏事?

答案 5 :(得分:2)

编写PHP语法转换器可能是一个很好的项目。

但是,不要忘记PHP的标准库是一个巨大的混乱。清理它将是一项更大的任务。

答案 6 :(得分:2)

我在思考的越多,听起来就越不现实。原因很简单:实际上 这样的语言处理器已经存在。其中两个(虽然不使用PHP作为实现,仅作为编译目标)可以找到here。但只是没有人使用它们。

是的,如果编译器本身是用PHP编写的,那么可能会有更多人使用它。但是我真的看不出如何让这种流行足以值得工作的方法。

另一个大问题是,人们大多习惯于他们的代码突出显示,代码完成,代码检查IDE。如果没有获得IDE支持,可能只有任何人都会使用它(只有很多人使用它才能获得IDE支持......)

思想?

答案 7 :(得分:2)

我可以看到编写JavaScript的编译器(因为网络强加给我们),但这听起来像浪费时间。

Haxe已经这样做了,虽然它不是专门针对PHP(链接到维基百科文章而不是他们的网站,因为我担心如果我访问真实网站我会被剥削... )

  

PHP易于部署

......以及它的漏洞。

  

我知道它有时会让设计非常糟糕。

这有点轻描淡写,它甚至没有模块系统,没有封装,并且有大量愚蠢的东西,如dynamic name resolution

PHP足够慢,你真的想要一个数量级更慢的东西吗?

无论如何,Java都更容易部署,如果需要,可以让您下载到字节码级别。 Java还允许您访问中等理智的库。

答案 8 :(得分:1)

这是我经常想到的事情。 PHP在某些方面很麻烦。

实际上,我已经有一个项目PrePHP专注于为PHP 5.2提供PHP 5.3功能。但它增加了一些次要的语言功能,如func()[0]。我有一段时间没有开发这个项目,它肯定不是“干净”,但它表明,你想要的东西是可能的,实际上甚至没那么复杂。

如果你对此很认真,我非常愿意与你合作。

答案 9 :(得分:0)

非常有趣的想法,如果它变得生动我认为我不想参与:)

开始时您可以查看并阅读此职位http://www.amazon.com/Masterminds-Programming-Conversations-Creators-Languages/dp/0596515170(我现在阅读)。它清楚地表明维护自己的语言真的很复杂。

答案 10 :(得分:0)

我同意PHP肯定可以做一些改进,现在它允许太多的愚弄。

我想看到的一些事情

  • 静态打字
  • 要求缩进
  • 正确使用对象(使用数组作为对象只是愚蠢的)

然后,也许我应该放弃PHP并开始使用Ruby或Python。

答案 11 :(得分:0)

我想晚了8年,但无论如何,我都会为遇到这个问题的任何人回答。

Hack是Facebook开发的一种用于处理某些PHP问题的语言,因为Facebook具有庞大的PHP代码库。 Hack在PHP之上添加了一些不错的功能,例如渐进式键入(TypeScript具有的功能)和泛型,以及其他功能,并且摆脱了一些更危险的PHP功能。 Hack在某种程度上是PHP的超集,但在删除了一些较差的PHP功能之后,不再完全兼容。

这与您要问的内容略有不同,因为在这一点上,Hack有自己的解释器,由Facebook编写,但这始于“更好的语言,可以编译为PHP”,所以我认为在这里值得一提。