喵の窝

程序猿养成手记 第〇章


这一章写给那些还在学校,并且希望毕业以后从事软件工程相关职业的学生.

其中一些观仅适用于学习环境,并不适用于实际工程中.

 

地基牢才能盖高楼


你学过C语言吗?你知道C语言中指针的概念吗?

好吧,咱们换一个话题.在Java中,class,interface是按照引用传递,而基础数据类型是按值传递.在objective-c和swift中有引用计数这个概念.C++11中,又多了智能指针.如果你真的理解C语言中的指针的话,其实那些东西也就是那么回事儿.

那你学过C++吗?

好吧,咱们同样换个话题.你知道Java中的lambda表达式吗?你知道swift中的closure吗?其实这些都是C++中重载了operator()的类穿了个马甲又出来了.

<现代汉语>词典中”基础”这个词的有一个解释是:事物发展的根基或起点.以编程语言来说,C语言是编程语言的基础.而C++则是面向对象编程语言的基础.学好了这两门语言再学其他的语言你就会发现:这个东西不就是某某某穿个了马甲又出来了吗?

 

试一下又不会怀孕


软件工程好处之一就是实验的成本很低,好处之二就是可重复性强.

脑补一下以学程序的方式来学建筑学

同学A:我们先试试看,看这样盖楼会不会塌.

然后盖了一半楼果然塌了.

同学B:哎呀,不好意思,我没看清楚楼为什么会塌,你们能重新盖一次让我们知道楼究竟是怎么塌的吗?

同学C:我们刚刚怎么盖的楼来着?

以上问题在软件工程学中都不是事儿.

一个程序能出的事儿最多就是崩溃掉.这种情况也就相当于楼塌了的情况.但是跟建筑学不同的是,程序崩了马上又可以重新启动起来.而重新盖楼则需要很长的一段时间.

另外,在简单地单线程程序中,程序的行为是唯一的.并不会出现运行两次,出现多种结果的情况.相当于上面所说的楼塌了,我们可以完完全全的重复刚才的过程,直到看清楚楼为什么塌为止.

所以学程序,就不要害怕尝试.特别是在学习的阶段,就是要充分利用程序试验成本低,可重复性强的特点,多多’作死’.这样才能最快的成长.

 

没有通关秘籍


写程序是一项技术活.性质跟游泳差不多.学游泳,游得多,练得多,技术也就会越好.就不会在被水淹没时不知所措.学程序也是一样,积累的代码越多,写代码的时候也就会越得心应手.所以学程序应该做好打持久战的准备.千万不要幻想有一样一本书,花半个月看完之后我就精通程序了.这么天真可爱的人,是当不了程序猿的.

#