编程转换

先说我的结论:有类似的东西,而且非常之多,其中不乏有WolframAlpha这样的成功者;但总体上来讲,普适度不高,受众不广泛使得它连最简单的图形化编程都打不过。接下来从几个方面阐述一下观点:标准化、自然语言的复杂性、现状。几千年来,人类在追求标准化的道路上越走越远。从国际单位制到食品安全规范,各种各样的标准充斥着生活的方方面面。为什么人们对标准化如此执着?试想一下,如果你是考古学家,当你找到一块刻着奇怪符号的残骸的时候,你几乎不可能立刻知道这些符号表示什么,甚至不能确定这些符号究竟是不是文字;但是如果你找到一个陶壶,你却可以马上想到这个年代的人已经知道制作盛水的陶器。为什么会有这样的区别?关键就在于标准化程度的不同,十万年前的文字和现在用的完全不是一套标准,需要语言学家花极大的努力才可以破译,而水壶这种东西在这十万年间几乎没有什实质上的么变化,相当于一套延续下来的标准,所以可以很快被现在的人接受并理解。那么对于科学,究竟要不要标准化呢?当然要。如果科学没有标准化,每个学者对于同样的东西都有自己的一套理论,不用说一万年,可能几百年以后的人们都难以理解现在的科学,这对科学的延续和传播是极为不利的。举个例子,玛雅文明发展出了辉煌的科学,可是由于玛雅文明和外界接触甚少,没有实现标准的统一,导致现在的考古学家很难确切地知道他们究竟发展出了怎样的科学;换句话说,他们的科学就这样消失了,没有延续下来。标准化有利于科学的传播与延续。相反,自然语言则更容易产生变化,如果坚持完全用自然语言描述科学,恐怕会对科学的延续产生不小的影响,这种风险太大,以至于很少有人想要反对标准化的科学。编程语言就是对线性思维的一种标准化。我们都经历过这样的情景:两个人口干舌燥地辩论了半天,最后发现原来两个人的想法是一样的,只不过都没搞懂对方的意思罢了。这是因为自然语言相对自由,范式更少,致使对于过一个观点每个人的表达可能完全不同。与人类当面交流尚且如此,要让计算机甚至是其他看到你的代码的人理解用自然语言写成的编程语言更是难上加难。这里就带来了第一个阻力:这件事情极其困难。接下来说自然语言,其实自然语言也是一种标准化,只不过标准化程度低一些。可是,这种标准化的学习成本极高,一个人类婴儿要花好几年才能勉强和成年人沟通,而要流畅地表达自己的思想要花的时间则更久。所以说对于一部分儿童来说,自然语言要比编程语言困难得多,题主提到的这种自然语言的优势不具有普适性。对于孩子来讲,更简单的编程方式反而是图形化编程。这里就出现了第二个阻力:开发这种东西普适性不强,成本高,效果却不如图形化编程。题主提到的Matlab其实也是一种编程语言,它有一个特殊的分类,叫做函数式编程,那个可以帮你绘制函数图像的功能也是一个预先封装好的函数,这样的封装在其他语言里也不少见。这种便捷从本质上讲还是这种编程语言的函数库极其丰富带来的优势,并不是某种编程方式的革新,相反,Matlab仍是一种标准化程度极高的编程语言。这也不是说这种东西就没有人做,自然语言识别是近几年机器学习领域的重要研究方向,其中对于自然语言中的逻辑关系的分析则更是重中之重,只要能够很好的解决这个问题,比以往更加好用的自然语言转程序语言工具就能被做出来。即便是现在,也有一些相对优秀的工具,比如WolframAlpha,它最擅长把自然语言公式化,不过只支持英语,题主可以去了解一下。总而言之,使用标准化程度相对高的多的编程语言并不是对科学家生命的浪费。相反,这对科学家称过的传播和延续有着极大的帮助,更重要的是,严谨的逻辑思维是成为科学研究者的必备基础,如果一味追求省事,对于科学事业未见的是好事。看到题主是数学专业的,在非计算机科学领域,Python正在成为一颗冉冉升起的新星,它的简明和易用性使得它能更轻易地被非计算机专业人员学习使用,如果题主愿意学习python,你会发现它没比Matlab复杂到哪里去,有的时候比自然语言还要简明。先说这么多,说的有点乱,见谅。
■网友


推荐阅读