Archive for the ‘在键盘上冥想’ Category
还是脚踏实地比较好
今天收到CIKM的拒信,虽然录取率比较低,不过这并不是主要的借口。
得到的三个评语比想象中的要严厉,不过也无可挑剔。很明显,至少有两位是“数据挖掘”和“机器学习”领域的专家。其中一位毫不留情地说出,我的工作基本没有意义,同时图表有很多不精确的地方。另外,有一处,这位专家指出我使用图来代替表格的初衷是希望夸大本来微不足道的数据差别的影响(尽管这个想法的确存在我最开始做数据的时候,但我的确不是故意这么做的,导师给我说,最好来两个图,免得全是图表太生硬),这么细微的问题都被发现了。另外一个专家给我指出了两个非常重要的参考文献,并且态度温和地告诉我,我所使用的方法在该领域已经过时,最后评价“总体有意思,不过价值非常小”。
此外,有两个专家告诉我,我需要一个英语地道的人修改我的行文和组织。
恩,看来这些可以算作消除一下大家浮躁的心理。抱着东拼西凑的想法,即便是高级地东拼西凑,是做不了学问的。当然,我为自己辩护的是,我知道我所做的工作还很初级,这次投稿仅仅是想看看正式的回馈是什么样子,但是10页的文章,本来还有一点点自己为是,现在看来十分可笑。
再次说明,即使是很不错的课程项目,不经过重新仔细思考,与真正的科研成果还是相去甚远的。还是从最基础的慢慢学走,别眼高手低了。
末代皇帝
前两天看了电影《末代皇帝》,心里感触良多。其中,溥仪在文革中的经历虽然只有一点点的描述,却让人意味深长。
当口呼“万岁”,手挥《红宝书》,跳着“忠字舞”的红卫兵和红小兵走在街头批判“反革命分子”的时候,溥仪似乎感觉到有一些东西是曾经出现在清朝皇宫里的,出现在遍布日本人的天津的,出现在他用以恢复满清的“满洲国”中的。有一些东西没有轻易地消失。
那些可以轻易忠于朝廷的人,和完全忠于“毛主席”的人,似乎内心深处都有着同样的某种神秘的向往所联系。于是,我们心中的“皇帝”真的就消失了吗?当我们心里常常去渴望贤明的领导时,有多少是那种古时候希望“民君”的想法在里面?恐怕只有我们自己知道。封建王朝可以一朝倒塌,可是封建思想却很难去除。
我们常说,“历史是人民创造的”。可真正开始批判历史,我们却用着简单的价值道德观念。于是,慈禧成为了中国走向没落的代言人,于是溥仪成为了复辟势力的代言人,于是毛泽东成了文化大革命的代言人。可是难道这些人是孤立存在的?难道历史是这些人表演的?
历史不是演戏,于是往往说不清楚谁是主角谁是配角。溥仪在监狱里,碰到了“满洲国”里的总理、内政大臣、卫队长,慢慢地,他才知道了那些在“满洲国”里他所不知道的秘密。虽然在真实的历史中,溥仪是受到了毛泽东接见的,但是电影里却没有表现这一幕,反而仅仅表现了文革中,街头的一景。人人都参与了。
是的,历史是人人都参与了的。当我们可以很容易找到某些历史事件的代言人的时候,我们是否忘记了我们也曾是历史的书写者了呢?
前不久,南方都市报的编辑长平写了呼吁反思文革的文章。他说,政治运动绑架了一代人的青春。通过《末代皇帝》,我突然发现,也许我们应该换一个角度,为什么不说,整整一代人去绑架了一个国家的某个时代呢?政治运动绑架了一代人的青春,说上来是一个人人受罪人人遭殃的年代。但是我们仔细看看,那场政治运动是不是又是人人参与,几乎每个人既是受害者又是加害者的角色呢?要不然,那么多的红卫兵,红小兵,以及领导红卫兵和红小兵的人都是哪里来的呢?连“满洲国”的最高首脑皇帝都能被蒙在那么的历史事实背后,为什么仅仅选择去反思某个人在政治运动中的角色呢?到底是谁绑架谁恐怕真的很难说清。
希望大家反思反思那种任何事情马上就找准一个矛头,然后狠狠批判的手法。不要忘了,可能人人都是参与者。
社交型网络–Social Networks (三)
在前两次谈了关于社交型网络的美丽画卷和机会之后,我们这次来看看人们社交型网络发展到现在所面临的一些问题,而这些问题才真正是我们需要好好思考和关注的。
第一次我说了,促使我写这三篇文章的很大一个原因在于我参与的学校项目。这个项目邀请了宾夕法尼亚地区一些公司和组织来针对社交型网络的前景进行了三次座谈,这三次座谈我都参加了。应该说,三次座谈都有一个共同的特点,那就是参加的人对社交型网络都抱有极大的热情,同时也抱有极大的怀疑。
热情在于我前面两篇文章所提到的那些东西,大家都希望通过社交型网络带来一些变化。商业公司希望能够有崭新的商业模型出现,而另外一些组织则希望通过社交型网络达到组织的沟通和结构优化。然而,可以说非常实际的问题在于,现有的各种社交型网络并没有解答这些真正在工作第一线上的大量问题,尽管已经有了一些成功的案例。
对于类似Facebook、LinkedIn和Second Life这样的社交型网络服务商,很多人保持着相当高的怀疑态度。最大的问题就是,他们如何赚钱?
的确,这不光是普通人希望了解的,更是这些社交型网络服务商面临的问题。不能不否认,直到目前,这类服务商依然通过风险投资维持生计,而少有的收入来源也是并不是什么秘密的广告收入。盈利模式的单一和不稳定导致了这些服务商并不被真正看好。其次,社交型网络能够短时间内聚集大量的人气,然而真正利用社交型网络达到沟通、协调目的的又有多少呢?特别是对于商业和组织而言,并不是缺乏聊天、发照片的工具,而是希望有一个新的工具能够带来便利,所以,Facebook之流尽管花哨,却并不实用。人们希望的是办公套件、即时通讯、维基百科之上的东西。而很显然,目前还并没有类似的工具。
其次,工具仅仅是工具。并不是说IBM使用了Second Life,我们也就使用Second Life。很多问题不是单单利用一个工具就解决了的问题。很多企业希望能够发现社交型网络背后真正的价值。而不是说局限在某一个特殊的计算机工具。
三次会议之后,人们发现,真正困扰大家的其实并不是社交型网络,而是科技与人的关系。到底是科技推动人,还是人去推动科技?尽管不能那么截然翻开两者之间的关系,但是很多公司的人都对马上使用各种新兴计算机软件产品从而带来变化并不感冒。大家想知道为什么。
我清晰得记得二月份的时候,有一个公司的CEO坐在我旁边说了这样一番话:“我们觉得我们已经足够好,为什么要改变,谁能保证改变之后我们已经能够得到那些所谓的好处?社交型网络有可能又是一个炒作的泡沫,就像第一次互联网泡沫一样。时至今日,有不少公司连计算机都不怎么使用,照样能够运营良好。没有任何人说,哪样科技是必须的。”此人在那次会议的上大唱反调,让人觉得他来的目的不纯。不过非常有意思的是,后来我去这个人所在公司网站看,才发现,这个网站居然是提供社交型服务的,一个面向希望转学的大学生的网站。看来,这个CEO思考的其实就是他们所面临的困难和难题,同时也说明,没有足够的理由,真正的商人是不愿意花钱来买“新、奇、乐”的。此人说的是实话。
社交型网络的确不是万灵药。社交型网络的价值和用处并不是想象中的那么大。将近10年前的互联网第一次春天,仿佛一切东西放上网络就成了金子,仿佛一切东西加上一个.COM就时髦起来。然而,残酷的现实让人们认识到了,哗众取宠是相当容易,可真正的商业模型却非常困难。10年后,当一切都要以2.0来冠名的时候,我们是否也有一定的紧迫感和危机意识呢?不完全是。
我目前的实习工作就是在一家小的软件公司开发社交型网络产品。随着开发的进行,我越来越发现,社交型网络其实并不是什么很特别的东西,真正特别的是,如何处理现有的商业模型和以后的模型。社交型网络如果带来现有客户关系和社会关系的变化,那么谁为这个变化买单?这些才是真正有价值的问题。
就在写这篇文章前一天,国内最大的社交型网络服务商“校内网”宣布了平台服务战略。应该说,这个战略并不是什么新玩意儿。同时,我们也看到了此类服务商对于商业模型的一些有意义的探索。
我希望通过这三篇文章让对社交型网络有兴趣的朋友一个思考的起点,让大家来讨论社交型网络的未来发展。
社交型网络–Social Networks (二)
上次我主要谈了一下社交型网络为社会科学和计算机科学带来了哪样的契机。从某种程度来说,这方面是很容易让我们普通用户感受到的。实际上,对社交型网络抱有非常大兴趣的还要算是商业公司。不少公司看到了社交型网络的应用前景。我们这次就来谈谈这方面的内容。
应该说,最早的社交型网路的应用就是提供社交型网络服务,也就是类似“交友”网站。时至今日,各种名目的类似网站非常多。有名的,没名气的,大多提供相似的服务。用户需要到这些网站注册,然后可以通过E-mail或者是IM工具来邀请自己的朋友到这些网站来。尽管不少站点非常红火,比如北美的Facebook,中国的“校内”,但是这类应用都有一个致命的缺陷,那就是没有清晰的商业模型。说通俗一点,就是没有非常清晰的赚钱模式。当然,广告是一个很不错的收入来源。特别是在这一类网站发放广告应该算是有针对性。然而,研究表明,在社交型网络网站点击广告的人数并不乐观,大多数用户也就是发发视频、照片,然后在朋友的留言版上说一些废话。用户并没有利用社交型网站来进行有意义的活动,特别是商业活动。所以,尽管,像Facebook这样的网站炒作非常厉害,但是真正的商业人士都抱有非常大的怀疑态度。
实际上,除开这类大众型的社交型网络服务,真正意义上的,商业应用型的社交型网络已经取得了很多不错的成绩。宝洁、IBM以及Cisco是三个不得不说的例子。
宝洁公司利用社交型网络,把自己的产品研发扩展到了公司外,形成了自己的研发社区。在应用社交型网络之前,宝洁公司的研发主要靠自己的研发部门。研发产品最大的风险就是开发出来的产品并不是市场所需要的。为了避免这种情况的发生,公司往往需要做非常细致和长期的市场调研。然而,人算不如天算。在瞬息万变的市场中,需求常常是变化的。6个月前开始研发的产品也许仅仅符合6个月前的需求。更何况,需求分析常常是没办法做到十分准确的。从前一篇文章我们就可以看出,需要人参与的实验往往都没办法做到样本的代表性完备,更何况,一般也不可能找到很多的人来参与需求的调查。结果是,产品的研发风险较大。宝洁公司是如何利用社交型网络的呢?其实很简单,那就是利用互联网,建立和用户的社区,形式多种多样,比方说论坛,Wiki。中心思想就是,让产品研发的思想和点子直接来源于社区,直接来源于用户。于是,风险大大降低,同时也吸引了资深的用户为宝洁贡献自己的想法。宝洁把一个封闭的企业打开,用户不仅仅是一个被动的参与者,而且成为了企业的一部分。这些参与研发的用户,自然也会成为产品的消费者。为宝洁公司形成了一个良性的循环。
IBM的例子则在于利用社交型网络来提高企业内部的效率。公司组织一旦大到一定程度,必然会出现,内部员工都没法互相认识,各个分部之间沟通匮乏等等“企业病”。而这些企业病的核心则在于,信息没法共享。这里包括人员的信息,事务的信息,项目的信息。最简单的例子是,IBM全球曾经有7个分部的人员在进行着非常类似的项目,而这些人居然都不知道对方的存在。这对于企业来说,是人力物力的极大浪费。IBM在企业内部构建了类似Facebook这样的应用,让员工充分了解,并且利用这样的应用来磨平部门之间的鸿沟,同时利用企业内部Wiki来达到知识的共享。更进一步,以前如果某个项目出现问题,希望找到在某一方面的专家,对于一个大型企业来说,并不是一件容易的事情。然而,现在,社交型网络让人们突出了自己的专长,使得企业内部的人员控制得以透过部门达到效率提高。目前,IBM是一家非常热衷于在企业内部利用社交型网络来提高企业效益的公司。
Cisco的例子是使用社交型虚拟环境来提升一个跨国公司的效益问题。跨国公司的问题很多都集中在如何能够充分协调好和管理好各个分部。然而,因为时间、地点的不同,分部和总部,分部和分部之间的沟通存在着某些不可逾越的困难。如果再加上需要产品展示,研发讨论,则显得更加力不从心。Cisco引入类似Second Life的应用,让公司分布在全球的员工利用虚拟环境达到互相认识和沟通的目的。同时,Second Life也给Cisco创造了一个非常好的产品展示和研发讨论的平台。虚拟环境和传统的视频会议最大不同在于,视频会议往往更加正式,而且视频会议没法充分利用电脑本身的一些功能。比方说,要展示一个新大楼设计,要展示一大群人,就要受到硬件条件的限制。而虚拟环境,一方面没有这些限制,另一方面,也更加随意,非常适合企业内部的交流和协作。类似Cisco这样的例子还不少,Second Life的商业应用正在越来越多地被关注。上面提到的IBM也是其中很活跃的成员。
其实,这三个例子都有一个共同的特点,那就是利用社交型网络来构建“社区”。不管是虚拟的社区还是现实的社区,不管是企业内部的社区,还是企业和外部世界的社区,社交型网络工具及其理论为企业社区建设提供了依据和基础。然而,后三者例子和Facebook这样的公共服务网站最大不同的是,他们都直接为企业的盈利服务。他们有着明确的目的。这些才是目前商业公司最希望采取的模式。
当然,也不是每个公司都能够非常顺利地应用社交型网络来达到目的。实际上,社交型网络远远不是应用一下Wiki或者Facebook,抑或Second Life那么简单。关于这方面的讨论我们将在下一篇文章中展开。
社交型网络–Social Networks (一)
这大半年来,我一直参与学校的一个“社交型网络”的项目,对“社交型网络”慢慢产生了一些想法,在这里,打算用三篇博客的篇幅来和大家交流一下。因为仅仅是感想抒发,因此文章中采用的数字和论据,都不注明出处,希望有兴趣的朋友自己去查证。
我对两个部分的安排是这样的,第一个部分,我打算聊一聊互联网对于社交型网络的影响以及社交型网络是如何作为社会学、心理学和计算机科学的平台。第二部分,我打算讨论一下企业如何希望社交型网络为企业带来革命性的变化。第三,我想讨论一下目前社交型网络的困境和未来。希望大家关注。
—————————————————————————————————
目前国内火热的“校内网”和北美火热的“Facebook网”均是提供“社交型网络服务”的网站。同类型的形形色色的“社交型网络服务商”多如牛毛。其实,这一类型的服务,对于年轻的互联网来说,并不是什么新鲜事物,早在2000年左右,国内的ChinaRen就初具“社交型网络”的特点。而北美类似的网站,则要追溯到1996年左右成立的Classmate了。
那么,为什么这几年,社交型网络呈现出越来越火热的态势?答案有多方面的。但最主要的有两点,第一,社交型网络以“人”为中心,改变了传统意义上,互联网以“单一文本”为中心的理念。第二,社交型网络能够以互联网为基础,加深人们之间的沟通,把人际关系网络扩展到了虚拟世界,形成了现实和虚拟的一个良好的结合点。
然而,今天我想讨论的则是另一个话题,那就是社交型网络为社会学、心理学和计算机科学的结合提供了一个良好的平台。
Social Networks并不是什么陌生的名词,说成中文,可以很方便地就翻译成“人际关系网”。研究人际关系、社会关系的社会学早已经把“人际关系网”作为了很重要的研究议题。比方说,研究人与人是如何交朋友的;哪些人在一个朋友圈子中是更重要的人;“流言”是如何在一个人际关系网中传播的;一个群体中,专家是如何体现的;个人价值如何在群体中体现,等等。然而,在计算机科学介入社会学之前,大规模试验和论证是十分困难的。我们想象这样一个情况,某个社会学家认为,任意两个人之间,最远的距离是中间间隔六个人(所谓六度分隔理论)。在以前,要验证这个理论,必须招募大量的志愿者,发信件给自己的朋友。即便是互联网初期,也需要使用电子邮件这样的方式。这些技术手段,没法为很多理论的论证提供保证。大多数情况下,社会学专家们能够找到上千名志愿者,就已经非常不错了。然而,真正的科学实验,还需要注意样本的诸多问题,比方说年龄、性别、地区等等的分布。更进一步说,实验环境毕竟是一个模拟环境,参加实验的人并没有真正把实验当作自己的生活。这也使得传统的实验方式并没有体现到真正人际关系。
互联网为社交型网络分析带来了第二春。以“交友”为核心内容的大型网站,第一次把人际关系数字化了。现在通过种种流行的社交型网站,我们可以轻松的获得数目足够多的样本,可以得到类型丰富多彩的资料。同时,人际关系也比在纯实验环境中来得真实。举一个简单的例子,在过去,星巴克如何知道饮用自己咖啡的群体特征(年龄、性别、地区分布)?只能到一些地方去发放问卷。众所周知,问卷调查的效果是不好的。很多人并不想回答问卷调查。今天,星巴克只要通过Facebook平台,就可以轻松获知选取“我是星巴克粉丝”这一功能的人群信息。注意,这些信息还是免费的。而喜欢星巴克的人群也可以互相了解,畅谈自己的星巴克故事。这在以前是不可能的。
另一方面,像我之前提到的那样,因为社交型网络把焦点放在了人上面,因此计算机科学和数学的重要组成部分——图论、概率论有了大显身手的地方。目前,利用图论来进行“人际关系挖掘”研究的计算机科学家在海外已经越来越多。比方说,理论校内网,找到某一个大学中,朋友最多的人,朋友的朋友最多的人。如果商家进行推销,那么就可以从这些人下手。以往,这样的信息是不容易得到的。现在,则非常简单。再比如,你电脑出问题了,一时打电话联系不到客服,那你知道该找周围的哪位朋友吗?你知道找哪位朋友最合适吗?Facebook平台会很容易告诉你。因为在Facebook上,每个用户都加入了大大小小各式各样的群组,这些群组都是根据用户个人喜欢,用户自己加入的。于是,如果你的一个朋友加入了很多IT,电脑相关的群组,那么很有可能这个人就是你要找的那位朋友。当然,这仅仅是些小例子。但是通过这些小例子,我们可以看到社交型网络在互联网上的应用的确振奋人心。
随着人际关系、人的喜好都已数字形式出现在互联网上,以往无法建模的很多概念如今都成为了实实在在的数字。数学模型,特别是统计模型为我们去了解社会和了解个人提供了强有力的工具。如今,社会学研究再也不担心试验的问题了,科学家可以转入研究的一些新的阶段。比方说,如果你要开公司,你最好认识谁,谁最能帮助你,这是一个“关系预测”的问题;比方说,如何通过人们提供的标签(tag),来看人的价值取向。现在,计算机科学可以很好地解决这类问题。这在以往是不可能的。
计算机科学和社会学因为社交型网络正以前所未有的速度交融在一起。目前,多所美国大学(比方卡内基梅隆大学、斯坦福大学)都有专门研究这方面的计算机学者。好几个高级互联网、数据挖掘会议都有专门的“讨论组”来讨论这方面的研究进展。社交型网络研究正方兴未艾。
再次抛出关于Linux的话题
今天gaospecial给我留言,我回了以后,害怕大家误解一些我对于Linux的看法,固而好好写一篇我对于Linux,特别是Linux开发环境的看法。
我自己有一台电脑使用的是Ubuntu Linux操作系统,我实验室的机器是CentOS,现在上班的机器也是CentOS,学校的工作站是Sun Solari。尽管,我自己在Linux下开发和办公基本没有问题。从我自己的情况看,我没有必要讨厌Linux。2004年的时候,我还在我所参加的学 生组织学生网络中心组织了Linux学习小组。应该说,我个人还是很喜欢Linux的。
但是,为什么我一直都对Linux有意见呢?那是因为我觉得有一些Linux的缺点不应该说成是“强大”的代名词,反而成为了Linux迷炫耀的地方。
比方说,一直以来“易用性”好似不被Linux用户所齿,只要功能强大就行。但是为什么Ubuntu能够成功?这是不是说明了“易用性”的重要性?也许 是。还有一点,以前Linux宣传的口气是,不需要什么图形界面,全部命令行的操作体现了专业和高级。不过,现在Gnome和KDE的界面做得越来越花 哨,还有不同的界面插件证明了,虽然界面不是万能的,但是对于普通用户来说,没有界面是万万不能的。
操作系统和软件的发展还是有一定规律的。强大和易用性不是对立的。这也是汇编语言虽然强大,但是并不是最主要的开发语言的原因,也是甚至C或者C++也会慢慢变成不是最主要的开发的语言的原因。当然,那是另一个话题。
再说Linux的开发。长期来看没有一个标准的集成开发环境其实是阻碍Linux发展的一个潜在因素。回顾Windows阵营,微软的Visual Studio和Borland的系列开发工具(包括C++ Builder、Delphi、JBuilder)真的是功不可没。强大的开发工具提高的是整体软件开发的能力和效率。不仅仅是写程序的效率,更是团队协 作的效率。举一个简单的例子,在Linux下开发,因为调试器的缘故,很多时候,开发人员只能通过输出log信息来达到知道运行状态的目的,但是这在一个 大型系统中,要想通过这样的方式来很清楚认识每一步的运行状态是非常困难的。对于源程序来说,功能代码之间夹杂着无数的调试信息输出代码,也是非常不美观 和影响代码理解的事情。
注意,这里不是否定GDB和G++之类的开发工具的强大性,而说的是易用性以及易用性带来的效率问题。我们不能说,因为有了GDB,就不需要更高级的调试工具了,这是不对的。
我知道通过配置VIM和Emacs还可以听音乐,看电影,还能干这个,干那个。有人说这两个软件能无所不能。我相信。但是,要说开发软件,我不相信这是好 的方法。大的例子太多了,微软、IBM、Oracle和Sun的基本所有软件都是用了集成开发环境开发,单靠VIM和Emacs来编写上百万的代码是不可 能的,这不是怀疑这些编辑器的编写能力,而是软件开发除了编写,还有很多的东西。
所以,Linux阵营要做的是好好开发一个软件开发环境,而不是一次又一次告诫大家使用VIM或者Emacs。这两个软件本身没有错,但是做开发工具,特别是软件开发工具,并不是最适合的。
另外,有人肯定会告诉我,VIM和Emacs的插件如何如何丰富。最好不要提这个。第一个原因是,用户安装好一个软件,这个软件是要可以使用的,能够达到基本需求的。为了语法高亮、为了语法检查都需要寻找插件,这不是什么好的理由。
当然,VIM和Emacs存在的理由,不是没有。在有不少的情况下,特别是终端操作,远程操作,这样的纯文本编辑器是效率最高,也是很有可能唯一提供的工具。
此文仅仅是希望在使用Linux的朋友,真正去看到Linux的不足,去弥补这方面的问题。
实习感言(二)
上周就实习的初步印象抛出了一些感性认识,其实后来我仔细思考以后,还是发现了一些深层的东西。
就整个开发流程和工具来看,公司还停留在上个世纪70-80年代的思路。当然,有人对这种满屏字符,只用VIM、Emacs的方式推崇至极。然而就效率性而言,我还是看不到这样做的意义。有一个强大的集成开发环境已经是80年代以来大多数语言开发能否普及与否的共识。比方说,因为代码深处某个地方的拼写错误,在集成环境下可以不费任何力气找出,而纯文本环境,也许就是一上午的时间。这一点和是不是熟练的开发者关系不大,因为代码量上去以后,再熟悉的人也需要合理的工具。
公司的环境和语言虽然落后,但是我却深深感到了这种方式对于公司发展的合理性。一个能够生存30年的公司,技术的稳定性是最重要的。在早年的时候,关系数据库还没有成形,SQL的国际标准还没有制订,Java还要等上十多年才被发明,一切当然只能自己做。那么现在呢?那天,我带着同样的疑问问了公司的老板,SQL那么成功,公司的数据库软件居然不原生支持,让我有一些不可理解。然而,老板却说了这么一句话:SQL的标准形成才10年,Java也不过流行了10多年,我们有30年的历史,在这30年里,流行的东西来来去去,而我们的技术却稳定了下来。
这是一句实话。20年前,最红火的语言和开发平台现在已经无人知晓。谁能保证Java的未来和SQL的未来呢?30年,技术变换风云,唯有客户的需求是永恒的。满足客户的需求是最关键的业务。而要随时都能够去满足客户的需求,技术的稳定性就尤为重要。所谓稳定性就是说,版本的升级、功能的加入要非常平滑。不能上一个版本是C++,下一个版本是Java,然后又想换Python。这其实没有意义。换技术需要成本,况且在实际开发中,特别是已经积累了大量代码的软件公司眼里,语言,的的确确不是最重要的东西。
尽管开发环境丑陋,但是产品只要能够达到客户需求,产品只要能够延续,就是胜利。这一点,我们国内的开发者通常看不清楚,经常爱陷入各种技术平台的论战,而忽略了讨论需求本身。
于是,公司使用一个完全不支持对象的开发语言从1970年代直到现在。所有的产品都能够非常完美的衔接。这不得不说是一个奇迹。
—————————————————————————–
然而,我还是很不理解Linux下开发的一些“习惯”。因为要配置某个运行环境,我的一位同事在我的机器上满屏幕字符的飞快配置了足足4个小时!Emacs和Shell屏幕交相辉映,快捷键用得我眼花缭乱。但是,我一方面佩服这位仁兄的技术水平,另一方面,我着实不明白那么多配置文件和脚本的是为了什么。说到易用性,我不得不佩服微软。在微软的平台下开发程序真的是享受,用过Visual Studio的人,很难认同缺乏那么多功能的开发环境。
实习感言
已经实习了一个星期了,最大的感触还是上课和搞科研的自由度大一些。工作的压力还是比较大。
目前还没有开始做正式的项目,但是到这个小公司的实习却给了我很多启发。有管理方面的,有技术方面的。管理方面的我可能还需要观察一段时间才能看出一些名目,不过这一个星期的开发学习,让我对于这个公司技术方面的感想还是逐渐清晰起来。
这个公司的产品大多数是和报纸出版有关,也就是排版和印刷相关。此公司虽然人数不多,不过客户群体还是很大,目前最近的客户是基于旧金山的全美最大的华人日报《星岛日报》。如此小规模的公司,成立于1975年,已经在淘汰率极高的软件行业摸爬滚打了30多年,不能不说是一个小小的奇迹。
第一天去公司把我吓一跳。公司的开发语言是公司自己开发的语言,编译器是公司自己开发的,调试器是公司自己开发的,数据库是公司自己开发的,网络服务器是集成Apache并且经过改写的。公司10个左右的产品均是又自己的开发语言所编写。这种情况已经持续了将近20年。然而,公司本身的技术人员,特别是开发人员并不多,核心的开发人员也就3-5个人!
吓一跳之后就是痛苦的持续到现在的开发经历。公司的语言是类Pascal语言,我在1997年到2002年有过几年Pascal的开发经历,然而没有集成环境的开发,仅仅依靠编译器,开发进度非常之慢。命令行的调试器对于大型程序来说根本就太过于原始。最后,仅仅是Emacs的语法高亮都成为了唯一能够帮助的奢侈品。整个工作的感觉就像是上个世纪70-80年代。因为没有语法提示和高级开发工具(如Visual Studio、Netbeans和Eclipse)的成员提示功能,根本就不清楚语言库内提供了什么功能。经常为了一个简单的函数要去查询浩如烟海的文档。注意,那些文档的编写都非常差,基没有例子,就仅仅写了一下函数的功能,更何况所有的开发手册有4-5卷本,两三个牛津字典那么厚。没有索引和指导在这样的文档里面找一个函数的使用,简直就是大海捞针。
网络开发环境和一般的Web开发环境,比如PHP、ASP.net、JSP都非常不一样,有一点类似模板外加控制代码的意味。然而整体的流程确实在后台的服务器组件中完成的。这一切都是公司自己的语言编写的。尽管现在有很庞大的软件在这上面编写完成,但并不意味这这套东西就没有问题。首先,后台的服务器组件不能区分POST和GET,有点匪夷所思。并且对于Session的支持也非常有限。没有事件的概念,更没有什么URL重写这些现代的东西。
数据库就更是夸张。首先,公司的数据库都不是严格意义上的关系数据库,而是自己写的数据引擎。并且与SQL不兼容!数据库查询不能使用强大的SQL,这在今天看来很不可思议。然而,整个公司的存储方案都是类似于结构文件的方式。因为没有SQL,关系数据库所带来的一切便利这里都用不上。而很多基础的东西明显缺失。比方说,没法生成唯一的递增序列作为数据的标识,只能使用很丑陋的方法模拟。更严重的局限在于,索引的字段的长度只能是255个字符,单个索引的字段长度不能长于127。常常一个简单的功能都让人困扰半天。
我的同事在另外一个项目中工作,那个项目使用了非CVS也非SVN的自己编写的原始的代码管理工具,效果是,可能还不如没有版本管理。大家经常覆盖相互写的东西。
看我写了那么多抱怨的话,是因为我这几天真的被磨得有一点没有脾气了。我一方面很佩服一个这么小的公司居然能够维持这么复杂的软件体系,一方面我的确非常不理解这样做的真实意义所在。如果说20年前,开发工具、调试工具、数据库工具都没有成熟的话,那么时至今日,市面上随便都能够找到开源的免费的好的替代产品。
最要命的还是编程语言的问题,此开发语言不能和现有的很多语言集成,比方说C,C++,或者Java。再加上人力物力的原因,语言库的开发又跟不上,文档就更旧,让人整个在浪费时间。
另一方面,对于团队开发,不使用开发工具,那完全就是自欺欺人。完全依靠一个简单的文本编辑器和原始的调试器,开发编译器是可行的,开发应用软件,那就是扯蛋。
不过,唯一让人钦佩的是,国内哪个40-50人的小公司想过开发自己的编程环境或者是数据库?考虑到这个公司存在了30年以上,不能不说还是有一些值得借鉴的地方。
我们的计算机教育
那天和朋友聊了一下目前国内的计算机教育的一些问题。这些问题主要体现在这几个方面,首先是课程比较老,一些课程的教材严重过时,比如我目前在学习的“计算机体系结构”主要介绍的体系结构就是上个世纪70-80年代的结构,不少体系结构已经过时,应该采用国外的最新原版教材。第二个问题就是老师照本宣科,这主要还是因为老师自己的水平所决定了。一些老师可能稍微要好一些,基础知识没问题,可是完全脱离现在最新的科技前沿,学生自然也不可能接触到比较新的技术。
最重要的问题是,目前不少学习计算机的学生严重缺乏实验的机会。不少学生几年以来都没有进行过开发工作,不仅没法继续进行科研深造,就连在社会上工作也显得不太可能。
总之,我对目前我所学习的计算机感到十分失望。我希望能够在研究生阶段换一个环境。
一个时代的结束
Borland公司终于出售包括Delphi、JBuilder、C++ Builder、C# Builder一系列响当当名字的IDE产品线。很多人一看到这则消息就知道,一个时代结束了。的确,以IDE为核心的Borland公司走到了尽头。IDE逐渐不再是一个高端的核心技术,而成为了一项常规技术。Borland公司在开发者心目中的地位应该来说无容置疑。各个层次的开发者基本都使用过Borland公司的不同类型的产品。
记得初中的时候开始接触到Pascal,就是使用的传奇的Turbo Pascal编译器,最开始的时候觉得这门语言比Basic要复杂多了。关键是定义特别严谨,甚至觉得麻烦。但是用久了以后发现了其强大的功能,便有一些爱不释手,当然主要还是因为要参加竞赛。后来听说了基于Object Pascal的Delphi,便毫不犹豫地想向这个领域进发。不过遗憾的是,因为很熟悉Visual Basic,总觉得Delphi的开发有一些繁琐,主要还是因为不懂得面向对象的很多东西。所以,我曾经好几个下午站在书店看Delphi 3.0的书,也能用Delphi搞一些简单的开发,但是还是没有把这个工具作为开发的首选。
2000年以后,开发和兴趣逐渐转移到网络平台上,对Borland公司的产品也基本是关注的状态,其他的产品使用得非常少。但是这仍然不能阻止我认为Borland公司是一个伟大的公司。遗憾的是,在.NET和Java逐渐夹逼的岁月中,Borland,这一商业公司终于做出了利于整个公司重组的决定。这不能不说十分艰难和痛苦。但是,这也是必须的。眼下,单纯的IDE已经越来越不能适应全面的开发工作了。大多数开发需要一些列的工具与解决方案,产品开发的周期工具正成为一个趋势。如果不转移公司的重心,Borland公司就没法在新的形势下生存。
也许就是这样,IT产业中有很多悲情,而Borland公司则总是悲剧中的主角。但即便如此,这个英雄式的人物赢得了大家的尊敬和崇拜。愿Borland公司走好。


最新评论