Henrylgz的Blog

学习,生活,思考,一切都在继续。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

作为一个软件开发人员,最痛苦的地方是什么?没有好的中文技术书籍。
满天的中文技术书籍,优秀者凤毛麟角,让我们不得不硬着头皮去钻英文技术文章。
这其中的苦处,相信大家都有同感。

一本垃圾的技术书籍,最大的帮助就是让你浪费了时间而且还把知识学得一团浆糊。
很不幸的是,我得到了这样一本书,还好,我及时地发现了这是一本不值得再看的书籍。
我只花了几个晚上,只看了前面50页的内容,就发现了4,5处错误。。。
很遗憾,我的学习C#的热情就这么小小地浇了一瓢冷水。。

本来,这本书是在博客园这里一位园友推荐的,他热心的介绍这本书,
并且免费寄给我阅读,在此,我由衷地感谢他,不论书籍如何,这种衷心的帮助人的做法让我非常感动。
然而,做法是很好,但是这本书的质量实在坏了这一段交流。
也许我不应该这样兴师动众的批评这样一本书,但是本着负责任的态度,还是要说一说。

刚开始看没多久,就有了一种感觉:此书的部分内容是翻译的,有些地方翻译得很蹩脚,
个人也曾经翻译过自己喜欢的计算机书籍,所以有一些经验。
翻译的质量差到什么程度?举个例子:

public struct Complex
{
 
public double Real;
 
public double Imag;
 
 
public void ComplexAdd(Complex Operand, Complex Plus)
 
{
  Plus.Real 
= Operand.Real + Real;
  Plus.Imag 
= Operand.Imag + Imag;
 }

 
 
 
}

看到这一段,你认为Complex应该代表什么呢?很明显就是复数。
但是本书中确是“复杂数值”。。。。
很明显,不知道从哪里找来的代码,翻译的时候,直接用词典之类的工具翻译成了复杂数值。。
不幸的是,在后面的部分,又再次发现了类似的例子,这一次,我找到了代码:
http://support.microsoft.com/kb/307368/ja
在书中,第2章的第1个例子代码就和这个一模一样,只不过把San Francisco Giants翻译成了洛杉矶巨人队。。。
例子代码:

    class BaseballTeam
    
{
        
private string Name;
        
private string Stadium;
        
private int Wins = 0;
        
private int Defeats = 0;

        
public BaseballTeam(string Nm, string St)
        
{
            Name 
= Nm;
            Stadium 
= St;
        }


        
// 定义一个公共方法。
        public void PlayGame(int RunsFor, int RunsAgainst)
        
{
            
if (RunsFor > RunsAgainst)
            
{
                Wins 
= Wins + 1;
            }

            
else
            
{
                Defeats 
= Defeats + 1;
            }

        }


        
// 重写ToString 方法。
        public override string ToString()
        
{
            
return Name + ", 比赛场地" + Stadium + "" +
                   
" 赢" + Wins + " 输" + Defeats;
        }


        
// 定义一个枚举类型。
        public enum Result
        
{
            Win,
            Lose
        }


        
// 定义PlayGame 方法的多态版本。
        public void PlayGame(Result Res)
        
{
            
if (Res == Result.Win)
            
{
                Wins 
= Wins + 1;
            }

            
else
            
{
                Defeats 
= Defeats + 1;
            }

        }


        
// 定义一个只读属性。
        public double Record
        
{
            
get
            
{
                
int played = Wins + Defeats;
                
return (double)Wins / (double)played;
            }

        }


        
// 定义一个可读取及写入的属性。
        public string Ballpark
        
{
            
get
            
{
                
return Stadium;
            }


            
set
            
{
                Stadium 
= value;
            }

        }

    }



其他几处错误,我不想再举出了,截图错误,概念含糊不清等等。。

这就是微软中国的专家推荐的书籍吗?不要把程序员当作傻瓜,不要拿粗制滥造的东西来充数了!
为什么就不能把一本书仔细推敲,仔细校对一下呢?
平均10页就有一处低级错误的概率应该不能用简单的失误来解释吧?

好书不是吹出来的,是读者由衷的赞叹出来的,看看那些经典著作,那一部不是凝聚了作者的心血?
我们希望能有更多优秀的书籍可读,尤其希望能有更多本土的优秀作品,但是像这样的粗制滥造之作,还是越少越好吧。