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

为什么选择 Zephir?

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

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

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

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

如果你是一个PHP程序员...

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

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

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除了提供这个外,在处理的过程中,编译器还会实施大量的优化来提高应用的性能。

  • GCC optimizations

  • LLVM passes

  • Visual C/C++ optimizations

代码保护

在一些情况下,编译器并不会提高应用的性能,这可能是由于应用的瓶颈是I/O计算大于内存计算。 但是编译代码可以起到对代码的一种保护作用。通过Zephir,保护本地的文件,你完全有能力去保护你的代码,并 把它们带给你的用户和客户。

结论

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


你可能感兴趣的:([Zephir官方文档翻译之二] 为什么选择 Zephir?)