今天终于有点空继续写powershell工具。最初接触powershell的时候,我以为就是Windows模仿Unix的一个东西。实际上powershell里目前感受到最大的不同是数据类型比较规范,shell里面变量都可以是字符串,因此比较低层。powershell比较高层一些,也意味着要多理解一些它的内部逻辑才行。
下午花了不少时间把上次写到一半的东西拾起来。上次终于写出了正则表达式表示的分隔符。因为分隔符有可能用到在数据里,所以我希望能有个escape character。在股沟里键入”powershell regular expression”,不能给我官方手册。这也是MSDN讨厌的地方。(实际上,我应该用PS自己的help,不过还不会用。)千转百回终于找到了上次参考的文档,赶紧存下来。看了这个文档,终于重新弄明白了自己上次写的代码。发现了一个漏洞——补上。漏洞本身的逻辑也很简单。但是容易漏掉。所以这些都不靠聪明,而是靠强迫症。
实际上,数据用到分隔符的可能性是非常非常小的。不过我还是纵容了一下自己的强迫症。
学一个新的东西真是不容易。我一直觉得,只要给我官方文档,和一个可以尝试的环境,那么什么都能学会。MSDN是我见过的最难懂的官方文档了。
写代码的能力,除了一般的计算机sense,其它的我觉得有这么几点:
1)要会尝试、很快地尝试。尝试是迭代知识的必要手段。特别是对我这样的强迫症,如果不尝试,我总是要怀疑之前的想法中有没有靠不住的地方。要很快地尝试,这样思路就不会打断
2)要善于meta化,来理解程序语言的设计思想,或者来理解机器的执行。
1)和2)要很快地交替,meta化了之后,往往会萌生新的问题、怀疑、理论,这就要继续尝试、根据尝试结果来修正或者reinforce理解。
另外,必不可缺的是股沟。有股沟、维基,有官方文档、可以尝试的环境。好了,我可以撬动地球。
当然,我一直觉得我很不够聪明的。前一阵读到网上关注的一个人的说法:
好像发现一个通用的评估标准:事情复杂到什么程度你开始自我欺骗,就决定了你是什么层次的人。心理比智商还重要。有人知道我在说什么鬼话吗?
这个人有歧视女性的倾向(但人是开明的,我相信如果他遇到真正智慧的女人他会识别的),然而除此之外他的很多观点我很同意,也很独到。
强迫症永远不允许我自我欺骗。但是有时候我有逃避困难的倾向。
用新学的语言写小程序,一开始总觉得困难重重。跟着一个好的tutorial来学是客服最初困难的好方法。但是学一点点就要自己尝试。即使试会了教程里面的例子,实际要用的时候,还是有很多困难:设计的时候:这几个并到一个function里可以吗?用的时候会不会有问题?实施的时候又要被各种实际抛错影响。好在到达一定程度之后,一切会变得简单、效率百倍。以至于舍不得停下来。今天太晚了就回家了,但是到家后我还在写日记想这些。。。