为什么浏览器不解释更多的编程语言


Why Don't Browsers Interpret More Programming Languages?

虽然有大量的编程语言,但浏览器解释的编程语言很少。 <script>标签都有一个 type 属性,可以设置为 JavaScript 或 ecmascript。PHP 可以嵌入到 HTML 中,带有 <php [code] ?> 标记。为什么没有类似的机制来嵌入python/haskell/c/etc?它们缺乏浏览器环境(例如javascript的"文档"对象和php的超全局变量),但是可以在这些语言中构建类似的环境作为模块。许多编程语言都有cgi模块,所以这是有先例的。

大多数浏览器解释一种编程语言:JavaScript。

Internet Explorer 还支持(或支持)VBScript。有一个插件(或几年前)可以在IE中添加对PerlScript的支持。

他们不支持更多,因为如果一个浏览器引入了支持,那么任何使用该语言编写代码的人都会让它只在一个浏览器上运行,而不能做任何他们在 JavaScript 中无法做的事情。十年前,这对Microsoft来说不是问题,因为他们在市场上占据主导地位,对企业内部网来说更是如此。今天,这种情况已经改变。

PHP不由浏览器解释,在WWW的上下文中,它是在服务器上处理的。你可以在服务器上使用任何你喜欢的语言,包括Python,Haskell和C.最近我一直在使用Perl(通过Apache+FastCGI)和JavaScript(通过Node.js)。

相当多的语言都有办法让你直接将代码嵌入到HTML文档中(例如Perl的Mason)。但是,通常最好使用模板DSL(例如Template-Toolkit,Smarty或Handlebars)将显示逻辑与其他逻辑分开。

浏览器确实通过使用插件来解释更多的语言。Flash和Java浮现在脑海中。PHP不是浏览器解释的,它由服务器处理,服务器将纯HTML发送到浏览器。Javascript是一个例外,因为它在没有插件的情况下工作。