听说ChezScheme是最快的神级编译器,一秒钟几百万行,王垠说的2秒内编译自身毫不是夸张(看这里《揭秘Chez Scheme》,Scheme中文社区)。ChezScheme由美国印第安纳大学大学的Kent Dybvig博士发明,后来卖给了思科CISCO,做为内部绝密的编译器工具来运行苛刻的计算任务,如今已经开源,仓库地址是https://github.com/cisco/ChezScheme。有关如何开始使用Chez Scheme,请看官方的文档:Chapter 2. Using Chez Scheme,有关Scheme的使用入门,这里推荐一本中文翻译的《Yet Another Scheme Tutorial》,这是一本面向初学者的温和且按部就班的Scheme教程。目标读者是仅有些许编程经验的PC用户。html
下面来介绍下截止到2019.11.19日的最新版如何在Windows下编译一个ChezScheme,其它环境下如何编译请看源码下的文件BUILDING的介绍:Building Chez Scheme Version 9.5.3。请注意这个版本号,以前的版本编译方法可能与本文介绍的不一样,本人也为此踩坑了很多时间。git
1,首先,安装Visual Studio 2015/2017,注意必须选择按照Visual C++ 桌面开发组件,不然你在最后一步没法编译Scheme。github
2,安装msys2,这是一个Windows下的Linux Shell环境,可让你在Windows上使用Linux命令,而且它还自带包管理功能。安装完后按照官网提示更新下msys2,会给你安装一堆组件,默认都安装。shell
3,打开Visual Studio命令提示符,选择“vs2015 x64 native tools command prompt”,vs2017相似,中文名称是“适用于VS2017的本机命令工具提示”。编程
4,在上面的Visual Studio命令提示工具里面,输入 c:\msys64\msys2_shell.cmd,打开msys2的命令提示窗口。工具
5,在msys2里面安装GCC编译工具和Git工具,若是Git已经安装跳过。学习
pacman -S gcc base-devel pacman -S git
6,下载Chez Scheme源码,而后进行编译前配置,最后编译。若是源码已经下载跳过。ui
git clone https://github.com/cisco/ChezScheme.git cd ChezScheme cd wininstall make workareas make
7,最后等make完成,咱们在ChezScheme目录 a6nt\bin\a6nt 下能够看到scheme.exe,双击它便可运行。spa
8,将a6nt目类下的 bin目录和boot目录都复制到一个新建的build目录下,而后建立一个 run.bat 文件,文件内容以下:翻译
@ECHO off ECHO Chez Scheme for Windows. make by bluedoctor. 2019.11.18 bin\a6nt\scheme.exe
build目录的文件结构以下:
E:\ChezScheme\build\ChezScheme>dir /s 驱动器 E 中的卷是 LENOVO 卷的序列号是 E2D7-2E41 E:\ChezScheme\build\ChezScheme 的目录 2019/11/18 23:23 <DIR> . 2019/11/18 23:23 <DIR> .. 2019/11/18 23:23 <DIR> bin 2019/11/18 23:19 <DIR> boot 2019/11/19 10:38 94 run.bat 1 个文件 94 字节 E:\ChezScheme\build\ChezScheme\bin 的目录 2019/11/18 23:23 <DIR> . 2019/11/18 23:23 <DIR> .. 2019/11/18 23:19 <DIR> a6nt 0 个文件 0 字节 E:\ChezScheme\build\ChezScheme\bin\a6nt 的目录 2019/11/18 23:19 <DIR> . 2019/11/18 23:19 <DIR> .. 2019/11/18 20:25 764,928 csv953.dll 2019/11/18 20:25 7,102 csv953.exp 2019/11/18 20:25 1,581,688 csv953.ilk 2019/11/18 20:25 12,368 csv953.lib 2019/11/18 20:25 2,084,864 csv953.pdb 2019/11/18 20:25 112,640 scheme.exe 2019/11/18 20:25 430,080 scheme.pdb 7 个文件 4,993,670 字节 E:\ChezScheme\build\ChezScheme\boot 的目录 2019/11/18 23:19 <DIR> . 2019/11/18 23:19 <DIR> .. 2019/11/18 23:19 <DIR> a6nt 0 个文件 0 字节 E:\ChezScheme\build\ChezScheme\boot\a6nt 的目录 2019/11/18 23:19 <DIR> . 2019/11/18 23:19 <DIR> .. 2019/11/18 20:25 2,751,464 csv953md.lib 2019/11/18 20:25 2,564,910 csv953mt.lib 2019/11/18 17:14 36,556 equates.h 2019/11/18 20:24 27,609 mainmd.obj 2019/11/18 20:25 25,538 mainmt.obj 2019/11/18 17:14 1,624,450 petite.boot 2019/11/18 17:14 982,321 scheme.boot 2019/11/18 17:14 8,675 scheme.h 2019/11/18 20:24 92,444 scheme.res 9 个文件 8,113,967 字节 所列文件总数: 17 个文件 13,107,731 字节 14 个目录 514,061,447,168 可用字节
9,最后运行run.bat文件,就能够看到期待已久的Chez Scheme了:
Chez Scheme for Windows. make by bluedoctor. 2019.11.18 Chez Scheme Version 9.5.3 Copyright 1984-2019 Cisco Systems, Inc. > (+ 1 2 3 4 5 6 7 8 9 10) 55 > (/ 1 3) 1/3 >
10,上面是在Chez Scheme运行的简单Scheme程序,第一行代码运行的是一个累加多个天然数的程序,若是用C#,须要一个List<int>变量来存储列表数据,而后循环处理,代码量要多好几行。第二行Scheme代码,它的结果直接以分数表示了,很高级。
有关Scheme更多的程序介绍,请看本文推荐的学习连接。若是你不想这么麻烦的本身来编译,也能够考虑直接使用给予.NET DLR的IronScheme,具体请看我原来的文章:《.NET DLR 上的IronScheme 语言互操做&&IronScheme控制台输入中文的问题》。