博文
[转]寻找中国的比尔·盖茨(2005-01-01 13:53:00)
摘要:[转] 寻找中国的比尔·盖茨导读--几乎没人怀疑中国的时代已经到来。但这是否意味著盖茨已在中国出现了呢? 几乎没人怀疑中国的时代已经到来。但这是否意味著盖茨也已在中国出现了呢?这正是我要考察的问题。7月末,我用两周的时间采访了多位中国的IT企业家,它们的进展速度之快已经该引起硅谷的警觉了。中国也许没有自己的比尔?盖茨,但是她却拥有这些年轻、骄傲、坚定的企业家群体,他们眼里只有无限的未来。这和美国完全一样。 90 年代初,按中国的俗话说,王志东“下海”了。这位北京大学的毕业生放弃了稳定的工作,在一所废弃学校里成立了自己的公司。学校在“电子一条街”附近,这条街因充斥著叫卖电子机算机配件的小摊而得名。王志东同几个朋友一道,编写能使微软公司(Microsoft)Windows 和 Windows 兼容程序在中文环境下运行的软件平台。到 1997 年,中国近 90% 的 PC 都安装了这种软件。后来,网站热来到中国,王志东决定把自己的公司变成一家门户网站。 王志东经历了 IT 创业者通常碰到的一些难题,比如资金缺乏、合同问题和惧怕微软等,但他也遇到了一些西方首席执行官从未见过的麻烦。例如,是否应该安装抽水马桶。1997 年,王志东公司的美国财务总监要求他在公司的新办公室里安装抽水马桶。听到这个要求,王志东吃了一惊。他从没在有抽水马桶的办公室里上过班,也不理解这位财务总监怎么就不能用中国的蹲坑。他说:“我们中国人习惯上这种厕所,我们管这叫`中国功夫'。”财务总监再三央求,说他每天下午三点都要借故离开,溜到酒店使用那里的厕所。 每当讲起这个故事,王志东就会笑得前仰后合。这家看不上现代化抽水马桶的公司在短短六年里成了新浪网,相当于中国的雅虎(Yahoo),营业额达到了 1.6 亿美元,付费用户数百万,市值达 11 亿美元(公司股票已在纳斯达克交易)。当然,公司的卫生间里也早已安装了抽水马桶。37 岁的王志东已经成为中国技术领域里的教父级人物。不过,他并不安心当这个角色:2001 年,王志东与新浪公司分道扬镳,创办了一家新公司─“点击科技”,王志东认为,他的公司只需有一种应用软件产品就能和微软、IBM、网迅(WebEx)、......
[转]C++/C试题(2004-12-31 19:46:00)
摘要:C++/C试题[转]本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。笔试时间90分钟。请考生认真答题,切勿轻视。一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为: if ( n == 0 ) if ( n != 0 )以此类推。请写出 BOOL flag 与“零值”比较的 if 语句:请写出 float x 与“零值”比较的 if 语句:请写出 char *p 与“零值”比较的 if 语句:二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)char str[] = “Hello” ;char *p = str ;int n = 10;请计算sizeof (str ) = sizeof ( p ) = sizeof ( n ) = void Func ( char str[100]){请计算sizeof( str ) = }void *p = malloc( 100 );请计算sizeof ( p ) =三、简答题(25分)1、头文件中的 ifndef/define/endif 干什么用?2、#inc......
C++的一些学习经历(2004-12-25 21:28:00)
摘要: C++的一些学习经历 第一本C++书是北航的麦中凡老师写的《C++程序设计语言教程》,觉得虽然是比较老的书,但看过之后给我还是有不小的收获。第二本书是机械工业出版社翻译的《C++编程思想》(第一版),给我的感觉似乎有一些晦涩难懂的地方,但总体来说,不愧是Amazon上4星读本啊,的确给人以相当深刻的认识。再后来渐渐买了几本C++的书籍,如华中科大出的《C++标准程序库》、《Effective C++》2nd 。可惜由于囊中羞涩,书也就只买了这么几本啊。还有几本经典的实在扛不起了,比如《C++程序设计语言》(特别版)、《泛型编程与STL》、《C++ Primer》3rd等。 ......
C++大师Stan Lippman:我对中国程序员的忠告(2004-12-25 21:07:00)
摘要:C++大师Stan Lippman:我对中国程序员的忠告[转] 天极网特稿(记者 宋保强)C++语言的创立者,斯坦.利普曼(Stan Lippman) 9月17日参加了在北京召开的微软技术大会Tech.Ed2004并做了"The C++ Binding, Integrating a Static and dynamic "的主题演讲。利普曼和天极网记者畅谈了对“中国程序员的30岁现象”的看法,对C++、NET、面向对象等新技术发表了自己的看法。 天极网:做为C++大师,你认为一个优秀的程序员应该具备什么素质? Lippman:不仅是C++,对所有的语言而言,我认为一个好的程序员应该具备独立性,而且要不惧困难,你必须心甘情愿的面对失败。所谓的独立性就是因为有时你要能独处,你必须相信你能处理你明白的事情。我认为一个好的程序员要具备创造性,而管理人员要确保程序员有独立的空间,成为他们自己。 天极网:中国的程序员被一些人认为是吃青春饭的,程序员好像转向管理职位才有职业发展空间,你怎么看? Lippman:我所认识的一些Unix创立者被提升为部门主管,但他们拒绝了提升,回到了程序员的职位上,因为他们认为这是自己能做得最好的地方。总之,最后辞掉了部门主管的职位,回去做研究去了。 在美国,我们认为一个好的程序员并不意味着他能成为一个好的管理人员。如果仅仅是为了金钱的原因而强迫程序员们去从事管理工作,这与公司的最佳利益是相违背的。因此我们发明了一个所谓的"多层升迁路径",随着技术经验的增长,微软分别为程序员设置了程序员、高级程序员以及MPS等等不同级别的技术职位。微软能认识到你的能力,如果你愿意成为管理人员,当然是可以的,但你不必做你不开心的事情,只用尽量保持你编程的创造性。 在上世纪八十年代,美国的公司都被一个相同的问题所困扰,起因就是迫使年龄大的编程人员不再从事编程工作。我猜想在中国,随着程序员年龄的增长,这种问题也会发生! 天极网:你如何看待C++语言的未来和C++与C##的关系? Lippman:如果你想做web service,asp等等,c++将不会很适用,因为这个语言不灵活,它太繁复了,它不是为了网络服务(Web service)而设计的。 C##就是为了网络需求而设计的,.net的理念就是并不是一种语言能解决所有的问题。它不像Java,迫使你只......
C与C++的区别(2005-09-14 11:42:00)
摘要:[转]C与C++的区别C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。 对语言本身而言,C是C++的子集,那么是什么样的一个子集?从上文可以看出, C实现了C++中过程化控制及其它相关功能,而在C++中的C(我称它为“C+”),相对于原来的C还有所加强,引入了重载、内联函数、异常处理等等玩艺儿,C++更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和包容器类等等。 再提高一点,在C++中,数据封装、类型这些东东已不是什么新鲜事了,需要考虑的是诸如:对象粒度的选择、对象接口的设计和继承、组合与继承的使用等等问题。 所以相对于C,C++包含了更丰富的“设计”的概念,但C是C++的一个自洽子集,也具有强大的功能,同样值得学习。 几点学习建议: 1.基本概念很重要。无论学C,还是学C++,基本概念都是第一位的,也是比较困难的,但只有把握了基本概念才能把握整体脉络,才能居高临下。 2.C是C++的子集,它的基本概念和设计方法相对比较容易理解,初学者可从它入手。 3.如果要学好C++,建议初学者最好别在如VC,BCB平台下写程序,那种自动化的代码生成,花花绿绿的界面,会让你手足无措。最好先找一片空地(unix,dos),从头做起,写几个大点的程序,数个回合,再到VC,BCB下看看,你会轻松得很。在我看来,学好C/C++是成为VC,BCB高手的必由之路。 4.不要妄想速成,必须得一个byte,一个bit的去抠,尽量搞清楚每一个问题。 5.几本好书: 机械工业出版社的那套“计算机科学丛书”从C到C++,到面向对象设计,一应俱全,都TMD是经典中的经典,而且价格公道,童叟无欺。 国内也有几本好书,......
开发者上网推荐站点(2004-12-24 19:37:00)
摘要:想做一位出色的开发者吗?没问题!但你一定要随时了解和掌握最新的业内新闻和技术。如果落在了后面就有的好看了。我在这里总结了一些优秀的网站供你了解最新的有关信息和趋势。 为了在这份列表中容纳合理的网站我真是费尽脑筋。首先新闻组、用户组或者邮件列表都排除在外。当然,这些也是重要的信息来源,你也应该有所注意,不过,这些信息来源几乎不可能实现一般化,写在本文里有点不合适。 接着我就着手编辑这份推荐网站列表,马上,我意识到要把我的最爱全写下来这个列表保不准会有1米多长呢!除了下面列出的网站以外,网上还有非常多的专业信息站点。所以我决定后续一篇文章对这些专业技术站点进行专门阐述。 最后就得出了以下的网站列表,这些网站都是目前在网络上比较活跃和有名的站点,其中的大部分都对其内容进行了校验。过时的信息少的多。 下面就是处于技术趋势前列的最基本信息网站列表。 技术新闻 以下这些网站提供最新的业内新闻。我按照自己的口味选出若干。 CNET的News.com—“技术新闻优先。”这是著名的Builder.com的姊妹站点,News.com提供了大量的最新技术新闻。http://news.com.com/ The Register—“紧跟IT步伐。”该网站倾向于提供硬件和系统新闻,但也不排斥其他方面的主题新闻。The Register还经常摘录其他网站遗漏的新闻。http://www.theregister.co.uk/ Slashdot—“技术大众新闻网站。”这个网站明确为开放源代码社团服务,但涵盖了大量的其他素材,该网站的用户量相当大,经常充斥火暴的讨论。真是个人人都该访问的网站。http://slashdot.org/ Newsforge—“Linux和开放源代码运动在线报纸。”这个评语相当程度地说明了该网站的内涵。这些家伙始终盯着Linux和开放源代码的一举一动,什么都没有放过。http://newsforge.com/ 一般开发 多增加自己的知识面总没有坏处,在激烈竞争的时代就得睁大自己的眼睛把世界看个明明白白。一般性的开发网站多得不计其数,要从质量和可靠性来看,下面的这些网站特别适合咱们走一遭。 Builder.com—“超越代码颠峰。”你来对了!Builder.com内容非常丰富,主题极富于多样性,从编程到系统设计到开发项目的管理应有尽有。该网站还包括产品......
[转]写给想当程序员的朋友(2005-09-14 11:26:00)
摘要:[转]写给想当程序员的朋友 --――一个还不太老的程序员的体会 (初稿) 软件以程序员为本(《程序员》) 谨以此文献给所有想当程序员的朋友 (一) 文章由来及个人经历 我是一名计算机专业的本科毕业生,毕业已经1年多了。毕业后从事的是软件编程工作,经常有其他专业的朋友想从事软件编程工作,向我请教如何,因为我自觉涉行不深,不敢信口开河,无奈朋友信任,我不得不郑重考虑一下这个问题了,来帮助朋友选择和回报朋友的信任。 这也就是此文的由来。 还是先谈谈我个人的经历吧。(是不是有点俗套,但我觉得了解我的经历,有助于理解我话的含义;我一向认为不了解古龙的生活经历的,不会真正读懂古龙的作品和古龙笔下的英雄的)我本科就读于南方一所著名的高校(因为自己的不成气,愧谈母校名谓),学的就是计算机专业。上本科时,几乎没有认真的听完一门专业课程,上课看报纸睡大觉,下课看录像看小说看球赛,临考抱佛脚,每次考试和课程设计都是蒙混过关。(于之相对是,我选修的工商管理和经济贸易方面的课到是听得不亦乐乎,考的分数颇高,也许这才是我的真正兴趣所在。) 总而言之,大学是混过来了,对专业的理解和掌握程度,应该没有达到毕业要求的合格水平。(也很后悔,但是有什么用呢,当时不知道珍惜;如果上天再给我一次机会的话,我一定会抓住,多看点美国大片少看点港片;现在,重回校园是我的一大理想)但是大学的学习使我有了一个简单的知识框架(总算学费没白交),我对一个朋友这样形容过我的这个知识框架,“它不是钢筋铸的,是稻草扎的”,哈哈哈,不要笑,真的,我敢说很多本科毕业的朋友的本专业的知识框架也只不过是“稻草扎的”。直到现在,我一直觉得自己的基础知识还是很薄弱,一直想抓点时间,把基础书本好好的温习一下。(此项任务正在计划和实施中) 毕业后,分配到某研究所工作。当领导让我选择自己以后的工作方向时,我毫不犹豫的选择了软件(也不知道到底是对还是错,但我决不后悔)。此研究所主要是以硬件为核心搞通信控制设备的研发生产;软件是辅助,所以也不受什么重视,很多搞软件的人都跳槽走了,留下来的大都是一些已经废掉和行将废掉的“伪/萎”程序员(名副其实的“软件人员”)。在这里感觉不到什么高紧张和高技术程度的研究和开发;软件开发的技术含量极低,以致于大部分人只有半年的学习和开发经验,以后都是这些知识和经验的重复利用。(我问过其他到研究所工作的同学,他们说都一样......
利用键盘钩子捕获Windows键盘动作!(2004-12-24 10:15:00)
摘要:[转]利用键盘钩子捕获Windows键盘动作! 在科研生产中对研制、调试操作的记录是非常有必要而且是有很重要价值的。通过对记录信息的分析,可以在事故发生后准确的分析出事故的起因、操作是否存在失误等许多重要线索。通常需要记录的信息是多种多样的,如环境温度记录、软件运行记录、文件访问记录等等。这里将以键盘信息记录为例来讲述类似的实验信息自动记录的一般实现方法。 由于需要记录当前系统下所有应用程序的键盘录入记录,因此必须采取某种特殊的技术来实现本进程(监视程序)对外部进程键盘操作信息的获取。这种技术便是本文将要论述的核心--系统全局钩子。本文下面将对Win32平台下全局钩子的运行机制进行介绍并给出了一个具体的由VC++6.0编写的捕获键盘动作的键盘钩子示例程序。 系统钩子和DLL 钩子的本质是一段用以处理系统消息的程序,通过系统调用,将其挂入系统。钩子的种类有很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。此时在钩子函数中就可以对截获的消息进行加工处理,甚至可以强制结束消息的传递。 在本程序中我们需要捕获在任意窗口上的键盘输入,这就需要采用全局钩子以便拦截整个系统的消息,而全局钩子函数必须以DLL(动态连接库)为载体进行封装,VC6中有三种形式的MFC DLL可供选择,即Regular statically linked to MFC DLL(标准静态链接MFC DLL)、Regular using the shared MFC DLL(标准动态链接MFC DLL)以及Extension MFC DLL(扩展MFC DLL)。 在本程序中为方便起见采用了标准静态连接MFC DLL。 键盘钩子程序示例 本示例程序用到全局钩子函数,程序分两部分:可执行程序KeyKook和动态连接库LaunchDLL。首先创建一个MFC AppWizard(DLL)工程,并选择Regular statically linked to MFC DLL(标准静态链接MFC DLL)选项,以建立MFC扩展动态连接库LaunchDLL.dll。之后,在相应的头文件中添加宏定义和待导出函数的声明: #define DllExport __declspec(dllexport) …… DllExport ......
对目前主流开发技术的分析和总结(2005-10-11 01:53:00)
摘要:[转]对目前主流开发技术的分析和总结一、引言 我为什么要写这篇文章 首先,我要限定我文章的范围,我讨论的问题局限于桌面应用开发领域和企业应用开发领域,所以我的结论并不适用于整个软件开发界,比如我说C语言已经退出历史舞台,这对于写嵌入式系统的人和编写操作系统内核的人来说显然是错了。我写这篇文章的目的主要是: *简单的介绍并评价当前主流技术 *比较当前的主流技术 *预计技术的演变 如果你想做程序员或者已经是个程序员,你可能会面对这些困惑: *学什么语言呢?Delphi、C++、VB、Java、C#、PHP、Python? *选择什么开发工具呢?Delphi、VC、C++Builder、JBuilder? 当你已经入了门,有了一定的基础之后(可能已经通晓了几种语言),你会面临进一步的困惑: *MFC和VCL之间是什么关系? *J2EE到底是什么?.Net到底是什么?两者有什么本质的区别,我应该学习哪一个呢? *COM那么复杂,为什么很多地方都用到它?我必须学习它吗? 如果是作为一个软件公司,如果不是那么大,如果你的公司还没有一个真正的技术上的灵魂人物,那么你也会面临同样的困惑。技术问题纷繁复杂,让你不知所从,而且真正的精通每一项技术都需要巨大的时间和人力的投入,你怎么办?选择哪种技术作为公司的主流技术呢?选择的方向是否正确是个关乎你的公司的生死存亡的问题。你面临着这些困惑吗?如果是,那么请让我试着为你拨云见日。 我的故事 在我上大学之前,我从没见过计算机。大学的时候,正是Dos和FoxBASE的年代,也正是计算机软件开发世界几件伟大的事情发上的时候:(Windows 3.1、Borland C++3.1、Visual Basic1.0的推出也是伟大的事情,但那时候我还不知道计算机为何物)Widnows 95推出,并开始应用;Visual Basic5.0推出,开发工具中第一次出现了成熟的、被广泛应用的Auto Code Completion技术;Java推出;ASP技术开始盛行,Windows DNA技术被理解和接受;标准C++诞生;Visual C++6.0推出;J2EE规范推出。 成为一个程序员对我而言并不顺利,因为我不是科班出身。我入门的程序语言是FoxBASE,这让我一直对FoxBASE有种特殊的感情,我也正是通过V......
