《Java平台体系》——前言

来源:互联网 发布:月销售数据分析怎么写 编辑:程序博客网 时间:2024/05/29 09:40
在这章我会充分“愤青”一下,如果你很反感请直接跳到小节阅读本书的方法学习Java平台体系的意义

为什么写这本书?

大学本科毕业到06年期间我主要从事编程工作,在大学期间我就对写程序很感兴趣,当我从各种渠道看到各个计算机“大牛”们是如何的有天赋,我顿时有点退缩,于是坚持我的本科教育技术专业(估计你不知道教育技术专业)读完。虽然本科期间开设的计算机类课程有操作系统(可以参考http://www.linux-tutorial.info/modules.php?name=MContent&pageid=1​操作系统部分获得基础知识)、数据库原理(可以参考http://www.geekgirls.com/menu_databases.htm​ step-by-step guides to using database获得基础数据库基础知识,同时可以用一个在线的网站http://sqlzoo.net/​练习写SQL)、数据结构、C语言(可以参考http://www.iu.hio.no/~mark/CTutorial/CTutorial.html​了结一些基本知识,虽然该教程有点老),但在具体工作中还是发现自己不是“内行”,但让我更惊讶的是我周围的程序员有英语专业的、美术专业的——真是惊讶!

其实说实话在大学期间由于脱离社会太久,再加上“陈旧”的教科书和“围墙内”教师们的照本宣科,就算是计算机专业的兄弟姐妹们也在乏味中慢慢淡忘了我们应该有的坚实“专业”基础。但当在实际工作中不断深入编程工作的时候,又发现大学时期的基础课程是那么的重要。其实我不敢把我们国内的软件教育和国外的进行妄加对比,但当我和国外的一些软件从业人员沟通以及读他们编写的代码时,我发现我和国外相关从业人员之间的差距主要体现在“基础”,与现代软件生态系统息息相关的“基础”。千里之行始于足下,万丈高楼平地起,一个个典故和警句无不说明基础的重要性,而我们恰恰缺的就是基础,国内软件界的高手都无不具有坚实的、系统的软件基础。没有基础如何谈创新?没基础如何谈发展和提升?让我吃惊的是我们程序员社区中大量的所谓“技巧”的内容,基本都是“基础”知识,可想我们缺什么?

现代华丽(说华丽特指现代软件开发工具、程序语言和优秀代码库,她们尽可能地让程序开发简单、人性,但这带来的问题是蒙蔽了我们洞察深处的眼睛)的开发工具和编程语言让缺失“基础”的软件从业者“苟且”为我国的软件做出貌似“巨大”的贡献,但我不得不提醒的是我所工作过的公司中从来没有侥幸“逃脱”过缺失“基础”带来的“巨大”浪费和损失,一个软件项目还没用起来,客户和维护人员都已经被“折磨”的受不了了,甚至有客户开始“抵制”引入软件解决他们的问题。我们姑且不谈对企业带来的问题,对软件从业者个人也带来不少烦恼,“夜猫子”,“亚健康”,“吃青春饭”,“年龄不小了,该考虑转向管理了”等等都好像与我们软件从业者分不开,曾经我们引以自豪的知识密集型行业不再存在,甚至感觉到辛酸。这到底是为什么?

再回过头来看看我们的本科、研究生论文库(当然也包括博士论文),大量的论文都停留在“搞明白”一件事情上,要达到解决问题,估计只能在一些“翻来覆去说都好像有道理”的话题上大谈一番了。我提大学论文的主要目的是想说“专门打基础”的人不是就基础而基础,完全脱离实际,就是仅仅解决不是问题的问题。

那么再看看市面上的计算机相关书籍,除了机械工业出版社和清华大学出版社等不定期引进一些国外“大牛”书籍之外,还有那些书籍静下心来确确实实为我们的程序员着想的?

再看看我们的计算机相关培训,大多都是所谓速成班,把一个“一清二白”的兄弟扔在培训班中“速成”了一下,问题的关键是能够通过培训提高的人就不会去我们所谓的“速成”班,我理解的职业培训应该是“提升”班。

曾经在《程序员》杂志2009年的某期上看到有关“内部程序员”(所谓内部程序员就是隐藏在并不是专业搞软件的企业做软件的同胞们)的一篇文章,让我很“内伤”、很感之“入骨”。他们为什么不跳出来呢?或者他们为什么就一定不专业和没有视野呢?

我前面说了一大堆,与我写《Java平台体系》这本书有什么关系呢?其实我前面的“愤青”言辞都不能具体归结于谁的错,如果一定找问题所在,我们自己本身的问题首先是不能回避的。就连软件领域自身都在不断地自我救赎,有不少大师级“软件方法”系列丛书无不反映此问题。更何况我们自己处在这个行业?我们自己是否每天在自我救赎、是否每天在寻找适合自己的方法呢?《Java平台体系》并没有以教给大家Java编程语言为唯一目标,而是和大家一起通过一个完整的涉及面相当广的平台体系来系统地学习软件开发知识,从而达到融会贯通的目的。

本书的目的

首先本书我一开始定位就不仅仅是Java平台体系,其主要目标可以归结为两个:

□ 以Java平台体系作为主线来“串烧”一门完整编程语言的生态系统,让读者系统地构建自己的知识体系。——(知一体系)
□ 通过Java平台体系横向类比把大家“引入”更加广阔的编程世界。——(融会贯通)

本书的目标一听有点大,但我们要坚信自己,来跟我一起喊:我能!一切皆有可能。

本书的目标读者

□  如果你是一个“半路出家”者,本书可能对你有用。
□ 如果你是一个学生,本书可能对你有用。
□ 如果你是一个仅仅熟悉某门“高级”语言类库使用的程序员,本书可能对你有用。
□ 如果你在工作中觉得自己的编程“基础”知识不系统本书可能对你有用。
□ 如果你熟悉任何一门语言和平台体系,并且想学习第二、第三语言和平台体系,本书可能对你有用。。

阅读本书的方法

在散文写作中我们常说形散而神不散,同样,在我们做任何事情的时候方法可以多样,但一定要清楚自己要干什么。人的大脑有各种思维特性,并且每个人的偏重又不一样,但从方法角度来讲,可以分为归纳法和演绎法,从人的认知过程来讲就是由表到里,由现象到本质的心理活动过程,它由人的感觉、知觉、记忆、思维和想象等认知要素组成,有些人在读书时首先把自己放到什么都不知道的位置去逐字读书,其中的主动主要体现在对书内容的渴望,但我还是要说大家的这种渴望是被动的,所谓真正的主动应该是在你读任何书籍之前已经充分发挥了自己的记忆和想象,甚至推理,用最通俗的已有的经验去推理和逻辑,相信任何正确的东西一定是有道理的,那么我们从小就训练因为XXX所以XXX,为什么不先试试看呢?用自己已有知识触类旁通学习新知识的过程是知识的一次重构,甚至是一次微型的知识应用创新,这是学习最好不过的方法了。——学习要有信念

本书从来不迷信具体的人,而是带着实事求是的态度,带着平凡人的思维去写,所以在阅读的时候一定别忘了总是做如下思考:

□ 看到任何一个概念/方法之前,都自己问一下为什么?有什么用?如果不知道是什么,先通过书中提供的资源简要理解,如果书中没有别忘了百科(本书中将尽量提供我认为精炼的网络资源供大家参考)。

□ 在问自己之前自己先尝试着回答,不一定要就问题论问题,可以类比联想。例如计算机中为什么大多都用二进制?那你可以联想我们的阴阳之说、我们的八卦、白纸黑字,这些东西凭什么可以表征万象(本书处处都带着通俗类比和想象)。

□ 当你感觉有点乱的时候,记着从当事者中跳出来,跳到更加抽象和概括(如本书中的抽象图,框架图等)的位置来看问题,例如要搞清楚北京的经纬度和标准时差你晕的话,你可以拿个地球仪,把地球当个球看。

□ 当你感觉抽象和概括的东西基本理解了,但发现自己还是无从下手,空空的,那就抓住一个点去动手吧(本书中随处提供实战内容)。

对学习方法感兴趣的读者,可以通过大纲中提供的交流方式获取我最新的“大作”:《学习方法》。

原文链接:http://qing.weibo.com/2494474521/94aea919330006hk.html

原创粉丝点击