[Zephir官方文档翻译之二] 为何选择 Zephir?

为何选择 Zephir?

目前的PHP应用必须使用得稳定性、性能、和功能性保持平衡。 每个PHP应用是创建在大量的通用组件上的,而这些组件又基于大量的其它应用。php

这些通用的组件多是一个类/框架,或者是它们的结合。一但它们被安装,框架不多会改变。 做为一个应用的基础,它们必须保持很高的功能性,同时也要保持速度优点。html

快速强大的类库会变得很难懂,这是因为它们是高度抽象的实现的。考虑到这些基本的类库和框架不多会改变, 这就为编写一个能够提升性能和节省计算机资源的扩展提供了一个机会。c++

经过Zephir,你能够实现面向对象的/框架/应用,并使你的PHP程序提升到一个高的层次,让你的应用更快,同时改善用户的体验。git

若是你是一个PHP程序员...

PHP是众多流行的网站应用开发语言之一。 像PHP这种动态解析语言,由于它的灵活性,为应用开发提供了很高的生产力。程序员

从4.x到5.x版本,PHP开始基于Zend引擎实现。Zend引擎实际上是一个用来执行PHP代码的字节码实现的虚拟机。 Zend引擎几乎出如今每个安装PHP的机器上,而经过Zephir,你能够创建运行在Zend引擎的PHP扩展。github

Zephir是经过PHP延申出来的,因此它们有不少的类似点。可是它们的重要的不一样点在于Zephir它本身所拥有的特色。 好比说:Zephir更加的严格,相对PHP编译来讲,它须要更少的资源。安全

若是你是一个C程序员...

C是一种强大而流行的开发语言。事实上,PHP语言就是C所编写的。这就是为何PHP的扩展可使用C语言来开发的缘由之一。 C语言能够自由的管理内存,使用底层的类型,甚至能够内嵌汇编语言。框架

可是相对PHP和Zephir来讲,开发一个大的应用,使用C语言会花费更多的时间。并且若是你不是很是精通C语言,一些程序错误会很难发现。工具

Zephir语言被设计成安全的,因此它并不支持指针和内存管理,因此若是你是一个C程序员,也许你会感受Zephir功能没有C那么强大,可是 Zephir要比C更加的人性化。性能

编译和解析哪一种更好

编译一般会减缓开发的进度。你须要更耐心的等待程序的编译,以后你才能够执行它。另外一方面,解析型语言会牺牲一点性能来得到 更大的生产力。在一些应用中,不管是编译型语言仍是解析型语言,在速度上相差的不会太多。

Zephir是须要预先编译的,可是功能的实现是基于PHP来实现的。

一但代码被编译成功,执行的时间就无需再次编译,可是解析型语言则不一样,它会在每一次请求的时候从新解析一次。 开发者能够自由的决定你的应用中哪一部份须要用Zephir来处理,哪一部分不须要。

静态类型对比静态类型语言(强类型语言对比弱类型语言)

通常来讲,在静态类型语言中,一个变量必定要预先声明它的变量类型。并且它的类型不能该变,只容许类型引用和操做。 像C/C++来讲:

int a = 0;a = "hello"; // 不容许

对于动态语言来讲,变量的类型是和变量的值绑定的,并非变量自己。因此当变量的值的类型该变的时候,变量的类型也会 根着该变。像Javascript/PHP来讲:

var a = 0;a = "hello"; // 能够这样使用

尽管动态解析语言有生产忧势,可是它并非全部应用的最佳选择,特别是一些大数量级的代码和性能的应用。

优化动态语言,好比PHP,会比静态语言,好比C来讲会更具挑战性。 对于静态语言来讲,优化能够根据类型的信息来作决定。而对于动态语言来讲,会更少的些类信息来作优化,这就使得动态语言的优化更加的困难。

然尔近来咱们看到了优化动态语言的进展(像JIT编译),可是相对静态语言来讲它仍是处于劣势。因此,若是你 须要一个高性能的工具,静态语言可能更为的安全可靠。

另外一个小的优点,静态语言会额外的检测代码编译的过程。编译器不会发现逻辑错误,可是更重要的是编译器能够预先的知道 程序的错误。而对于动态解析语言来讲,只有在执行的时候才会发现错误。

Zephir既是静态语言也是动态语言,你能够很方便的使用二者语言的优点。

编译方案

Zephir提供原代码的生成(目前会编译成C语言),像gcc/clang/vc++编译器优化代码并编译成机器代码,下面的一张图片 演示了处理的过程:

../_static/img/scheme.png

Zephir除了提供这个外,在处理的过程当中,编译器还会实施大量的优化来提升应用的性能。

代码保护

在一些状况下,编译器并不会提升应用的性能,这多是因为应用的瓶颈是I/O计算大于内存计算。 可是编译代码能够起到对代码的一种保护做用。经过Zephir,保护本地的文件,你彻底有能力去保护你的代码,并 把它们带给你的用户和客户。

结论

Zephir并非为了代替PHP或C产生的,而是补充它们的不足,它容许开发者尝试编译和开发静态语言。 Zephir是对PHP和C语言的一些优秀的一些东西的融合的一点尝试,从而令得人的应用更加的快速。

相关文章
相关标签/搜索