黑马程序员技术交流社区

标题: 感言贴 [打印本页]

作者: l六花l    时间: 2020-1-14 18:19
标题: 感言贴
Java首先是一门专业课程,在专业课程的学习中,我认为理论、实践的学习都缺一不可。
1、语法基础
学习一门编程语言,语法是基础。书本的意义正在于此,每一章的书本学习与代码练习正是一个扎下基础的过程。
书本越往后内容愈发艰深,甚至有些同学前五章内容还没理解就试图钻研后面的内容,打算“遇到了前面的基础部分再回过去学习”,但其实,在我看来,前五章的基本语法反而比后续的更加深奥的内容更加重要,正如老师所说:学好前五章的内容后,后面的内容临时用到了再去学习也不迟,很快就能掌握。
例如一直看书觉得不太能掌握的的第八章的I/O令我很是头疼,但在四则运算的结对编程中,由于需要实现文件的输入输出功能,不得不对每种输入输出方法进行更加集中深入的学习、理解,再进行优缺点选择出最适合需求的输入、输出流,最后进行语法的学习从而实现这一功能,效果比当初单纯的看书要好上许多。
倘若没有前五章的基础,是无法一步登天学会更加深奥的语法的,回头学基础未免不成体系太过零碎,所以不可忽视这一基础。而仅仅把学习一门语言定义为语法的学习,从客观来讲,一周两章的内容学习任务的压力其实很大,个人来讲只能囫囵吞枣,不如“以用促学,学以致用”,从而进步。当然,若是精力能力足够完成学习任务的同学,也可以将书本所有内容细细学习一番,或许基础会更加的扎实。
2、实践巩固
所谓“纸上得来终觉浅,绝知此事要躬行”。书本是基础但不能拘泥于书本,所有的语言学习都是为了实践而服务的。
不知道有没有同学跟我有一样的感觉:单纯看书,不去使用,很多新学的东西过了一周,最多两周就会忘记,这时候实验的作用就会体现出来。
但是每次的实验其实都不是一个一帆风顺的过程,往往要耗费大量的时间、精力去设计、调试,每当千辛万苦写完的代码甚至无法运行的时候,我的内心其实也是崩溃的:连个单步的机会都不给我。但正是一次次不厌其烦的调试,一次次地单步运行,才会使我们发现一些看书忽略的细节,发掘自己思维的漏洞,这是书上的东西才会变成你自己的东西,每次完成一个实验之后的成就感也会成为你继续学习的动力,而多次试验后你会发现实验过程越来越顺畅,最起码代码无法运行的情况减少了很多。
例如,以前的我喜欢有个大体框架后就开始写程序的坏习惯,一些情况的判断与细节喜欢“到时候遇到了/想到了/运行出bug再写”,而这往往是逻辑错误的来源,后来多次碰壁后慢慢改正了这个习惯,更多的去将整个流程详细思考构建过后,再进行整体的书写,血与泪的教训下我的实验已经高效了许多。
三、元知识
那么按照这个说法,我们学完前五章,定时写写实验,那么我们早在开学前几周就完成了Java课程的学习,我们之后的课程岂不是没有意义了?
答案是否定的。我记得开学第一堂课,老师就提到过元知识这一概念,我们后续的学习在我看来,就是不断学习元知识的过程。
这一过程是超脱Java课堂的过程,是可以用于其他领域的能力,这一能力使我更加受益匪浅。
1、工具的掌握与学习
我的电脑是MacOS系统,班里和我用同样系统的同学对于一项事情大概心有戚戚焉:安装软件工具有时候真是太麻烦了。
的确,不使用虚拟机的话,MacOS安装使用一些工具的教程其实并不多,它和Linux很多部分可以共通但也有很多不同,和Windows系统更是截然不同,每次安装新的工具都会使我们耗费很多的精力,例如上次的XAMPP的安装,端口、环境、配置等各种因素影响下,耗费了我一个周末的时间研究,才能正常运行使用。
但是正是每次这一并不简单的过程,使我掌握了如何通过网络,快速寻找解决方法的能力,如何独自解决开发环境与工具的安装使用问题,这一能力,并不仅仅局限于Java的开发使用,而是在别的学习过程中也大有用处。
2、思维的学习
Java和C语言最大的不同在哪里?在于其思维的不同。在开始学习Java的过程中,我经历了一个很长的思维转变过程,通俗来讲,C语言更多的是解决一个问题,而Java更多的是解决一类问题。
说来惭愧,其实直到现在我有时候的程序依然没能完全满足O•L•D•I•C•L的原则,但是我一直在努力改变自己思维,也在不断修正以往写过的程序努力靠近这一原则,虽然还没有完全达成目标,但是这一过程本身就是一种进步,思维的进步比语法的学习其实是更为重要的收获。
其实我并不反对上网查询、借鉴别人的代码,因为我也常常有逻辑上的疑问需要解答,每一次解决的困惑都是经验与思维的积累,但是我并不赞成直接的复制粘贴,因为不会的语法可以查询,可以借鉴,但是别人的思维是无法借鉴的,不掌握它,下一次依然不能独立解决问题。
3、不要重复制造车轮
上述的感想似乎将Java描述成了一个艰苦卓绝的学习过程,但其实你要是能够寻找到正确的省力方式,这个过程会简单很多。
正如我上文所说,我不反对遇到瓶颈的时候去阅读别人的代码以求启发,而能够引用别人的库更是一种轻松而又简单的做法,众所周知重复的制造车轮并不是一种聪明的行为。当然,在引用别人库之前为了加深自己的理解与学习进行的实现编程也是一个必须的过程,正如我们在用sort方法之前自己理解并且实现过快速排序、冒泡排序等一系列的功能,但是若是次次都“反复制造轮子”,未免就有些费力不讨好了。
例如之前老师课上讲到的密码学算法的库,就可以在接下来的密码学实验中一展身手。能够正确的“偷懒”,相信大家也是喜闻乐见的。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2