懒癌加拖延症晚期导致我在第一周课即将结束的时候才着手写了这么一篇心得笔记。
姑且从头讲起。
我是在网易云课堂上面报的这个极客班开办的iOS开发课程,其实蛮后悔的,一开始寻思是自学,就错过了上一期的课程,无奈等了一个多月赶上了这批,其实也没什么后悔的,之前也是过于高估了自己的自制力,还是找一个系统的教程被指引着学习比较好了,后来极客班开了一个网络视频的见面会,感觉两位老师还有助教老师都是很负责、有趣的人,言传身教,顿时踏实了许多,同时又感到压力颇大,毕竟自己的本科专业跟IT行业差得很远,虽然在开课之前跟着云课堂自学了两个月的C语言,总觉得自己同科班出身的程序员的水平不可同日而语,自己一定要付出更大的努力,慢慢的跟上进度。
言归正传哈。
之前买了两本Objective-C的书籍自己阅读,学习了面向对象编程的思想和程序的基本结构,继承、多态也或多或少的涉及了,不过自己还是看得云里雾里的,一开始也没有买mac,拿着台华硕在notepad++里照着书上敲代码,后来终于下定决心买一台macbook pro,打开Xcode,顿时傻了眼,虽然本人也是雅思6.0的水平,可里面的全英文看着就可怕,顿时一股恐惧感涌上心头,这个时刻也算是自己报极客班课程的导火索吧!但也是历史的必然性(又跑题了)。
好吧!正文开始。总共分两个话题:课程的总结以及对于学习方法的体会,拿来分享,顺便达成任务。
第一周讲了七个部分的内容,总的概括就是一个Objective-C程序(以下称OC)整体的结构,大概该怎么写一个程序,系统的讲了一下。
且不谈OC的历史进程,单单讲一下这个面向对象编程(Object Oriented Programming,OOP)的思想,一开始自己看书的时候就觉得糊里糊涂的,我没有C++、Java的学习经验,只学了号称过程式编程的C语言。我买了两本书,一本是详细的《Objective-C程序设计(第六版)》和经典的《Objective-C基础教程(第二版)》,大致我的理解就是通过间接(indirection)的方法、利用指针(pointer)来简化程序的编写和修改。
有一个问题困扰很久,在听第一周课的时候给出了答案,很是受用。当时我不理解的是,OC里面的元素,类和方法与C语言中的结构和函数有什么区别吗?在编译时的机制也是类似的,那么OC有什么独特之处吗?后来在听李建忠老师的授课视频《函数成员:方法》一讲中讲述了一个这样的概念,让我的疑惑烟消云散,他说:
(OC的写法)通过语言语法的改变使得我们程序员在编程的时候就慢慢的具有了面向对象的思维方式。
而经典的《OC基础教程》里也提到了面向对象的一大特点,令我印象深刻,毕竟自己的基础比较薄弱,这句话说的蛮深刻,需要我慢慢品,在这里摘抄下来:
过程式编程建立在函数之上,数据为函数服务,而面向对象编程则以程序的数据为中心,函数为数据服务。在OOP中,不再重点关注程序中的函数,而是专注于数据。
下面来谈谈第一周的作业,而不是谈每节课的细节。
听课时延续了以前记笔记的传统,其实课程后面附了有关课程的课件,也就是老师讲课的PPT以及范例的代码,PPT上的知识点已经很细致了,我记的笔记也主要就是补充一下老师口头提到的一些注意事项和细枝末节,如下图:
这么一点微小的工作,实在惭愧。
之前得知需要在简书上写一下学习心得,我当时的想法是把听课笔记贴进来,还为此特地搞到一台扫描仪,后来助教老师跟我说写你想写的,有用的东西就好,我也发现,听课笔记其实并不是什么解惑的良药,真正让我受益、加深印象的只有完成编程作业,也就是把代码切切实实的敲到电脑上,运行成功,在编写的时候把每个知识点都实践一遍,在每个语法错误和bug中总结错误。
一开始我就是一个“未躬行”的迷茫的孩子,只听课和记笔记,并没有去读范例的代码并且实际的敲一遍,等做作业的时候慌了,感觉题干上涉及的知识点都了解,但就是敲不出,敲上了漏洞百出,无奈重新听了课程上的部分重点,然后看着范例的代码照猫画虎,算是运行成功了。
从记笔记突然扯到了学习方法,是啊,其实李老师在第一节课的时候就提到要自己去实践才能真正的理解知识,现在才真正体会了其中的意义。
这周的作业涵盖了几乎所有提到过的知识点,一开始敲的时候真的是很慢很艰难,欲哭无泪的感觉。第一个卡着的地方就是创建类对象还有实现,像@interface、@property和@implementation之前看书的时候就知道,也知道是怎么一回事,可是都是纸面上的,李老师的课程也是在帮我们分析程序里面每个部分的要点和运行机制,貌似没有提新建.m和.h文件的事情(也或许是我看课件的时候溜号了?),好在“一不小心”搞出来了(其实是照着范例和英文提示做出了长得一样的东西了),就算是试验成功。
后来做到继承那一部分的时候,明明看起来格式是正确的,但总是报错,正好有两天我需要去外地办事情,耽误了点时间,但在往返的路上一直思考,随身带着书,又看了一遍,回家之后又参考了范例,才恍然大悟:最上头的#import忘了import 那个.h的文件了,难怪啊!看来细节真的很重要,编译器给出的提示比我当初用Dev-C++做C程序设计时的提示高到不知哪里去了,现在终于又有编程的快感了,多谢Xcode!
个人觉得初始化器那块挺麻烦的,它的工作机理和语法我还要多多研究啊!我也只能照葫芦画瓢给init了,作业那一部分对不对还不得而知啊,这块得再看看。
对了,还有一个事情,李老师自称“内存派”,事实也是如此,他对OC程序内部的运行机制讲得很透彻,正所谓“格物致知”,顿时觉得自己很幸运,既然老师有这么拿手的东西,自己一定也要继承老师的光荣传统,把他的精神发扬光大啊~
第一篇笔记大概就写这么多了,胡乱写了一通,以后切记要梳理思绪啊!再就是不能再拖延了,有想法就赶紧付诸行动,别过后耽误了时间才去后悔,另外,“手头的事情尽快做完”也是日后避免加班的“不二法门”啊!虽然并不知道是不是我太天真了,嘻嘻。
恩,花开堪折直须折,莫待无花空折枝,把握生命中的每一刻吧!
不说了,我再把之前作业的代码默默的重敲一遍吧!