38类Basic语言,你没见过这么多的吧?包括出名的 QBasic,O'Basic,FreeBasic,JavaBasic,RealBasic等,绝对全,值得一看●BASIC语言大家族
BASIC语言是我最初接触的计算机语言,QuickBasic是我觉得最精致的语言开发环境(小巧,集编辑器、解释器、调试器于一身)。QuickBasic(或者DOS 6.22的QBASIC)语法有些独特的地方,对初学者或许不是很友好,但是使程序显得非常简洁,一旦熟悉之后可以提高程序编写效率:
- 调用sub或者function(以下统称函数),既可以用aFunction(par1, par2),也可以用aFunction par1, par2。我只见过matlab中有这样的用法。
- 内建函数、语句支持缺省参数,中间的缺省参数用","跳过,末尾的缺省参数当然是不用写出来。还没有见过其它语言可以这样处理函数的参数,更不用提可以自己定义这样的函数了。
- 自定义数组起始下标。
除了由QuickBasic直接发展而来的VB、VBA、VB Script系列,BASIC语言的爱好者们开发了各种BASIC/类BASIC的语言和解释/编译器,这里列出一些free的:
- FreeBASIC(简称fbc) 试图在开源社区开发兼容QuickBasic语法的BASIC程序编译器,添加了新内容,但是对语法和语义都做了一些修改,开发过程中逐渐背离了最初的原则。fbc可以自己编译自己的源程序,运行在Windows、DOS和Linux平台上。
- Cheesecake BASIC 一个可以解释自己源程序的BASIC语言解释器。语法与QB基本兼容。实际上,它自身的源程序混合了大量类似C语言的预处理,通过网站上的了一个程序,把这个源程序转换成Qb45、Cheesecake BASIC或者PureBasic程序。可以把源程序包裹成exe文件,正在用C语言开发虚拟机,将使Cheesecake BASIC程序能够运行在其他OS上。2007年1月编辑:可以从这个网站下载,但是看上去网站从2005年到现在都没有更新过,C语言的虚拟机成为空话了。
- wxBasic 支持wxWidgets的解释型BASIC语言,Linux、Windows双平台,可以发布包裹好的可执行文件。Ducke的wxEditor是由wxBasic写成的IDE,且带简单的form editor。
- sdlBasic 基于wxBasic代码,支持SDL的解释型BASIC语言。已有程序可以把sdlBasic源代码转换成C代码,这样就可以发布可执行文件了。比较讨厌的是,sdlBasic的程序总是附带2个字库。
- Basic4GL 支持OpenGL的BASIC语言,解释执行,只支持win98及更高版本Windows。可以把源程序包裹成exe文件发布。2006年8月20号的2.4.3版本,支持调用C++编写的dll。难道它想做成通用的BASIC开发语言?
- SmallBASIC 解释型BASIC语言,数学运算和图形功能比较强,除了PC之外,PalmOS上也有移植。为了程序编写方便等等原因,作者改动了不少BASIC语言的关键词,所以用SmallBASIC书写的程序看上去怪怪的。
- Yabasic PC、PS2平台都有出现。Windows、Linux下一样可以发布可执行文件。文档中提到用于隐藏运行脚本时出现的DOS窗口的RUN,可以用来发布所有的解释执行的脚本程序——我认为用批处理的方式发布自己的程序看上去比较傻。
- Gambas 只支持Linux的解释型BASIC,号称Linux下的VB。从IDE到界面设计,都是全的。
- KBasic 这个猛,支持Windows/Linux,据说是100%支持QB、VB的语法。从IDE到界面设计,都是全的。不是开源的,个人版免费,专业版收费。不支持win98,所以没有试验。
- XBasic 支持Windows/Linux,带IDE,可以编译成可执行文件。不过太久没有开发了,语法与BASIC差距较大,而且IDE自身、编译生成程序的界面古怪,不是Windows标准GUI的样子。
- xblite 基于XBasic代码开发,只支持Windows平台,并为开发Windows平台应用程序做了改进。
有哥们为其开发了界面设计工具。
- SheerPower 4GL 又一个自称第四代语言的家伙(另一个是forth语言,结果现在就只有在嵌入系统中用的比较广)。除了它的"精确的数字计算"之外,没发现有什么优于别的BASIC的地方。非商业运用是免费的,否则需要支付高的惊人的费用购买使用权。只支持Windows,解释执行,可以编译成伪代码随虚拟机一起发布。
- RapidQ 比Gambas还早的仿VB的BASIC开发环境,免费软件。多平台,编译成字节码运行,发布的程序只有单个的可执行文件和一些数据文件,而不需要额外的动态连接库。软件不错,于是作者被挖,开发RealBASIC这个商品BASIC语言的IDE、跨平台插件,RapidQ停止更新。很可惜RapidQ不是开源的 :(
这里是国人的一个RapidQ站点,资料总在更新。 - Decimal BASIC 完全遵循ANSI标准,运行在windows上的BASIC解释程序。比标准多提供了图形函数、矩阵支持、复数支持。可以在一般的数字和有理数之间切换,这样可以得到数学上的精确结果(比如1/3就是1/3,而不是0.33333)。好像可以扔掉SheerPower 4GL了,hiahia,第四代语言,笑死了。
- 99BASIC 日语自由软件。老式的BASIC开发环境:F1是list,F5是run......。运行在windows上,提供了一些图片、文字、wav/mid媒体文件的支持,看上去很不错——至少在软件发布的2002年。
- ActiveBasic windows上的日语软件。特点?类似一整套VB。可以编译成exe(但是我没有实验成功,每次编译,一个窗口一闪而过,看不清上面写了什么,没有exe输出)。作者肯定是在里面添加了限制使用windows版本的代码,他承诺的英文版也迟迟不见动静。
- O'Basic Windows上的BASIC,与标准BASIC不同,支持剪贴板、OLE......(感谢FatCatHu提醒)。
- JustBasic 商业软件Liberty BASIC的 简化版,运行在windows系统上,可以产生、而不是编译成可执行文件(感谢FatCatHu提醒)。注意:在中文windows上,1.01版本的源程序只能IDE中解释执行,产生的TKN文件运行报错,开发者承诺1.02版改正这个bug。自带了Form designer的源代码,是学习这个语言的好参考文件。2006年过了大半了,还没看到1.02。主页上也把论坛连接放到了隐蔽的地方,我猜测Liberty BASIC的销售不好了。
- LGP Light Game Programming,使用DirectX开发windows游戏,只有日语文档。函数名中总是有@符号(比如G@SETUP,F@OPEN……),看上去好不习惯。自称是编译型的BASIC语言,不大可能!
- MoonRock 先把源程序翻译成asm语言,然后通过汇编程序产生DOS下的可执行文件,可执行文件因此个头很小。个人可以free使用源代码。
- MediaBASIC 一个新的windows下的BASIC语言,用Delphi编写,写信给作者的话可以获得源代码。
- envelop 也是一个具有一定规模、可用的BASIC语言,IDE、layout俱全,可惜不开发了。官方在准备专职其他方面的工作之后,打算转让envelop的版权,但是只在软件中留了电话信息。之后,版权被Janus Software获得,但是他们也只是在很多年以前出了一个linux版,把软件名字改成Phoenix Object Basic,就再没有动静了,给他们写信问询,没有消息,又一个软件死亡了。
envelop,不会用,看不懂文档、学不会,哈。 - SpeedBASIC 运行于windows平台,IDE(代码折叠、高亮、提示、自动完成)、form designer俱全。把BASIC代码翻译成C++代码,因此需要一个C++编译器。语言自身还有待完善。如果域名解析错误,请访问这里
- JavaScript BASIC Interpreter 网页上的BASIC解释程序。
- JavaBASIC 把类BASIC语言编译到JAVA的class文件(这样可以开发手机软件),提供了游戏接口
- RealBASIC 其实standard版本对Linux用户免费,因为公司看到了linux下存在很好的类似VB开发工具(不知是不是指Gambas,难道还有其他我不知道的?),所以作出了明智的决定。优点是一个源程序可以在Windows、Mac、Linux上通吃(标准版和专业版),而且在这3个平台上其实也可以编译到任何一个平台上的可执行文件(仅限专业版);相比VB,RealBASIC的开发工具是绿色的,编译出来的可执行文件也是绿色的;售价便宜。缺点是,编译出来的可执行文件的个头比较大,都是2M以上的(因此我怀疑,它并不是如宣传中所说的编译到native code,而仍然只是对某种字节码的打包),但是比使用.NET的怪兽小多了;调试不方便;编译速度慢。
公司很会做市场,在微软准备停止支持VB6以便让新语言VB.NET杀死老VB、Borland将出售旗下IDE业务消息出来以后,马上在网站上为VB6和Delphi用户推出免费获得标准版RealBASIC的活动,而实际上活动期间任何人都可以同样地获得该产品。然而,我认为RealBASIC要想真正达到VB或者Delphi的程度,还有很长的路要走(比如在2006年才支持了UDT)。
顺便一提,我无意间找到了RealBASIC中国代理公司头头的blog。在国内一年销售¥20万还是有点困难的,祝他好运吧 :)
还得说一下,MSN等等地方的blog空间都需要注册用户才可以回复,真是垃圾。 - BCET Basic Compile to Expression Tree,把BASIC源代码编译到汇编语言,然后用MASM编译成可执行文件,可以写gui程序。作者打算兼容QuickBASIC/QBasic/PDS/VBDOS的源程序,不过有段时间没有更新了。
- BCX 将BASIC源代码编译到C代码,这样就可以用C编译器(比如LCC、Pelles C,而不是在TC世界考古)编译了。
- ExtremeBasic 作者Andrew Barry不满意现在的BASIC越来越强大的时候,丢弃了易用性,于是写了这个软件,试图在IDE中解决所有的问题(换句话说,还是再造一个VB)。目前还是很初级,而且ExtremeBasic使用的是自己定义的一种BASIC方言,所以看上去有些奇怪。提供的例子中,编译IDE的时候ExtremeBasic crash了。
IDE本身使用了QT库,所以是跨平台的(Windows/Linux/Mac os);可以说它定义的BASIC语言也是跨平台的,因为它把BASIC翻译为C/C++,然后借助MingW(ExtremeBasic自带)编译成可执行文件,编译好的可执行文件不依赖于QT。只需要把MingW目录整个放到IDE可执行文件相同的目录(因为软件的bug,不能是中文目录、长文件名目录中)中,就会自动寻找编译器,而不需要设置环境变量。
八卦一下,是Andrew Barry编写了上面提到的RealBASIC,但是不晓得他为什么离开这个公司、然后新开发免费的ExtremeBasic。
顺带说一下,受ExtremeBasic等等软件的影响,有人在开发banteng - Cross Platform Visual Javascript。看说明,似乎是要借助GCJ,开发可编译到本地代码的、运行库小巧(<10M)的JAVA开发环境。说实话,我很讨厌JRE、.NET framework,觉得它们都是又丑又大的东西,它们之上的的程序除了程序员用用之外,不适合普通用户。 - 中文VB6 Working Model Edition 回到我最喜欢的VB。这个版本很特殊,它是为一些VB学习书籍专门制作的,只能够解释运行程序,不能编译到exe。据说是全功能的,不过似乎debug都不能用。基本上是绿色的,而且不过超过15M。有空看看能不能把VB专业版的编译工具提取出来。微软曾经的产品多么地小巧,这个特殊版本的VB证明它仍然具有制作小巧绿色软件的能力,可是为什么非要制作现在越来越大的windows、.NET和开发工具呢?盖子脑袋坏了。
- CoolBasic 面向游戏开发的Basic语言,在我的机子上运行太慢了(不论是IDE还是编译之后的exe)。更新似乎停滞了。
- thinBasic 使用商业软件Power Basic开发的免费BASIC解释程序。TBGL是为它专门开发的、基于OpenGL的3D引擎,版权未知。
- Euphoria 自3.0.0起,这个曾经的商业开发软件是开源的了。它可以开发DOS、Windows、Linux下的程序。这是解释型的语言,但是自称其解释器比Perl、Python快了至少30倍。附带工具可以把Euphoria转换成各种WATCOM C、LCC、Pelles C、MingW等等C语言编译器支持的源代码和项目文件,自称这样编译的可执行文件,速度比解释执行快至少2倍。
如果你只开发Windows上的程序,那么可以使用Win32Lib(但是注意,它这里面封装的函数,和VB、VC使用的那一套的命名不一致)。这样的话,你有2个包含界面功能的IDE:Andy Drummond的EuVIDE 0.22.0 Setup Program(这个似乎没有主页,不开源)或者Judith Evans的EuVide(这个开源,但是它的鼠标操作在我的计算机上似乎失效了),他们都基于David Cuny的代码改写,所以很相象。顺便一提,这2个是少有的(无论商业软件还是freeware),双击控件会自动添加事件绑定代码的IDE。 - QuickerBasic 比FreeBASIC还早的、打算兼容QB的编译器,我觉得它对QB语法的改变比FreeBASIC还大。但是作者的开发一直不顺,在距第一个公开版本(解释器)2年之后的2006年10月才公布另一个版本。FreeBASIC的论坛上有人宣称“我们有了竞争对手”,在这个帖子里,v1ctor宣布在fbc 0.17发布之后,因为身体等原因(唉,我就是不想走程序员这条路啊)他将暂时退出开发,项目交由社区热心人士管理;在这个帖子里,QuickerBasic的作者someone42表示愿意参与FreeBASIC的开发,加速FreeBASIC使用GCC后台的过程(也就是说,QuickerBasic会死去)。
- GFA-BASIC 32 曾经的商业软件,开发dos或者windows平台的有用程序。附带界面设计器;自身是绿色的,编译出来的程序也较小,似乎也是绿色软件。2001年公司破产之后,爱好者花了近5年的时间(佩服国外这些爱好者的执着),终于获得了其源代码,并公之于众。
几个问题:
- 我没有看到它的源代码下载连接
- 下载的可执行文件,不要放在含中文的目录中,否则出错
- 调试不方便
- 汉字支持不好
- GUI古怪,不符合windows风格
- 只有德文文档,缺乏英文的
- 代码清理力度不够,有的例程编译出来居然说需要老版本的GfaWin20.ocx
- FBSL (Freestyle Basic Script Language) 运行在windows平台。按作者的说法,它混和了VB、QB、PHP、Pascal和C++的风格。有用自身编写的界面设计器(未公开,目前仅限于开发者内部使用)。提供了打包到exe的脚本。
- Quite BASIC 使用js编写、基于web的的老式BASIC(需要行号、使用LET赋值、GOSUB/RETURN方式调用/定义函数)语言解释程序。提供了几个现成的例子,程序跑得相当慢,要有耐心才行。
- RunBASIC 基于Liberty BASIC语法,使用Liberty BASIC实现的、web上的BASIC语言解释程序。提供了几个现成的例子,程序跑得比Quite BASIC快得多,可以输出图形。
38
发表于2004年、旨在纪念BASIC语言40岁生日(5月1日)的两篇文章回顾了BASIC的历史,简介了庞大的BASIC家族的部分成员,读起来饶有趣味:《BASIC四十年》和《BASIC万花筒》。
另外,一直渴望获得一份QB/QBasic自身的源程序,《BASIC万花筒》一文中提到有MS Qbasic 1.1自身的源代码下载,我很怀疑是否有这种可能,可惜连接是坏的 :(
顺便B4一下仍然说BASIC语言只能解释执行的人,hiahia
主要更新记录:
2005年9月,http://basic.mindteq.com/有很多的BASIC开发工具的比较和下载
2006年2月16日,添加RealBASIC
2006年3月2日,OOP、消息驱动、GUI,这些概念的出现,使得一般用户书写、调试程序的难度加大了。不清楚那些开发者使用上面某些不提供调试手段的语言(应该说语言+IDE吧)书写应用程序时,是如何调试、排错的。一头雾水
2006年8月30日,添加CoolBasic。现在收集了31款软件了,哦~
2006年10月28日,添加Euphoria
PS:第一次听说这么多的BASIC语言,感觉都不错的,呵,下载试用中。。。