关于计算机科学——编程分支(20130115)
不要纠结以什么语言入门,选一种开放资源最多的语言去学,比如Java,要知道大部分语言都具有相通的逻辑,专精其一、一通百通。
学习一种编程语言,要从一开始就坚持良好的编程习惯,因为好的习惯可以使你事半功倍。
通过书本你或许只是学到了一门语言结构,这和软件工程的编程思想有着本质区别。这就和写作类似,光靠template是写不出好文章的。
无论你之前有无编程经验,都应了解,有时,你必须忘掉以前所学的东西,以提高可塑性。
编程风格的重要体现,是能否让其他人读懂(三点建议:1、method内代码在1~15lines。2、good names。3、comment。)
设计思想:通用性原则——满足一类条件都能运行。
逐步求精法:分解程序,使其变成很多段,fragment code。
从初学者变为专家并不难,难在作为专家仍能保持初学者的心态。
最后,从初学者到一般程序员的转化时间一般在100小时左右,进阶为高级程序员也只要600小时左右,但成为专家却只有一小部分人,这不仅需要足够的坚持,还需要一点点天赋(面对这个现实)。据统计,只有6%的人能成为优秀的软件工程师,而专家更是只占6%中的37%。
关于计算机科学——设计分支(20130223)
一个好的设计是在维护中进化而来的,并非哪个天才一蹴而就,写blog也是如此,起初可能会写得很差,但只要坚持、终能长进。
关于哲学——希望&自信(20130116)
Notice:有时,你很努力,可结果还是不尽人意,你是否问自己:“努力到底能否换来成功?”这时,请千万别怀疑自己!努力确不一定能换来成功,但努力却能带来希望,正是因为这份希望,才让人们有面对一切的勇气(失败亦或死亡)。
关于数学——数学思想(20130118)
《怎样解题》——[美]G*波利亚
第一 你必须理解题目 | 未知量是什么?已知量是什么?条件是什么?条件有可能满足吗?条件是否足以确定未知量?或者它不够充分?或者多余?或者矛盾? 画一张图,引入适当的符号。 将条件的不同部分分开。你能把它们写出来吗? |
第二 找出已知量&未知量之间的联系。 如果找不到直接的联系,你也许不得不去考虑辅助题目。 最终你应该得到一个解体方案。 | 你以前见过它吗?或者你见过同样的题目以一种稍有不同的形式出现吗? 你知道一道与它有关的题目吗?你知道一条可能有用的定理吗? 观察未知量!并尽量想出一道你熟悉的具有相同或相似未知量的题目。 这里有一道题目和你的题目有关而且以前解过。你能利用它吗?你能利用它的结果吗?你能利用它的方法吗?为了有可能应用它,你是否应该引入某个辅助元素? 你能重述这道题目吗?你能以不同的方式叙述它吗? 回到定义上去。 如果你不能理解所提的题目,先尝试去解某道有关的题目。你能否想到一道更容易着手的相关题目?一道更为普遍化的题目?一道更为特殊化的题目?一道类似的题目?你能解出这道题目的一部分吗?只保留条件的一部分,而丢掉其他部分,那么未知量可以确定到什么程度,它能怎样变化?你能从已知量中得出一些有用的东西吗?你能想到其他合适的已知量来确定该未知量吗?你能改变未知量或已知量,或者有必要的话,把两者都改变,从而使新的未知量和新的已知量彼此更接近吗?你用到所有的已知量了吗?你用到全部的条件了吗?你把题目中所有关键的概念都考虑到了吗? |
第三 执行你的方案。 | 执行方案 执行你的解题方案,检查每一个步骤。你能清楚地看出这个步骤是正确的吗?你能否证明它是正确的? |
第四 检查已经得到的解答 | 回顾 你能检验这个结果吗?你能检验这个论证吗? 你能以不同的方式推导这个结果吗?你能一眼就看出它来吗? 你能在别的什么题目中利用这个结果或者中方法吗? |