逻辑之美

徐行远

<h1>我最近编制了一个电子表格《高考志愿排序表》,其中含有自动排序功能,这主要是考虑到有些考生和家长在填报高考志愿时,摇摆不定,最多需要3-4版的志愿表,才能最终确定。这个排序表可根据需要,快速地对所填大学志愿进行排序。</h1><h1><br></h1><h1>其实,编制这个表格,大约是一个月前就开始启动,后来陆陆续续完成了程序框架及VBA代码输入,经过多次运行调试才最终定型。在这个过程中,发现只要逻辑正确,代码正确,结果就会符合我的预期。</h1><h1><br></h1><h1>那种一步一步按照预先设计并最终实现各种功能,其严谨的因果关系、流畅和令人舒适的过程,让我突然想用“美”这个词来描述它。</h1><h1><br></h1><h1>不过,文章写到这里,发现自己对这篇文章缺乏一个完整的逻辑框架(或事先规划),导致写完一段后,下一段该写什么就没有思路了。</h1><h1><br></h1><h1>于是,我联想到更早时期,刚开始自学编程,当编制某些较大程序时,因事先没有采取科学的做事方法,导致我编程的工作效率不高,有时候甚至会停滞不前,或花费很多时间也进展不大。再类推一下,不仅仅是编程序,在很多事情上,都可能有这样的问题。</h1><h1><br></h1><h1>现在想来,这实际上有两个原因,一是前面提到的事先规划问题,二是自己的技能水平问题。</h1><h1><br></h1><h1>后一个问题可以通过不断学习和提高技能来解决,而前一个属于方法和策略范畴,是做事习惯是否科学的问题。如果通过专业训练(如大学软件专业或类似专门培训),或个人刻意追求,最终也能形成良好习惯。</h1><h1><br></h1><h1>如果一个人只是习惯于埋头苦干,不抬头看路,或根本就没有事先规划路线,可想而知,这个人做事的效率一定不会很高。</h1><h1><br></h1><h1>好了,拉回正题,今天主要说说“<span style="color:rgb(237, 35, 8);">逻辑之美</span>”。文章的题目,就是我想表达的一个观点,同时也想让大家来感受一下逻辑的美。</h1><h1><br></h1><h1>但真正开始写文章后,我的思路却漂浮不定,脑海里冒出各种名词,该如何组织语言来正确表达自己的思想,并且能让别人读得下去,我就越发感受到一个词的重要,这个词就是“逻辑性”。</h1><h1><br></h1><h1>如果我们做事前,能先有一个完美规划,包括各种预案和措施,当事情开展起来后,就会显得很有条理(逻辑性)。反之,就会中途茫然或者不知所措,在时间流逝的过程中,想要做的事情没有进展或进展缓慢。</h1><h1><br></h1><h1>在与人打交道时,我们有时会遇到思路清晰、说话有条理、语言或文字表达逻辑性很强的人。反之,有时也会遇到说话没有条理、前言不搭后语的人。前者,自然会得到大家的欣赏和认可;后者,一般都不会受人喜欢。</h1><h1><br></h1><h1>听逻辑性强的人讲话,我们会感觉非常享受,体会到一种自然的美感。</h1><h1><br></h1><h1>在编制程序软件时,看到运行结果就是自己所预期的,同样是一种享受,可归结为一种逻辑的美感。</h1><h1><br></h1><h1>当运行结果没能实现预期,我会发现,计算机实际上非常严格地执行了我所编制的代码指令,但因为这些代码是我想当然以为的一种逻辑关系(或称因果关系),但实际运行起来却证明了我的想法是错误的。这时就需要调整思路,重新编制代码,直到运行结果达到我的预期。这个过程,让我感受到程序指令与输出结果之间一种严格的因果关系,这也是一种逻辑的美感。</h1><h1><br></h1><h1>我们来看一段具体的内容(关于高考志愿排序表的视频)。</h1> <h1>在那段视频中,我们看到,表格成功实现了自动排序功能,但实际编程时,我面临以下几个问题需要解决:</h1><h1><br></h1><h1>1) 当左边表1没有内容时,右边表2按序码排序就非常简单,直接按L列所填数字的大小排序,同时将表2的部分内容复制到表1中;</h1> <h1>2) 但是,当左边表1的橙色区域已经填有内容时,如果直接沿用上面(第1)节)的程序功能,则会导致已经填好的专业代码、专业名称、招生计划数等内容与院校名称发生错配,那前期的填表工作量将会报废,反而起不到用本表格节省时间的设计初衷。</h1><p class="ql-block"><br></p><h1>因此,在程序中设计了“数据搬家”功能,先判断是否已经填了数据,然后把已有数据复制出来放到指定地方,再想办法找到这些数据,回填到相应正确位置。</h1> <h1>3) 此外,为了演示程序功能,我设置了一个“清屏”按钮,这样可直接清除掉屏幕上已经填好的内容,但也可以点击一下“序码”那个位置,在一秒内就再复制出来。若表1已经填写了专业代码等内容,清屏后就无法再复制,于是清屏前就要判断是否已经填了专业内容。如此简单的一个清屏功能,也要考虑到好几种情况,视情况不同而执行不同的语句。</h1><h1><br></h1><h1>所以,编制程序时,最常用的就是逻辑判断语句,要根据已有条件来决定下一步要执行的动作。</h1> <h1>关于清屏的功能,请看以下视频。</h1> <h1>好吧,通过以上演示视频和文字内容,我说自己感受到了一种逻辑的美。但是,我还是觉得没能真正地把那种“逻辑之美”的韵味,充分表达出来。</h1><h1><br></h1><h1><span style="color:inherit;">也许,这种感觉确实很难表达,就是那种“只可意会,不可言传”的味道。</span></h1><h1><br></h1><h1>这让我想起十几年前的2006年,在四川阿坝州5A风景区九寨沟旅游,我突然发现一个很特别的现象,以前在杂志上看到一些不太著名的一些风景区的彩色照片(比如国家地理杂志),照片上那丰富的色彩、起伏的山峦、神秘的光线,美轮美奂,让人无比向往。而每当真正走到那些风景区时,却发现真正的实景,远没有照片那么漂亮。</h1><h1>但是,到了九寨沟,这个定律却被打破了,我发现,我所面对的九寨沟的实地风景,比我见过的任何照片都要漂亮,甚至我也亲自试过,无论用什么方式,也拍不出比实景更漂亮的照片。九寨沟的美,就是一种无法用照片带走的美,是一种难以用语言准确表达的美。这只能怪我自己表达能力有限。</h1><h1><br></h1><h1>文章写到这里,意犹未尽。于是再插入一个视频,这个视频表现的是,以前某公司的一个管理部门中有个十来人的小组,他们每天忙碌的其中一件事就是编制表格,然后打印成册,一个项目的表格平均需要大约20个小时才能完成,而一年中要做300多个这样的项目。由于项目太多,他们几乎每天都要加班,才能完成这些工作。</h1><p class="ql-block"><br></p><p class="ql-block"><span style="font-size:20px; color:inherit;">当我知道后,就编制了一个小程序送给他们,他们用起来后,简直对我膜拜有加,直呼太神奇了!!!因为以前20个小时工作量,现在用这个小程序,只需要一秒钟就可以完成,你没看错,就是一秒钟,提高了工作效率七万多倍。</span></p> <h1>现在,大家是否真能体会到我说的“逻辑之美”?</h1><div><br></div><div><br></div>(徐行远 2022.5.11 四川德阳)<br>