我是70后,混迹于杭城IT多年。40余岁还喜欢写代码,2018年开始创业,指望还能写出像样的作品。回顾那些年学过的计算机编程语言,点点滴滴是老生常谈,也是个人一些体会。
短小锋利的C
大学期间非科班出身的我曾想学编程,拿起一本Basic的书,看到dim ……,就卡在那里学不下去了。参加工作后一位同时进厂的兄弟塞给我一本谭浩强的《C语言程序设计》,让我跟他一起学。 居然一发不可收拾地看完了整本书,后来还去参加了软件程序员考试..... 感谢C语言把我领进了编程的大门。
由于我底子薄,没有太多实践的机会,对C的理解大都停留在考试用的算法题目上了。现在想想C语句对于理解计算机体系结构是很有帮助的,可惜C语言这把锋利的短刀我只会用它来削支铅笔。
粗犷的C++
C语言还没学好,就开始学C++,其实是用Visual C++写个MFC Hello World。至今我还记得当第一个窗体程序从我手中编译、运行起来时激动的心情。真正对C++和面向对象有所理解是在参加第一份全职程序员工作之后。
当时公司在做一个大项目,有好几位来自浙大计算机系的牛人同事。有一次我和同事各领到了重要功能的开发,两个多月后都完成了,开始准备对接。博士同事说他要回学校了,让我完成后面的对接和调试。我花了一个星期时间看他写的代码,最后在他写的代码里加了一行,把两个重要功能对接起来。那真是一种酣畅淋漓的感觉,体会到了代码体系结构的魅力。不过从团队协作的角度来说,应该是先设计接口再开发^_^
C++语言用起来是虎虎生风的感觉,支持几种范式。只用基本的会觉得有点low,用复杂了又怕hold不住,主要还是对语言没有掌握到得心应手。
精致的C#
我是在图书馆里第一次看C#的书,几个小时看下来明白了C#的基本语法。好多贴心的设计真的可以用精致而又自然来形容,后来我就成了一名C# coder。虽然多年以来C#几乎是我的吃饭家伙,但我要吐槽几点心里话:
我一直都不喜欢asp.net服务器端控件,觉得这真是笨重的设计。我也不喜欢linq to sql。后来我明白了为什么不喜欢这些。封装是好事,但过度封装往往会把一些原生的东西给掩盖了,丧失了本该有的灵活性。去封装像html、sql这些本身就很精炼、灵活的东西,往往会费力又不讨好。我们有时候也会犯类似的毛病。
古板的Java
Java比C#早面世,而我是先接触C#,再接触Java。很遗憾也许是因为这样,Java比C++改进的地方,觉得理所当然,Java不太好的地方我就耿耿于怀起来。
类继承和接口实现在C++用:表示,Java非得用extends、implements表示,简洁性就差了许多,写代码像是毕业论文答辩。throws关键字用起来一点都不舒心。get方法、set方法写起来好繁琐……
语言层面的问题先忍忍吧,Java开发框架怎么样呢?看看Jsp、Spring感觉不是一堆标签就是各种配置,现在我们知道有前后端分离、约定优于配置的思想,当时看Java资料的心真是塞满了稻草。
好在2019年开始我接触SpringBoot,体会到了优秀框架代码的魅力。之后我把在C#上写的开发框架用Java重写了一遍,其优雅性有过之而无不及。
神奇的JavaScript
作为后端开发人员,往往不太关注Javascript这样的前端语言,对一些语法细节不甚清楚,就直接上手写了。后来接触到了像jquery、vue这样的前端框架,叹为观止。如果说jquery还是一个库的话,那么vue真的是一个有生命的框架。同样是开发者,关注点、着力点的不同,就能写出如此不同而优秀的作品来!
灵动的Python
看了Python的教程后,由衷地感叹编程语言还能设计成这样。许多地方看似漫不经心,实际蕴含了巧妙的设计。比起钟爱的C#语言,Python更灵动。只是目前我还没法用Python来思考。