关于对未来编程语言的若干设想

2013年至今已经度过6个年头。从20几岁到今天的30而立之年,这六年我最主要的心思和精力投入给了一种叫做C++的编程语言上面了。其实除了C++,我还捎带着学了一点点的Java,C#,Python,Basic,D。中间考虑过多次改换阵营。但是最后我发现我还是只会用C++。

那么我用C++都干了些什么事情呢?

2014年上班第一年,我编写了一个100以内的加减法程序,控制台状态的,供一年级的孩子上课学数学时使用。当然,我事实上是一位音乐老师。

然后度过了大约1.5年时间的矛盾时期。这段时期的唯一点点在编程上的成果,是开发了一个连坯型都算不上的一种我理想中的自然语言人工智能处理的控制台小程序。这个小程序能记住诸如“狗 是 动物。”这样的简单的“A 是 B”小命题。

我投入了大量精力希望这个程序能理解更为复杂的语言形式。我深究了C++的STL。认识透彻了basic_string与iostream的方方面面,最终决定抛弃这两种东西。我发现除了vector以外的其他对象都非常低效。那些东西比iostream好不了多少。而vector最大的问题是,begin()和end()返回的是本质是指针而类型却是迭代器的糟糕东西。且其3个成员指针名称没有标准化,也不一定是不是public。因而一直希望自己封装dynamic_buffer取而代之。

再后来我觉得console实在太要命了。我需要图形界面。于是又钻研了老掉牙的GDI。发现确实老掉牙了。C++没有标准图形库,本贾尼老先生说是“政治原因”(看来还是要争取共产主义的远大目标...)。只能使用微软提供的。当时没有找对路,研究过Qt,浪费了不少时间。后来听说有GDI+,然而很快发现那也早就是过时的东西了。又了解到有Direct2d,可惜没有任何中文版书籍资料讲Direct2d。看过MFC,因各种原因最后选择放弃。这本来就不是什么图形库,而是类库(而且真的很...不咋地,Cxxxx一大堆)。最后,我搞清楚了一点,图形领域一共两大支柱:OpenGL、DirectX。

我觉得我还需要让音响发出声音。我是搞音乐的,最初的目标是开发“律制自动机”。现有midi机制只支持12平均律,要支持其他律制除了开发新东西似乎也没有什么别的好办法。于是我只身一人投入探索之中。最初使用win32 API里的播放声音的函数。直觉告诉我这套函数延迟高。后来了解到了有Direct Sound。但我的一本书告诉我这东西过时了。书里告诉我先进的东西叫XAudio2。废了九牛二虎之力最终让XAudio2成功运作了。但我发现我还需要最起码的效果器。至今效果器方面没有什么进展。声学真的相当复杂。

然后基本上就到现在了。这个寒假我从一个很老旧的16位游戏中扣出几帧,做成动画,控制游戏角色上下左右移动,其也可以同几何体发生碰撞并被检测出来。我的速度很慢。

但是我发现我确实考虑清楚了一些事情。我发现我能讲清楚一种理想的比现有编译语言更好的未来编译语言应该具备的更为深刻的特性是什么。

1.没有过分严格固定的语法,语法是可定义的

上面话不是说语言连基本固定的底层语法都没有。只是说,至少在中间层面,语法是可以任意定义的。只要不违背基本的理念,我们能将其塑造为很多种不同形态,甚至可以模仿其他语言。而这一套东西,归根到底是通过宏(或是某种基于二进制替换的深层宏)来实现的。

2.所有符号,随处定义,到处使用

D语言号称已经达到了这一步。但D语言规则怪异,至今我没有弄清楚一些问题。我还是更喜欢C++式的全局方案。编译一个程序,应该按符号化方式进行。C++模板相关的全部内容基本都做到了。而C式函数则需要先声明再使用。新语言必须根本上做到随处定义,到处使用。

3.不是消灭宏,而是让宏更加先进

那些视宏为敌人的编程语言是走了邪路的。C++发展了C,却没有发展预处理器是十分遗憾的事情。如果允许宏本身定义另一个宏将会是十分美好的事情。这会让很多事情变得简单。

4.允许将一个函数从某处拷贝到另一处

试想,将来一个人工智能程序,根据我们的需要,自己写了一个类似C++语言版本的函数。然后它需要将这个源代码编译成二进制机器码,供自己调用。如果是C++的话,它需要先将这个函数保存为源代码文件,然后调用C++编译器,编译成独立的dll,再将之装载进来。整个过程无论是机器还是人都觉得愚蠢至极(此时我的机器“吱吱吱”表示赞同我的说法)。我希望未来语言能够直接在内存中将代码编译为二进制码直接存储在内存里。如果有需要,还可以将这段内容拷贝至其他地方。或者直接以二进制方式保存到文件中,而不是现在死板的dll里面。

5.除了字符方式以外,提供更多可能

试想一种新的代码书写工具,十分酷炫,逻辑又清晰。其实现在就有这类东西,然而问题很多。我希望实现品足够朴素,又便利好用。我所说的就是图形化编程方法与表格式编程方法。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值