YC编译器
可编译C/C++、ASM(包括SSE和AVX)、Javascript和YSP等语言的源代码
YC服务器源代码(ycs.js、ychttp.cpp)
YCOS操作系统源代码(ycos.cpp、ycboot.cpp、ychead.cpp、ycker.cpp …)
HTML解析器源代码(ychtml.cpp、ycrend.cpp、ycjs.cpp、ycsock.cpp …)
数据库Javascript接口的定义及其实现源代码(ycdb.cpp)
web管理程序源代码(index.ysp、login.ysp、ajax.ysp、ajax.js …)
YC编译器实现了一种新的软件开发模式,它能使用C/C++、ASM、Javascript、HTML和YSP等几种程序语言进行混合编程。
YC编译器可嵌入到应用程序中实时地编译源代码,使最终用户十分容易地在软件开发商提供的产品基础上进行功能扩展和二次开发。
数十年来,每个月都有一个程序语言排行榜,按照使用人数百分比顺序地排列前100种语言的流行度。可见要开发一个软件,编程语言的选择是很多的。
每种程序语言至少有一个编译器或解释器,有的甚至有多种。如C/C++编译器就有vc、gcc、clang等。关于语言优劣的争论一直都存在,从排行榜看,没有哪种语言的使用率过半。
我学的是电子专业,早年曾从事电路设计,但编写的程序代码超过了30万行;分析过的源代码有数百万行。熟练使用过的语言有Basic、FORTRAN、asm、c、c++、Javascript、HTML,看得懂但没使用过的语言有十余种,如:Pascal、Java、c#、go、R、php、ruby、python、Swift、D、Perl、Lisp、Rust、Cobol、lua等。
程序语言越来越多,但它们都是围绕算术运算,代数表达式,逻辑判断及数据存取进行语法和功能设计的。
一般来说,一个软件可以用不同的语言和不同的编译器开发实现,但实现的质量是有区别的,包括稳定性、可读性、扩展性和维护性等。
开发者对一种语言的喜爱程度往往取决于它的语法和实现它的编译器。就我而言,只喜欢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执行,也可以通过内置函数实时编译,再用对象方式执行。
Python语言最大的优点是它能以对象方式执行C/C++模块,其主要缺点是执行速度慢,C/C++模块需要由其它编译器生成,语法也不令人喜欢。Javascript经过YC编译器的增强,不但执行速度快,而且C/C++模块以源代码方式提供,系统自动编译。可见经YC编译器改良后的Javascript完全有理由取代目前很流行的Python语言。
Web开发语言YSP是YC编译器实现的一种在HTML中内嵌C/C++和Javascript的语言。YSP具有执行速度快,功能扩展无限(如增加对各种数据库的支持)的特点,它动态生成网页的能力与PHP,ASP和JSP相比具有一定的优势。
为了完全用YC编译器开发操作系统,在C/C++中扩展了一些支持汇编的新语法,并实现了一个极其简单,但具有基本功能操作系统。程序中提供了这个操作系统的完整代码且进行了简要的解释与分析。
还提供了一个实用而简单的HTTP服务器源码,它足以应付一般的网站。在某些场合可以代替Nginx或Apache。
YC编译器不仅能同时编译静态语言和动态语言,还能解析HTML超文本。
提供了大量的示例程序,它们都可以用YC编译器生成可独立执行的文件,可供学习或开发使用。