如何理解计算机编程并把它学好呢? –棒喝篇

  • Post author:
  • Post category:其他


这篇文章距离写完“认知篇”和“思想篇”已经有一段时间了,其实有想过写棒喝篇,限于各种原因一直没有动笔,如果不是今天看到一个网友的问题可能棒喝篇会继续沉寂下去,虽然如此但我依然没有想好要怎么写,只知道有太多太多学习编程的人,但都不太会思考问题!甚至根部就不懂得去思考,何为思考!非常的差劲!请允许我用这几个字眼来表达此刻的心情,因为棒喝篇可以能比较犀利,跟学技术文字的99%的人的用语都不一样,对于编程三哥哥是认真的,真因为认证所以…也更暴躁!

人说生气要过半个小时慢慢就会平复找回自我,所以先来个开头,我还是希望能写好棒喝篇,捶打一下想学习编程和正在学习编程的“所有人” 编程境界,你们还差的远,不要不服气。


相隔了几天时间,我准备保留上边自己写的错字连篇的内容,只为了一个留念。有想过要不要每次都标注下更新时间,后来想想还算了吧。

我写的三篇“入门篇”、“思想篇”、“棒喝篇”可能会在内容上互相有所重叠,对于我而言多少会感觉有点罗里吧嗦的味道,初衷是想写有逻辑,有构思,各有主旨精炼完美互有关联的文章出来,还是那句老话精力所限虽然不够完美但想表达的应该是写出来了。这让我想起看过的一些小说里讲到的,美酒分谁来喝分谁来品,有的人把喝到的略好一些的酒就当成了美酒,也有一些人比较挑剔对美酒各种品鉴自然要求也更高,我相信能读到这篇文章的大多数都是属于“大多数”的喝酒者而非品酒者,所以它是“美酒”还是“普通酒”个中滋味读者们自己品就好。



1.不懂自己思考 好问问题

好问问题是好的,但是一味的依赖别人的回答就是靠天吃饭或者是好吃懒做行为,张口就问要杜绝。

任何问题都要自己去分析,去思考,因为这是在锻炼自己解决问题的能力。这样不管最终是自己解决的还是靠别人寻求答案 都记忆深刻,一定是以自己思考为主,其他人为辅助参考。

有人问,scanf/printf函数的参数什么时候需要加取地址符号&或者解运算符*,什么时候不加,有时需要有时候又不加我都懵了!那你有没有想过,scanf/printf参数是需要一个怎样性质的参数适合它呢,自己能分辨清楚或者说有想过这个问题吗?


  • 如果你是函数设计者,那么怎么做才更显得合理方便呢

    作为设计者,我希望如果传递过来的参数是一个地址,且搭配格式化参数为%s来指示它输出/入,那么我已经洞悉了使用者的意图,想输出/入一串字符。那么我需要知道两点:字符串的开始位置和输出/入的长度(约束关系)。

    非常简单,但道理却非常值得推敲,因为越简单的道理越容易被忽略。

    这里每一个表述词都值得读者去品读、推敲,因为所有的道理跟逻辑就在上下文文字中,找出来并读懂它你会收获更多。



2.不懂得举一反三升华自己

最终问题解决了,但是下次还会再犯,重要的是犯了相同或类似的错误却发现不了,这是不会总结反思的病症。原因是不注重问题内在的原理,只追求问题解决了就行了但没想到下次又变化一下遇到了,这倒霉催的主儿,所以反反复复原地踏步不前,三步一坑好像很努力的学习中。



3.社会认知不够

用一句社会语幽默表达下:“还是太年轻啊 缺少阅历!”

为什么这么说? 想一下自己的学生时代,为什么班级里有的人学好好有的学习差,有的反应快有的反应慢?

究其原因,无外乎一个“认知”问题。打个比方老师讲课,讲的内容、讲的东西你之前就接触过,那么老师一说你会立刻联系起来,老师讲的是个什么东东脑子里已经有了概念有了样子,可以清晰在自己脑子里呈现出来,接下来老师要说的你已经可以未卜先知或一听即懂了,思索的时间大大减少,完全不用浪费时间卡壳在各个环节上,这就是反应快的学生为什么反应这么快;而那些没见过世面!脑子里完全没概念没立体形象的学生们还在努力想象着老师是讲的是个什么玩意我怎么听不懂,完全理解不了。


  • 别人都已经风卷残云吃完饭了,你还在思考自己要拿什么东西夹菜!这里说的你不是在选择用筷子还是勺子,而是说的是你甚至连勺子和筷子都不知道是个什么样子的东西,这个认知层次实在是太低了,这就是反应慢的学生该有的样子,接受我现实的摧残吧祖国的幼苗们.

这样的认知储备,这样的社会阅历,你跟别人怎么比?

读到这里如果你对我说的还在不忿不服气,我只能劝你别学编程了,身心建设跟不上、社会阅历跟不上太过幼稚了,这都理解不了还学什么编程。




来两个实际例子熏陶一下


假设你已经知道const存储限定,字符数组基本概念


const char a[15]=”hello,world”;

char const a[15]=”hello,world”;

这两种表达效果一样吗? 在回答这个问题之前,我假设你知道C语言的一些东西,比如你知道它是一门比较接近硬件底层的编程语言,最求效率写法比较灵活随意。从这个认知点出发,就算你没学过C语言、甚至根本就没接触过编程,但是我希望你能从一个人类基本认知能力出发思考一个问题,类比于人比如你自己,一个这么随意不拘泥于形式不在乎世俗眼光只追求自己心中目标的这么一个人,有多大可能会注重外观形象会玩一些花里胡哨的浪费时间和力气费力不讨好的做些无用的事情做些无用的功?


更进一步思索:


1.如果相同 合理吗? 看语句无非是想存储“hello,world”这个字符串,目的不变但const位置稍有不同,仅仅应该是想做一些限制方面的事情。

2.如果不相同,那又是为了什么? 无外乎为了表达不同的一些意思出来,把一条信息玩到极致,不同的顺序位置代表不同的意思。但就此看无非是想存储一个字符串并对其做限制,关键点是“一个存储一个限制”就这俩积木玩耍,那么耍来耍去也就是换个限定位置了,换了限定位置最终可供玩耍的还是这俩积木,无论左侧怎么排列变换也改变不了最终那个存储的性质(多对一关系),一个被限定的存储位置(唯一目的地)。


假设你已经知道了指针的意思


小白白:那既然前后位置可以随便写,换成指针会有不同吗?

三哥哥:你觉得跟上边应该相同还是不同?

小白白:我又不了解C语言,怎么知道相同还是不相同

三哥哥:难道不应该有这个眼力吗?没学过是理由吗? 看来上边的例子想表达的意思是白讲了,小白白小时候一定没玩过“找不同”游戏吧,拿出纸笔画一画指针和普通存储这两种情况下,在哪个地方有不同,然后再根据这个不同思考问题,看能不能玩出点花样来?这个新花样解释起来合理不合理,有没有脱离实际? 如果都合理那么这个花样就有生存的土壤、存在的必要,推断成立。

const char *p = “hello,world”; ①

char const *p = “hello,world”;②

char * const p = “hello,world”;③

const char * const p = “hello,world”;④


这个问题我并不想按部就班的去解释如何如何的来用,那样就不是棒喝篇了!在这里我可以很大声的问一句:怎么样,你们都会了吗? what?? 这是什么写法头一次见就问会了吗,你确定不是开玩笑??

是的,一点玩笑的意思都没有,如果你通读并对我的三篇文章有一定顿悟的基础上,这个问题根本不需要我再去讲解什么,哪怕你从来没见过没学过,你也应该有自己的理解了。

如果还在what?什么鬼?那么你重新回头去理解前两篇,仔仔细细开动小脑筋好好思索下,自己学到了什么,又领悟了什么,

或者平淡的像一杯白开水什么滋味都没有

给一棒子来个甜枣弥补下大家的心理落差。这个问题上边已经讲了,需要反推理解!抓住事物的本质看待问题,这样你将不再是雾里看花迷迷蒙蒙 似懂非懂,处在既懂又不懂的状态。


从目的反向看过程,因为过程最终都是为了到达目的地而存在的。

前边已经说了,让大家拿出纸笔画一画“内存模型”,我叫它建模建立模型的意思,这个在学习上









重-要

!!! 加三个感叹号帮助还在懵的不知道何为重点的朋友抓一抓,参考上文提到的“好学生反应快”案例。题外话:这句提点至少

价值8万块钱



更是青春和时光

,已经不能用钱来衡量它的价值。当然了,作为一个俗人的三哥哥表示很遗憾,眼里闪着RMB符号但是却没人给我钱。。

好了,到现在为止三哥哥再提一遍①②③④想表达的意思 你开窍理解了吗?

你是否依然在what? Ing…

这里不是叫大家准确说出每一种是代表什么,而是叫大家知道:为什么会有这四种情况!! 它们分别是哪四种情况? 各代表了什么? 这才是终极目的。

所以三哥哥说,不需要你学过C语言,不需要你对C有多了解,只需要你有一个爱思考的脑袋在主动运转,答案自然知晓。

棒喝篇的主旨,就是通过提问,通过质问打击,让大家认清自己的不足,唤醒大家的自主思考能力,刺激自己的

羞耻心

、有方法会思考 才“可能”在编程道路上走的更-远-些。

借我 借我一双慧眼吧

让我把这纷扰 看个清清楚楚

明明白白 真真切切

借我 借我一双慧眼吧

让我把这纷扰 看个清清楚楚

明明白白 真真切切

雾里看花 水中望月

你能分辩 这变幻莫测的世界



认知篇

”主要从学习入门角度来跟大家分享如何学习,“

思想篇

”从如何进行学习思考的角度来分享,喜欢的朋友可以阅读三哥哥写的这两篇文章

在此感谢所有光临的小伙伴们,如果喜欢它可以点赞收藏小小的支持一下,讨论可以进群QQ:317720826



版权声明:本文为kuji86原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。