五千年(敝帚自珍)

主题:关于Linux的推广——普通用户篇 -- 万斤

共:💬381 🌺357
全看分页树展 · 主题 跟帖
家园 关于Linux推广-开发优势篇(微软到底差在哪里)

这个帖子是针对在这里回我帖的朋友的反馈写的。非常欢迎大家捧场,一起讨论问题。有很多事情,我自己其实也平时是模模糊糊的,写出来就清晰多了。欢迎大家继续砸砖,有什么问题尽管问。当然我不想深入具体的技术细节,只是简单地谈个概要。我现在正在安排一个网络空间,下一次我准备把我在Linux下面开发程序的标准方式,用截图的方式简单的展示一下。

我在这里要强调一下在Linux,或者以Linux开发为主的根本优势,对于国内来说,目前这个情况非常流行,一个典型的例子是,学校里面私人玩玩用用Linux,但是外界大量有关于windows的项目,特别是工作一紧张了,周围的人要求你用windows。Linux没有什么需求,自然就停掉了。第二个例子是,开发的程序通常都是一些数据库应用的程序,这些程序的特点是总是要嵌入到一些流行的框架下去,比如.Net什么的。造成Linux用了,开发不出来。第三个例子:Linux下面怎么挣钱呢?客户又不用。

我个人使用Linux最重要的经验是:Linux有一个不短的“评估期”,一般来说,很多朋友windows用惯了,一到Linux,总是要习惯把windows的习惯带到Linux下面来。这个问题我也有,就像我现在用word什么,总是要按M-q,dd 之类的快捷键:)。看看有没有IDE啊,有没有什么方便的GUI工具啊。一看,这方面Linux总得来说,按照bulaohu兄的说法,就是Linux有的,windows下面也有,而且更友善),所以好像Linux 吸引力不大。而且很多人很畏惧命令行方式。很多在这里朋友,显然处于这个阶段。但是一旦这个“评估期”过了,基本的概念熟悉了,就会立刻感觉突飞猛进,就会有这个感想:原来计算机还可以这样用啊!马上特别自由。基本上可以摆脱windows的控制,这个控制不是机器的控制,而是基本想法的控制。这一系列文章,也是希望能缩短这个“评估期”。

我个人认为,Linux下面开发,和window最大的不同,是所谓的“大教堂和菜市场“的区别。至于谁好谁坏,看看我们周围就可以了:你可以不去教堂,你能不去菜市场吗?:)开个玩笑。Windows系统,还有很多商业软件,最大特色是想法设法控制程序员。让程序员跟着它的思路走!在windows下面开发程序,往往有非常清晰的主线。通常是这样,假设一个一般开发员需要选择不同的开发平台,微软这边,刚开始非常热情:你能想到的所有基本模块我们公司都写好了,框架也搭好了,你要做的事情,就是学习我们的API,然后在我们极度友善的豪华型IDE下面把这些API轻松写好就行了。当然,如果我们这里没有这样的程序,有大量第三方公司提供。你写好的这些程序,我们下面有大量无知的用户在使用,你们的程序可以卖个好价钱。微软如此热情,经常让我想起来在北京八王坟的小公共经常半个多小时重复一个“走了走了,上车走了”的感觉。

但是对于学习阶段的开发者来说,这样的便利绝对是一个双刃剑。在热情的背后,微软把程序员的独立创造性全部给架空了:所有需要做的就是在微软提供的环境下,把微软(以及一些大公司)的思路,半成品,加工成最终的零件,再拿到市场上去卖。而微软,成为垄断的绝对上游。这样的开发方式,其实对程序员来说,以及后面的公司来说,影响是极其巨大的。做商业买卖都知道,如果你的命脉被别人控制住了,你基本上没有人和讨价还价的余地。看看现在windows下面的软件开发商就知道,通用软件公司,基本上都只能在windows下游讨食吃:微软只要看到一个威胁者,马上采用操作系统绑定的方式把它踢出去。存活下来的,不是特别小的开发商,搞点微软不爱用的小工具,或者就是像adobe这样的行业软件开发商。Netscape成长起来了?我出IE。ICQ成长起来了?我出Messenger。而它现在对google这样的公司没有办法,是因为它无法把internet查找功能和他们的操作系统绑定(或者说,他们现在还没有达到这样的水平)。微软推出了一个所谓的杀毒程序,马上那些杀毒软件公司就要考虑法律行为。一个公司做了它该做的事情,居然就威胁到一大类公司的生存行为,这不是很荒谬吗?

我无意在这里谴责这样的方式,微软做了对他们正确的事情!但是对程序员来说,微软的这个思路灾难是巨大的。无休无止的技术升级(实际上是微软自己的API升级)把很多程序员折腾的够呛。我有一些在windows下面搞开发的朋友,他们大部分时间都是在做一个事情:学习某某手册。他们开发的程序,很多时候,并不是完全属于他们的:离开了当时的环境,几乎就没有办法再用了。我自己就有这个经验:我10几年以前,也是非常热情地学习了VB2.0,以及相关的OLE。我记得当时还可以非常熟练地把excel的VBA变成一个类似minitab的东西。现在这些知识,有用吗?我可以肯定基本上没有什么用。比如什么VB.NET,我要用,肯定还要再来一次了。这些问题如此巨大,以至于我到了Linux,连基本的Compile和Link的区别都忘了!很多人(包括这里的朋友)我相信都有相同的经历。

更恶劣的是,很多时候,微软(以及其他公司)所做的技术升级,是毫无必要的,说难听点纯粹就是堵人玩。所以经常把系统弄的云山雾罩的。没有竞争对手的时候,一个满身是洞,简直就是病毒之门IE6 5-6年不升级。Firefox出来以后,我IE7还没有看到,IE8的测试版就出来了。还有一个问题就是微软经常篡改各种标准,加上自己的私货,而这些私货统统没有文档。这样的程序用的踏实吗?

这里我给出最近我和Buloahu兄讨论的例子:Bulaohu我相信绝对是一个优秀的windows下面的管理员,他对ActiveDirectory方面的管理水平绝对很高。由于他对AD的大力推荐,我最近去看了一下它的介绍。这个例子简直是太典型了:

按照我的理解(Bulaohu兄有错误请纠正):ActiveDirectory基本上是由几个基本元件构成:1)一个数据库,前台是用LDAP协议进行访问。(简单来说,LDAP是一个网络树状数据库协议,采用这个协议包装的数据库数据可以用类似ldap://root/node1/leaf这样的URL型的方式进行访问,返回叶子的一个数值或者字符串。有些节点访问,需要另外一些节点的信息才能获得许可,比如密码。所以LDAP可以用来作为用户管理),同时微软还自己搞了一个无连接的LDAP协议,这个主要是用在初始阶段,就是客户机用UDP方式和LDAP数据库连接 2)Kerberos加密协议,简单来说就是就是用户登录一个工作站的时候,这个工作站系统就通过加密管道去访问LDAP的目录,并且采用Kerberos得到用户认证(就是有没有这个用户,这个用户是否密码匹配)。3)在CIFS(就是windows 网上邻居)下面的DCE/RPC(远程进程调用),就是一个计算机上的程序去调用另外一个计算机上的程序。所以Bulaohu兄给我说,微软也可以远程安装程序等等,这个不奇怪。4)此外,LDAP通常和DNS绑在一起,所以提供了像DNS,时间服务这样的一些周边程序。同时,它也可以管理像邮件啊,apache这样的认证。你甚至可以往ActiveDirectory里面放通讯录,小说,菜谱,甚至我这篇文章等等。。。

复杂吗?不复杂,实际上,ActiveDirectory的每一个子功能,除了自家的SMB以外,每一种模块,在Linux下面,或者其他系统下面都有公开的实现。OpenLDAP,Kerberos,这些都是非常公开的程序,DCE-RPC也是一个公开的协议,DNS有标准的BIND,NTP有标准的NTP Daeom。CIFS可以用NFS来替换,Linux上同时有标准的ONC-RPC。换句话说,如果微软真正就是按照这些标准来设计程序的话。基本上在坐的各位,花个一年的时间,也可以搞一套满足所有基本需要的ActiveDirectory起来。你需要做的就是画各种界面。而且性能,绝对满足大多数企业的要求。甚至可以做的更好,因为你可以在emacs下面搞一个界面下来:)

这个千万不要惊讶,Unix下面这套管理方式已经搞了N年了,微软无非是抄过来改个马甲而已。但是,这样做的话,岂不是没有人会用微软昂贵的server系统了?或者说,岂不是其他第三方厂商也可以搞个Unix假装成Windows 服务器了?微软的独门秘笈就开始工作了:

第一:数据库不公开,公开的只是基本的LDAP协议。换句话说,此数据库内部是什么结构,是否具有别的访问方法不知道,唯一知道的是它可以用LDAP的方式访问。而具体访问什么由微软说了算,其他隐藏的数据,一概不公开。所以这是单向访问,此数据库可以利用几乎其他程序的所有功能,但是其他程序(除了微软自己的以外)不能利用它的全部功能。第二:其无连接的LDAP方式,其实早就有标准,但是微软自己重新根据LDAPv3协议重新写了一份。具体怎么回事,根本不公开。顺便说一句,这个功能很重要。第三:最关键的是,它的DCE/RPC是完全改过,加入了很多不公开的调用。根本就没有文档可查。其实DCE/RPC本身早就是一个标准格式。它又往里面夹杂私货。

看到这里,大家可以想象一下,假设我决定开发一个程序,比如Bulaohu兄所说的AD第三方软件实现所谓“没有做的到,只有想不到”,我现在坦率地说,想做的第一件事情就做不了:有没有第三方软件能完全调用DCE/RPC的程序接口?这些程序,说实话,生下来就几乎是残废。没有任何独立自主性可言。而且微软最经典的做法就是不公开某些调用,但是通过各种渠道让其他开发商知道。等开发商在此基础上用的很好的时候,悄悄把接口一换。直接就能把这些开发商掐死。大家作为一个开发者,看看这个例子,你觉得微软在这种事情上面有一丝一毫的“技术优势”吗?这完全被绑架了!更别说在此基础上开发个什么像样的程序了。

最具有讽刺意味的是,在一大堆不公开API的系统中,在一个著名的病毒之门IE6下,居然大家被强迫运行银行程序。这些开发员,被许诺在.Net下可以无所不能,结果连个浏览器都改不了。开发没有坚实的基础,其他方面,什么匈牙利命名法再花哨,有什么用?程序员能学到什么象样的东西?

我相信它的界面肯定画的很好。极其友善,但是我自己,就不想在用这样的系统来管理我的计算机。在Linux下面,也有相同的系统,但是每个调用都是公开的,全部按照标准来!这就是开放源代码真正巨大的优势。我现在开发一个在Linux下面的类似程序,我几乎不用担心任何这方面的问题。就是后台程序,比如Kerberos升级了,我可以看到这个过程,然后作出相应的改动,这个改动并不是很大的工作量。像大的架构的改变,基本上可以在alpha阶段就入手。我现在开发的每个程序,都是我自己的,做的了就做,做不了就算了,不需要去求某个公司出新版本。我确定5年之后,这些程序的核心服务,还基本能按照我希望的方式运行。

不错,现在有很多人在windows下面开发程序,比如我,我也需要。但是用完Linux以后,windows那些花招,一目了然。这就是我认为Linux下面搞开发最大的优点!没有人能够在后台垄断上游。我能每天去菜市场买菜,填饱自己,不用饭前祈求上帝!(第一部分完)

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河