数十年来,每个月都有一个程序语言排行榜,按照使用人数百分比顺序地排列前100种语言的流行度。可见要开发一个软件,编程语言的选择是很多的。
每种程序语言至少有一个编译器或解释器,有的甚至有多种。如C/C++编译器就有vc、gcc、clang等。关于语言优劣的争论一直都存在,从排行榜看,没有哪种语言的使用率过半。如今程序语言越来越多,但它们都是围绕算术运算,代数表达式,逻辑判断及数据存取进行语法和功能设计的。
一般来说,一个软件可以用不同的语言和不同的编译器开发实现,但实现的质量是有区别的,包括稳定性、可读性、扩展性和维护性等。
开发者对一种语言的喜爱程度往往取决于它的语法和实现它的编译器。就我而言,只喜欢C/C++的语法以及几乎与C具有相同语法格式的Javascript。我相信,总有一天,C/C++与Javascript的使用率加起来一定会过半,这个结果的出现有赖于编译技术的提高。为此,我研发了YC编译器,它同时实现标准的C/C++和Javascript语言,并使这两种语言有机结合,相互调用。
软件开发讲究模块化,在C/C++中,有两种方式实现模块化。1.类继承或源码文件;2.动态链接库或COM对象。在这两种方式中,前者的模块被放入执行文件,后者的模块以二进制方式提供。用户无法修改模块,很难进行二次开发和功能扩展。
YC编译器除提供上述两种模块方式外,还通过扩展C/C++语法提供了“独立源码模块”的方式,这种方式的模块以C/C++源码方式提供,用户通过修改模块源码而进行二次开发和功能扩展,源码修改后,无需手动编译。
YC编译器可以将Javascript源码编译为原生的可执行代码,并以jit方式执行。C/C++源码可以直接嵌入Javascript执行,也可以通过内置函数实时编译,再用对象方式执行。
Web开发语言YSP是YC编译器实现的一种在HTML中内嵌C/C++和Javascript的语言。YSP具有执行速度快,功能扩展无限(如增加对各种数据库的支持)的特点,它动态生成网页的能力与PHP,ASP和JSP相比具有一定的优势。
为了完全用YC编译器开发操作系统,作者在C/C++中扩展了一些支持汇编的新语法,并实现了一个极其简单,但具有基本功能操作系统。列出了这个操作系统的完整代码且进行了简要的解释与分析。
本系统有一个实用而简单的HTTP服务器源码,它足以应付一般的网站。在某些场合可以代替Nginx或Apache。YC编译器不仅能同时编译静态语言和动态语言,还能解析HTML超文本。还列出了大量的示例程序,它们都可以用YC编译器生成可独立执行的文件,可供学习或开发使用。
也许有人会说,开发一个C/C++编译器并不难,因为有开源的GCC和LLVM。但是要开发一个不用任何开源代码的编译器,且不参考“编译器原理”,支持国际标准,具有vc、gcc、clang不能实现的强大功能,难度是相当大的。那么,为什么不使用开源代码呢?因为它太过庞大,无法实现一些强大功能,也无法集成到应用软件中。