![]() |
回武汉三周年,回顾这几年的日子,有些感慨,写点东西吧 |
不都是if-else那么回事吗,社友用不了几个小时,就无缝切换了吧
因为只要深入干过工程,就知道没有一种方案,可以解决一切场景的问题。
常常会遇到两种场景,采用的两种方案,思路甚至是完全对立,但是最后效果却都挺成功。方案对调,就都失败。
比如性能和开发效率的取舍,就是这种鱼和熊掌不可兼得的场景。
语言越低级,对性能调优的余地,就越大,如 C、汇编。但是因为低级,所以开发起来,特别耗人力。
语言越高级,对性能调优的余地,就越小,比如 Java、python。但是因为高级,所以开发起来,相对特别省人力。
其实软件开发里面,到处都充满类似这种对立的矛盾。导致一种问题的解决方案,常常百花齐放。
比如,分布式里,CAP 三者不可兼得;数据库里,TPS 和 QPS 不可兼得;数据仓库里,OLAP 和 OLTP 也是对立;计算机算法里,时间和空间,也是对立
你让写java的去写一下php,java看一个小时php的文档就可以干活了(不包括安装运行环境)
但是让java去看下go,几个小时肯定搞不定,至少我这个老java,当初转写go的时候,花了至少一周时间,才适应go的写法。尤其是在go语言那个半吊子泛型和异常机制(panic,err)上浪费了不少时间(我一直怀疑是不是自己理解错了,从来没怀疑是go官方就没花心思设计这两个无比重要的功能),导致我死磕了好一阵子。
接下来就是把go在github上的awsome库看了一遍,然后就给公司搓了一个框架,前后共花了一个半月,其中熟悉语言的语法花了一周,剩下时间都是在熟悉各种库的使用。
总的来说就是,对于做项目来说,语言的转换,并不是大头成本;真正费力费时的是去熟悉这个语言下的生态,工具链。
过早客微信公众号:guozaoke • 过早客新浪微博:@过早客 • 广告投放合作微信:fullygroup50 鄂ICP备2021016276号-2 • 鄂公网安备42018502001446号