关于编程的泛思考

之所以想要开通和创作这个博客,是因为我想把自己在编程上的心得都写下来,给自己看。我相信自己在这件事情上的热情,相信自己可以滴水穿石,以低维度的想法慢慢积累,一举击穿更高次元的困难。这不算是一个好的比喻,但是我懂自己在说什么就好了。这个文档到后期可能会显得很珍贵,因此需要备案。

1、2019-09-26 AnInt
之前的毕业设计是关于区块链的。在毕业设计打代码的时候,我时常觉得这件事很难做。因为我总是觉得这代码做得不够好。可能从功能上来说就还好,但是我总是在不断的重新阅读自己写的代码,认为换种写法可以让代码功能更明确,效率更高。然而这种想法其实有点问题。因为这会强迫我不停地钻研语法,指望能用有限的功能制作出自己想要的效果。当然了,其实一般来说都是有一个我理想中的答案在等着我的,只是时间和精力成本太高,写代码的周期太长了。而且这样搞,挫败感太强。总觉得时间一天天过去,精力投入高得可怕,项目却没什么进展。今天在做代码测试的时候,我也有这种感觉。但是现在我突然开窍了,因为我发现如果想达到我期望的那种对代码信手拈来的程度,那么就需要有大量的练习才行。这不是一蹴而就的。还有一种提升自己写代码时候体验感的方式就是,先把框架搭出来,然后在慢慢更改细节部分。当然了,这里说的框架不是之前在教材上,或者在知乎上看到的那个意思,而是说就像做一件艺术品一样,分步骤进行:第一步先实现功能,一切以实现功能为第一目的。这时候可以给最终的需求加上各种附加条件,让它更易于实现。第二步再把那些附加条件一个个删掉,再提升性能,再优化代码。这样做的主要好处除了前面说的提升体验感,同样可以提升效率。因为写代码的时候,从需要的效果往回思考代码的实现(即思考与功能实现相关的有那些模块),与从空文档开始往前思考代码的实现(即从0开始一砖一瓦的把程序搭起来)是不一样的。而越快的把功能实现出来,就可以越快的把这两个步骤统一起来,有更多的信息可以完成整个拼图。

2、2020-04-03 Home
今天晚上我在学前端的JS语言,这时候我突然有了一个灵感。我正在学JS的捕获和冒泡,突然想起这个知识我以前学过,然后又想到那个知识基本山没什么用,我理解了这一套东西对我写JS代码真的可以说没有任何意义。我突然明白了一点,那就是我在学一个新的编程语言、一个新的框架等等诸如此类的新东西的时候,想从最为基础的东西开始,看完一整本书再去写代码是完全不现实的。书里的知识太多了,对你的编程有帮助的部分可以说十分之一都不到。看书看到有用的地方的可能性也很小,会严重挫败学习的期望。此时需要做的其实是从最最简单的Hello World开始写,写出来能运行就行。有系统的傻瓜入门教程就跟着学,这是上佳之选;没有就摸石头过河,需要什么查什么。不需要害怕初学的时候耗费的时间长,想要一蹴而就立刻就学会,这不现实。如果真的对你来说很简单,你就会知道的。正确的学习思路应该是:0——helloworld——稍难的项目——遇到问题需要查资料,顺便深挖,深化理解——编写更难的项目——查资料深挖加强理解……无论学什么编程相关的知识都是这样的。

3、2020-12-15 Climb Prime
今天我的任务是用vue、element-UI、e-chart来制作一个折线图。这个折线图中有两根线,根据上面按钮的选择会对折线图给出不同的数据。这个折线图着实花了我一点时间,加上给我委派任务的速度确实比较慢,给了我很多时间打磨细节。然后我发现这回确实是慢工出细活。由于之前的架构比较合理,充分考虑了后续添加其它功能的可能,提出一个新需求的时候我可以很快从旧的架构中提取一些元素作为新的功能的代码块。Sean 给我任务的时候基本上都是像做编程题一样,一块一块有明确输入和输出地给我新任务的。这让我觉得很奇怪:如果我的代码对未来的开发没有任何意义(无法适应未来的架构)怎么办?为什么不直接让我负责一个与用户需求相对接的任务呢?我不禁很佩服他的能力,觉得每个人写得乱七八糟的代码他都能驾驭;又觉得自己是不是写过的功能需要被他改很久。今天我突然明白了,如果对代码有足够好的准备,让每个模块都有自己的用处,那么确实可以像拼积木一样一块一块搭建一个十分稳健的体系。所以说,任务可以细分为编程试题一样的结构的话,那真的不一定像我想得那样难以控制。假如把提高编程能力的过程比喻成驾驭一匹马,那么这种结构化好比马的秉性,主动像这个方向靠近的过程就是让马儿听话的一种诀窍。就像我之前重复思考过很多次的一个道理:编程就是一个明确清晰的过程,所见即所得的过程,这是它和我之前熟悉的知识体系之间最本质的差别,千万不要试图用一些抽象的道理来解释这件事的本质。

这时候我不禁回想起了我的毕业设计,假如我可以更早一点明白这一点会怎么样。我想我真的会很好的架构我毕业设计这个体系。我会在准备阶段做很多有意义的事情,不是假设我可能需要什么就去毫无头绪的准备;我会告诉自己这个体系看起来应该是明确通向一个目标的,每一步都不能被妄想出来。如果看不到明确的结果,那就说明这条路是错的,应该立刻放弃所有相关的努力。这样我的毕业设计看起来会像样一点吧。又或者前些天看到的一个知乎回答,其中有一条提到了有的人非要用最合适的算法/数据结构去实现相应的功能,写这条回答的人认为这个非常没必要浪费时间,但我突然想明白了这究竟好在哪里:好在高复用性,以及对代码使用方式的明确界定。

2020-12-24 Climb Prime
今天我成功解决了vue的模块问题。我之前试着把自己写的折线图封装成一个整体,但是后来我发现总是出现各种奇怪的问题。要不就是css样式无法正确设置,要不就是图表无法在正确的位置上显示。我被这个问题着实困扰了很久,后来才发现是因为vue不会管理原生DOM,所以各个组件的原生DOM就缠在一起,无法正确显示。正确的做法应该是不使用原生DOM(vue本身就用的是虚拟节点树来表示一整个页面),直接利用vue自带的ref attribute 来解决问题。因为直接对虚拟节点树进行编辑十分方便,原本几十行的代码一下子就减少到了几行。能解决这样的问题,我是真的开心。确实也是这样一种无可替代的快乐给了我前进的动力。这也给了我启发,好的代码习惯是多么的重要。一定要有模块化的思想,这样才能让自己在最一开始的时候就做正确的事情。如果我当时就这样把代码全部规划出来,那我就不需要在制作大量图表的时候大费周折了。不要去搞海量的代码,越简洁,越明确的代码绝对是更好的选择。尽管想写出这样的代码需要巨大的努力。

2022-11-28 Home
我最近买了网上认识的一个大佬的课程。我努力做了作业,感觉这个各种不能调通,我就觉得我已经按照大佬的要求做了,他的作业肯定有问题,或者更大可能我的环境有问题,导致了程序无法顺利运行。然后我就知道了事情没有那么简单。这些都是有意为之的。大佬这样设计课程,其目的就是让我们意识到调试是非常重要的。从实践的角度来说,一个环境搭建起来,你有能力调试它,其实就已经走了一半的路。这一点给我的感受还是很深刻的。以前我总是妄自菲薄,觉得连个环境都搞不定很垃圾,其实这种想法很没有必要。把环境搭建重视起来,当作一种十分重要的技能去使用,让自己在遇到环境问题的时候不要慌,多在各种搜索引擎上找找问题的答案,一切自然会迎刃而解的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值