论坛首页 移动开发技术论坛

垃圾书:杨丰盛的《Android应用开发揭秘》

浏览 119203 次
该帖已经被评为精华帖
作者 正文
   发表时间:2011-03-28  

大家好,我是《Android应用开发揭秘》这本书的策划编辑,首先谢谢大家在百忙之中拨冗关注和讨论《Android应用开发揭秘》这本书相关的问题,尤其是要感谢cloixio兄。

关于这本书,虽然它曾经带领很多Android的初学者进入了Android开发的世界,但是我也毫不掩饰地说,它的确存在一些瑕疵和不足。在这里,我首先向所有曾经看过这本书的朋友表示诚挚的歉意。

任何一本书,包括国外那些所谓的大师们写的书,都不同程度地存在一些问题,这本书就更不能例外了。

1. 反的方面

像cloixio兄这样批评本书的读者也不只他一位,我们曾经也在网上书店的评论中看到过类似的评论,但是都不具体。由于这本书自2010年1月出版以来一直都非常受大家的关注,因此我们也一直在留心收集大家的有价值反馈意见(包括批评的和肯定的),迄今为止,我通过当当网、卓越网和互动网这三大网上书店google收集到有价值的反馈意见100余条,我对这些意见进行了归类整理,总结出了10大类问题,这10大类问题便是我们这本书需要改进和进一步加强的地方。我与作者杨丰盛逐一对这些问题进行了讨论,并达成了共识,希望这本书在出第2版时能把这些问题都解决掉,希望能为读者提供更有价值的内容。在这里,我再次向所有通过各种途径为本书提出宝贵建议的读者朋友们表示衷心的感谢。

2.正的方面

这本书已经上市14个月,前期华章公司几乎也没有做任何宣传,没想到上市后大概过了3个月,在部分读者的口碑带动下,销售势头一路猛增,很快就跃居当当、卓越和互动网这三大网上书店计算机类图书的排行榜前列(至今仍在榜上)。本书出版时是针对2.0的,到现在已经更新至2.2,期间一共重印了7次,总销量20000册左右。本书的繁体版在台湾也已经上市了几个月,在台湾天龙书局(台湾最大的网络书店)也是排名前10。在这14个月里,我们通过几大网店、社区和读者自发为本书建立的4个群以及我们的读者服务信箱收集到了很多读者朋友对本书的肯定和赞扬,有的人说这本书让他受益匪浅,带他顺利地进入了移动开发行业,有的人说这本书让他获得了比以前更高的薪水和待遇。当然,也收集到了一些有价值的批评意见,对此我们一直心存感激。

我在这里列举本书在市场上取得的一些成绩并非是想炫耀,更不是想狡辩本书不存在问题,而是想说明一个问题:这本书在很多读者看来,还是很有价值的,还是能给他们带来帮助的。正因为有人认可,才会有口碑,正因为有口碑,才能取得这样的成绩。没有写过书的朋友可能不知道,如今出版行业(尤其是IT出版)活得很艰难,即使是机工、人邮、电子和清华这样的大社,每年销量能超过1万册的专业计算机图书恐怕也是屈指可数的。一本书能在这样的环境下取得这样的成绩,如果没有读者之间的口碑传播,几乎是不可能的。

3.关于卢梭的故事

同样一本书,为什么有人给予了极高的评价,为什么又人说它是狗屎?在探究这个问题之前,我先给大家讲一个不为人知的故事:

卢梭大家都认识,他是一个极爱读书之人,在他出名之前,他读了很多被世人称为经典的著作,但是这些著作在他看来都如同大家说的“狗屎”,4年时间过去了,他感觉自己读的这些书都没有用,感觉自己毫无收获,于是他很懊恼。为此,他去请教当时的一位高人,这位高人告诉他,其实每一本书对我们来说都是有价值的,这要看我们用什么样的心态和眼光去欣赏他。一席谈话之后,卢梭似乎明白了什么,他回到家里把他过去4年看过的书找出来又重新看了一遍,当他再次看这些书时,他突然发现,每一本书里都充满了真知灼见,收获颇丰。接下来的故事大家都知道,卢梭出名了,他成为了法国18世纪伟大的启蒙思想家、哲学家、教育家、文学家。

看完这个故事,我想有些朋友应该明白了为什么同样一本书会获得截然不同的两种评价。不同的人,不同的技术背景,不同的心态和眼光,最后看到的内容可能都完全不一样。我们回到《Android应用开发揭秘》这本书上来,它本身的确存在不少问题,但是很多读者的反馈告诉我们,它也有很多值得称道的地方。在当前已经出版的Android类图书中来说,无论是国外的,还是原创的,这本书的整体水平和价值应该都是最好的之一。可能看到这里有些朋友心里又开始不平了,没关系,我说是的是实话,事实的确是这样,不信大家抽时间去书店来把所有关于Android开发的书都找出来比较一下。

4. 关于国内的原创图书

从这个帖子的回复中大家也可以看到,国内的原创著作基本上是不被大家看好的,还是外来的和尚会念经。我已经在IT出版行业混了5年,对于国内外图书市场的现状还算比较了解。没错,国内曾经是有那么一些不负责任的书辜负了读者的期望,伤了读者的心。大家都觉得老外的书靠得住,可国外的情况其实并没有大家想象的那么乐观。虽然国内的各个出版社在引进外版书时都精挑细选,但每年仍然有很多质量非常一般的外版书在国内翻译出版。

写书的艰辛和不易,恐怕只有作者和编辑最为了解和体会。写一本书,少则三五月,多则一两年。平时我们晚上用来看电视、看书、玩笑游戏的时间,作者必须用来写作;周末我们用来陪家人,用来出去Happy的时间,作者又必须用来写作;上班的路上他们要思考今天的内容该如何写,下班的路上他们还要思考如何才能写得更容易让读者理解,甚至在马桶上也还在思考这样写是否合适……这期间可能有搞定某个难题的喜悦,可能也有被某个问题困扰数日的无奈。在写作的过程中,作者除了挖空心思把自己脑子里的东西条理而系统地通过键盘输入到电脑里,他们还需要为一些他们不太确定的问题查阅大量的资料,进行大量的求证。几乎所有的作者都和我们一样,除了写作,平时自己的工作也非常忙。这样的日子少则三五月,多则一两年,大家扪心自问一下,如果没有超常人的毅力,如果没有一定要把这本书写完并写好的决心,有多少人能坚持下来?

在我的作者中,有的作者为了写书,一连熬通宵数月,等书写完,感觉精神被被掏空了,同时身体也被掏空了,于是人大病一场,即使是面对读者的质疑和不解,但是他们仍无怨无悔。作为读者,不能容忍书中存在的问题,这很正常。但我在这里想说的是,希望大家都能多一些包容和鼓励。发现问题时,我们积极提出来讨论,帮助作者指出并解决问题;发现优点时,我们也不要吝啬我的称赞,也许一句简单的鼓励便能让那些写作过程中的辛酸消失不见,能燃起作者把这本书改得更好的热情。

无论我们的技术是深还是浅,只要我们没有写过书,我们绝对都低估了写书的难度,除了要专业技术过硬外,还要有毅力、有钻研精神,能耐得住寂寞。这几年来,随着全球社区化的发展,我很高兴看到国内有很多技术爱好者都成长了起来,而且他们其中有很多人也乐于与大家分享他们经历和积累的经验,希望能帮助后来的兄弟们学习和提高。我相信,只要大家能一起营造一个包容、鼓励的氛围,我想一定会有越来越多的朋友愿意来分享他们的所学所得,一定能促进国内的IT技术更快、更和谐地发展。

5. 关于作者杨丰盛

帖子里有朋友留言抱怨作者的态度不好,虽然这中间是误会,但是我仍然代表他向大家道个歉。我个人与杨丰盛有很深的交情,他不仅技术不错,年轻有为、做事认真负责,一丝不苟,而且还非常热心,过去我们收到的所有读者提问,他对逐一地给予了回答,耐心至极。关于cloixio兄这次提出的问题,一方面是由于他最近刚好特别忙,还没来得及仔细地回复;另外一方面因为cloixio兄提出的这个问题在他看来是存在争议的(回帖中也有不少兄弟支持作者杨丰盛的写法),而且cloixio兄的言辞稍些激烈了点,而且评价也略有些极端,(杨丰盛)作为一个年轻人,心里有些不快,我想cloixio兄和大家应该都是可以理解的,对吧?

理解万岁,谢谢大家!

5. 关于《Android应用开发揭秘》

最后,我们还是回到这本书上来,问题肯定是存在的,我们欢迎cloixio兄和大家客观地、实事求是地针对这本书中存在的问题进行交流和探讨,真理不辨不明。这些针对具体技术问题的讨论,不仅能帮助那些看过或未看过这本书的朋友,而且也能帮助我们改善那些的确存在的问题,从而让这本书更好。

最后,再次对所有关心和关注《Android应用开发揭秘》这本书的朋友表示诚挚的感谢。

0 请登录后投票
   发表时间:2011-03-29  
前几天还琢磨着要不要去新华搞本书看看,看来没必要了
0 请登录后投票
   发表时间:2011-03-29  
作者要开始寝食难安了,,LZ,你这是砸人家的收入饭碗啊
0 请登录后投票
   发表时间:2011-03-29  
I think there is no problem in book's example code.

I guess the author wants wait all bluetooth devices are discovered, then show every  thing in one time. this is very common way to convert asynchronous function to synchronous function. and this is very good for beginner to understand startDiscovery().

for expert, of cause, loop is not needed, expert might handle call back function to show the bluetooth device one by one. but it is different story.

we should support IT books which made in China, even we know Chinese IT book writer need improve themselves, we should support and encourage them, and don't say "Chinese translator are always bad...."

sorry I cannot input chinese
0 请登录后投票
   发表时间:2011-03-29  
kangfu 写道
I think there is no problem in book's example code.

I guess the author wants wait all bluetooth devices are discovered, then show every  thing in one time. this is very common way to convert asynchronous function to synchronous function. and this is very good for beginner to understand startDiscovery().

for expert, of cause, loop is not needed, expert might handle call back function to show the bluetooth device one by one. but it is different story.

we should support IT books which made in China, even we know Chinese IT book writer need improve themselves, we should support and encourage them, and don't say "Chinese translator are always bad...."

sorry I cannot input chinese


拜托请你参与讨论时,多看看回复。

for expert, of cause, loop is not needed, expert might handle call back function to show the bluetooth device one by one. but it is different story.
——这根本不需要什么expert ! 因为这个程序其实已经提高了BroadcastReceiver来处理显示搜索到的蓝牙设备!前面已经有人提出过这点,我也早已就这个问题做过说明。

至于国内IT作者需要鼓励,这个观点我认同。

再次重申,当初我发这个帖子,主要并不是针对作者!因为作者写一本书、只是想传达他的一些经验,虽然书中很多这样的垃圾的、经不起检验的代码,但至少对Android入门的人还是能提供小小的帮助的。

我发这个帖子,从某种程度是表达对javaeye上一群人云亦云的鹦鹉的不满——因为我也是看到很多人吹捧它,才去买这本书。但事实证明这本书的质量绝对是较差的一种!
不仅如此,这本书质量糟糕的图书,居然说什么“五大社区联袂推荐”之类的吹捧,这不也反应了国内IT群这种“党同伐异”的坏习气吗?

we should support IT books which made in China,
对于这句话,我觉得我做到是实实在在的support,难道你所谓的support就是无条件地大唱赞歌?
请原谅我,我做不到这样!
我是一个程序员!技术该怎样就是怎样!
事实上,我给他的是实实的support:一方面我购买了他的书,这本身就是最大的支持!另一方面,我看到他书中大量的错误,并愿意与他已经公开讨论,“道理越辩越明”,这对他自身的能力提高不是也很有帮助吗?

希望作者能力理解、接受我的帮助。
0 请登录后投票
   发表时间:2011-03-29  
cloixio, have you really run the code in the phone? that piece of loop code might be not unuseful, the looping blocks the thread, make the thread not be killed before all bluetooth device are discovered, we might need to keep the thread alive during bluetooth discovery.

if that code is really not useful, there is no harm, because there is sleep(100) function, this will not make your phone freeze.

what I don't like your post is: even the code is not perfect, it is not big deal, it is only minor problem. but you put your book in garbage bin and took a photo, this insult the writer.

Now you go home and run the bluetooth discovery code in the phone and report us the loop code is useful or not.

0 请登录后投票
   发表时间:2011-03-29  
kangfu 写道
cloixio, have you really run the code in the phone? that piece of loop code might be not unuseful, the looping blocks the thread, make the thread not be killed before all bluetooth device are discovered, we might need to keep the thread alive during bluetooth discovery.

if that code is really not useful, there is no harm, because there is sleep(100) function, this will not make your phone freeze.

what I don't like your post is: even the code is not perfect, it is not big deal, it is only minor problem. but you put your book in garbage bin and took a photo, this insult the writer.

Now you go home and run the bluetooth discovery code in the phone and report us the loop code is useful or not.



代码我已经测试过,否则也不会发帖。

the looping blocks the thread, make the thread not be killed before all bluetooth device are discovered, we might need to keep the thread alive during bluetooth discovery.
当你发表这个观点时,我的建议是找本好点的Java图书看看,比如孙卫琴的《JAVA面向对象编程》、如果想看英文的,建议参考《core java》,仔细学习一下什么是多线程的并发执行。看看A线程中的sleep(100)是否可以阻塞B线程。提醒一下:
_bluetooth.startDiscovery()方法是异步调用的。因为这个方法十分耗时,动辄1分钟以上。

what I don't like your post is: even the code is not perfect, it is not big deal, it is only minor problem. but you put your book in garbage bin and took a photo, this insult the writer

当然,你可以说这是个小错误,这是你的个人的想法。我完全同意你的想法,因为全书中大量充斥着这样的“小错误”!以致我看得郁闷万分,所以才上来发帖。
至于你说我伤害了作者?你确定?是伤害了作者?不是伤害了你?看到这么心痛,我开始怀疑伤害了你。sorry!

不过需要说明的是,作者整一本这样的书出来,还策划出互联网上一场“吹捧”,还搞出所谓的“五大社区联袂推荐”,害得我花钱购买了这样一本书,浪费了本人银子不说,还浪费我的大量时间,这难道不是伤害我吗?

从大的范围来看,作者整一本这样的书出来,不致力于以书的质量来赢得市场,而是靠在互联网上策划一群“吹捧”
靠整个什么“五大社区联袂推荐” 来欺骗大量求知的程序员,难道不是对中国IT图书市场、IT行业的伤害吗?



0 请登录后投票
   发表时间:2011-03-30  
那个蓝牙的例子和其他一些,如3D的例子,有的是code.google.com中现成的例子。老外写的,并非谁抄谁。
0 请登录后投票
   发表时间:2011-03-30  
基本上靠网上的例子和电子书入的门,现在的书太贵。
0 请登录后投票
   发表时间:2011-03-30  
编辑出来说话啦   至少态度还是很诚恳的

我只是一个初级的Android开发者  先不说代码对与错

读者花钱买了书 肯定有资格来发表评论

只想说   只可惜我们生在天朝   有些东西是我们无能为力的

大环境就这样 
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics