我是一名PHP开发人员。我喜欢PHP!如果您知道如何使用它,这是一种非常好的语言,但我知道它有时允许very bad design。
它让我想起了具有良好部件和不良部件的JavaScript。一个特殊的项目CoffeeScript试图只关注好的部分,迫使你编写好的代码。
我在想是否可以用PHP完成类似的事情...一种新的语法,只能编译成好的PHP代码,并且可以使用PHP 5.3获得所有新的和令人兴奋的东西。
所以,先行一些人,我会问:如果你可以只使用Ruby或Python或其他东西,为什么要在PHP之上创建一种新语言?
所以,我真正的问题是......
答案 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)
通过在其前面放置语法预处理器,有先例可以破坏不良语言。
但是...
答案 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”,所以我认为在这里值得一提。