设为首页收藏本站 简体中文 English 日本語 Русский язык 한어

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 25|回复: 0

关于VOL语言的介绍

[复制链接]

8

主题

0

回帖

48

积分

管理员

积分
48
发表于 2025-7-8 14:25:11 | 显示全部楼层 |阅读模式
    汇编生C,C生万物,至汇编诞生到Rust兴起的这半个世纪以来,C、C++、Java、python、SQL等编程语言在各自擅长的领域得到了广泛应用,编程语言一直在不断演进和更替。早在2014年,我就萌生了编写一门编程语言的想法(暂且叫VLO),可直到2023年1月,这项工作才真正开展起来,2年之后的今天,VLO终于有了较为清晰的轮廓。有必要用一篇文章来介绍VLO,我力求既简明扼要又清晰易懂的去描述,以节省读者的宝贵时间。
    VLO的语法属于C系语言(C++、C#、Java、Golang、AS3等),首先它最像C++,其次它有着Golang的简约风格。为什么要把VLO设计成C系语言呢?基于两点考虑:其一,C系语言把简练的读写和丰富的表达力这两者结合得相当完美。C系语言的流行,跟阿拉伯数字流行于全世界的道理一样,输入和呈现简练清晰,这点非常重要。其二,不论以程序员的数量而言,还是以语法特征的占比来看,C系语言都占有绝对的优势。车同轨,书同文,约定俗成要比“别具一格”合理得多,其它C系语言的程序员在编写VLO程序时可以信手拈来,学习曲线顺滑如丝。下面我将VLO跟其它语言的语法,特别是跟C++做个对比,让读者窥知其全貌。
    VLO是面向对象的语言,面向对象的纯度比C++要高,只是没Java那样100%纯。VLO只有源文件(C++分为头文件和源文件),文件名后缀为vsc,每个工程有且只能有一个特殊的vsc文件,此文件可以有一或多个包括Main函数在内的全局函数。这样设计的好处是在调用关系简单的情形下不需要凡事皆对象,可以像C那样快捷地过程式编程,Java这类纯面向对象的语言在应对此情形时太啰嗦了。但假如所有源文件都允许有全局函数,则工程会变得凌乱散漫。普通vsc文件均是import、const、type(struct、class、interface)这样的三段结构。对于C++,struct和class的唯一区别是函数和变量的默认访问权限分别为public和private,而对于VLO,struct用来表达数据块,class用来表达对某类object的抽象,某struct和某class之间不能是继承关系。struct里不能有object成员,但允许object的引用。class的每个object成员变量实际都是引用类型,被显式申明为&的成员变量不能在初始化赋值时new。VLO跟C++的几点区别源于修正C++的语法瑕疵,例如:数组变量的声明[]在变量名前;数组初始化用[]而非{};class、struct等结束符'}'后不必有';'号。VLO跟C++的另外几点差异是借鉴了Golang大道至简的理念,例如:循环只有for语句,没有做while和do while的支持;只支持前缀++和--(GoLang只支持后缀);case分支无需break语句。相对于Rust、Golang等现代语言来说C++较为陈旧,不过C++也在与时俱进,比如对import的支持、对move语义的支持。VLO没有C++的沉重历史包袱,因此可以借鉴新兴语言的创意以及自创新的语义。VLO跟进了C++这两点改进:支持import,层次为域、包、单元,VLO原生支持move语义,用=>操作符表达。VLO跟C++的区别还有:不支持函数重载和默认参数,函数重载和默认参数这两个功能仅对编写程序的人友好,但对维护者(也许是三个月之后的自己)、编译器、跟其它语言的交互等方面来说满怀恶意;VLO支持操作符重载,但不需要operator关键字修饰;VLO既不支持C的强制转换,也不支持C++的四种类型转换;const在VLO的唯一应用是定义常量,而C++里const的可以出现在函数返回值、参数、函数原型尾部、函数体内等多个地方;所有的析构函数均为虚函数,无需以virtual修饰。
   我们知道编程有面向过程、OOP(面向对象)、泛型、函数式这四种主要编程范式,这些范式分别适用于不同的需求与场景,没有哪一种范式是普适的。C++对这四种范式均支持,而VLO仅支持OOP,有限支持面向过程,将来有可能支持泛型,不考虑支持函数式。现代软件系统的日益庞大和复杂带来了软件危机,这时候OOP问世并得到了长足发展。OOP以属性、方法、事件为概念,以封装、继承、多态为特点,约束程序员在项目初期和编码进行时做更详尽的规划和更合理的设计。OOP思想并非仅仅用在构建大型软件系统上,即使是编写string、list这类小组件,依然让代码组织更加清晰明了。我曾有过一个智商颇高且算商顶级的Boss,他可以在几分钟之内洋洋洒洒写出上百行变量满天飞的代码。他是个对C++颇为不屑的C程序员,假如我和他的位置互换一下,这样的代码别想进代码仓库,“屎山”就是这样产生的。有人以正方形不是矩形的例子来诋毁继承的作用,这说法显然站不住脚,不论是从数学上还是程序设计上来看,正方形都属于矩形,所有矩形都有lenght属性,而宽度用Width()来表示(正方形则直接return lenght),Square()总为lenght * Width()。Rust和Golang都放弃了继承,理由是组合优于继承,可事实上这两者相比并不存在优劣与否,只存在合适与否。假如不支持继承,那么在需要继承来表达的情形就只能采用蹩脚而繁琐的方式去模拟,VLO不仅支持继承,并且像C++一样支持多重继承。
   以上从语法特点对VLO做了阐述,下面我们从编译器、IDE(集成开发环境)等方面做进一步了解。可以把编译器、解释器、虚拟机均称之为运行方案,VLO的运行方案分为两个阶段,第一阶段是实现windows、linux等常用平台的VLO虚拟机,虚拟机的优点不言而喻。第二阶段是当VLO像Java那样得到广泛应用之时,针对各系统平台和芯片平台实现相对应的AOT,从而提高运行效率。我们知道Golang编译器以编译速度快而著称,此优点建立在简约语法的先决条件之上,VLO同样具备这个优点。从内存管理的角度来划分编程语言,有不带GC(C\C++)和带GC(C#、Java),VLO则是半自动GC。Java本身的制约使得Javaer从不会从内存的层面去设计程序,这种粗糙的方式使得内存占用巨大且运行缓慢,集中式的垃圾回收时长相对于CPU来说显得过于迟钝。C++是另一个极端,程序员从始至终需要做精细的内存分配策略,但程序员的技术和素养良莠不齐,劣质程序的几个共同特征是性能低下、内存上窜下跳、间歇性崩溃,内存泄漏、栈溢出和野指针等bug屡见不鲜。Java像日系买菜车,C++则像方程式赛车,与Java和C++不同,VLO像装有Quattro系统的性能车,在编译期和运行时提升性能和保障内存安全。VLO编译器可智能的插入变量初始化、栈分配优化、析构期赋空值、数组越界校验等代码,这些功能可以有效的减少代码行数、降低编码难度、提高代码质量。
    偶有传闻某大神使用记事本敲代码,可大神毕竟罕有,功能强大的IDE做为程序员的搭档在工程组织、代码编写、调试运行期间发挥不可或缺的作用。被戏称为宇宙第一IDE的VS不仅强大且在持续进步中,VLO本身也是使用VS 2022 C++编写的。优秀的产品总值得我们借鉴,VLO的代码编辑器从功能和风格上非常像VS。目前VLO IDE是为VLO语言提供开发环境,但本IDE的目标是成为支持多种编程语言的开发工具,这是后话。不论如何发展,VLO IDE始终如一的保持体积小、执行效率高、资源占用少这几项特点。
    Rust连续8年霸榜最受欢迎的语言,最重要的原因是接近C++性能的同时,解决了C++备受诟病的内存安全问题。可在我个人看来,Rust的改革过于激进,严厉的限制失去了必要的灵活性,一位思维严谨的C++程序员使用Rust,如同带上沉重的枷锁去搏斗,会令武力值锐减。上面说到VLO对内存安全的保障,源自于智能的VLO编译器。除了内存安全,还有两个层面的安全值得考虑:其一是源码的安全,不同的角色在阅读、修改、拷贝源码等方面分别拥有不同的权限;其二是对终端用户的执行授权与防破解处理。VLO IDE将在这两个层面的安全性上为开发者提供功能选择,全方位保护开发者的知识产权。
    从语言设计的角度来说,C#非常优雅和优秀,从.NET开发框架的角度来说,亦非常全面、强大,.NET Core的发布解决了跨平台的问题,可C#依然不如它所具备的实力那样应用广泛。QT是另外一个跨平台开发框架,我曾下载QT包在windows下编译,那时我感觉自己像那只用键盘敲莎士比亚全集的猴子。VLO做为跨平台桌面应用的开发工具跟C#和QT这样的庞然大物相比,劣势和优势都非常明显,如同纸的两面不可剥离。不论是开发环境还是运行环境,VLO都力求轻巧和简练,让程序员把宝贵的时间和精力用在具体的业务上。
    综上所述,VLO是一门简约而又强大、跨平台的面向对象语言,可以把它视为剔除了陈旧功能与冗余语法、更现代的C++。与其问它能做什么,还不如问它不能做什么,从几十行的小测试到数千万行的大工程,从教学启蒙到企业应用,VLO都能胜任。感谢各位读者!


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)

QQ|Archiver|手机版|小黑屋|vcoding ( 粤ICP备19137816号-3 ) 简体中文 English 日本語 Русский язык 한어

GMT+8, 2025-7-20 05:39 , Processed in 0.071292 second(s), 18 queries .

快速回复 返回顶部 返回列表