发布网友 发布时间:2022-05-15 10:38
共1个回答
热心网友 时间:2023-11-24 18:54
你这个问题是我学习计算机这二十几年里第一次遇到。追答是的,其实计算机根本不会在意这些,计算机使用的是形式语言。一堆二进制而已。
要是程序都是这么写:
0xEB 0xFF 0xFF 0xFF 0xFA
你能知道什么意思嘛?
如果写成:jmp $是不是好看一些?jmp叫做助记符,实际上也就是EB、EA之类。
如果写成C语言就是for(;;);或者while(1);这样不是更好看了吗?
其实高级语言的优势在于方便人看懂,这些hprevinstance、hPrevInstance对于计算机是一样的,但是良好的命名规则可以帮助人们区别这些符号。一个程序如果存在上百万个符号,甚至更多。(这可能超过全部英文单词的数量)如果都是不区分大小写的这种书写方法,再没有命名空间分割,真的是一场噩梦。
当标识符数量很大的时候,写法不同产生的效果就越明显。当然我原来遇到过奇人一个,人家一开始写程序标识符就是越短越好。(本人生平最佩服的人之一,遇上他以后,我觉得我还是不写程序的好,自己写一个月,不见得超过他写一天)
int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a0,a1,a2……
几百个变量最长不超过2个字符,一般人能记住其中10个变量的作用已经是奇迹,但是这个人绝对能记住50个以上。可是后来,我和他说,大程序要很多人写,你这么写,除了你,怕是永远不会有人看懂了,那不也是白费,到头来大家只能重新来过。
其实,严谨仅仅是相对自然语言来说的,你要是这么替换没问题,但是你只要拼错一个字母,那是绝对不行的。比如使用hPrevInstance的时候误做hPrevInstanc,那肯定不行,当然你一错到底,使用hPrevInstanc这个完全替代hPrevInstance那肯定没问题,到了计算机里面不过是1号变量、2号变量……也就是一个编号,没见过的(非关键字)都给分配一个编号,仅此而已。
本人时间有限,先写这么多吧。本人主要是觉得你可以想出这样的问题确实不容易,这么多年,这么多人很少有人提出这样的问题。可是我觉得,其实程序不能读确实是一个极大的缺陷,那么复杂的化学结构式、数学公式,都可以读出来,但是计算机程序却读不出来。不能不说是一个缺陷。