有关黑客的一切
黑客是对英语hacker的翻译,hacker原意是指用斧头砍材的工人,最早被引进计算机圈则可追溯自1960年代。他们破解系统或者网络基本上是一项业余嗜好,通常是出于自己的兴趣,而非为了赚钱或工作需要。
加州柏克莱大学计算机教授Brian Harvey在考证此字时曾写到,当时在麻省理工学院中(MIT)的学生通常分成两派,一是tool,意指乖乖牌学生,成绩都拿甲等;另一则是所谓的hacker,也就是常逃课,上课爱睡觉,但晚上却又精力充沛喜欢搞课外活动的学生。 这跟计算机有什么关系?一开始并没有。不过当时hacker也有区分等级,就如同tool用成绩比高下一样。真正一流hacker并非整天不学无术,而是会热衷追求某种特殊嗜好,比如研究电话、铁道(模型或者真的)、科幻小说,无线电,或者是计算机。也因此后来才有所谓的computer hacker出现,意指计算机高手。
有些人很强调黑客和骇客的区别,根据开放原始码计划创始人Eric Raymond(他本人也是个著名的hacker)对此字的解释,hacker与cracker(一般译为骇客,有时也叫“黑帽黑客”。 )是分属两个不同世界的族群,基本差异在于,黑客是有建设性的,而骇客则专门搞破坏。 对一个黑客来说,学会入侵和破解是必要的,但最主要的还是编程,毕竟,使用工具是体现别人的思路,而程序是自己的想法.一句话--编程实现一切。对于一个骇客来说,他们只追求入侵的快感,不在乎技术,他们不会编程,不知道入侵的具体细节。还有一种情况是试图破解某系统或网络以提醒该系统所有者的系统安全漏洞,这群人往往被称做“白帽黑客”或“匿名客”(sneaker)或红客。许多这样的人是电脑安全公司的雇员,并在完全合法的情况下攻击某系统。
但到了今天,在知识贫乏的记者写的媒报道中,黑客一词已被用于泛指黑客和骇客,因此也影响了大众对黑客的理解。 这个背景下,就出现了重新定义黑客内涵的努力,试图把黑客的活动范围限定为不为经济利益、而是出于好奇心做出技术探索和挑战。
黑客文化简史
本篇原作者为Eric S. Raymond esr@snark.thyrsus.com,他是一位大哥级的 Hacker,写了很多自由软件,知名著作有Jargon File等,近年来发表“大教堂与集市”论文为Opensource software努力,Netscape 愿意公开Navigator的原始码,与这篇文章有很大的关系。
序曲: Real Programmer
故事一开始,我要介绍的是所谓的Real Programmer。
他们从不自称是Real Programmer、Hacker或任何特殊的称号;`Real Programmer' 这个名词是在1980年代才出现,但早自1945年起,电脑科学便不断地吸引世界上头脑最顶尖、想像力最丰富的人投入其中。从Eckert Mauchly发明ENIAC后,便不断有狂热的programmer投入其中,他们以撰写软件与玩弄各种程式设计技巧为乐,逐渐形成具有自我意识的一套科技文化。当时这批Real Programmers主要来自工程界与物理界,他们戴著厚厚的眼镜, 穿聚酯纤维T恤与纯白袜子,用机器语言、汇编语言、FORTRAN及很多古老的 语言写程式。他们是Hacker时代的先驱者,默默贡献,却鲜为人知。
从二次大战结束后到1970早期,是打卡计算机与所谓"大铁块"的mainframes 流行的年代,由Real Programmer主宰电脑文化。Hacker传奇故事如有名的 Mel (收录在Jargon File中)、Murphy's Law的各种版本、mock- German`Blinke_nlight' 文章都是流传久远的老掉牙笑话了。
※译者:Jargon File亦是本文原作者所编写的,里面收录了很多Hacker用语、缩写意义、传奇故事等等。Jargon File有出版成一本书:The New Hacker's Dictionary,MIT PRESS出版。也有Online版本: http://www.ccil.org/jargon
※译者:莫非定律是:当有两条路让你抉择,若其中一条会导致失败,你一定会选到它。 它有很多衍生说法: 比如一个程式在demo前测试几千几万次都正确无误,但demo 那一天偏偏就会出bug。
一些Real Programmer仍在世且十分活跃 (本文写在1996年)。超级电脑Cray 的设计者Seymour Cray, 据说亲手设计Cray全部的硬体与其操作系统,作业系统是他用机器码硬干出来的,没有出过任何bug或error。Real Programmer 真是超强!
举个比较不那么夸张的例子:Stan Kelly-Bootle,The Devil's DP Dictionary 一书的作者(McGraw-Hill, 1981年初版,ISBN 0-07-034022-6)与Hacker 传奇专家,当年在一台Manchester Mark I开发程式。 他现在是电脑杂志的专栏作家,写一些科学幽默小品,文笔生动有趣投今日hackers所好,所以很受欢迎。 其他人像David E. Lundstorm,写了许多关於Real Programmer的小故事,收录在A few Good Men From UNIVAC这本书,1987年出版,ISBN-0- 262-62075-8。
※译:看到这里,大家应该能了解,所谓Real Programmer指的就是用组合语 言或甚至机器码,把程式用打卡机punch出一片片纸卡片,由主机读卡机输入电脑的那种石器时代Programmer。
Real Programmer的时代步入尾声,取而代之的是逐渐盛行的Interactive computing,大学成立电算相关科系及电脑网络。它们催生了另一个持续的工程传统,并最终演化为今天的开放代码黑客文化。
早期的黑客
Hacker时代的滥觞始於1961年MIT出现第一台电脑DEC PDP-1。MIT的Tech Model Railroad Club(简称TMRC)的Power and Signals Group买了这台机器后,把它当成最时髦的科技玩具,各种程式工具与电脑术语开始出现,整个环境与文化一直发展下去至今日。 这在Steven Levy的书`Hackers' 前段有详细的记载(Anchor/Doubleday 公司,1984年出版,ISBN 0-385-19195-2)。
※译:Interactive computing并非指Windows、GUI、WYSIWYG等介面, 当时有terminal、有shell可以下指令就算是Interactive computing了。 最先使用Hacker这个字应该是MIT。1980年代早期学术界人工智慧的权威:MIT 的Artificial Intelligence Laboratory,其核心人物皆来自TMRC。从1969年起,正好是ARPANET建置的第一年,这群人在电脑科学界便不断有重大突破与贡献。
ARPANET是第一个横跨美国的高速网络。由美国国防部所出资兴建,一个实验性 质的数位通讯网络,逐渐成长成联系各大学、国防部承包商及研究机构的大网络。各地研究人员能以史无前例的速度与弹性交流资讯,超高效率的合作模式导致科技的突飞猛进。
ARPANET另一项好处是,资讯高速公路使得全世界的hackers能聚在一起,不再像以前孤立在各地形成一股股的短命文化,网络把他们汇流成一股强大力量。 开始有人感受到Hacker文化的存在,动手整理术语放上网络, 在网上发表讽刺文学与讨论Hacker所应有的道德规范。(Jargon File的第一版出现在1973年,就是一个好例子), Hacker文化在有接上ARPANET的各大学间快速发展,特别是(但不全是)在信息相关科系。
一开始,整个Hacker文化的发展以MIT的AI Lab为中心,但Stanford University 的Artificial Intelligence Laboratory(简称SAIL)与稍后的Carnegie-Mellon University(简称CMU)正快速崛起中。三个都是大型的资讯科学研究中心及人工智慧的权威,聚集著世界各地的精英,不论在技术上或精神层次上,对Hacker文化都有极高的贡献。
为能了解后来的故事,我们得先看看电脑本身的变化;随著科技的进步,主角MIT AI Lab也从红极一时到最后淡出舞台。
从MIT那台PDP-1开始,Hacker们主要程式开发平台都是Digital Equipment Corporation 的PDP迷你电脑序列。DEC率先发展出商业用途为主的interactive computing及time-sharing操作系统,当时许多的大学都是买DEC的机器, 因为它兼具弹性与速度,还很便宜(相对於较快的大型电脑mainframe)。 便宜的分时系统是Hacker文化能快速成长因素之一,在PDP流行的时代, ARPANET上是DEC机器的天下,其中最重要的便属PDP-10,PDP-10受到Hacker们的青睐达十五年;TOPS-10(DEC的操作系统)与MACRO-10(它的组译器),许多怀旧的术语及Hacker传奇中仍常出现这两个字。
MIT像大家一样用PDP-10,但他们不屑用DEC的操作系统。他们偏要自己写一个:传说中赫赫有名的ITS。
ITS全名是`Incompatible Timesharing System',取这个怪名果然符合MIT的搞怪作风——就是要与众不同,他们很臭屁但够本事自己去写一套操作系统。ITS始终不稳,设计古怪,bug也不少,但仍有许多独到的创见,似乎还是分时系统中开机时间最久的纪录保持者。
ITS本身是用汇编语言写的,其他部分由LISP写成。LISP在当时是一个威力强大与极具弹性的程式语言;事实上,二十五年后的今天,它的设计仍优於目前大多数的程式语言。LISP让ITS的Hacker得以尽情发挥想像力与搞怪能力。LISP是MIT AI Lab成功的最大功臣,现在它仍是Hacker们的最爱之一。
很多ITS的产物到现在仍活著;EMACS大概是最有名的一个,而ITS的稗官野史仍为今日的Hacker们所津津乐道,就如同你在Jargon File中所读到的一般。在MIT红得发紫之际,SAIL与CMU也没闲著。SAIL的中坚份子后来成为PC界或图形使用者介面研发的要角。CMU的Hacker则开发出第一个实用的大型专家系统与工业用机器人。
另一个Hacker重镇是XEROX PARC公司的Palo Alto Research Center。从1970初期到1980中期这十几年间,PARC不断出现惊人的突破与发明,不论质或量,软件或硬体方面。如现今的视窗滑鼠介面,雷射印表机与区域网络;其D系列的机器,催生了能与迷你电脑一较长短的强力个人电脑。不幸这群先知先觉者并不受到公司高层的赏识;PARC是家专门提供好点子帮别人赚钱的公司成为众所皆知的大笑话。即使如此,PARC这群人对Hacker文化仍有不可抹灭的贡献。1970年代与PDP-10文化迅速成长茁壮。Mailing list的出现使世界各地的人得以组成许多SIG(Special-interest group),不只在电脑方面,也有社会与娱乐方面的。DARPA对这些非`正当性'活动睁一只眼闭一只眼, 因为靠这些活动会吸引更多的聪明小伙子们投入电脑领域呢。
有名的非电脑技术相关的ARPANET mailing list首推科幻小说迷的,时至今日ARPANET变成Internet,愈来愈多的读者参与讨论。Mailing list逐渐成为一种公众讨论的媒介,导致许多商业化上网服务如CompuServe、Genie与Prodigy的成立。
Unix的兴起
此时在新泽西州的郊外,另一股神秘力量积极入侵Hacker社会,终於席卷整个PDP-10的传统。它诞生在1969年,也就是ARPANET成立的那一年,有个在ATT Bell Labs的年轻小夥子Ken Thompson发明了Unix。
Thomspon曾经参与Multics的开发,Multics是源自ITS的操作系统,用来实做当时一些较新的OS理论,如把操作系统较复杂的内部结构隐藏起来,提供一个介面,使的programmer能不用深入了解操作系统与硬体设备,也能快速开发程式。
※译:那时的programmer写个程式必须彻底了解操作系统内部,或硬体设备。比方说写有IO的程式,对於硬碟的转速,磁轨与磁头数量等等都要搞的一清二楚才行。
在发现继续开发Multics是做白工时,Bell Labs很快的退出了(后来有一家公司Honeywell出售Multics,赔的很惨)。
Ken Thompson很喜欢Multics上的作业环境,於是他在实验室里一台报废的DEC PDP-7上胡乱写了一个操作系统, 该系
统在设计上有从Multics抄来的也有他自己的构想。他将这个操作系统命名Unix,用来反讽Multics。
※译:其实是Ken Thompson写了一个游戏`Star Travel' 没地方跑,就去找一台的报废机器PDP-7来玩。他同事Brian Kernighan嘲笑Ken Thompson说:“你写的系统好逊哦,乾脆叫Unics算了。”(Unics发音与太监的英文eunuches一样),后来才改为Unix。
他的同事Dennis Ritchie,发明了一个新的程式语言C,於是他与Thompson用C把原来用汇编语言写的Unix重写一遍。C的设计原则就是好用,自由与弹性,C与Unix很快地在Bell Labs得到欢迎。1971年Thompson与Ritchie争取到一个办公室自动化系统的专案,Unix开始在Bell Labs中流行。不过Thompson与Ritchie的雄心壮志还不止於此。
那时的传统是,一个操作系统必须完全用汇编语言写成,始能让机器发挥最高的效能。Thompson与Ritchie,是头几位领悟硬体与编译器的技术,已经进步到作业系统可以完全用高阶语言如C来写,仍保有不错的效能。五年后,Unix已经成功地移植到数种机器上。
※译:Ken Thompson与Dennis Ritchie是唯一两位获得Turing Award(电脑界的诺贝尔奖)的工程师(其他都是学者)。
这当时是一件不可思议的事!它意味著,如果Unix可以在各种平台上跑的话,Unix 软件就能移植到各种机器上。再也用不著为特定的机器写软件了,能在Unix上跑最重要,重新发明轮子已经成为过去式了。
除了跨平台的优点外,Unix与C还有许多显著的优势。Unix与C的设计哲学是Keep It Simple, Stupid'。programmer可以轻易掌握整个C的逻辑结构(不像其他之前或以后的程式语言)而不用一天到晚翻手册写程式。而Unix提供许多有用的小工具程式,经过适当的组合(写成Shell script或Perl script),可以发挥强大的威力。
※注:The C Programming Language是所有程式语言书最薄的一本,只有两百多页哦。作者是Brian Kernighan 与Dennis Ritchie,所以这本C语言的圣经又称`KR'。
※注:`Keep It Simple, Stupid' 简称KISS,今日Unix已不follow这个原则,几乎所有Unix 都是要灌一堆有的没的utilities,唯一例外是MINIX。
C与Unix的应用范围之广,出乎原设计者之意料,很多领域的研究要用到电脑时,他们是最佳拍档。尽管缺乏一个正式支援的机构,它们仍在ATT内部中疯狂的散播。到了1980年,已蔓延到大学与研究机构,还有数以千计的hacker想把Unix装在家里的机器上。
当时跑Unix的主力机器是PDP-11、VAX系列的机器。不过由於UNIX的高移植性,它几乎可安装在所有的电脑机型上。一旦新型机器上的UNIX安装好,把软件的C原始码抓来重新编译就一切OK了,谁还要用汇编语言来开发软件?有一套专为UNIX设计的网络——UUCP:一种低速、不稳但成本很低廉的网络。两台UNIX机器用条电话线连起来,就可以使用互传电子邮件。UUCP是内建在UNIX系统中的,不用另外安装。於是UNIX站台连成了专属的一套网络,形成其Hacker文化。在1980第一个USENET站台成立之后,组成了一个特大号的分散式布告栏系统,吸引而来的人数很快地超过了ARPANET。
少数UNIX站台有连上ARPANET。PDP-10与UNIX的Hacker文化开始交流,不过一开始不怎么愉快就是了。PDP-10的Hacker们觉得UNIX的拥护者都是些什么也不懂的新手,比起他们那复杂华丽,令人爱不释手的LISP与ITS,C与UNIX简直原始的令人好笑。『一群穿兽皮拿石斧的野蛮人』他们咕哝著。
在这当时,又有另一股新潮流风行起来。第一部PC出现在1975年;苹果电脑在1977年成立,以飞快的速度成长。微电脑的潜力,立刻吸引了另一批年轻的 Hackers。他们最爱的程式语言是BASIC,由於它过於简陋,PDP-10 的死忠派与UNIX迷们根本不屑用它,更看不起使用它的人。
※译:这群Hacker中有一位大家一定认识,他的名字叫Bill Gates,最初就是他在8080上发展BASIC compiler的。
古老时代的终结
1980年同时有三个Hacker文化在发展,尽管彼此偶有接触与交流,但还是各玩各的。ARPANET/PDP-10文化,玩的是LISP、MACRO、TOPS-10与ITS。UNIX与C的拥护者用电话线把他们的PDP-11与VAX机器串起来玩。还有另一群散乱无秩序的微电脑迷,致力於将电脑科技平民化。
三者中ITS文化(也就是以MIT AI LAB为中心的Hacker文化)可说在此时达到全盛时期,但乌云逐渐笼罩这个实验室。ITS赖以维生的PDP-10逐渐过时,开始有人离开实验室去外面开公司,将人工智慧的科技商业化。MIT AI Lab 的高手挡不住新公司的高薪挖角而纷纷出走,SAIL与CMU也遭遇到同样的问题。
※译:这个情况在GNU宣言中有详细的描述,请参阅:(特别感谢由AKA的chuhaibo翻成中文)http://www.aka.citf.net/Magazine/Gnu/manifesto.html
致命一击终於来临,1983年DEC宣布:为了要集中在PDP-11与VAX生产线,将停止生产PDP-10;ITS没搞头了,因为它无法移植到其他机器上,或说根本没人办的到。而Berkeley Univeristy修改过的UNIX在新型的VAX跑得很顺,是ITS理想的取代品。有远见的人都看得出,在快速成长的微电脑科技下,Unix一统江湖是迟早的事。
差不多在此时Steven Levy完成``Hackers'' 这本书,主要的资料来源是Richard M. Stallman(RMS)的故事,他是MIT AI Lab领袖人物,坚决反对实验室的研究成果商业化。
Stallman接著创办了Free Software Foundation,全力投入写出高品质的自由软件。Levy以哀悼的笔调描述他是the last true hacker',还好事实证明Levy完全错了。
※译:Richard M. Stallman的相关事迹请参考: http://www.aka.citf.net/Magazine/Gnu/cover.htm
Stallman的宏大计划可说是80年代早期Hacker文化的缩影——在1982年他开始建构一个与UNIX 相容但全新的操作系统,以C来写并完全免费。整个ITS的精神与传统,经由RMS的努力,被整合在一个新的,UNIX与VAX机器上的Hacker文化。微电脑与区域网络的科技,开始对Hacker文化产生影响。Motorola 68000 CPU 加Ethernet是个有力的组合,也有几家公司相继成立生产第一代的工作站。1982年,一群Berkeley出来的UNIX Hacker成立了Sun Microsystems,他们的算盘打的是:把UNIX架在以68000为CPU的机器,物美价廉又符合多数应用程式的要求。他们的高瞻远嘱为整个工业界树立了新的里程碑。虽然对个人而言,工作站仍太昂贵,不过在公司与学校眼中,工作站真是比迷你电脑便宜太多了。在这些机构里,工作站(几乎是一人一台)很快地取代了老旧庞大的VAX等timesharing机器。
※译:Sun一开始生产的工作站CPU是用Motorola 68000系列,到1989才推出自行研发的以SPARC系列为CPU的SPARCstation。
私有Unix时代
1984年ATT解散了,UNIX正式成为一个商品。当时的Hacker文化分成两大类,一类集中在Internet与USENET上(主要是跑UNIX的迷你电脑或工作站连上网络),以及另一类PC迷,他们绝大多数没有连上Internet。
※译:台湾在1992年左右连上Internet前,玩家们主要以电话拨接BBS交换资讯,但是有区域性的限制,发展性也大不如USENET。Sun与其他厂商制造的工作站为Hacker们开启了另一个美丽新世界。工作站诉求的是高效能的绘图与网络,1980年代Hacker们致力为工作站撰写软件,不断挑战及突破以求将这些功能发挥到百分之一百零一。Berkeley发展出一套内建支援ARPANET protocols的UNIX,让UNIX能轻松连上网络,Internet也成长的更加迅速。
除了Berkeley让UNIX网络功能大幅提升外,尝试为工作站开发一套图形界面也不少。最有名的要算MIT开发的Xwindow了。Xwindow成功的关键在完全公开原始码,展现出Hacker一贯作风,并散播到Internet上。X 成功的干掉其他商业化的图形界面的例子,对数年后UNIX的发展有著深远的启发与影响。少数ITS死忠派仍在顽抗著,到1990年最后一台ITS也永远关机长眠了;那些死忠派在穷途末路下只有悻悻地投向UNIX的怀抱。
UNIX们此时也分裂为BerkeleyUNIX与ATT两大阵营,也许你看过一些当时的海报,上面画著一台钛翼战机全速飞离一个爆炸中、上面印著ATT的商标的死星。Berkeley UNIX的拥护者自喻为冷酷无情的公司帝国的反抗军。就销售量来说,ATTUNIX始终赶不上BSD/Sun,但它赢了标准制订的战争。到1990年,ATT与BSD版本已难明显区分,因为彼此都有采用对方的新发明。随著90年代的来到,工作站的地位逐渐受到新型廉价的高档PC的威胁,他们主要是用Intel80386系列CPU。第一次Hacker能买一台威力等同於十年前的迷你电脑的机器,上面跑著一个完整的UNIX,且能轻易的连上网络。沉浸在MSDOS世界的井底蛙对这些巨变仍一无所知,从早期只有少数人对微电脑有兴趣,到此时玩DOS与Mac的人数已超过所谓的"网络民族"的文化,但他们始终没成什么气候或搞出什么飞机,虽然聊有佳作光芒乍现,却没有稳定发展出统一的文化传统,术语字典,传奇故事与神话般的历史。它们没有真正的网络,只能聚在小型的BBS 站或一些失败的网络如FIDONET。提供上网服务的公司如CompuServe或Genie生意日益兴隆,事实显示non-UNIX的操作系统因为并没有内附如compiler等程式发展工具,很少有source 在网络上流传,也因此无法形成合作开发软件的风气。Hacker文化的主力,是散布在Internet各地,几乎可说是玩UNIX的文化。他们玩电脑才不在乎什么售后服务之类,他们要的是更好的工具、更多的上网时间、还有一台便宜32-bitPC。
机器有了,可以上网了,但软件去哪找?商业的UNIX贵的要命,一套要好几千大洋($)。90年代早期,开始有公司将ATT与BSDUNIX移植到PC上出售。成功与否不论,价格并没有降下来,更要紧的是没有附原始码,你根本不能也不准修改它,以符合自己的需要或拿去分享给别人。传统的商业软件并没有给Hacker们真正想要的。
即使是FreeSoftwareFoundation(FSF)也没有写出Hacker想要的操作系统,RMS承诺的GNU操作系统——HURD 说了好久了,到1996年都没看到影子(虽然1990年开始,FSF的软件已经可以在所有的UNIX平台执行)。
早期的免费Unix
在这空窗期中,1992年一位芬兰HelsinkiUniversity的学生--LinusTorvalds开始在一台386PC上发展一个自由软件的UNIX kernel,使用FSF的程式开发工具。
他很快的写好简单的版本,丢到网络上分享给大家,吸引了非常多的Hacker来帮忙一起发展Linux-一个功能完整的UNIX,完全免费且附上全部的原始码。Linux最大的特色,不是功能上的先进而是全新的软件开发模式。直到Linux的成功前,人人都认为像操作系统这么复杂的软件,非得要靠一个开发团队密切合作,互相协调与分工才有可能写的出来。商业软件公司与80年代的FreeSoftwareFoundation所采用都是这种发展模式。
Linux则迥异于前者。一开始它就是一大群Hacker在网络上一起涂涂抹抹出来的。没有严格品质控制与高层决策发展方针,靠的是每周发表新版供大家下载测试,测试者再把bug与patch贴到网络上改进下一版。一种全新的物竞天择、去芜存菁的快速发展模式。令大伙傻眼的是,东修西改出来的Linux,跑的顺极了。
1993年底,Linux发展趋於成熟稳定,能与商业的UNIX一分高下,渐渐有商业应用软件移植到Linux上。不过小型UNIX厂商也因为Linux的出现而关门大吉——因为再没有人要买他们的东西。幸存者都是靠提供BSD为基础的UNIX 的完整原始码,有Hacker加入发展才能继续生存。
Hacker文化,一次次被人预测即将毁灭,却在商业软件充斥的世界中,披荆斩棘,筚路蓝缕,开创出另一番自己的天地。
网络大爆炸时代
Linux能快速成长的来自令一个事实:Internet大受欢迎,90年代早期ISP如雨后春笋般的冒出来,World-Wide-Web的出现,使得Internet成长的速度,快到有令人窒息的感觉。
BSD专案在1994正式宣布结束,Hacker们用的主要是免费的UNIX(Linux与一些4.4BSD的衍生版本)。而LinuxCD-ROM销路非常好(好到像卖煎饼般)。近几年来Hacker们主要活跃在Linux与Internet发展上。World-Wide-Web让Internet成为世界最大的传输媒体,很多80年代与90年代早期的Hacker们现在都在经营ISP。
Internet的盛行,Hacker文化受到重视并发挥其政治影响力。94、95年美国政府打算把一些较安全、难解的编码学加以监控,不容许外流与使用。这个称为Clipper proposal的专案引起了Hacker们的群起反对与强烈抗议而半途夭折。96年Hacker又发起了另一项抗议运动对付那取名不当的"Communications DecencyAct",誓言维护Internet上的言论自由。
电脑与Internet在21世纪将是大家不可或缺的生活用品,现代孩子在使用Internet科技迟早会接触到Hacker文化。它的故事传奇与哲学,将吸引更多人投入。未来对Hacker们是充满光明的。
谁教我黑客帝国那个数据流的特效
这个是网上最经典的一个做数字雨的教程
前期用PS,后期合成用AE,整合在一张比较大的图片上了,你需耐心一些
http://www.lifu.com.cn/wz/list.asp?id=1309
黑客帝国--绿色字母雨代码--知道的进
BODY
script language="JavaScript"
!--
if (document.all){
Cols=6;
Cl=24;//Space's are included so real length is 48!
Cs=10;
Ts=10;
Tc='#008800';
Tc1='#00ff00';
MnS=20;
MxS=30;
I=Cs;
Sp=new Array();S=new Array();Y=new Array();
C=new Array();M=new Array();B=new Array();
RC=new Array();E=new Array();Tcc=new Array(0,1);
document.write("div id='Container' style='position:absolute;top:0;left:-"+Cs+"'");
document.write("div style='position:relative'");
for(i=0; i Cols; i++){
S[i]=I+=Cs;
document.write("div id='A' style='position:absolute;top:0;font-family:Arial;font-size:"
+Ts+"px;left:"+S[i]+";width:"+Ts+"px;height:0px;color:"+Tc+";visibility:hidden'/div");
}
document.write("/div/div");
for(j=0; j Cols; j++){
RC[j]=1+Math.round(Math.random()*Cl);
Y[j]=0;
Sp[j]=Math.round(MnS+Math.random()*MxS);
for(i=0; i RC[j]; i++){
B[i]='';
C[i]=Math.round(Math.random()*1)+' ';
M[j]=B[0]+=C[i];
}
}
function Cycle(){
Container.style.top=window.document.body.scrollTop;
for (i=0; i Cols; i++){
var r = Math.floor(Math.random()*Tcc.length);
E[i] = 'font color='+Tc1+''+Tcc[r]+'/font';
Y[i]+=Sp[i];
if (Y[i] window.document.body.clientHeight){
for(i2=0; i2 Cols; i2++){
RC[i2]=1+Math.round(Math.random()*Cl);
for(i3=0; i3 RC[i2]; i3++){
B[i3]='';
C[i3]=Math.round(Math.random()*1)+' ';
C[Math.floor(Math.random()*i2)]=' '+' ';
M[i]=B[0]+=C[i3];
Y[i]=-Ts*M[i].length/1.5;
A[i].style.visibility='visible';
}
Sp[i]=Math.round(MnS+Math.random()*MxS);
}
}
A[i].style.top=Y[i];
A[i].innerHTML=M[i]+' '+E[i]+' ';
}
setTimeout('Cycle()',20)
}
Cycle();
}
// --
/script
演示地址:
http://www.toto369.net/jdtx/hkdg.htm
注:必须要有body标签~
谁有黑客帝国里面的数字雨的动态图片
孩子~自己做吧!首先点击开始→所有程序→附件→记事本 然后就把下面的代码复制到记事本里,另存为“黑客帝国数字雨.bat” 然后另存为成功后运行文件即可实现桌面数字雨或按Alt+Enter实现全屏数字雨
注:请忽修改下面数字雨代码的任何一个字母,否则将无法成功允许(包括空格在内)
数字雨代码如下: @echo %dbg% off
setlocal ENABLEDELAYEDEXPANSION
mode con cols=80 lines=30
cls
set 退格=
set redtek=" "
set end=0
:start
set /a end+=1
call :calc
set /p=!setspaces! nulping /n 1 127.1nul
set /p=%退格%nul
set /p=%redtek:~1,79%nulecho.
goto :start
:calc
if %end%==28 (
set /a end=0 cls set /a cols=!random:~0,2!
echo ... 风力:!cols! ...
if !cols! GTR 76 set cols=76
if !cols! LSS 2 set cols=2
set setspaces=!redtek:~1,%cols%!!random:~0,1!
goto :eof
)
@echo off
mode con cols=80
color 02
for /f %%i in (test.txt) do set str_char=%%i
set str_blank=
setlocal enabledelayedexpansion
:loop
:: 取随机位置上的字符
set /a num_char=1%random:~-1%%random:~0,1%-100
set char=!str_char:~-%num_char%,1!
:: 设置随机长度的空格
set /a num_blank=1%random:~-1%%random:~0,1%-100
set blank=!str_blank:~0,%num_blank%!
echo.%blank%%char%
goto loop
@echo off
mode con cols=80
set a=1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#%.*(){}[]_+-=\"'?.,/^^^^^
set b=
setlocal enabledelayedexpansion
:a
set /a num=%random%%%92
set 字符=!a:~-%num%,1!
set/a c=%random%%%80
set 空格=!b:~-%c%!
echo %空格%^%字符%
goto a
@echo off
mode con cols=80 LINES=30
set a=1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ~`!@#%.*(){}[]_+-=\"'?.,/^^^^^
set b=
setlocal enabledelayedexpansion
:a
set /a num=%random%%%92
set 字符=!a:~-%num%,1!
set/a c=%random%%%80
set 空格=!b:~-%c%!
::echo. %空格%^%字符%
set/a i+=1
rem 指针=i 尾指针=j
set/a j=i-30
set line%i%=%空格%^%字符%
FOR /L %%v IN (%i%,-1,%j%) DO echo.!line%%v!
::ping /n 127.1nul
goto a
@echo off
::mode con cols=80
setlocal ENABLEDELAYEDEXPANSION
color 02
goto BEGIN
goto :eof
::function mt_rand "a" "b"
:mt_rand
::(
set a=%~1
set b=%~2
set /a _mt_rand=(!random!%%(%b%-%a%))+%a%
exit /b 0
::)
:BEGIN
::{--
SET iWidth=80
SET iDensity=6
SET sText="#$'()*+,-./0123456789:;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
SET sText=!sText:"=!
set /A iText=90-1
for /l %%i in (1,1,%iWidth%) do (
set aDown%%i=0
)
:loop
for /l %%I in (1,1,%iWidth%) do (
set /a aDown%%I-=1
if !aDown%%I! LSS 0 (
call :mt_rand "0" "%iDensity%"set aArrow%%I=!_mt_rand!
call :mt_rand "10" "25"set aDown%%I=!_mt_rand!
)
if !aArrow%%I! EQU 1 (
call :mt_rand "0" "%iText%"(FOR %%M IN ("!_mt_rand!") DO SET aa=!sText:~%%~M,1!)
set /p=!aa!nul
) else (
set /p= nul
)
)
goto loop
::--}
:exit
exit /b 0
@echo off
setlocal ENABLEDELAYEDEXPANSION
color 02
for /l %%i in (1,1,80) do (
set Down%%i=0
)
:loop
for /l %%j in (1,1,80) do (
set /a Down%%j-=1
if !down%%j! LSS 0 (
set /a Arrow%%j=!random!%%4
set /a Down%%j=!random!%%15+10
)
if "!Arrow%%j!" == "1" (
set /a chr=!random!%%2
set /p=!chr!nul
) else (
set /p= nul
)
)
goto loop
goto :eof
@echo off
setlocal ENABLEDELAYEDEXPANSION
for /l %%i in (1,1,80) do (
set Down%%i=0
)
for /l %%i in (0) do (
set line=
for /l %%j in (1,1,80) do (
set /a Down%%j-=1
call set x=!down%%j!
if !x! LSS 0 (
set /a Arrow%%j=!random!%%6
set /a Down%%j=!random!%%15+10
)
call set x=!Arrow%%j!
if "!x!" == "1" (
set line=!line!1
) else (set "line=!line! ")
)
call set /p=!line!nul
)[/code]
如何用python编写数字雨的程序
哦。就是黑客帝国的那个。很有意思。我知道有人写过,而且还是3D的。可以旋转的。
python的3D编程应该有不少的界面。我个人觉着可以先从2D开始容易些。
准备一系列字的图片。可以在程序起动时,绘制在一个PNG图上。再准备这些字的发光的图。同样缓制好放在内存里。
设置,好一些充填的路径。就是那种下雨感觉的路径。先事先计算好。别临时去排版去计算。
建立一系列的类似微线程的任务。游戏开发里似乎有专门的名称,我忘记叫什么名子了。意思就是在一次时钟频率里,一次性刷新所有的动画。
将各个任务(也就是刷新路线的任务),对应的图取出来,分别依次对应原图闪光以及不闪光的三个图。
刷新频率可以按每少5-10帧计算。
每次刷新都是绘制在后台d-buffer里,然后再绘制到前面。
这是一个复杂的算法。
当然也有更简单的算法。
找一个下雨的屏保,然后你再找一个抓屏软件,每0.2秒抓一次屏幕,连续抓10秒。然后把抓的结果图片,用python顺序显示出来。
C语言学到什么程度才能写数字雨
入门都不需要简单了解就可以,主要运用循环,随机函数着两个功能,不算困难.以下是我刚刚写的代码(基于控制台的)
,如果想完成像 黑客帝国中的那种画面就得涉及到GDI编程,这个就需要相应的GDI基础和windows方面的基础比较困难了
#include stdio.h
#include stdlib.h
#include time.h
int main()
{
int var;
srand(time(NULL));//让下面的rand()函数每次得到不同的值
while(1)
{
var = rand()%2;//让屏幕上显示的数字具有0,1两种,如需多种更改rand()%2这里的2就好
printf("%d ",var);//输出到屏幕
}
return 0;
}
哪里可以找到黑客帝国里数字雨的矢量图,急用!趴求各位帮忙
朋友,那东西是FLASH代码做的,是没有矢量图的,不过可以做一个的,看你是干什么用了,
如何实现c语言程序各颜色数字雨代码
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。