虽然 VB 发展到 6.0 版获得了前所未有的成功,但是至今令人疑惑的是,不知出于何种原因官方突然掉转了方向抛弃了它。

因此 VB6 也就成为了历史上经典好用、有口皆碑却又屡被今人诟病的这样一个极具反差效果的神奇存在。


但是更神奇的是,本应作为博物馆藏的它却仍然活在当下,成了名副其实的活化石。

于是随着时间的推移,今人对于 VB 的看法自然而然地形成了两大派别,就像锅里的红豆和绿豆会神奇地自动分开一样,站队极其明显。


红豆派力挺 VB ,他们的理由是,不管怎么样,至少官方仍旧吃着后悔药,给予暗中支持,就算是 Windows 11 也仍默默支持 VB 程序。

绿豆派则对此嗤之以鼻,什么不支持 64 位程序啦,什么不支持指针啦,什么不支持多线程啦,总之横挑鼻子竖挑眼,不是自个的孩子怎么也看着不顺眼。


我使用 VB 也有十数个年头了,是一只半路出家的野生程序猿,得益于 VB ,我勉强算是个红豆派。

对于绿豆派的言行,我并没有想如何据理力争,原因很简单,作为编程界的元老 VB 的确有不少“缺陷”。

如此这般我只能将想法默默埋在心里,VB 是个好东西,只是你们不懂罢了!

直到有那么一天,我偶然发现这世上居然还有一款开源、免费、支持64位并且可跨平台的 BASIC 编译器:FreeBASIC


FreeBASIC 也是 BASIC

在电脑还未特别普及的年代,曾经有众多冠以 BASIC 字眼的编程语言,它们大多数都是生活在 DOS 时代,而 VB 只是其中一种,只是后来搭上了 Windows 的快车。

那么现在我们说的这个 FreeBASIC 是否也是它们众多兄弟姐妹中的一员呢?

严格来说不算是,单纯来讲这个 FreeBASIC 只是一个自托管的编译器,简单来说,它支持 BASIC 语法,却完全支持 C 库和部分 C++ 库的使用。

从概念上讲,它和 GCC 之类是同一种东西,用来编译程序的。


FreeBASIC 项目则是一套不仅限于编译器的跨平台的开发工具,和 BASIC 沾上边的是其语法与微软的 QuickBASIC 兼容。

也就是说,如果你熟悉 VB 语法,那么上手 FreeBASIC 理论上也就很容易了。

除此之外,我需要向小伙伴们介绍一个好东西,可以让熟悉 VB 语法的你更好地在 Windows 下撸代码:WinFBE


啥是 WinFBE

起初我偶然间发现 FreeBASIC 正是源自 WinFBE ,那么这又是个啥呢?

其实它是在 Windows 上的 FreeBASIC 编辑器,俗称 IDE ,我们撸代码的地方。

简言之,就是我们先在 WinFBE 上写代码,然后再用 FreeBASIC 编译成可执行程序。

官网传送门:https://github.com/PaulSquires/WinFBE


有几个简称我们有必要先来罗列一下,好避免一会儿看不懂而头晕。

  • FBC - FreeBASIC 编译器(类似于 GCC
  • FBE - 代码编辑器 (全套 IDE 编程环境)
  • FBX - 专为 FreeBASIC 打造的 Windows 框架(类似于 .Net


WinFBE 特性:

  • 开启 Unicode 支持,中文不再乱码。
  • 支持 32 位和 64 位版本。
  • DPI 可感知任何显示器分辨率。
  • 语言本地化,基于 English.lang 文件轻松创建语言文件。
  • 本地化支持 11 种语言:
    • 英语、法语、西班牙语、德语、捷克语、意大利语、中文、俄语、乌克兰语、葡萄牙语、波兰语
  • 基于工程或非工程的编辑。
  • 用于 GUI 应用程序开发的内置可视化设计器。
  • 轻松集成基于控制台或 GUI 的代码。
  • 增量编译定义为“模块”的代码。
  • 只需指定哪个源代码文件是资源即可轻松包含 Windows 资源文件。
  • FreeBasic 编译器(32 位和 64 位)的无缝集成。
  • 代码提示弹出窗口和自动完成。


的确不错哈,不过有一点我感觉挺奇怪的,制作这个 WinFBE 最多使用的语言居然是 HTML ,占比高达 74.3%

C++ 之类的实现可以理解,但这个 HTML 是用来干啥的呢,有点不可思议哈!


此外需要注意一点,WinFBE 并不支持 Windows XP ,因为源代码中使用了许多较新的 API

接下来我们就拿 WinFBE 来体验一下 FreeBASIC 到底是个什么样子吧!


下载 WinFBE

从项目官网上下载 WinFBE 最新安装包,为了省事,我直接下载 winfbe_suite_setup.exe


当然,我们如果下载那个 WinFBE_Suite.zip 也是可以的,直接解压缩后就能用。

从它们的名字上我们也能看出,suite 是指套装,就是打包好的整套程序。

官方已经帮我们将所有需要的组件都打包在里面了,包括 FreeBASIC 编译器、示例程序、Windows 框架以及编辑环境等等。


winfbe_suite_setup.exe(44.52M)

下载链接:https://pan.baidu.com/s/1RcBsjlwPusbC29d-2w0F3w

提取码:

输入阅读密码,解锁隐藏内容...



★扫码关注公众号, 发送【000937】获取阅读密码


安装 WinFBE

为了避免出现一些不可描述的问题,我们直接使用 winfbe_suite_setup.exe 来安装吧!

很简单,基本上一路耐可斯特。


安装好后,不管你选择的是 32 位版本还是 64 位版本来启动,第一次打开它应该是这个样子的。


怎么是英文界面?

别慌,有办法搞成中文的哦!

按图示,点击顶部菜单 Options ,选择 Environment Options...


接着在出现的窗口左侧选择 Localization ,在右侧点击 Select 按钮。


按以下路径找到中文语言包 chinese.lang 文件。

C:\WinFBE_Suite\Languages
 


点击 OK 按钮后,提示重启程序后生效。


再次打开 WinFBE ,界面瞬间顺眼多了!


怎么用 WinFBE

界面改成中文了,接下来就可以写代码了吧?

别急,我们还需要再做一步动作才行!


点击顶部菜单 选项 ,选择 环境选项...


在出现的窗口左侧点选 编译设置 ,在右侧填写好 FBC 编译器的位置,32位和64位都要写好。

如果你是默认安装的话,那么它的位置应该是在 C:\WinFBE_Suite\FreeBASIC-1.07.2-gcc-5.2


我们设定好了 FBC 编译器,接下来写好代码就可以直接编译运行了。

OK,我来写几行代码简单测试一下吧!


WinFBE 是支持单文件编译的,也就是说,我们不用大张旗鼓非得先建个项目才行。

因此我们可以 new 一个文件,取个文件名叫 *.bas 即可,代码照抄下面。

#define _WIN32_WINNT &h0602
# INCLUDE ONCE "Afx\CWindow.inc"
Using Afx

Dim a As String
a="Welcome to Sysadm.cc!!"
MessageBox 0, a, "", MB_OK
 


代码写好后,我们点击工具栏的 编译并运行 按钮。


如果不出意外的话,我们就会看到正常的程序输出。


只要经过正常编译没有任何问题,那么在源代码目录中就会生成 exe 可执行文件,以后直接拿来用就行了,无需外带依赖库或点Net库啥的,非常方便。


从前面的测试代码中,我们可以看到程序引用了 Afx\CWindow.inc 这个 Windows 下的库文件。

这个库正是由 WinFBX 这个专为 FreeBASIC 打造的 Windows 框架,你可以把它理解为类似 .Net 就行了,差不多的意思。


好了,我们再来看看它带有的示例程序吧!

主程序目录中的 Examples 目录含有大量的示例程序,我们可以参考学习。

Examples 目录中还有作为项目的示例程序,就放在了 Sample_Projects 子目录中。

我找了两个例子给小伙伴们演示一下。


其一是 TaskDisalog ,这个是演示对话框的程序,前面的测试代码也是我参考了这个写的。


其二是电子琴程序 FBPiano ,可见 FreeBASIC 能写很多复杂的程序。


的确很强大是不是,不过程序好像没说支持中文吧?

哎,其实它是支持的,只不过要注意一下是不是 UTF 编码,瞧下面!


这样一来就可以保证中文不会乱码了!


嗯,可能有的小伙伴会突然想起来,不是说好了可以支持 64 位程序的吗?

是的,FreeBASIC 完全可以玩 64 位程序,只要我们在 WinFBE 中选择相应的模式就行了。

就像下图那样,和玩一样,随意切换!


还有国产 WinFBE

这个 WinFBE 其实是一帮老外搞出来的,为的就是方便大家伙高效利用 FreeBASIC

真的方便了吗?

的确方便好用,可惜毕竟是老外搞出来的,只是支持中文还有使用方式啥的好像都不怎么符合中国人品味习惯,因此终于有国内大神蚌埠住了!

就在此种背景之下,我们姑且称之为国产 WinFBEVisualFreeBasic 横空出世!


这个 VFB 就是在 WinFBE 基础上二次创作,为的就是让国人更方便灵活地开发程序之用,完全免费,用的人还真不少。

话说回来,大家千万别误会哈,不是说你在 Windows 上用 FreeBASIC 开发程序就得用这个 VFB ,实际上你完全可以直接使用 WinFBE 的,没有任何问题,只是 VFB 可能加入一些更加本地化的内容,其中的示例程序也中文化了,更方便我们参考学习。

我就简单试用了一下,还不是特别熟悉,为了避免广告嫌疑也就不过多做介绍了,有兴趣的小伙伴可以自行研究。


Ubuntu 上玩 FreeBASIC

前面说的 WinFBE 都是在 Windows 上玩的,它特意强调了 Windows ,那么我们自然也应该会猜到,FreeBASIC 实际上也完全可以在 Linux 上玩得转。

没错,FreeBASIC 它居然是跨平台的!

这就比较牛了,因此我就进一步研究了一下 FBCLinux 下的玩法。

以下就拿大家比较常用的 Ubuntu 来测试吧!


下载 Ubuntu 版本的 FreeBASIC 编译器


FreeBASIC-1.09.0-ubuntu-20.04-x86_64.tar.gz(6.53M)

下载链接:https://pan.baidu.com/s/1PvRnHrSavGpRCX0kegUx3w

提取码:

输入阅读密码,解锁隐藏内容...



★扫码关注公众号, 发送【000937】获取阅读密码


安装所需要组件
apt-get install gcc
apt-get install libc6-dev 
apt-get install ncurses-dev

/* X11非终端显示情况下需要安装以下几项支持 */ 
apt-get install libx11-dev
apt-get install libxext-dev
apt-get install libxpm-dev
apt-get install libxrandr-dev
apt-get install libxrender-dev
 


安装 FBC
/* 解压缩安装包 */
sudo tar zxvf FreeBASIC-1.09.0-ubuntu-20.04-x86_64.tar.gz

/* 切换到安装目录 */
cd FreeBASIC-1.09.0-ubuntu-20.04-x86_64

/* 执行安装程序,默认安装路径为 /usr/local */
./install.sh -i [安装路径]
 


新建一个测试文件 test.bas

打开你喜欢的文本编辑器,输入以下内容并保存为 test.bas

Screen 13
Print "Welcome to Sysadm.cc!! 网管小贾!!"
SLEEP
END
 


编译 test.bas 文件

很简单,只要指明编译器路径,并不用带任何参数即可。

# 当前目录下
fbc test.bas

# 指明编译器路径
/usr/local/bin/fbc test.bas

# 加上-v可交互输出编译结果,用于查看错误
fbc -v test.bas
 


运行编译后程序

我们可以在 test.bas 源代码文件的同目录下直接找到编译好的程序 test ,运行它试试吧!

./test
 


不知缺少啥组件,在图形界面下中文会乱码。


将代码第一行注释掉,像这样 'Screen 13

很奇怪的是,在终端下中文却很正常地输出了。

我猜测有可能是程序库支持的问题,有懂的小伙伴请教教我。


找个代码编辑器

简单的代码我们随便拉过来一个文本编辑器就可以凑合写写也没啥,但要是代码文件多了就不怎么方便了,看来还是要找个 FreeBASIC 的专属编辑器才行。

Windows 下就有 WinFBE ,那么 Linux 下也有类似的吗?

答案是,也有,但不太好搞,非常复杂。


我找了一个简单的专门可用于 FreeBASIC 编译的代码编辑器 Geany


Geany 可以通过 apt-get 命令安装,很简单,基本上运行终端程序够用了。

不过我没有找到它开启支持 GUI 开发的地方。

如果你想实现带有 GUI 开发功能的编辑器,那么可能需要安装 GTK 库和 glade 之类的东西。

这些就涉及到 Linux 的图形编程方面的知识了,我完全是个小白,所以就不展开说明了,大家可以到网上搜索看看。


写在最后

FreeBASIC 的代码虽然使用的是 BASIC 语法,但是它对 C 库的支持非常好,难怪有不少网友称之为披着 BASIC 外衣的 C 编译器。

由此我们也能看出来,如果你对 C/C++ 比较熟悉,那 FreeBASIC 也是一款编写强大程序的好利器。

此外 FreeBASIC 的强大特性使得它不用拖泥带水地还要拉上依赖库才能运行,并且不管是多少位运算的平台它都可以任意驰骋。

最后一句话总结,FreeBASIC 免费随便用,走过路过可千万不要错过哦!


扫码关注@网管小贾,阅读更多

网管小贾的博客 / www.sysadm.cc



暂无评论

登录并提交评论

© 2020-present 网管小贾 | 微信公众号 @网管小贾
许可协议:CC-BY-NC 4.0 | 转载文章请注明作者出处及相关链接