hsxfjames Stephen Kleene是什么领域的权威?数学?逻辑学?这个我其实不清楚,我只是习惯于每考虑一个东西就追溯它的历史,尤其是应用很广、经过多次改进的东西,因为事物发展常常受初始条件影响很大。
丘奇、克莱恩、图灵这些人在世的时候或学术活动主要阶段编程没什么地位,是比较低微的工作,有一个美国电影讲黑人程序员(记得有一位原型是Cobol发明者Grace Hopper),这种历史的遗憾导致有些所谓“权威”/“开创者”在理论研究之后没有进入实践,而别人按照自己对于他们理论的理解去实践可能已经发生偏移了。
除他们之外,据我所在香农也没有搞过计算机编程,他硕士论文是现代计算机理论奠基之一然而自从提出信息论之后,漫长的后半生之中只在50年代做过体现编程思想的电路设计。也许他们不屑于做吧。
正则表达式有没有过时我不知道,但它的主要问题在我看来是缺少递归性和同像型(homoiconicity),因此缺少S表达式一样的表现力,这最终导致了功能限制。S表达式的抽象语法非常简单,就两条:原子(atom)是S表达式,对子(pair, (x . y) )也是S表达式。
用BNF表达的正则表达式(http://users.pja.edu.pl/~jms/qnx/help/watcom/wd/regexp.html)一下子说出了问题所在:
atom
(reg-exp) or range or @ or ^ or $ or \char or char
作为基本元素的atom其实不是基本元素,而atom竟然有这么多种构成可能,太复杂了。
我觉得可以通过把正则表达式S表达式化,再加入个别与编辑相关的功能子,探索一个加强版的正则表达式。