Python-动态语法尝试-分享

来源:互联网 发布:新疆网络为什么这么差 编辑:程序博客网 时间:2024/05/17 04:07
 
最近在做一个Python的项目,算作是Python的扩展吧,做了一个雏形,不过因为讨论后大家觉得不适合当作毕设,就拿出来给大家共享加娱乐用用吧。
       项目灵感来自多个方面,首先老板说研究一下Python,要做个什么东西,其中提到了Python的缩进不喜欢之类的云云,其次QQ的某个群上发现好多人在用什么易语言写外挂,传说中的中文编程,虽然没有用过没有看过,也只能不发表什么意见了,再其次,发觉这个世界上怎么会有这么多的语言呢,写了几年程序了,在好多个语言之间徘徊,用了好几个语言(其实也不多,哈哈),已经觉得晕头转向了,潜意识中非常憎恨那些语言设计者,你说好好的相同的意思,非得用各种表达方式,弄得跟各国语言似的(英语学习已经很头晕了,你说是不)。于是乎,就想,能不能综合一下之类的,弄个语言,我什么语法都支持,至于用什么语法,无非是你语法习惯问题。于是乎,就开始研究阿,开始了这个项目。
       项目倒是没有做多久,但提升了一下项目的思想,哈哈,感觉其实挺简单的东西,要是硬想,总能够往高层次提升的。于是给项目想出了一个华丽的名字:动态语法框架。什么是动态语法框架呢,就是参照动态类型啊,动态什么什么的之类的,我的语法是可变的,你指定什么语法我就用这个语法来编译你的程序,反正现在基本都用中间代码表示,我只用编译到中间代码即可。于是乎,在那里遐想联翩,你说,以后这个编程的世界,会不会出现那么一个奇特的情况,语言开发变成了2个部分,一部分在那里讨论这个语法怎么怎么的,这个语法如何如何好,另一部分则讨论这个的底层怎么怎么的,那个底层效率高之类的问题。哈哈,人难免会遐想,又不犯罪,又不害人,对吧。
       就这么继续做啊做啊,每天稍微弄一下,也不知道都把时间花在哪里了,进度到不是很快,现在想起来,幸亏没做那么多,不然看着自己辛勤的结晶就哗哗的流鼻涕了(天气太冷也是原因。哈哈)。中间略过一个月左右的时间吧,就到了雏形出来的时候,最后,终于拿出东西来了。自己看看还是不错的,自我感觉良好,谁叫是自己做得呢,自己做得生饭都有滋味,对吧。下面标注部分形容一下做的东西吧,没兴趣的人可以略过@.@
       ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
哈哈,如果你看到这行,说明你看下来了,随便说一下上面那行,是本人习惯的C语言标注,哈哈,是不是不懂了,那就不要看下去了吧。
这个项目是用Python做得,谁叫它开源,开源就是好,自己可以改,改阿改阿,就改成自己的东西了。说点正题吧,这个项目是Python的扩展,就是相当于修改了Python的源代码而产生的新的语言之类的东东。现在对语言的概念开始模糊了,考虑问题考虑多了,都不知道做出来的这个东西是不是要称之为新的语言。我做得工作就是提取了Python的语法部分,把它放在外面,一共两个文件,一个是BNF写的语法描述,Python源代码里有的,但是并不是它的框架里需要的文件,我把它弄成需要解析的文件了。第二个相当于编译器,一个dll文件。有了这两个文件,就可以指定语法了。然后我又做了一份类似于C的语法组件,就是刚刚说到那两个文件,让Python语法不处理缩进和换行,而以;和{}作为替换,就是差不多用C的形式写的。这个组件和原来Python自带的可以并存,只需要在源代码开始制定使用哪个即可。至于更加详细的,就不说了,不然又要啦啦啦上千字,有点罗嗦。哈哈。
ok,具体部分就介绍到这里啦,下面换回原来频道。
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
然后就开始了下坡路,虽然刚刚开始杜撰了好些用途,好些价值,但是好像并不被大众所认可。我说,现在的程序设计语言观改了,再也不会出来一个语言就是一个新样子,到时候只用自己拿着自己的语法文件到处都可以编程序了。我还说,便利学习新语言啊,提倡个性化阿,提高效率阿,等等等等。一堆能想到的好处。后来不经意之间发现,原来.net早已经提出了这种概念,所有的语言都变成中间代码,就是所谓的通用运行时CLR。不过,我又想,我比它用起来便利多了,个性多了,又想了好一堆,甚至觉得自己怎么会跟。net框架设计师想到一块儿去了。哈哈。
怎奈重大问题还是有的,直接命中要害,如果大家都用自己的语法,编程的世界就无法共享,现在的开源都开不了了,你看不懂别人的代码呀,就像你听不懂别人的话。后来想了很多情况,想了很多办法,也觉得不太可能发生,但是毕竟还是一个大问题,至少用一个语言的大家交流是没有问题的。无所谓,反正问题都提出来大家自己觉得罗。还有一个问题就是,如果要重新写一个新语法,就要写编译器这么复杂。的确的说,制定复杂的新语法还是比较复杂的,唉,复杂的事情做惯了。无所谓,这也是个问题吧。
之后就是balabala,提案被否决了。一次尝试吧,也算失败的尝试。提出来共享一下,或许有人就想到了更好的办法,反正现在我是没有时间做这个东西了。
权权把下面的场景当作科幻小说的内容吧:我们程序员某年某月某日在聊天的时候说,哇塞,你的语法够特别,给我份描述,我也以后这样写。(-_-!怎么像是动感地带的广告,我的地盘我做主。哈哈。)