高博老师的信1

来源:互联网 发布:光环国际的大数据行吗 编辑:程序博客网 时间:2024/06/10 11:03

 

  见信好,来信收到,勿念为盼。

  信中提及的问题很好,很有普遍性,在此尽绵薄之力作答,不当之处还请指正。

 

一、语言和平台的优劣之分?

答:语言和平台本无优劣之分,“能够解决当前问题的”就是最好的,谁能说出Java、C++和C#这几种根本设计出发点就完全不同的语言/平台谁“更好”呢?Java更适用于快速架构,因为它主要地是依靠Beans库工作的,它非常工程化。C++则对程序员的要求非常高,它基本上和C一样,有更多的汇编背景,面向对象的语义是建构在比较明确的低层语义之上的。因此比较好的C++教材会向你讲明白,那些看起来比较“高级”的操作,有哪些C的甚至是汇编的背景。这是一种重要的去蔽,带着比较清楚而明白的低层的思考方式来认识C++,非常有助于学习它的一些看似复杂的语法,如RTTI和traits等。而C#则基本上是为Microsoft的.NET平台设计实现的,其它的C#编译器除了Borland的C# Builder以外,是比较少的(但它仍不失为一门语言,而Java则本身已经成为了一个平台,Stroustrup语),而且它的控制权基本上在Microsoft Visual Studio开发组的语言规范组(当然提交给ISO以后会成立另外的专门委员会,这就不一样了)。如果你选择从C#开始学习,这当然是可以的,不过你会发现,在基本层面上,它和C++的区别并不大,85%是完全一样的,在细节上(如指针的语义、Boxing/Unboxing和字符串字面常量的处理等,C# 2.0中还增加了诸多的新特性,如Nullable Type)略有不同而已。我们如何能说这几种语言/平台哪一种更“好”呢?它们在各自的领域中有特别的长处,诚然它们的领域是交叉的,而且C++在这三者中间,适用的领域却是最广的(见D&E,Stroustrup著)。

 

二、C++过时了吗?

答:不,我不这么认为。任何说C++的用户数不及Java的人,都并没有官方的调查证据,而只是因为自己活动的圈子里使用Java的人比较多。事实上,Java平台的发展速度是非常快的,但这和C++用户数的增长并不矛盾。作为通用型的语言/平台,Java替用户完成了非常多的基本操作,甚至诸如大整数之类的类型都已经封装完毕,用户只需要将相应的包导入并调用即可。但C++则秉承了C语言“信任程序员”的风格,将尽可能多的选择权交给用户(当然,托管的C++也根据多年的模式对资源进行了诸多的保护措施),用户必须在许多场合下自己作诸如存储管理、异常条件下的安全、类继承体系中的类型推导等决定。这两者是完全不同的,Java安全,但C++的效率非常高,这一条就决定了C++将在相当长的时间内仍然是主流语言,而且将扮演语言革新的领头角色。STL的标准化和广泛应用,以及范型(Generic)观念的深入人心,已经奠定了C++的不可动摇的第三代语言的主流地位。

 

三、我怎样学习C++?

答:C++的学习和一切其它知识的学习一样,是因人而异的,如果你以前有C语言的基础,或你以前有汇编语言的基础,那末看C++的视角会完全不同。但大凡是学习,我认为无非是端正态度(不为乱七八糟的考试而学习,而要切实地为获取一些基本观念而学习)、夯实基础(不浮不躁,不为新名词新概念而眼花瞭乱,愿意反复地思考最基础、看起来最微不足道的问题)、选择好的教材(中国人写的书一律不看,Scott Meyers、Stanley Lippman、Bjarne Stroustrup、Bruce Eckel的书要一看再看,多多益善)、多做实验(只有一种语言,却有1000种编译器,选一两种常用的,它们的错误信息是比什么书都好的老师)、多和人交流(闭门造车那是高人才做的事,我们还是集臭皮匠之智以为诸葛亮之事比较明智一点)、把C++作为日常用语(并没有在开玩笑,机械语言都有工程和事实背景,有些简直就是概念的直接写照,试着用C++去描述你看到的、你想到的事)。

 

四、有关理论学习和今后发展。

答:因为你才大一,职业选择是你现在急也急不来的事。更何况,计算机科学理论与技术实践是科学和技术分类中少见的有如此大的关联性的学科。最怕的无非是浮躁二字,你现在觉得自己“想成为信息安全专家”,可你对“信息安全”包括哪些学问到底了解多少?我看,你多半是觉得成为一名“黑客”会“比较酷”,抱着这样的态度去学习,只好成为一块废料(请原谅我的说话方式)。不要对别人掌握了C++感到奇怪,他们无一不是付出极大的代价,包括时间、金钱,甚至变得和人很难相处(当然也不是普遍规律)。有一点是可以肯定的,那就是你肯投入地(用别人用来消磨的时间!)去学习所有的相关的理论(如硬件和体系结构、编译理论、低级语言、离散数学)的话,你当然会变得很优秀,这是非常自然的。当然,在现在的大学生中,能肯在学业中投入任何一份附加精力(不为考试而为自己的理论研究兴趣!)的人,是太少了。在你的信中,我也感到了一丝危机。但我可以保证,如果你可以坚持不懈,在真正的职业选择来临的时候,你会非常清楚地知道自己适合做什么,也会自信满满地去应聘任何你梦中的理想企业。你的人生将是明白的而不是迷糊的,将是充实的而不是空虚的,将是快乐的而不是自责的,将是成功的而不是失败的。

 

  希望我的这封信能够对你有些帮助!

 

高博

于微软中国

 

 

原创粉丝点击