就Sql解析絮叨几句

04~05年的时候,我当时还在大连华信做J2EE项目,其中写SQL是重头戏,当时客户要求SQL每个字段、表和排序都要用注释标示清楚,并提供了一个SqlFormmatter作为辅助工具。

刚接触这款软件的时候立刻被惊艳了,一行长sql瞬间被解析成多行且排列整齐的形式,省却多少手工排列的工夫!当时感觉心里一震,这么牛逼的软件是怎么写出来的?

当时项目组有几个老人,一番问询之后有个老程序员张东凯建议我去看YACC/LEX,我跑到星海的学玲书店一看还真有,但买回来一看感觉是天书,不仅晦涩难懂,还需要我把C重新捡起来?

后来阅读深入,逐渐了解到编译原理的龙书是打开大门的金钥匙,于是在当当上果断下单,到手一看又傻眼了,越到后头越看不懂。

当时也是初生牛犊不怕虎,管它什么编译原理,在SqlToolbox里拿起栈+文本处理就开始做了,但越做感觉越难,各种情况下if都写不过来,只能应付有限层次的状况,还有各种问题。

后来淘到一本《Java编程艺术》(Herbert Schildt,James Holmes著,清华出版社出版),里面的第二章,第三章正好是我需要的内容,里面的程序虽然难懂,但比去啃龙书强太多了。

当时是06年左右,犹如黑幕拉开了一角,透出一丝光亮,如果我当时继续走下去,估计SqlResolver要早十年问世,但这一角很快又被关上了。

关上的最大原因是当时以为,学习所谓时兴名词如Struts、Spring、Hibeinate、Prototype、Extjs、Djago之类的,在求职时便利得多,当然现在看这些名词除了Spring都快入土了;第二原因是既然市面上同质软件已经存在了,那我还要写一份干什么,何况写之前还要啃那么难啃的大部头书籍?

人就是这样,如果事情难做,感到畏难会为自己找出一万个理由,然后用这些理由充当自己的保护伞,掩盖自己怠惰懒散不思进取,然后找一条貌似容易的路心安理得地走下去。

一晃十年过去了,17年末,我决定离开温水煮青蛙的“养老院”,于是又面临写简历找工作的问题,当时一次面试中,面试官让展示自己的作品,我惭愧的发现,自己能拿得出手的东西,居然还是2007年的SqlToolbox!当然还有一堆公司项目可以吹,但把那些名词拿掉,里面的模板式的GUI代码、千篇一律的CRUD代码、琐碎的Mapping代码、无聊的Transform代码、传递的VO真的值得一吹吗?各位看官可以自行拷问下自己内心。

当时很是气恼,蹉跎岁月后发现自己还是如此浅陋,当时在博客贴了不少浅滩图片自省,同时也想怎么弄出作品显得自己不俗。

首先想到的就是游戏,Canvas当时正好出现,于是19年3到4月份做出了飞机大战和炸弹人两个作品,信心恢复了不少。

之后就想到了SQL优化和文本分析两个方向,SQL优化做了一阵后发现真需要现实环境,自己做数据能模拟的有限,但文本分析不需要,一台配置一般的机器如我的T440p装上编译器就能练,于是又把编译捡了起来,这回我是想明白了,编译这门技术不管有多少人会,是尖端还是象牙塔,那些都与我无关,我真搞明白了就是个人历史上零的突破,是有历史意义的一刻,对于我个人是非同凡响的。

做学问就是这样,想到当前路上有多少人走过多少人成功过失败过肯定泄气,走不下去了,想到不管有多少人走过,我自己真正走过一遍才是真实可靠的,才是我自己的亲身经历,这才能有前进的动力。

这个体会可以推广开来,别人的框架、软件、书籍其实与我无关,把它们拿掉后,剩下的自己的东西才是我的本事,即我自己能弄多少东西出来才是真的。

19年在论坛上看到这么一句话:“对于新手,一开始不应该学习过多理论,不应该过早地陷入某项技术、某个定理的细枝末节中,而是应该实现一个简单但完整的编译器,尽快尽早地把编译器的整个流程过一遍....”后来在郑明的编译书里也看到了类似的话语。

在IT界,除非简单的东西能看书,如不能动手便是一知半解,于是我终于抛开龙虎鲸书,走在了开始编码的正道上。从算术表达式到json、xml、Qbasic,我发现慢慢写出来并不是想象中艰难,YACC/LEX也不是必要的,从词法分析到语法分析,代码难度是有,但都可以自己一点点写出来,认知还深刻得多。理解了算术表达式的解析就可以动手了,做起来就好,未必有想象中难,于是渐渐地便有了SqlResolver1.06版。

回望04年,十六七年过去了,当时要是有人能和我说明这个道理,而我又能笃定地走下去,只怕早就自我突破了...这条弯路确实是太弯了,有如上大桥的三百六十度匝道,转了一大圈两大圈又回到原来的方向上,好在如今又回到正道来了。

我曾经以为架构师就是程序员的顶点,也因缺乏实操环境而苦恼万分,但V8引擎作者的事例证明,程序设计的高峰不止一处,引擎之外还有工具、软件、开发包、类库等,处处彰显才华,体现价值。只要程序程序能真正解决问题,就大有用武之地,一人一机一样大有可为。不要用地域薪水职位来给自己定位,作品才是真正衡量你水平的标尺,只要潜心研究,总有一天好工作会来找你。另外研究问题时勿要带半分功利心,要想着成自然长进,不成亦长进,研究本身即乐趣无穷。

-END-

原文地址:https://www.cnblogs.com/heyang78/p/15179534.html