威尼斯手机平台登陆-官方网站登录

威尼斯手机平台登陆为您带来世界三大博彩公司最新相关资讯,威尼斯官方网站登录充分考虑到不同地域网民的不同需求,威尼斯手机平台登陆良好的用户界面,人性化的操作,实用的功能设计使其广泛受到欢迎,推动实体出版、影视、动漫、游戏等相关文化产业的发展。

您的位置:威尼斯手机平台登陆 > 前端资源 > Craig 在书中讲到,我将会对比这两种语言所在领域的发展状况

Craig 在书中讲到,我将会对比这两种语言所在领域的发展状况

发布时间:2020-03-12 13:53编辑:前端资源浏览(114)

    第九轮: 程序员情结

    第九轮来看一看 Craig 觉得一般程序员们对于 PHP 和 Node 有多少感情,最后他认为,Node 获胜了。

      第十轮:前景

      您选择采用哪种服务端语言并不重要;即使她不再被更新也会照样继续工作(yay ColdFusion!)尽管使用量上趋于稳定但是很多人依然使用 PHP,我打包票她还能再坚挺二十年。

      Node.js 崛起得很迅速,她提供了一种现代的开发方式,使用和客户端开发一样的语法同时支持 HTML5 变革式的特征,比如网络套接字和服务端发送事件。尽管大家对该语言的分叉函数有些争议,但是Node.js的使用量还是呈指数级增长。

      Node.js 势必会蚕食 PHP 的市场份额,但是我不认为她能完全取而代之。两种技术都有光辉的未来。我宣布本轮平手。

    最后说学习 Node.js, 在我看来,学习 Node.js 分两点,一是要理清 Node.js 的「基于事件回调的异步 IO」,这是 Node.js 与其他主流编程语言最不同的一点。然后第二步就是把 NPM 上 Top 100 的库都看一下,不用细看,只要混个脸熟,知道每个库是干嘛的就行了。完成这两步,那么恭喜你,已经是一个 Node.js 开发者了。

    James:

    Node 很火,在 Node 的领域有很多创新,尽管激情是不客观的,但很高兴 Node 赢得了这一局。

      第三回合: 语言语法

      声明与结构是不是符合逻辑而且简单好用?

      不像一些语言跟框架,PHP 不会限制你按特定的方式编写,具体怎么搞随你。你可以从几行的程序开始,然后添加些方法,进而写一些简单的 PHP4 模式的对象,最后编写优雅的面向对象的 MVC 模式 PHP5+ 的应用。你的代码开始可能比较混乱,但也能工作,而且会随着理解的深入越写越好。

      PHP 的语法在版本间可能略有调整,但是向后兼容一般都做得很好。但不幸的是,这也导致了一个问题:PHP 很混乱。例如,怎么统计一个字符串中字符的个数?是 count?str_len? 还是 strlen?亦或 mb_strlen?PHP 有数以百记的函数,而且命名规则也也不完全一致。可以试试不查文档写几行代码。

      JavaScript 相对就简单些,只有几十个核心声明。不过语法就经常被开发者喷了,因为它的原型化对象模型看起来平易近人,实际上却不是。而且各种数学错误(0.1+0.2 != 0.3)以及类型转换的混乱('4' + 2 == '42' 和 '4' - 2 == 2)也招致不少抱怨,但这些情况世界很少导致什么问题,多数语言都有这种借口。

      PHP 有他的优点,但是这回合我判 Node.js 胜。理由如下:

    1. JavaScript 是世界上最难理解的语言 — 但是,当哪天你顿悟以后,概念一通,就会发现其他语言都太过笨拙了。

    2. JavaScript 代码比 PHP 简洁。例如,你再不需要跟 JSON 转来转去—— UTF-8 也不用

    3. 全栈工程师可以同时在客户端与服务端使用 JavaScript 。大脑不需要来回切换。

    4. 深入理解 JavaScript 会让你更想用它,但是 PHP 不是这样。

    然后是包管理器和库,Node.js 内置了 npm, 因为 npm 是个非常好用的包管理器,因为 JavaScript 的编写门槛低,因为 JavaScript 本来就有很多优秀的前端库被移植到了后端,所以 NPM 上的包现在已经多于 PyPI 和 RubyGems 了,然后远超 PEAR 和 Composer. Node.js 的开发中不同于 PHP 的一点就是大家都不怕加依赖,每个小需求都去 NPM 上找已有的库来实现——而且往往都能找到。所以 Node.js 的开发基本上就是在组合依赖,然后倾向于把一个即使很小的独立需求写成一个库,这倒是和 UNIX 的思路比较像。再另一方面,Node.js 社区对开源十分友好,这里的友好是指大多数的库都是在 Github 上开放开发的,而且使用的是非常宽松的协议,例如 MIT, 不像 GPL 那么具有「攻击性」。

    第二轮: 帮助和支持

    第二轮会考量在两种语言中,获得帮助和支持的难易程度。PHP赢得了这一轮,主要因为它出现的更久一些。

      评估方法

      下面将会对 PHP 和 Node.js 进行十个轮次的比较。每个回合都会考量可以应用到任意 web 技术的常见的开发挑战。我们不会太深入讨论细节;很少有人会关心随机数生成器或数组排序的价值。

      赢得最多回合的将会是优胜者。准备好了吗?开始较量吧。。。。。。

    语法,我还要再强调一下 JavaScript 的语法简单而灵活,其中重要的一点是 JSON, JSON 几乎是目前 Web 领域最通用的数据格式,而在 JavaScript 对 JSON 具有原生的支持!JavaScript 中所有的数据结构都是围绕着 JSON 的一个超集——Object 展开的,包括数组,函数,对象和类。当然这样也带来一个麻烦,就是因为写起来限制少,导致不知道该怎么写,刚开始学习的时候总免不了反复重构,才能摸清各种设计模式在不同情况下的优劣,找到适合自己和适合具体项目的写法,所以可以说 Node.js 入门简单,但要构建大型项目,还是比较考验开发者的功力的。因为历史遗留问题,JavaScript 的语法算不上优美,不过还好我们有各种预编译方言,比如 Coffee Script, TypeScript, Dart, LiveScript 以及 ClojureScript, 总有一款适合你。

    第七轮:主机和部署

    第七轮会看看将新应用部署到 Web 服务器是否容易,在 Craig 看来,PHP 在这方面明显是赢家

    Bruno:

    Bruno 再一次保持沉默。

    James:

    这是 Node 需要努力改进的区域。每个提供 Web 主机的公司,都提供了 PHP 和  MySQL。你想看到输出,只需要建立一个以“.php”为扩展名的文件,在<?和?>间写一些有效的代码,上传,用浏览器访问。但同样的方法不适用于Node。当然,Node 主机有很多选项,但是它们需要更多的设置和命令行方式的访问,这对于初学者来说可不愉快。毫无疑问,PHP 在这一轮赢了对手。

    • PHP
      Rasmus Lerdorf在1994年创造出了PHP。它是由安装在web服务器(Apache、Ngix)上的组件运行的。

      PHP代码可以和HTML混合到一块。 对于初学者就能很快写出很有价值的代码,这并不需要太多的练习。 这让PHP变得越来越流行, 现在全球百分之八十的服务器上都在运行着PHP。全球四分之一的网站都在用的一个内容管理系统--WordPress,就是用PHP写的。

    • Node.js
      Ryan Dahl在2009年创造了Node.js。它是基于Google的V8 JavaScript解释引擎(在Chrome浏览器里它负责执行客户端的JavaScript代码)。与其它语言不同的是Node.js内置了处理网络请求和响应的函数库,所以你不需要单独的服务器(Apache、Ngix)或者其他依赖。

      Node.js虽然很新但是很快就获得了极大的追捧。在很多的大公司都有在使用,例如:Microsoft,Yahoo,LinkedIn和PayPal。

    社区,Node.js 的应用大部分还是 Web 后端,而 Web 后端相关的库基本都是那么几个大牛搞起来的,例如 express, jshttp, jade, mocha 和 koa 就是以 TJ 大神为首的四五个人开发起来的,这倒是个有趣的现象。——虽然 TJ 大神最后决定淡出 Node.js 社区。

    Craig 在书中讲到,这些比较总是有些矛盾。作为一个有意思的随访,我们要求 Bruno Škvorc (SitePoint 的 PHP 开发者)和 James Hibbard (SitePoint 的一个 JavaScript 开发者)对每一轮提供评论。

      事件驱动,无阻塞 I/O

      PHP 跟其他多数服务端语言采用阻塞执行的模型。 当你执行一个命令,比如从数据库取数据,那么必须等这个指令执行完成后,才会执行下面的内容。 Node.js 通常不会等的。 取而代之的是, 你需要提供一个回调函数,这个函数当指令执行完后会被调用一次。例如:

    // fetch records from a NoSQL database
    DB.collection('test').find({}).toArray(process);
    console.log('finished');
     
    // process database information
    function process(err, recs) {
        if (!err) {
            console.log(recs.length + ' records returned');
        }
    }
    

      这个例子中, 控制台会先输出‘finished’,然后输出‘N records returned’,因为 process 函数是所有数据返回的时候才被调用的。 换句话说,当解释器在其它进程处理的时候可以干些别的事情。

      注意情况比较复杂,还有几个警告:

    • Node.js/JavaScript 只能在单线程上运行,但是大多数 web 服务器都是多线程,而且并发的处理请求。

    • 一个用户长时间运行的 JavaScript 处理会阻止其它用户的代码执行,除非拆分任务或者使用Web Workers。

    • 基准测试是主观的和有缺陷的;可以找到一些例子 Node.js 比较好,而一些相对的例子 PHP 比较好 。程序员只是在尝试证明他们的信仰!

    • 书写异步的事件驱动的代码非常复杂,非常有挑战性。

      我只能从我的经验来讲: 我的 Node.js 应用要明显比 PHP 的同等应用要快。你的可能不是,但是不试是永远不会知道的。

    使用场景,JavaScript 是一个通用的编程语言,Web 前后端自然不必说,来看看其他方面。个人以为 Node.js 还是很适合用来编写服务器工具的,或称运维工具,因为运维中很多情况是可以异步工作的,JavaScript 又有比较不错的正则支持,替代 bash 和 Python 也问题不大;Node.js 只需装好解释器,就可以随便用,不用畏手畏脚地避免引入依赖。而桌面和移动设备编程,Node.js 有 node-webkit 以及其他各种外壳,虽然目前使用体验不是很好,但是可以非常显着地降低开发成本,轻松跨平台,想必前途也是光明的。

    Bruno:

    你肯定看错地方了,Craig,PHP 社区令人难以自信地热情和活跃,每年有超过 20 个大会和非常精彩的主题讨论。正是这样才完成了 HHVM 的 PHP7。

    另外,我想说的是我很好奇 Node 的开发者们在使用哪个版本来工作(v0.12.5 已经开始在写了),即使经过了 6 年的必展。这是不成熟的和危险的(天啊,你使用一个不稳定的技术,你在故意让你的企业挂掉吗),加上一点,它忽略了一些操作系统中的旧 bug,将导致一些重要的开发人员从这个语言的生态系统中离开。

    一些负面的经历让我不喜欢 Node,主要是因为 npm。未来或许会改变,但现在每次使用 Node 都觉得恐惧和失望。我们都有自己的喜好,但保持客观,选择正确的工具来工作是很重要的。但同样重要的是要允许别人试错,因为人人都是马后炮。所以不要听 Craig 的,不要听 Jim 的,也不要听我的。大胆去试,看看什么可以用,找些让你感觉不错的来使用,最终,那些让你感觉富有成效的就是最好的,而不是哪些只能节省一些加载时间的。

      我不希望展开一场PHP、NodeJs两大阵营之间的战争,我将会对比这两种语言所在领域的发展状况:

    工具链,Node.js 比较年轻,很多好用的工具都是近两年刚刚出现的,例如预编译方言, 单元测试和模拟测试,构建工具等;不敢说有多好,但是要比 PHP 好非常多。至于原因,首先很大程度是因为这些库都是既可用于前端又可用于后端的,因为 Web 前端的硬需求,让 Node.js 顺便得益;然后就是因为 JavaScript 灵活而简单的语法,让这些工具可以以一些非常巧妙而优雅的方式来实现。至于 IDE, 依然得益于 Web 前端,还是有一些 IDE 可用的——虽然 JavaScript 语言本身不是很利于静态分析。

    James:

    我同意这个说法。Node是一门新技术,所以目前,帮助会少一些。可是当Node越来越成熟的时候,这方面就不是问题了.

      第五轮:环境

      技术可以在哪使用和部署?支持哪些平台和生态系统?网页开发者经常需要开发一些并不完全针对网页的应用,比如构建工具,迁移工具,数据库转换脚本等。

      PHP 有办法开发桌面应用和命令行工具,但是你不会使用他们。本质上,PHP 是一个服务端技术,他很擅长该领域,但是很少延伸到这之外。

      若干年前,JavaScript 被认为限制很多,有一些边缘技术,但是他的主战场还是浏览器。Node.js 已经改变了这一感觉并井喷出了很多 JavaScript 项目,你可以在任何地方使用 JavaScript:浏览器,服务器,终端,桌面甚至嵌入式系统,这使得 JavaScript 无处不在。

    首先是性能,用起来感觉 Node.js 的性能并没有想象中那么好。内存占用差不多和 Ruby 一个等级,比 Python, PHP 要多。计算性能上,纯计算并没有太大优势,但因为可以很好地控制异步流程,所以总体表现上来看性能要比 PHP 好很多。个人觉得 Node.js 在性能方面是有很大的潜力的,因为有很多大的项目在致力于提高 JavaScript 虚拟机的性能——比如各大浏览器;同时 JavaScript 是一个语法简单的语言,也是一个开放标准,不像 Python 和 PHP 一样因为顾及兼容性,很难进行大的重构来改善性能。

    Bruno:

    我非常不同意这个观点。PHP的语法中的确有一些怪象,其中的很多已经被修复了,在新的版本中,还有很多要被移除。另一方面,JS中也有“this”这个问题~

    关于bullet 3 (开发的时候,使用js你不需要在client端开发和Server端开发的时候做切换),我不同意这个观念。服务器环境和客户端的开发环境已经完全不通了,大脑中的切换还是需要的。总是有些新的语法你不能再浏览器中使用,反之亦然,所以这某种程度上也是语言的切换。

    Bullet 4 (理解 JS 会让你更希望使用它)  这从某种程度上来说我是赞同的。 我在工作中使用 JS 和 PHP多年,使用 JS 的时间更久,但我对它却喜欢甚少——尽管那纯粹是个人倾向。

      第九轮:开发者激情

      这会超出”常见网页开发挑战“这样的目标,但是这很重要。如果你恐惧每天写代码,那你无所谓哪门语言更好。

      很难为此做出比较但是一些 PHP 开发者对 PHP 这门语言很有激情。你最近一次读到让你走心的 PHP 文章或幻灯片是什么时候?也许已无需再说?可能是更低的曝光度?或者我没找对地方?PHP7 有一些新的功能,但是该技术已经原地踏步很多年了,虽说如此,很少有开发人员对PHP发牢骚。

      JavaScript 分离了社区,有人爱也有人恨,一些程序员在中间犹豫不决,经管如此,对 Node.js 的反馈大多积极,她正处于风口浪尖,一部分原因是因为她很新,赞誉不一定持续。目前,Node.js 赢得本轮。

    第四轮:开发工具

    Round 4:考虑这两种技术所使用的开发工具,Node 因为有开发工具 npm,所以略胜一筹。

    Bruno:

    虽然,开发者最初受到 npm 的鼓舞,但是现在有 leaps 和 bounds 比 npm 用着更舒服,而且如果你在电脑上安装了同一个库的两个版本的话,leaps 和 bounds 不会让你的系统崩溃。而且相对于 npm 而言,leaps 和 bounds 允许设计者使用递归思想,而递归思想是如此的重要,以至于当开发者准备着手建立一个包管理器时,首先考虑的就是这一点。

    npm 还有一个致命的缺点,我把它称为“开发者协作友好”,npm 不能很好地做到这点,对于 npm 而言只有开发者本身能够理解自己写的东西。最后,npm 与 Vagrant 不能很好地兼容,这直接的妨碍了您开始自己工作,就更别说 npm 不关注用户们的需求了。npm 有一个 bug 已经存在了很多年,它导致该软件在 windows 上基本不能使用,这可不算是小问题了。当然 PHP 也有很多愚蠢的错误,但是这些错误并不会与你的系统之间发生问题。

    的确,PHP并没有自带编译器,但我不认为它应该这样做。这样的便利不应该由一个包管理器或者说是一个独立的应用来完成。如果将来有一天,有人为 Node 开发了一个很好的包管理器,把它与现有的编译器替换将会极其困难。让它相对独立,人们可以便于切换。此外,安装它仅需要在终端上输入一行代码,或者下载一个安装程序。
    书中提到的编译器影响很小的说法,是显而易见的错误。自从PHP开发完成后,编译器就影响了每一位新加入进来的 PHP 开发者,他们中的一些佼佼者不得不将它添加到现有的流程中。只基于编译器存在之前就有很多 PHP 用户的理由,并不能说明它的作用较小。事实上,自从有了它,它就产生了巨大的影响。一些人所说的“对社区造成的影响很少“的言论根本没有事实依据。
    现在,我不能在大多数 PHP 开发者都希望安装 Node 这个问题上争论,这是真的事实。可悲的是,很多好的工具都首先基于 Node 下开发,但我仍然希望就像 Node-free 开发环境一样,也可用于开发BowerPHP。

      第一轮:起步

      创建一个“Hello World” web 页面有多快呢?在 PHP 中:

    <?php
        echo 'Hello World!';
    ?>
    

      这段代码可以放置在可以被 PHP 引擎解析的任意文件中--通常,是以 .php 为后缀的文件。在浏览器中输入 URL 跳转到文件即可。

      不可否认,这不是全部。这段代码只能运行于安装了 PHP 的 web 服务器(PHP 有一个内置的服务器,尽管如此,最好还是使用一个更健壮的服务器)。大多数操作系统提供了服务器软件,如 windows 上的 IIS,Mac 和 Linux 上的 Apache,尽管它们需要启动和配置。通常使用提前构建的安装程序,如 XAMPP或虚拟机镜像(如 Vagrant)。一种更简单的方式:上传你的文件到任意的 web 主机。

      对比而言,安装 Node.js 轻而易举。你可以 下载安装程序 或者 使用包管理器。 接下来让我们在 hello.js 中创建 web 页面:

    var http = require('http');
    http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('Hello World!');
    }).listen(3000, '127.0.0.1');
    

      在浏览器中访问   之前,你需要在终端输入 node hello.js 来启动应用程序 。通过上面的五行代码,我们已经创建了一个小型的 web 服务器,尽管这很令人吃惊,但是即便拥有很强客户端 JavaScript 经验的人也很难理解。

      PHP 在概念上更简单所以赢得本轮。稍微懂得一些 PHP 声明的人就可以开发一些有用的东西。PHP 有更多的软件依赖,但是 PHP 的概念对于新手来说不那么繁琐。

      懂一些 JavaScript 和开发 Node.js 应用是两回事儿,Node.js 开发方法和大多数服务端技术不同,你需要先弄明白一些相当复杂的概念,比如关闭和回调函数。

    James:

    我和 Craig 又一次达成一致。一些特性让 Node.js 变得如此流行(速度,可扩展性,与 JSON 密切相连,低资源占用)使它适合于许多其他类型的应用程序,例如强有力的物联网设备。我觉得,谁会不喜欢机器人呢?

    Node 使得项目获得了提升,诸如NW.js(一个基于 Chromium 和 Node.js 的应用),它允许你在 HTML 和 JavaScript 上编写本地 APP。这多令人兴奋!

      第八轮:性能

      PHP 很勤快,有很多项目跟选项可以使它跑得更快。即使那些对性能要求很严苛的 PHP 开发者也几乎不会担心速度问题, 但是 Node.js 性能通常更好一些。 当然,性能很大程度上决定于开发团队的经验以及是否上心, 但是 Node.js 还是有如下几条优势的:

      更少的依赖

      所有对 PHP 应用的请求都必须经过一个 WEB 服务器的路由,来启动 PHP 的解释器运行 PHP 代码。Node.js 不需要这些依赖, 而且你基本一定会使用一个带服务器的框架,像 Express,他很轻量,很好的扮演你应用的一部分。

      更小更快的解释器

      Node.js 的解释器比 PHP 的更小更灵活。 他并不受旧版语言遗留兼容问题的拖累,而且 Google 在 V8 引擎性能改善上出了大力。

      应用永久在线

      PHP 遵循标准客户端-服务端模型。 每个页面请求都会初始化应用; 你读取配置参数、连接数据库、读取信息、渲染 HTML。Node.js 应用持久运行,只需要启动一次。例如,你可以创建一个单独数据连接对象,然后所求请求一起复用。公认的,PHP 也有一些途径来实现,比如使用 Memcached ,但是这已经不是语言的标准特性了。

    第一轮:开始

    Round 1 挑战是看你用每种语言多快可以构建一个“Hello World”的页面。这个包括搭建服务器环境所花的时间。

    据 Craig 估计,PHP 赢得这一轮,部分原因是因为这种语言“概念上更简单”,并且“对于新的开发者来说不那么吓人”。

    Bruno:

    PHP 赢得”开始”这一轮纯粹是因为更多的主机支持这种语言因此开始非常简单。这是拿来就好用了而不需要做额外的事情。如果更多的主机忽略使用 Node 命令行而直接采用文件上传的方式,并且在控制面板上用一个简单的 “reload app” 键,那么两者将会一样。然而就在屏幕上显示东西的实际语法而言,PHP 是更简单些——特别是对那些没有编程经验的人而言。

    James:

    当在本地机器上开发的时候,我没有在两者之间看到很大的不同。在你的浏览器上运行 PHP 脚本,你需要安装一些服务器软件;要运行 Node 脚本,你需要安装 Node, 并且最好安装一个 web 框架比如express. 然而,正如 Craig 说的, PHP“概念上更简单”.Node 的进入门槛更高。对此没有争议。

      第七轮:托管和部署

      部署你绚丽新应用到在线网页服务器有多容易?这是 PHP 的另一次完胜。随机联系某个网页托管公司你可以找到对主要的 PHP 支持,也许还免费附送 MySQL。对于沙盒,PHP 被认为更简单,有风险的扩展可以被禁用。

      Node.js 是个不同的野兽,服务端的应用永远运行。你需要一台物理/虚拟/云或定制的服务器环境,最好有 root 权限,这对有些服务器来说遥不可及,特别是那些共享的服务器,你有可能让整台服务器宕机。

      Node.js 托管将会变得简单,但是我认为他永远没法像 FTP 上传一些 PHP 文件那么方便。

    第六轮: 整合

    第 6 轮我们来看一下数据库和驱动的整合方面,PHP 胜出主要是因为它的年龄比较大。

    Bruno:

    整合方面其实是平局的,PHP 有年龄的优势,可以有更多可选项,但是也意味着要照顾很多过时技术,如 mysql 扩展 —— 我们可以升级到 PHP7 来摆脱,但多年来一直不可用。

    James:

    我当然同意这个观点,这虽然看起来模糊其词,而且我很喜欢这个例子:“过时的,更受欢迎的技术”。这也很好突了 Node一个很大的优点 —— 它原生支持 JSON。JSON 或许是 web 中最重要的数据传输格式了,同时也是最新的 NoSQL 数据库的通用结构。JavaScript 程序中使用 JSON 是非常容易的,意味着当你使用 Node 工作时,数据可以非常简洁地进行传输,不用进行格式转换了。你可以只使用一种语法(JSON 格式)传递在浏览器、服务器和数据库之间。

      我们所钟爱的C#、Java、Ruby、Python、Perl、Erlang、C++、Go、Dart、Scala、Haskell等等,它们呢?

      如果文章里边比较了如上所有语言的各种参数,文章将会非常长,你还会读它么?你期望一个程序员了解所有的程序开发语言吗?这显然是不可能的。我主要对PHP和Node.js做了比较,主要原因如下:

    1. 首先它们之间值得比较。两者都是开放源码,都是致力于web开发,并且都可用于相似的项目。

    2. PHP已经发布了很久了,但是Node.js才刚刚兴起,并受到越来越多的关注。难道PHP的程序员应该相信Node.js的宣传?应该考虑转换语言?

    3. 我了解,热爱编程语言,自从20世纪90年代之后我就一直使用PHP和JavaScript,并且也有几年的Node.js的经验。除此之外我也涉猎了其他的技术,但是在这里我还不能对他们作出客观评价。

      另外,对多少语言做比较不重要,因为总会有某些地方的某些人抱怨我没有提到他们语言。 

    第八轮: 性能

    第八轮 主要关注速度。虽然这项经常依赖于经验以及开发团队到底多上心,Craig 注意到 Node 在一些方面的优势。

      第六轮:集成

      开发技术很受限制,除非他们能与数据库和驱动集成。PHP 在这方面很强,PHP 面世已经很多年,他的扩展使他能和拥有主流或冷门的 API 的服务器直接通讯。

      Node.js 正在迎头直追,但是你也许会为某些老旧,冷门的技术寻找成熟集成组件而头疼。

    下面是他们详细的看法…

      SitePoint上的角逐

      程序员会花费很多时间来提升他们自己的编程能力。一些人有编程语言之间的延伸能力,但是这些达到更高层次的人根据很多的因素来做出他们自己的选择。从主观方面来说,你将会推进并且捍卫你的技术决策。

      SitePoint Smackdowns并没有采取“选择适合你自己的,朋友”这样的观点。我将会根据个人的经验、要求和喜好提出建议。你可能不会同意所有的我所说的所有观点,这并不重要,重要的是你的意见将会给其他人做出更加明智的选择。

    第三轮: 语法

    第三轮比较了理解两种语言语法的难易程度。Craig判定这一轮Node获胜。

    网络正在处于一个日新月异的发展时代。服务器端开发人员在选择语言的时候非常困惑,有长期占主导地位的语言,例如C、Java和Perl,也有专注于web开发的语言,例如Ruby、Clojure和Go。只要你的项目运行良好,你的选择就显得没有那么重要了。

    Bruno:

    关于这个保持沉默。

      但是如何让这些新的web开发人员做出一个正确的选择呢?

    第十轮:未来

    第十轮着眼于两种语言的前景,基于两种语言在现阶段看起来都有一个前程强劲的未来,Craig 断定这一轮的结果是平局。

    Bruno:

    Bruno 不得不赶快去写多写一些关于 PHP 的文章,还要维护那让人惊叹的 SitePoint PHP 频道。

    James:

    James 也等不及要回到他挚爱的 JavaScript 频道,但是他留下了这些观点:

    平局对于这一轮来说是公平的。Node 是一颗崛起的明星,但是如果想撼动 PHP 的宝座,他还需要付出巨大的努力。

    总的来说,如果锤子是你唯一的工具,那么每个问题看起来都像一颗钉子。Node 并不会完美适配于每一个方案,当然很多时候不使用 Node 也是非常合理的。然而,Node 能做到的,他可以做得非常好。这完全由你自己来做一个明智的决定,去选择一个适合自己项目的最好的工具。

    既然 Bruno 和 James 都发表了自己的观点,那么你是怎么看这个问题的呢?

    Bruno Skvorc

    克罗地亚的程序员Bruno拥有计算机科学,英语和文学三个硕士学位。他是 SitePoint 网站 php 专栏作家,还是 Diffbot.com 的开发布道者. 他避免像瘟疫一样的遗留代码,挑选项目是尽管使用最新技术,他还是一个 treadmill desk enthusiast 和活板玩家,他有一个博客:sometimes blogs.

    James Hibbard

    我是一个网站开发者,目前居住在阳光明媚的德国北部。我喜欢使用 JavaScript 和 Ruby 编程,你在SitePoint 的 javascript 论坛经常能看到我。不写代码时我喜欢跑步。

      第二轮:帮助和支持

      没有官方文档和资源(课程,论坛,堆栈溢出)的帮助你必将举步维艰。 PHP 在本轮轻易胜出,她有大量的指南和二十年的 Q&A。无论你想做什么,总会有人在你之前已经面对过同样的问题。

      Node.js 拥有很好的文档,但是更加年轻,能提供的帮助较 PHP 也少。JavaScript 在市面上的时间和 PHP 一样久,但是主要的帮助都是针对浏览器开发的,那基本没啥帮助。

    图片 1

      最终赢家

      最终分数:Node.js 赢得5轮,PHP 赢得4轮,一轮平手。原以为会倒向其中一方,结果比我预想的更中庸一些。

      Node.js 有一定的学习曲线,对新手来说不够理想但是她赢得了本次对决。而且,如果你是位喜欢该语言的靠谱的 JavaScript 程序员,Node.js 不会让你失望。她更新潮而且提供自己网页开发的体验,你不会思念 PHP。

      但是不要贬低 PHP,PHP 依然有活力,你不该因为 Node.js 快一些,新一些或新潮一些就去紧跟 Node.js 潮流。PHP 易学而且依然支持专业的编程技巧,帮助无处不在而且开发简单。甚至死忠的 Node.js 开发者也不得不在简单网站和应用时考虑使用 PHP。

      我的建议是:评估选项,根据你的需求来选择一门语言,这比本文这样的”对比“文章靠谱得多。

      原文地址:


    Bruno:

    错误比比皆是。首先,这篇文章 有关于性能的详细讨论, 其中排除了开发者经验以及应用类型对性能的影响。如果那篇文章依然无法让你明白抛开上下文谈性能有多愚昧,那来我来谈谈我的观点:

    • PHP 正在嵌入一个多线程服务器。这使得完全绕过外部服务器成为可能,但暂时还不推荐使用。另外也有一些超快速的的服务器(像 Nginx),他们使得整个启动 PHP、派发请求的过程快到可以忽略。
    • PHP 的原生异步 (无阻塞 I/O)支持将在 PHP7 中推出,而且多年前 ReactPHP 就实现了类似的模式,因此这一点也毫无意义。
    • PHP single-request 的生命周期模式是最大的负担。确实,如果你单纯的追求速度,但是这条依然可以很容易绕开,不止可以通过 Memcached 和 Craig 说的类似的方法, 而是通过类似;Ajax 的方法。顺便说一下——服务端 JS 应用默认也是 single-request的。另外——这种 single-request 的生命周期也是一种优势,每次请求重新构建应用,避免了很多内存问题,清空垃圾内存,保持苗条干净。你上次使用一个稳定的长时间运行的的无内存泄露的 Javascript 应用是什么时候,不论前端或后端?

    关于性能的讨论现在是,而且以后也将是——平局(除非你用的是 Java,那 Java 一定输)

    图片 2

    James:

    Node 以高性能低延迟的运行时环境而闻名,而且它也找到了属于自己的方式来嵌入部分500强公司的代码栈。由于它的无阻塞 I/O 机制以及 Google Chrome V8 引擎技术,现在 Node 已经成为了“快速”以及“可扩展的”的同义词。 现在网上有很多故事,像Node 如何让公司获取更好的性能提升 以及给开发者提供更高的生产力。我很高兴,这回合 node 胜,但我也理解有人质疑这点。

      第四轮:开发工具

     两种技术都有一些很好的编辑器,集成开发环境,调试器,验证器和其他工具。我认为这是平局,但是这里有一些工具给 Node.js 些许优势:NPM-包管理器。 NPM 允许你安装和管理依赖,设置配置变量,定义脚本和其他。

      PHP 的 Composer 项目受 NPM 激发,在有些方面更强。但是,PHP 在默认情况想不提供,活动库较小,在社区的影响更小。

      Grunt 和 Gulp 之类革新了开发方法的构建工具的壮大,NPM 也有一部分功劳。有时候 PHP 开发者也许想要/需要安装 node.js,这不是倒退。

    第五轮: 环境

    第5轮要说的是技术的可用性和部署情况,以及被哪些平台和生态系统支持。Craig 对于这一点也不十分明确,但是看起来似乎更偏向于 Node。

    Bruno:

    Craig 说他曾比较 PHP 和 Node 在 web 方面的优势(常见的 web 开发问题),然后说到处都用到了 JS。首先,我们来比较 Node.js,而不是 JS 本身,其次,我们比较了两种语言在什么环境下可以运行。猴子比鱼要厉害,因为鱼太蠢了不能爬树,但是猴子和鱼都会游泳。那么我们来比较它们做得怎么样吧。

    在 web 开发环境中,PHP 获胜了。这里是一些基于 PHP 的桌面程序工具——是的,也许你不会使用它们,但你一定会用这些基于 PHP 的命令行程序。

    James:

    我很高兴有人加入Node。

    我喜欢 npm。它易于安装,易于使用,并有数以千计的包可用于几乎任何需要。我也喜欢这样的事实,npm 可以选择全球的和本地的程序包(相比之下,一些语言如Ruby,它的标准需要将你的程序包安装在你的 Ruby 版本的旁边)。它的工具也很棒。一些工具,例如 Bower 和 Grunt,在我工作流中都有一个固定的位置,它们成倍地提升了我的工作效率。
    另外值得一提的是,npm 已经开发出了第3版的 β 版。它解决了 Bruno 提到很多问题,例如嵌套node_modules 方法错误等。

    下文引用自entire smackdown:

        PHP开发人员可能希望(或需要)在某些场合安装Node.js。反过来不是真的。

    在最近 SitePoint 的 PHP vs Node.js Smackdown 一文中,Craig Buckler 对两种语言就如何应对一系列的10个挑战进行了比较来决定哪一个总体上更佳。

    James:

    我爱 JavaScript。我知道它有它的怪癖,并且我知道一些原因,ECMAScript 2015 将会修改掉一些,并给语言带来一部分令人激动的新特性。JavaScript 是强有力和灵活的,并能适应很多不同风格的编程。与 PHP 对照,我享受使用 JavaScript。Node(Node.js)就是其中之一。

    本文由威尼斯手机平台登陆发布于前端资源,转载请注明出处:Craig 在书中讲到,我将会对比这两种语言所在领域的发展状况

    关键词:

上一篇:没有了

下一篇:没有了