我发现编程语言这东西,还是上学时学的扎实。20多年前读书时,我学过3门编程语言,Visual Basic 6.0,C语言,Lisp。学习这些语言时受环境所限,仅仅是能够完成考试及格,知道编程语言的基本概念,能看懂一点点基础代码,但是并不能完成什么大的编程项目。
我所学的专业,和程序员这个职业,相距甚远,最接近的交集,就是公司的ERP项目实施,我算是多少懂一点点电脑,和那些实施工程师沟通起来,没有太大的语言障碍。
后来因为个人兴趣,为了做网站玩wordpress学了一点php,想写爬虫又学了一点点python,再后来学习斯坦福公开课《编程方法学》,又学了一点点Java,反正学习的也不太深入,都是狗熊掰棒子,学了忘,忘了学,大把的时间浪费在了这些浅层知识上。单从学习兴趣角度,看上去蛮上进好学的,但实则都学的一塌糊涂,一瓶子不满,半瓶子晃荡。
这几年有了AI了,又把学编程的事情捡起来了。这些编程语言吧,一直都没有特别喜欢和满意的,觉得php和python缺点和优点都是很明显的语言,Java又太啰嗦,Java最气人的是概念多,语言不复杂,随便写个东西,学一大堆框架陌生词汇,每个词汇背后又都是一大串新的知识点,学起来是真费劲。再后来,看到网上说C#,多么多么优雅,做私活个人用,开发多舒服,就试着学了下C#,这个东西配合Blazor,做网站确实舒服。
学这些杂七杂八的东西吧,都没有做成过什么项目,真正做成过项目的,反倒是VB。工作中用VBA处理表格数据,以及写一些数据转换器什么的,那是真的好用。最牛的成就,是写了一段VBA,解决了公司一个部门,十几个人,连续一年半,每人每周都要至少加班4小时以上的工作量。
VBA其实和VB6.0的语法差不多,曾经也试着想学习下VB.NET,但是被那些糟糕的面向对象的模板代码和概念一下子就拦住了。试着用AI帮忙用C#和Blazor写了几个网站后台小页面之后,我开始有点理解面向对象了,再重头反过来看VB.Net,我发现这真的是一门非常好的语言,被微软硬生生做糟糕了。本来VB6.0这种面向过程式开发的语言,比python更严谨强大,配合Winform出活又快,非要改装成.net 完全面向对象式语言,简直糟糕透了。VB这种语言的主要用户是谁?不是专业程序员,是那些业余编程爱好者,是写VBA的表哥表姐,Excel大神,给他们强加过多的编程概念,就是在阻碍他们对VB的喜爱。
python这门语言最大的优点就是学习上手简单,所以成了流行度最广的语言。如果用程序员的眼光看,这门语言简直粗鄙的不行,写不了大项目。如果当年微软直接把vb6的开发体验,平移到.net平台,或者持续开发vb,我估计就没有python生存的空间了。
即便有了AI,我发现C#语言的语法,可读性还是不如VB,我尝试用VB.net写了几个桌面软件之后,我开始重新思考VB这门语言。我觉得如果能够有精力重新改造VB.NET,重新写一套VB6.0式的语法,去除面向对象那些模板代码,或许VB还会焕发新的生机。
就此,我做了一些调研,我开始扒拉那些30年前的编程语言,直到我发现Pascal这门语言,这门语言的语法深深地吸引了我,简直惊为天人。不是说这门语法有多强多好,他有很多啰嗦的地方,也有很多落后的地方,但是有一个优点,是现代语言都比不上的,就是他是最佳教学语言,说VB和Pascal这两门语言是最适合学习编程的入门语言,应该没有任何争议。
同时我发现Go语言和Swift语言,Typescript这些稍微新一点的语言,几乎大量地借鉴了Pascal的语法,说明这门语言设计是真的优秀。
我萌生了一个大胆的想法,就是利用AI开发一门新的编程语言。这门语言,我希望借鉴Pascal的结构与严谨,VB的部分语法,Python的数据类型,将这几门语言的优点融合到一起,重新设计语法,去除这些语言中的诟病之处,尽量做一个平衡,做一门源到源的编程语言,编译成pascal或者VB.net运行。
一个编程门外汉,一天程序员都没干过,尝试开发一门新的编程语言,多么疯狂的想法。不过在沉淀了几个月,和AI高强度沟通后,我发现这个项目居然可行性是非常高的,在AI的助力下,实现起来难度也没有想象中那么大。从一个Hello world !最小的Demo开始,再到基本的数据类型,运算符,语句,控制流,居然慢慢地实现了一个前端编译器的雏形,虽然受限于我的代码水平,编译器写的很粗陋,但确实能做出来我想要的东西。
这个项目是一年多以前启动的,截止到现在其实积累了3万多行代码了,基本的编译流程都能跑通了。
目前已经实现的功能:
- 程序结构
- 基本语法
- 基本数据类型
- 变量
- 常量
- 运算符
- 控制流
- 函数和过程
- 数组
后续要推进的路线是
- 结构体 记录 模块 面向对象,
- 集合类数据类型,列表 集合 词典 枚举
- 还有事件与委托,异步与并发,包管理
算是啃到硬骨头了,中间休息了几个月,但是我决定还是要用未来两年的业余时间,把这个项目完成。
开发一门新的编程语言,完成这个项目,大概是我个人在学习编程道路上,能为这个世界做的一点微小的贡献吧。

