科学计算用什么编程语言?从编程的角度看

“道德经”说,“天地不仁,以万物为刍狗。”

自然科学,以及它的载体语言,都是不以人的情感而转移的。

所以,什么样的语言更适合自然科学?

从编程的角度来看,语言也是对科技人文的一种编程

既然是编程,那么目的就是以最简单的方式,编码最多的信息

只不过人类语言与编程语言有一个区别:电脑的编译器都是一样的,而人脑的编译器是不一样的

所以,编程语言没有歧义的,但人类语言是有歧义的。

1,自然科学的基础是第一外语,

自然科学,不受地域文化的影响,在全宇宙都是通用的,自然也可以在全球范围内交流。

如果不能及时在更大的范围内交流,那么自然科学就肯定会落后。

古埃及的衰亡、玛雅文明的衰亡,都是因为过于偏僻,很难与其他文明交流而导致的。

要在全球范围内交流自然科学,使用的大多是第一外语

大多数科技文献正好是母语的情况,从概率的角度来算,非常少

虽然英语的科技文献非常多,但我的scf编译器框架的文章全是中文的[捂脸]

我没写英文文章,估计也没人把我的文章翻译成英文。

所以,自然科学的基础是第一外语。

第一外语与母语相比,它的学习时间更短

母语是什么?

母亲的语言。

还不会说话的时候,老妈教的什么语言,母语就是什么语言。

所以,第一外语的学习时间是远不如母语的。

如果是第二外语,那学习时间会更短

所以,自然科学的载体语言,必须简单易学!

法语,据说学起来先难后易,所以它不适合写科技论文第一关都过不了,谁还有兴趣等它后易的时候?

就算是C语言,它也得先hello world后指针

不可能说先指针,然后说等指针学会了,剩下的1天就看会了:要是这样,那换本先hello world的书显然更容易。

总之,简单易学,入门曲线要平滑,是必要条件。

这是由第一外语的学习时间所决定的。

所以,自然科学的载体语言,只能是拼音文字

不可能在给国际期刊写论文之前先要学上几千个象形文字,大多没这个时间,除非是母语。

母语,可以看做是遗传自母亲的先天语言,后天腾不出那么多时间去学。

拼音文字简单,认识几十个字母,就可以凑合着写一篇文章[捂脸]

2,多少个字母最合适?

50-100之间,这是从查找效率来考虑的。

32 = 2的5次方

64 = 2的6次方

128 = 2的7次方

4096 = 2的12次方

可以看出,字母个数从64增加到4096,查找的难度增加到了2倍

如果人脑的底层机制跟电脑一样使用二分查找的话,3000个汉字的难度是26个英文字母的2倍。

这对第一外语的人影响很明显,外国人学中文,绝对比我们学法语难得多[捂脸]

字母数如果太少的话,则单个字母的信息量不够

我说过词法分析的数学原理,就是利用空格降低样本空间的个数,提高信息量。

单个字母的信息量,就是字母的总数N:它的作用是把不确定度从 1/N 提高到1。

如果字母的个数太少了,那么词的长度就会变大。

计算机使用二进制,相当于只有0和1两个字母,所以机器指令是非常长的!

如果把机器指令的二进制码写出来,估计没几个人看得懂,程序员实际使用的是16进制

在只有1个字母的情况下,16进制是2进制的8倍效率

如果2个字母,16进制就是2进制的8^2 = 64倍效率

从数学上看,这就是字母个数对语言的影响

当然字母个数太多了也不行,因为查找效率会降低。

计算机的出现,更是对字母个数添加了额外的限制:键盘的大小有限,太多了放不开。

3,打字和写字有什么不同?

打字,相当于把写字的过程记住了、简化了

写字,是手在纸上的二维运动过程,它消耗的时间更多。

打字,相当于把这个过程提前转化成了一维的,点一个按键就行,消耗的时间更少

小孩子算 5 8 = 13很慢,因为Ta是一个个的数数:

sum = 0;

for (i = 0; i < 5; i ) sum ;

for (i = 0; i < 8; i ) sum ;

printf("5 8 = %d\n", sum);

以上是小孩子算数的C代码[呲牙]

成年人算5 8 = 13很快,因为他早就记住了,只需要查表就行:

printf("5 8 = %d\n", sum[5][8] );

这是成年人算数的C代码!

个位数的加法,成年人的时间复杂度O(1),小孩子的是O(N1 N2).

与之类似,打字的时间复杂度是O(1),写字的时间复杂度是O(N),N是跟字形有关的笔画长度。

总的来说,字母的个数应该在50-100之间,是这几个因素决定的:

1)查找的效率,

2)字母的信息量,

3)打字的效率,

4)键盘的大小。

英语俄语字母个数都是偏少的,所以它们的单词都很长

4,缩写符号只能在右上角,不能在字母上方,

右上角,字母和缩写符号还是一维排列

正上方,字母和缩写符号就是二维排列了,在键盘上怎么打出来?

所以,牛顿的导数符号不合适了莱布尼茨的导数符号更合适

科学计算用什么编程语言?从编程的角度看(1)

像上图这种撇号加在字母上方的,是把它当作单独的字母,还是在键盘上另加一个类似shift的按键

字母要尽量一笔写出来,同时空白区域要尽量大

一笔写出来,书写速度更快。

空白区域越大,对人眼的干扰越小。

5,名词动词需要有点词缀变化,

有点词缀变化,但不能多:超过5种就没有意义了,因为人眼难以第一时间区分。

主调函数,caller.

被调函数,callee.

英文虽然没有格的概念,但这两个词实际上就是主格宾格

计算机的文档里,末尾的这点词缀区别,是程序员避免歧义的关键。

所以说,自然科学的载体语言,需要有一点点的曲折度,不能是纯分析语

编程语言可以是纯分析语,是因为它的编译器是通用的。

但是人脑的编译器,每个人都有点区别[捂脸]

纯分析语,相当于把语义全放在了语法层面,而不是词法层面。

这会放大作者和读者的“编译器差异”,产生歧义。

因为词法分析的分隔符是明确的,就是空格、逗号、句号,etc.

语法分析就不一样了:就算是编程语言的语法,也是存在大量的复杂递归的。

实际的人类语言,比这更复杂。

所以,名词和动词在词法层面保留一点词缀变化,可以极大地降低歧义

词缀变化的数量,不能超过5种。

我觉得,名词有2种词缀表示主格、宾格,动词有5种词缀表示时态,在大多数的科技资料里就够用了。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页