编程到底该怎么学(编程是什么到底难在哪)
编程到底该怎么学(编程是什么到底难在哪)我准备了一晚上,默念数遍,幻想下面同学掌声雷动,老师激动不已!“成了!这学生将来一定能成个高级架构师,设计实现很多牛逼的生产系统,还能积极参与开源项目!”老师一定这么说。而且,那个时候我已经熟练掌握HTML这门编程语言和CSS这门编程魔法,开始钻研ActionScript准备做一个闪客改变世界了!“编程是什么?”这问题,就是为我准备的啊!我幼儿园就敢追老鼠,我小学就学拼音,初中就学英语,大学就开始编程了,那编程对我来说可是童子功!
有人问,编程到底难在哪?这是我想起了那年我做的汇报……现在,分享给大家。
”
我自认为自己算是程序员中能说会说的,当年每回奖学金答辩我都能煽动大家给我最高票,现在部门年会主持人也做了两回。但是,曾经有一个我精心准备的报告却没有得到老师的好评,让我耿耿于怀。
那学期,汇编语言考试考了第一,老师让我分享下:
“编程是什么?”
这问题,就是为我准备的啊!
我幼儿园就敢追老鼠,我小学就学拼音,初中就学英语,大学就开始编程了,那编程对我来说可是童子功!
而且,那个时候我已经熟练掌握HTML这门编程语言和CSS这门编程魔法,开始钻研ActionScript准备做一个闪客改变世界了!
我准备了一晚上,默念数遍,幻想下面同学掌声雷动,老师激动不已!“成了!这学生将来一定能成个高级架构师,设计实现很多牛逼的生产系统,还能积极参与开源项目!”老师一定这么说。
结果第二天,同学倒是一脸懵逼,掌声雷动了。老师却只是说了句“好的,那我们谢谢这位同学?”
额?我期望太高了?
真是学渣有学渣的苦,学霸有学霸的失落啊…………生活对谁都一样。
为什么分享这个故事,因为我当时的回答十分契合“编程到底难在哪里?”这个问题。
下面是我回忆的当时的主旨。
人类语言是一种信息与感情交织的语言。这使得同样一句话会有不同的涵义,例如随便的一句话“快把电压拉高”通过不同的重读、停顿就可以表达出严肃、愤怒、厌倦等不同的感情,进而传达出不同的信息。甚至,同样的读法,不同的人在不同语境下听,都会读到不同的含义。因此,语音的歧义很大。
当语言转化为文字落到纸上时,感情的比重开始降低,但文字的歧义依旧很大。例如“快把电压拉高”这句话所传达的信息中,“快”是指什么?是听到指令的那一刻还是听到 后准备?
而计算机作为一个工具,是完全不允许歧义的。假设向计算机表述“快把电压拉高”这句话,那要向计算机完整地交代这句话的环境、细节。
- “快”是指什么?5s秒后?那“秒”又是什么?请给出具体的晶振数,晶振数从哪获得?
- “电压”是什么意思?是哪个变量还是哪个引脚?
- ”是什么?具体是哪个数值,或者从哪个变量获取?
当我们把这些都描述清楚的时候,就是在编程。
而如果我们设计了一套体系,能够为计算机能实现的所有行为提供准确地描述,那我们就设计了一套编程语言。
因此,编程语言是我们和计算机之间进行无歧义交流的工具。
当大家用这种思路去看待编程,你不仅不会感觉编程的难,还会不断赞叹编程语言设计的巧妙。
所以,如果你觉着编程难,那你还没有掌握无歧义思维和交流的方式。
给出上面回答的是大二时候的我,那年,我接触编程(HTML、CSS当然不算编程啦)的第一年。当然,在此之前通过捉老鼠、拼音、英文等方式亲近过鼠标、预习过代码,算是有童子功。
我都想给那时的我点个赞。
阅读源码是提升软件开发者能力的重要手段。给大家推荐一本优秀书籍《通用源码阅读指导书》。
“授人以鱼不如授人以渔”,该书以真实MyBatis源码为案例,详细总结了源码阅读的流程和方法,并对MyBatis的架构方式、实现技巧等进行了深入的分析,有助于提升读者的源码阅读能力、架构编程能力。该书也得到外方出版社好评,将在台湾地区发行繁体版。
往期精彩文章:
- 高效日志系统搭建秘技!架构师必读
- 程序员最有成就感的那一刻是什么时候?
- 远程过程调用RPC的实现原理:动态代理
欢迎关注我们,不错过软件架构和编程方面的干货知识。