怅然|知乎高赞:什么才算是真正的编程能力?

01
很多人搭建了几个网站 , 周围人看上去似乎很牛x的样子 。
但细细算下来 , 自己手写的代码并没有多少 , 基本都是使用开源的东西 , 沦为了“CV工程师” 。
开始迷茫 , 自己的写代码无非是把别人的东西整合下 , 做的是“胶水”工作 。
本以为编程是手动写代码 , 但实际上是依靠ctrl+C和ctrl+V解决问题 。
虽然提倡不要重复造轮子 , 但是依靠别人的轮子能做出很多的东西 。
可是并不觉得有提升 , 看着会算法的人 , 开始感到迷惑 , 或许算法的能力才算是实打实的编程能力?那"胶水"的能力和整合轮子的能力算不算编程能力呢?
怅然|知乎高赞:什么才算是真正的编程能力?那所谓的编程能力是什么?如何提升编程能力?
02
计算机科学有两类根本问题 。
一类是理论:算法 , 数据结构 , 复杂度 , 机器学习 , 模式识别 。
一类是系统:操作系统 , 网络系统 , 分布式系统 , 存储系统 , 游戏引擎 。
理论走的是深度 , 是在追问在给定的计算能力约束下如何把一个问题解决得更快更好 。
而系统走的是广度 , 是在追问对于一个现实的需求如何在众多的技术中设计出最多快好省的技术组合 。
怅然|知乎高赞:什么才算是真正的编程能力?做系统 , 确实不提倡“重复发明轮子” 。 但注意 , 是不提倡“重复发明” , 不是不提倡“重新制造” 。
恰恰相反的 , 系统的编程能力正体现在“重新制造”的能力 。
03
当你看到轮子 , 你会怎么去做?
是找到合适的不管三七二十一直接扔上去 , 还是去研究拆解轮子?
第一种当你遇到不靠谱的轮子时 , 可能就两眼一抹黑 。
第二种通过搜下类似轮子, 看下star以及更新频率,都可以的话再去看他代码是否靠谱 。
经过这套流程很容易判断一个轮子是否靠谱 , 靠谱就用, 不靠谱再想到底是改代码还是直接重写 。
怅然|知乎高赞:什么才算是真正的编程能力?两种不同的方法判断了是不同的人 。
虽然都是照搬轮子 , 但是经过验证的东西以及方法不同 , 思维以及阅读量的增加 , 差距其实也是还在拉大 。
04
言归正传 , 怎么提升编程能力 , 编程能力到底是什么?
提升编程能力最好的土方法就是“造轮子” 。
就像学画画要画鸡蛋一样 , 重复的画鸡蛋 , 让自己增加手感 , 了解明暗结构 。
怅然|知乎高赞:什么才算是真正的编程能力?所以 , 自己多写点东西吧 。 这是提升你的编程能力最好的土方法 。
但是很多时候自己造轮子可能还不能达到 。 那最好的方法就是“拆轮子” 。
但是很多时候好拆的轮子不好用 , 好用的轮子不好拆 。
【怅然|知乎高赞:什么才算是真正的编程能力?】前期还是量力而行 。
程序本质是逻辑演绎的形式化表达 , 记载的是人类对这个世界的数字化理解 。
不能拆的轮子就丢失了很多的意义 。
希望各位有为青年 , 可以写出好用又好拆的轮子 , 造福大众 , 提升自身编程能力 。
你认为什么才算是真正的编程能力?