注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

My Unix World

不要迷恋Unix,Unix只是计算世界很小的一部分!

 
 
 

日志

 
 

什么是程序&开源小知识  

2009-03-03 01:51:39|  分类: Basic |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

计算机是一种机器。它是逻辑运算的机器。计算机的关键是芯片,最为大众熟知的芯片是CPU。芯片其实是以非常高的密度组合在一块硅电路板上的逻辑运 算单元的组合,所以又称集成电路。一个拇指指甲大小的芯片,可能集成了上亿个上十亿个逻辑单元。计算机强劲的处理能力,靠得就是这么多逻辑单元的无穷无尽 的组合。当然还有每秒上G次的反应速度。

芯片的逻辑单元可以专为某种目的组合成集合,比如各种专用芯片,如MP3、MP4的解码芯片,卫星、军事领域用到的各种专用芯片。这样,不需要额外 软件,硬件就可以完成人们需要的职责。芯片也可以做成一些通用的逻辑组合方式,至于芯片具体怎么工作,由软件实现,最常见的例子就是我们的CPU。从名字 其实也可以看出,CPU的全写是Comman Process Unit。通用处理芯片提供了一系列指令,不同的指令组合会导致CPU做不同的事情。软件开发就是这么一个过程:把CPU的通用处理能力专用化,如 Word,它就是把CPU虚拟成一个字处理芯片,它与专用的Word芯片是等效的。

想像舞蹈演员是芯片,舞蹈演员的动作可以分解为不同的单个动作,这些拆解出来的单个动作就是CPU指令,单个动作构成的集合就是指令集。舞蹈演员分 为专业演员(专用芯片)和全能演员(通用芯片,如CPU),专业演员出生的时候已经才能驻定了,她或他这一生只能做某种舞蹈,因为她的指令组合已经固定 了,所以她不需要教练,也不需要体操创造者的指点。全能演员不同,她在出生的时候,天生具有的是全面的基本动作,但这只是一些分散的动作,她并不知道怎么 把这些基本动作组合在一起,构成优美的舞蹈。她需要舞蹈创作人(程序员/软件开发人员)为她设计基本动作的组合,写成一份文档(软件的源代码),但是舞蹈 演员是文盲(这只是情景假定!)她读不懂那份文档,舞蹈创作人是书呆子(情景假定)她或他看不懂舞蹈演员的基本动作,他的创作只是基于人们对舞蹈演员的一 种期望。这就需要教练(编译器)阅读文档,把文档熟悉,并用舞蹈演员能懂的语言翻译一遍,录成磁带,并把磁带交给舞蹈演员。舞蹈演员并不排练,她总是带着 磁带上台,等到她的节目的时候,她播放磁带,磁带怎么说,她怎么做,她甚至不知道这样做的意义,她能听懂的只是那些基本动作,至于为什么要这样,这不是她 所关心的。全能演员的好处是,当磁带的内容不同时,她的舞蹈也不同,有时候她的表演我们称为Word,有时候称为Photoshop,有时候称为IE,还 有时候是千千静听,也有时候是CS游戏或者播放电影的播放器。。。现在的舞蹈演员更厉害了,她们会分身术,所以,你可以同时听歌,并且在Word里写一份 关于某个问题的报告。舞蹈演员的分身术是一项很复杂的技术,因为她要同时听很多磁带,这时她需要另一套磁带告诉她应该怎么操作、怎么切换动作、怎么安排场 地,这套磁带称为操作系统。操作系统有Windows、Unix、Linux,她只需要其中的一个就行了,当然可以这会儿用Windows,那会儿用 Linux,这都没问题,但最好别两个同时听,那会让她迷惑。

程序:舞蹈演员的舞蹈,我们称之为程序。程序有源程序和可执行程序之分,源程序是舞蹈编辑刚创作出来的舞蹈,一般用文档记载。可执行程序是舞蹈教练录制的磁带。

程序语言:舞蹈创作人员使用的那套语言系统,他们不使用我们的自然语言,如英语汉语,而是使用自己的语言,就像音乐的乐谱创作,使用自己的语言。程 序语言有多种,有C C++ Java Lisp。。。乐谱语言有简谱语言、五线谱语言、中国传统音乐用的那些乐谱。类比一下,用某个乐谱语言编写歌曲文档的过程称为程序开发。把歌曲文档翻译成 操作步骤的的文档的过程称为编译,前者称为源代码,后者称为目标代码。源程序是没法运行的,只有编译成目标代码才能运行。

Lisp,一种程序语言,主要用在人工智能领域。Emacs使用了Lisp,所以Emacs编辑器有很强的理解能力,如它可以识别出单词,可以识别 出到哪个位置算一句话。光标可以一句一句地移动,也可以一个单词一个单词的移动,当然也可以一个字母一个字母移动,或者以段落方式移动,非常方便。当然 Emacs远不止这些,Emacs提供的能力几乎是无穷无尽的,只有想不到,没有做不到。一辈子只要这么一个编辑器就够了,再不需要跟着微软的步伐换编辑 器了。

=========================================================

以下是开源的小知识:

wikipedia.org 是一个优秀的资料库,它属于所有人,它上面的知识是大家编辑大家共享的,这体现的是人性的无私。但有些资料是我们花钱才能买到的,如那些学术期刊。

同样的格局也发生在软件界。有的软件是一些商业公司赚钱的工具,有些软件则是程序的兴趣之作,前者不公开源代码,只卖给用户编译后的软件,用户付费使用,这是私有软件,后一种则是程序作者把软件无私地贡献给大家,谁喜欢谁拿去用好了。前一种包括大名鼎鼎的Windows,是鼎鼎大名的微软公司的产品。后一种包括Linux,一个无数程序员靠业余兴趣,成年累月地努力,大家七拼八凑凑出来的开源软件。

开源软件不代表性能差劲,甚至恰恰相反。商业公司为了追求商业利润,他们的产品存在讨好用户的倾向,他们的界面一般比较舒服,操作比较方便,但工具是不是真的好用,是不是性能优异,这个他们不负责,但他们总会对用户说,他们的软件是最好的,他们是全球领先的高科技公司,要相信他们,如果他们都做不出好的软件,还有谁可以做出来呢?商业软件的另一个特点是持续不断的升级,过几年就折腾一次,从95、98、2000、XP、2003、2005、2008。。。。使用更先进了的新版本,当然需要重新购买。当然,在中国不需要购买也行,5块一张^^

开源软件则从人和计算机关系的角度思考,每个软件有自己的定位,该做什么就专心做什么,把这件事做好,做完善。如果做编辑器,不是仅仅可以写字,就喊出一个大名鼎鼎的名字来。编辑器有很多事情要做,怎样方便用户的编辑,怎么让用户在文字中快速准确的移动光标,怎么做到支持各种使用环境,如软件开发人员编写代码,写博客,写邮件。。。。开源软件有很多,还是编辑器的例子,开源的编辑器数不清,但人们总挑最优秀的软件使用。有人说,开源软件就是程序员学习的时候无聊的时候写个软件练练手,然后扔给开源组织,所以开源软件都很差。这句话有它的有道理之处,不完善的软件开源的有很多,而且很大一部分甚至大部分都没有商业软件优秀,但开源软件如此之多,总能找到一款非常优秀的,并且,这些非常优秀的软件,被大家广为传诵,于是我们可以很方便地找到它。如大名鼎鼎的Emacs

另一个证据是全球Top500的超级计算机,至少有85%是使用Linux系统的。

不过这个数据对大部分人的日常生活没什么意义,适合超级计算机,并不一定适合日常生活。所以习惯于使用什么,只要对自己而言足够用,那也就足够了。事实上,Linux上看电影很麻烦,动不动就影片的编码格式识别不了,要不就没有声音,大型游戏更是少的可怜。看Pdf还要自己换个好看的字体,才不致于看着眼睛疼。网上银行就彻底没法用了,没办法,国内的银行的安全控件全部只支持IE,尽管IE不符合业界标准。甚至在软件开发人员中,喜欢Windows的也占绝大部分。更有意思的是有些Linux开发人员,在Windows为Linux开发软件。据说易用性最好的当属苹果,真正的人性化设计,不过我没用过,无权评论。

商业软件由商业公司开发,开源软件有的是个人开发,也有些是一些兴趣组织开发。甚至成立了一些专业的开发组织,他们四处募捐,聘请专业的开发人员,致力于开发最好的软件,成果归全人类所有。最著名的开源组织是FSF,Free Software Foundation自由软件基金会,他们发起了一个GNU工程计划。GNU太有名了,以至于很多人不知道FSF,但对GNU如雷贯耳。

GNU short for GNU is Not Unix, 一个采用了递归式定义的名词,这是比较流行的一种幽默式定义。FSF的发起人Richard Stallman 反感商业公司的垄断行为,于是筹划了GNU计划。GUN计划的目标是打造一套完全不使用任何私有软件、世界上任何人都可以自由使用自由分享、自由改进 的软件系统。Linux只是一个操作系统内核,它很重要但是却只是一个支撑计算机运行的框架,只有加上了应用工具才是一套可用的系统。日常使用的 Linux就是Linux内核和大量GNU工具软件的集合。Linux内核只有几兆,但是整个系统却有几G,绝大部分都是工具软件,所以有时候Linux 又称为 GNU Linux。

GNU软件也有版权协议,称为GPL,目前最流行的是 GPL version2, GPL的目的主要是防止自由软件被商业公司窃取,成为为少量的人牟利的工具。

GNU最富盛名的软件包括:Emacs,这是一个编辑器; Libc 这是软件开发的一套基础类库,它把各种软件开发中都要做的那些事情在库中完成,其他应用工具只需要调用相应的库就行了; GCC, 一个编译器,把程序员写的代码转变成可执行文件的工具,。。。。。

除了FSF外,还有其他很多著名的开源组织,如Mozilla,著名的Firefox就是Mozilla的作品; Apache,他们最著名的作品是一个Web服务器,占据了Web服务器市场的绝大部分份额; kernel.org,专注于Linux内核; X.org, 这是Unix/Linux上的图形桌面工具的维护者;。。。。。

  评论这张
 
阅读(258)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017