学习
实践
活动
专区
工具
TVP
写文章

辛雷编程方法

我当年编程入门时,身体差、大脑清晰度低、思维混乱、方法极端弱智,所以很久不能入门,实际上,从我开始编程到真正入门,至少用了三年以上时间。除了上面我说的我自身的原因外,当时的编程工具难、操作系统不完备也是重要原因之一,同时也没有人指引、指导、手把手教。我编程入门的时代,是微软垄断时代。当时的相当一部分编程绝顶高手,怀着一腔不忿之心,非要把微软拉下马。因此,编程工具也是山头林立。实际上,微软的VC从一开始虽然就无敌。但无敌之路,总是不断的被挑战。实际上,微软只有VB真正的比较“主流”,至少在中国是这样的。

辛雷入门模式第一个大漏洞:选择了过难的编程工具。我当年经过大约半年左右的时间,VB已经可以入门了。但我总觉得VB太不够“专业”,不够“强悍”。于是我非要学VC。不用说那个时代,就是现在这个时代,对于“主流”的编程工具,VC的入门,应该也是最难的。当时中国台湾的侯捷(侯俊杰)写了本巨复杂的学习VC的书,这本书,完全是个大误导。辛雷入门模式第二个大漏洞:理论干扰运用。编程工具有一个最惊人的功能,就是能“运行”。如果你编写的代码是正确的,程序就能运行,否则就能报错。想想看,如果有类似的学英语、学习数学软件,一个学习的速度,至少要快数倍,可惜这类软件至今尚无人能编出来。所以编程第一原则,就是“硬编”,照着例子编代码,赶快边完了(几十秒到几十分钟左右),赶紧运行,看是否能“跑通”,能“跑通”了,说明是对的。然后记忆也好、反复训练、回忆再现也好、“变题”也好,进行固化。固化之后,再赶紧编下一个例子。计算机理论,基本没用。对于入门者,绝对没用!微软的VB入门简单,但越往后学越难用。微软的VC则反之,最后无敌,但一个开始入门太难。JAVA呢,一开始不很爽,然后一直不爽下去。苹果的ObjectC则是一开始虽然不怎么容易入门,但总是比较爽。举个例子来说,微软的VB,就像一把砍刀,任何人学几天,就能上战场了,不但随便砍人,甚至可以用于厨房切菜。但碰上高手,砍刀就基本没用了。(此例子用于理想化的中国古代的最强的马上全副重甲的单挑,以下同)微软的VC就像用大锤、重锏的,没有天生神力或者后天是练力量狂的,这种兵器没法用。但一旦这类兵器会了,基本上得谁灭谁。苹果的ObjectC则是大枪,力量小的可以用只有几公斤的带刚尖的木枪,力量无敌的也可以用30公斤以上的纯钢枪。中国古代的名将,例如项羽、刘裕、秦琼、常遇春等,估计卧推深蹲都得300公斤以上,手腕粗的,保准连现在的健美举重冠军都吓得够呛。JAVA呢,基本就是18般兵刃,连飞刀、链子锤都上了。所以呢,计算机专业的,学JAVA,应该还有时占写优势。学其他的,计算机专业的,基本没用。

辛雷编程入门方法第一步:先编例子。也就是说,你要练武了,第一步,先去练武场选兵器。李元霸专找最重的(我们家的练武场除了孙悟空的金箍棒外,多重的武器都有),刘德华选亮银枪,用起来就是帅!用一天到一周时间,硬着头皮各编20左右最简单的例子,VB或者C#编20个例子、VC编10个例子、苹果的ObjectC编5个例子,安卓的JAVA编20个例子。然后,想想看,自己适合从哪一个入门。就像,先试试匕首、再试试砍刀、再试试大锤、再试试长枪、最后试试无敌的大锏。(《二十四史》未必都是真的,《说唐》《岳飞传》等评书未必都是假的。)选好了武器之后,比如你选择了C#了,那么,就开始每天编例子了。每天10个小时,一天编3到30个例子,那么,对于各方面处于中级阶段的大一学生,VC大约需要两个月、VB和C#大约5天、苹果的ObjectC大约一个月、安卓的JAVA大约10天,既可以初步入门了。所谓初步入门,至少有一个标志,就是“有感觉”了,“不怕了”,“能编了”,“敢编了”。在任何编程的阶段,拼命和“左冲右突”能力,是极端重要的。比如我,只要有时间,没有编不出来的程序。简单的东西,我可能也要捣鼓几个小时才能编出来(毕竟在年龄上,跟你们年轻人还是有差异的),但最难的东西,我数个小时下去,一定会搞出来的。大脑清晰度:首先,要睡眠好,其次,然后要有大块的时间用来编程,第三,要有学习心得。其实,大脑清晰度、大块时间、学习心得这三者相互关联。不少程序员晚上编程,白天睡觉,比如我的某个学生就是最典型的,他一般都是下午才起床,编程编到凌晨五、六点再睡觉。是这样的,大块时间编程,不但容易产生学习心得,而起学习心得积累的更多,这样编程更加亢奋,于是又能坚持多编会,最终一天能持续编程15个小时以上,这样睡觉就睡的很足了。甚至有的人,比如现在有时候我能持续编程20、30多个小时,当然随之也要断续的睡几天。从一开始,你要选择最简单的例子。怎么算简单,代码越短,越简单。实现的功能越常用,越简单。一个最简单的例子,只有一行代码。常用的功能,比如输入用户和密码,点击某个链接就跳转到某个网站,等等。这些功能,在你没有学编程之前,你就知道了,所以,一看例子,就知道其功能了。即使很简单的例子,一开始你要编通,也需要时间。照着书中的例子打完代码后,程序没有跑通。你要找错,重新打代码,再跑。还没跑通,再打代码,再跑,等等,不断这样,直到跑通。这个过程,也许几秒钟,也许需要数个小时。如果有人指导,有团队,你可以让别人帮你讲讲、帮你找错。但最终还是需要你“左冲右突”。所以,你一天编10多个小时,只编通了几个很小的例子,也是巨大的成功!这就涉及到“跑通率”:一个程序,你编了多遍后,仍然跑不通,不得不放弃。一般的,对于入门者,30%以上的“跑通率”就可以了。但如果连30%以上的“跑通率”都没有,就不大好了,这样挫折积累的太多,没法产生学习心得了。你会总是很郁闷、烦躁,不能产生强大力量了。所以,一开始就要选择简单的例子,例如,有《某某编程百例》、《某某编程多少例》等类的书,是你的首选。这些书的例子越简单,例子越多,越好,这些书要有讲解,但只要讲解基本功能和最简单的原理即可,千万不要那些一大堆理论,没多少例子的。下面还要继续说大脑清晰度。

第二步:看书。在编程的入门阶段,你要搞清楚看书的目的、方向和类别。第一原则,不编程不看书。第二原则,根据编程水平的提高,改看不同的书。第三原则,思考优先于看书。第四原则,先信自己,再看书。看书就要有笔记。笔记可以用txt或者Word等形式,学编程的笔记,不必再用笔了吧!入门者的笔记,主要就是“功能和方法”:要实现某个功能,要使用什么方法。(到了高级阶段,笔记往往就要有“思路”和“过程”等了,但入门者没必要)所以,入门者,切莫浪费时间到“流程图”等类垃圾。计算机书中的几大垃圾:第一类垃圾:计算机理论,基本没用,不需要看。计算机基础知识之中,你能分清硬盘和内存的区别,能分清键盘和鼠标就可以了。硬件更不要学。学汇编、单片机等,纯粹浪费时间。第二类:算法。算法也是垃圾,越复杂的算法越垃圾,而且学这些东西,太消耗体力和脑力了,你们大脑本来不清晰,再学这些东西,只能更加的不清晰。第三类:流程图。回忆再现和深入思考能力不够强者,这些东西学了也很难学会,学会了也没用。会用了还不如自己想。关于回忆再现和深入思考,以后我会在《高级编程方法》中接着讲。那看书看啥呢?就是实际操作!要解决某个功能,例如设置用户名和密码这个功能,有多少种方法实现之?看书,照着书中的例子编!就这么简单。其他的,一概不要做。计算机教材也要少看有的编计算机书的,把编程当成物理来学,学物理时如果不能把物理原理弄清楚,确实很难学好,可是,计算机编程不是物理。有的编计算机的,把编程当成数学来学,学数学逻辑不清楚,很难学好数学。可是,计算机编程发展到现在,首先是界面,界面编程,哪来的逻辑可言?由于物理学的不好、数学学的不好的人,往往都认为自己没资格写计算机教材。所以情况就是这样了。包括清华和斯坦福的计算机教材,不管多么高深严密,也尽量少看,这些书你看的越多,编程越费劲。这就要再说说乔布斯的苹果的ObjectC,没用过微软的VC的人可能感觉不深。VC够强了,但和ObjectC,就太繁琐且不够易用了。很多功能,ObjectC只需要VC大约三分之一或者更少的代码。简洁最美,如何做到简洁呢?

第三步:深入思考,从最复杂的开始。

笔记本随身携带。作为一个武士,剑不离手。剑在人在,剑亡人亡。作为一个程序员,笔记本电脑不离手。电脑在人在,电脑亡人亡。自十多年前我有了第一台笔记本。我基本上白天晚上都笔记本电脑不离身。后来我买了车和房子,基本上电脑再不离身,而且一般的,我都至少带2个电脑。现在,我基本是在任何时候,iPad不离身,它看书确实无敌啊。我现在24小时随身常备:两个笔记本电脑(一个17寸不高清的苹果,一个苹果11寸Ai))、两个iPad、两个iphon

为啥不用15寸高清苹果?苹果太小。我用惯了17寸。15寸的太小。如果是古代,除马匹铠甲弓箭飞抓等外,我会这样配置:20公斤的钢枪一只、30公斤的钢鞭一只、12公斤的重剑一只外加每把0.2公斤的飞刀12把。注:飞刀应该是古代武士常备甚至必备。因为紧急时刻,例如夜间突围、白日捉拿刺客等时,弓箭来不及,刀剑往往距离又不够。

《水浒》里两个解差押送林冲千里路,纯属扯淡。按照林冲在书中大宋国排名前10的武功地位,至少得20个解差,且得全副武装。林冲这个级别,全身都是致命武器!甚至还有解差用开水烫坏林冲的脚,一代高手的脚被开水烫坏了,然后武功全废,哈哈。

深入思考:到了高级阶段,编程者主要就是思考算法了,而且基本上就是思考自己以前编过的(有时也包括现在正在编的项目)算法了。脑子里不断思考自己以前编的程序的思路过程,这是第一要干的。高级阶段,编程者每天至少要思考5个小时以上,而且最好是以回忆再现为主。也就是说,思考时,越不看源代码越好。

深入思考在中级阶段的一个主要方向就是理解:通过长时间深入思考纠正自己的理解的偏差。对于入门者,往往连理解的偏差都理解不了。对于一个连左右都不分的人,你跟她说东南西北,岂不笑哉?所以,入门者深入思考的一个方向:要实现这个功能,应该找那本书?要找那个笔记?所以,对于入门者,手头没5本好的编程书之前,没有编熟100个例子之前,没有积累若干编程笔记之前,深入思考基本都是扯淡。很多入门者用大量时间思考复杂的算法。大缪!越想脑子越乱,越想越觉得编程难!

当然,最简单的算法还是要思考的,比如来个三五行的if和else以及Then对于入门者,有这样的方法:找个三五行的if和else以及Then的小例子,先编通再大约的弄明白后,连续编它10编20编,然后背下来。最终做到不看书就能自己独立把代码完全敲对的程度。然后在随后的半个月内,每天闭目回忆再现此例子10遍到1000编不等(能比较清晰的回忆出来即可)。此称为“辛雷高级学习方法之深入思考加回忆再现之用于入门阶段”

编程者,做为学习者,深入思考,向来是第一。深入思考,首先的,是深入思考无间隙。深入思考无间隙:就是只要大脑清晰且身体正常安全时,脑子里总是持续的思考学习的问题,大脑总是被学习的问题所充斥。(你不要边骑自行车边思考,安全更重要啊)对于入门者,深入思考更偏重于硬背和快速非精准浏览。快速非精准浏览:就是理解率达到一定程度就赶紧往下走。对于做数学题来说,就是能把最简单的题目“弄”出来(不管什么方法),能把最简单基本的数学概念大约的看明白一点点,就赶紧往下进行。对于编程者,编程和看书一定要快。不管用什么方法,把例子编出来就行。不管这个例子的意思是啥,只要知道这个例子的功能。就像背单词,只要知道最基本的汉语意思,甚至接近或者沾边的汉语意思,就可以了。

真正的学习者,自始至终,总是以自己的想法为主,即使一开始大都错。因此,切莫怀疑自己。编程者,一开始往往每每思考,很快就发现是错的,有些人于是就不敢用自己的想法去思考问题了。这是不对的,要相信自己,绝对相信自己。当然,自己的想法,要随着每一个例子的编通,而不断的修正。编程方法,都是人想出来的,都比较高明,但远远没有数学般高明。毕竟编程比数学,历史短的太多。编程也尚未攒足像阿基米德、牛顿、高斯等许多天才。编程世界,随便有个比尔盖茨就能无敌很久。所以,每每编完三、五个例子,你就要想想,如果我要实现某个功能,例如“用户注册”,应该用什么控件,用什么属性,用什么方法。对于入门者,思考时只要能有一种方法实现某个功能,就算无敌。不管这个方法多么复杂。就像武士,入门阶段的武士,只要能打赢就行,不管自己受伤多重(活命的前提下)。因此,不管后来你发现自己的方法多么复杂,只要沾边,就要思考之。思考到一定程度,就可以来下一步,“变题”了。变题:对于编程者,有个指导者,至少有个帮助者,几乎是必须的。所以即使在中国的这等弱智的编程界,往往都知道团队编程。变题,由于编程工具的越发强大、人性化和快速,你用起来越来好用,至少比我10多年前编程强很多了。变题,第一要用的就是MessageBox(VC)、NSLog(苹果编程)。入门程序员,MessageBox(NSLog)满天飞,几乎来几行代码就要有一个。前些天我跟学生说,你编程不要来那许多NSLog,你要先想好思路了,再编程序。这是对中、高级编程者来说的,不是适合入门和初级者。

入门编程者,时间安排可以这样:编三看二思一。比如一天10个小时,那么,6个小时用于编程,4个小时用于看书(主要是来回找例子、看例子、被例子)、2个小时用于思考(主要思考功能,而不是算法)高级阶段者,基本就要编一看二思三了。每天主要时间都用在思考了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181231G0NQ7V00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券