BASIC语言能不能和C系列语言完美兼容?
现在比较成熟的语言,除了汇编语言之外。
要么跟C语言类似,要么像BASIC语言。
BASIC语言现在也就VB、VBA、VBS还在使用。
而别的语言几乎全是C语言近似的写法。
还有一些像SQL、Dephi、Luna之类的,
语法跟BASIC高度相似,却又有C语言的一些特征。
我在这里是按相似度把它们分为B和C两个系列,不是指某种语言。
那么BASIC和C系列语言的明显区别在哪里呢?
C系列每一句代码后面都是分号,VB、VBA、VBS却是换行。
当然VB里也可以使用冒号代替,这是它们语句分割符的不同。
然后是C系列使用的符号多一些,B系列使用语句多一些。
下面使用表格简单的比较一下两类语言符号的差别。
C系列 | BASIC | 中文释义 |
|
| 加 |
- | - | 减 |
* | * | 乘 |
/ | / | 除 |
| | or | 或 |
^ | xor | 异或 |
& | and | 与 |
% | mod | 求余 |
| 自加 | |
-- | 自减 | |
! | not | 非 |
= | = | 赋值 |
== | = | 等于 |
!= | <> | 不等于 |
< | < | 小于 |
> | > | 大于 |
>= | >= | 大于等于 |
<= | <= | 小于等于 |
>> | 右移 | |
>> | 左移 | |
|| | or | 或者 |
&& | and | 而且 |
0x | &H | 十六进制 |
f | ! | 小数 |
& | 整数 | |
% | 整形 | |
^ | 乘方 |
除了上述这些差别,还有B系列以什么语法开头往往以End什么结尾。
比如if到end if 还有sub到end sub等等,很多这样的。
而C系列则是{开头,}结尾,或者说这叫一个片断吧。
那么哪一种更简单呢?很多人会说是BASIC。其实不对
VB的代码是最简短的,注意是代码不是语法。语法上明显C更简短。
比如and、xor、mod,换成C写法只用一个字符号,B写法是五个字。
有人说这明明三个字,怎么是五个字,因为它们前后必须加空格。
如果你写a&b在C系列里是没问题的,而BASIC里不加空格aandb显然是不行的
再比如then也没有)简短,End Function也没有}简单。
那么申请变量VB是“Dim a as byte”,C写法则是byte a;
也不用再多作比较了,用VB的人肯定不服气,“VB代码就是比别的精炼”
我自己使用VB十几年,出于种种原因,比如VB多线程和并发处理有点差,数据类型有点少,不能用指针等等。
我尝试学习C 却一直难以入手,毕竟习惯VB了。我之所以要自己设计编程语言,当初也是想尝试换一种语言。
所以在自己定义编程语法时,几乎是完全模仿VC的路线,而IDE界面则是跟VB一样。
相比之下VB的界面设计全球最好,没有之一。但在语法上则有一个“执念”要换不一样的。
为什么非要跟VB“划清界限”,就是不想让人说我的语言就是用VB中文版。
因为我是直接生成机器语言的,跟任何编程语言都没关系,包括汇编。
而像易语言、vs系列、gcc、go、gun、python、JAVA、等则是翻译型或解释型语言。
我完全没有炫耀的意思,就是说我的编程原理不依赖任何语言,不依赖系统。(只是你要写win软件时依赖)
我也可以在Linux、安卓、苹果、塞班等系统下,甚至用单片机开发win系统的软件。(别的语言没这功能吧)
不过话说回来,这有什么用,半夜在被窝里,用手机写软件,还不能在手机上测试,发电脑上才能用?
随着我设计的编程语言一步步完善,就发现C写法也是有很多不合理的地方。(VB用户来点精神!!)
比方说判断语句,在C系列是“switch”,在B系列里是“Select Case”
VB可以用逗号分割多个条件,还可以用“1 to 10000”,一到一万,同时再加逗号。
而在C系列语言里根本没有这种写法。“只能”是一次判断一个条件。
既然是一个条件,代码后面必须加break之类的跳出。不加的话,后面代码全部都会执行。
这叫怎么理解,“单条件”判断某个数,如果等于1,则执行等于1这个条件的代码
同时其它不等于1的条件代码也会全部执行。这叫什么逻辑,太让人无语了吧。
那C语言为什么要用break,它内部直接给“加”上不行吗?因为它真的有用。
如果你不加break,可以直接写下一个条件判断,只要没这句,它就会继续走
那就可以实现“多条件”了呀,但是1到一万的怎么办?判断是否为1,是否为2的代码,一直写到一万……
真的只能这样了。从这一点上来说,肯定是VB的语法更好用一些,那么我就也支持逗号加多条件。“一到一万”,不是用to而是用~,这个英文符号就是表示几到几的。之所以不用-是防止和减号混淆。
还有C系列语言里,=和==,|和||,&和&&意思是不一样的,=不是等于,==不是等等。
不过VB里却没有 、--、 =、-=、*=、/=之类的写法,毕竟写法简单,我自然是会支持的。
不过我在支持的同时,也更灵活:可以用a 5;B*c;d/10;这种写法,注意这是三句独立代码
这样才更符号“语言”逻辑呀,A加等B,B乘以等于C,多别扭啊。直接a加3,b乘5,C除以D才通顺。
包括那些分号、括号之类的,真正的作用就是区分一句话。任意符号包括换行也能把语句区分开。所以我就没把这些条件限制得很死,只要能达到区分的目的,不一定非得用分号啊。
那么重点来了,在我的语法里,空格总要有吧,而且在哪里的空格都要处理。
它在VB里是用来区分变量、关键词等“名称”,C里面也一样啊。再有换行在C里也有啊
也一样能区分两个语句,那么我不再严格规定使用符号了,用VB的写法,一样通行啊。
搞了这么久,一直在跟VB“划清界限”,结果还能用VB的方式来写,那我这又是何苦呢?
能兼容不是更好吗?当然了100%兼容是不可能的。就比如VB的有些写法,and、xor还是太长了。毕竟符号只有一个字,还不强制加空格。用英文又太长,用中文也许可以,比如then太长,用“则”就可以啊。还有and可以用“与”,or可以用“或”,一个英文字搞不定,汉字肯定可以。(不过能用符号肯定比打汉字要容易)
于是乎我终于改变思路,再也不“排斥”VB了,毕竟是伴随我十几年的语言,它的长处我也相当了解。我在吸纳接受VB优点的同时,却要跟它“撇清关系”,实在是太不应该。我也不再反感别人说我这是VB中文版了。
还可以大方的承认,这就是“VB中文版”,而且解决了VB很多不完善的地方,这也是我一个VB“老手”的经验之谈。我这么多年来,之所以要自己做编程,不就是要突破VB的局限性?要是VB能达到我的需求,我又何必放弃那么熟悉的语言,来走这条完全“摸黑”的路?
最后我再规劝一下在各个不同领域“坚守”的编程爱好者,不要再有门户之见,作为中国人为了给国外的软件分高下,而争的面红耳赤,甚至恶语相向,实在是没必要。还有那些不喜欢英文编程的国人,也不要极力排斥国外的东西。我开发这个SEC中文编程,也是全面兼容英文的。毕竟网上能复制下来的代码,几乎都是英文的。能直接拿来用不更好吗?我既能兼容英文又能写中文代码,既能兼容C系列语言,又能兼容B系列语言,不也是挺方便的吗?
截图示范一下,原本代码里分号特别多。
我把代码里的分号全部都去掉,试试效果。
然后编译运行都没有问题,如果那里不用括号而是空格,后面是“则”,英文的就不再继续演示了,用“then”也是可以的。“绘制弹窗 ~ 绘制静态”这种代码写法,也是VB里才具备的,就是把所有要绘制的“小窗口”,都指定为18号粗宋体,运行后列表、标签、文本框,按钮都变成这种了。
总之“兼容”也不是要完全一模一样,哪种好用,书写方便就怎么来。用中文容易看懂,用英文输入快,所以“国产编程”就应该是包容的发展。