ㄓ个现阶段党内主要问题的翻译在C语言问题,怎么解决

【求助】DNF加密这个函数 谁帮我看下从易语言翻译到C语言有什么问题吗 - 『编程语言讨论求助区』
- 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn
后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 1196|回复: 2
【求助】DNF加密这个函数 谁帮我看下从易语言翻译到C语言有什么问题吗
阅读权限25
发帖求助前要善用【】功能,那里可能会有你要找的答案;
求助软件脱壳或者破解思路时,请务必在主题帖中描述清楚你的分析思路与方法,否则会当作求脱求破处理;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类改成【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】和【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人。
是注入DLL的方法不是用读远程内存的方法请注意区分这点
这是易语言源码
1.png (22.07 KB, 下载次数: 0)
23:29 上传
2.png (18.39 KB, 下载次数: 0)
23:29 上传
这个是我翻译出来的,没下DNF没法实验,求有条件的帮我测试下,或者大神帮我看看翻译对吗
[C++] 纯文本查看 复制代码VOID jiami(PVOID pAddrs, int i)
int edi, ecx, eax, esi, edx,
PVOID 加密基址, 加密参数1, 加密参数2, 解密基址;
加密基址 = (PVOID)0x3BB61C8;
加密参数1 = (PVOID)0x362AC40;
加密参数2 = (PVOID)0x362AE40;
解密基址 = (PVOID)0x3BB6168;
ecx = (int)pA
eax = *(PINT)加密基址 + 1;
*(PINT)加密基址 =
edx = edx && 8;
edx = edx && 24;
edx = edx && 24;
edx = edx * 2 + (int)加密参数1;
edx = edx & 0xFFFF; //丢掉高4位保留低4位
eax = eax && 24;
eax = eax && 24;
ss = eax * 2 + (int)加密参数2;
ss = ss & 0xFFFF;
//丢掉高4位保留低4位
edx = edx^ //位异或
eax = eax & 0xFFFF;
//丢掉高4位保留低4位
edx = esi && 16;
ss = esi & 0xFFFF; //丢掉高4位保留低4位
edx = edx +
edx = edx^//位异或
eax = eax && 16;
eax = eax +
eax = eax^//位异或
esi = (int)pAddrs + 4;
*(PINT)esi =
eax = *(PINT)pA
esi = *(PINT)解密基址;
ecx = ecx && 16;
ecx = ecx +
edx = edx && 16;
edx = *(PINT)(esi + edx * 4 + 36);
eax = eax & 0xFFFF;
//丢掉高4位保留低4位
*(PINT)(edx + eax * 4 + 8468) =
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
怎么说呢,易语言写汇编是我最他妈气的(作者什么时候能更新下汇编功能),一个cmp jnz ,完全不知道怎么写了。我只能用置入代码。
还有另一种写法
置汇编代码 ()
代码 = 取汇编代码 ()
调用函数 (进程取ID (“XXX.exe”), 取汇编代码 (), )
进OD一看又臭又长,完全不是我想要的,在我手里是没法用了。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限25
中文变量名
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz!
Comsenz Inc.C语言问题,语法应该没错,但点击翻译、运行、翻译并运行这三个按钮都没有响应,怎么办?求求各位大神啦_百度知道
C语言问题,语法应该没错,但点击翻译、运行、翻译并运行这三个按钮都没有响应,怎么办?求求各位大神啦
我有更好的答案
在printf函数后面加上getch( );
我的语法没错
假死了 任务管理器结束 就OK了
不是卡死了,能关上,但无法编译
我今天发现一处
这是怎么回事
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。二维码页面
该链接会唤起手机QQ,
若无法正常跳转请先。基本介绍/中文编程
中文编程中文编程(或者称为中文编程语言)是指使用中文来书写的程序设计语言,其目的是为了减少对英语的学习,将精力集中在程序设计上,并且便于程序交流和代码维护。高级计算机语言程序中任何标识都可使用中文字、词、词组和句子的语言文法,又有与中文相匹配的语言语法规则可称为汉语编程语言,使用这种语言编写的程序的过程就是中文编程。中文编程技术关键不是简单程序编写汉字标识使用,而是程序代码的编译技术必须自己掌握,编程与编译必须互为统一发展。
特点/中文编程
汉编编译器用什么语言来表达编程思路其实是一回事,英语可以编程,汉语同样可以编程,而且汉语编程作为计算机语言更符合自然语言。1.打破了英文编程语言的垄断,可以有效减少信息技术对英文的依赖,对形成全面的信息产业独立体系有巨大推动作用。2.中国人用自己的编程语言,才更有利于各种程序的编写。不但简化学习过程,而且提高了编程效率。易语言源代码界面3.汉语编程从根本上可以解决信息技术化发展的问题,只要会写汉字,就可以学习编程,而且汉语编程所编的软件可以很好地解决方方面面的问题。4 .用什么语言来表达编程思路其实是一回事,英语可以编程,汉语同样可以编程,英语的关键字只是表意符号而已,汉语也可以作为表达编程的语言之一,只是有一些技术上的问题需要克服。我们可以看到,“易语言”戏剧般地将这个“汉字输入比英文输入慢”等问题解决了。
分类/中文编程
据笔者所知,用汉语进行编程是中国软件界的一个新生事物,目前国内的汉语编程大体分为五类:一类是汉化了其他编程语言而形成的,如:“中蟒”,就是汉化了Python语言;“易乐谷”是汉化了的LOGO语言;“丙正正”是汉化了的C++,“EMS”就是汉化了的Visia Compiler。第二类就是自主研发了汉语内核的,如:“易语言”,“易语言.飞扬”等,汉语可被直接编译为机器码;“易脚本”、“世宝脚本”是自主开发的脚本语言。国产自主研发语言,还有其中的O语言,组合语言,习语言是C语言的汉化,支持汉语编写。另一类是以汉语为基础,搭建式或区别于传统编程的工具。如:搭建之星,网站搭建者,华罗庚(MISD),雅奇990等。第四类是中国人写的英文编程,可以称之为国产编程语言,严格的话不能划为汉语编程,但汉语化应该不成问题,也在这里给大家了解一下。第五类是中国人编写的程序语言翻译软件,包括正向翻译(将中文代码翻译成标准英文代码)反向翻译(将标准英文代码翻译成中文代码),属于应用级编程辅助软件。是一款专门针对程序语言的翻译软件。如:十十视程序语言翻译软件。
发展需求/中文编程
上世纪七十年代以来,中国开发了一个DOS下的中文编程语言,但由于WINDOWS的流行,还未等推广,就被淘汰。八十年代开始,台湾已见到繁体中言语版本的LOGO语言。九十年代,沈志斌的汉语编程初步推出。并申请了“汉语编程单片机”专利。脚本语言很多软件都是用汉语编程写的,很多学校都在开展汉语编程的教学,汉语编程的需求越来越多。
应用特点/中文编程
汉语编程应该具有以下特点:易用性:一个易于使用的编程环境(IDE)提供前台服务,编译器在后台服务。语言成功的一半也应归功于IDE的易用性。编程环境较有特色的是易语言,其编程环境提供:记忆式中文语句快速输入工具,名称自动管理工具,可视化流程线工具,智能语法引导工具,参数引导工具等多种实用工具。易语言提供内置快速的输入法,即首拼、简拼与英文的混合输入法,综合输入速度平均比英文要快。安全性:自主研发的编译器,可保障国家安全,配合国产CPU和OS,实现全面的硬件、软件安全。在特定的条件下,政府可以进行检查,或改造编译器为我所用。本地化:提供一些本地化特色的工具和命令,如:中文大小写转换、中文日期处理、汉字繁简转换、农历日期等工具。国际化:多语种版本中语言可互相转化。用汉语编程只是实现了母语化的第一步,反之汉语为国际化交流带来了不方便。应该提供机制,可以将汉语关键字自动转换为其他语言,实现交流合作。易语言提供了多语种版本,可以用不同语种的版本打开同一源代码,以最大限度的可能转换为相应语种的语言源代码。跨平台:软件的可移植性高,就可以节约大量的开发时间,是专业程序员需要考虑的首要问题之一。融合性:与其它语言互融互通,通过学习汉语编程从而可继续学习其他编程语言。先进性:更具现代性,可支持完全面向对象,跨平台,支持Unicode、多线程,垃圾自动回收,类型反射,静态编译,动态类型装载等等。自然性:语法更加接近自然语言。“易语言.飞扬”已提供自然语句规则。无代码编程:逐步向无代码编程方向发展,最终实现智能化编程。
相关疑问/中文编程
对汉语编程存在的一些疑问1.中文输入真的比英文慢吗?很多专家学者,认为国外已有很多成熟的编程系统了,中国再搞汉语编程系统没有必要。主要理由之一还在于:中文输入比英文慢。在汉语编程中以大连易语言公司出品的“易语言”为最有特色的代表,也是汉语编程中的技术领先者。易语言解决了很多技术上的难题。例如:输入“信息框”,易语言只要输入“xxk”(xxk是“信息框”的首拼)即可,而不必要象英文“msgbox”这样输入6个字母。而且熟悉英语的编程者也可以用自己熟悉的英语输入。因此我们作研究,不能以点概全,应该亲自使用一下,多去了解调查,才能有发言权。2.学习英文编程只要了解十几个关键字?有人认为英文编程的关键字只有那么十几个,记忆量不大,而且仅仅是符号而已,编程人员不用花大力气学习英文编程。但他们仅仅是想当然,学习过编程的人都知道,随着编程的深入,会越来越多地接触到英文,很多资料都需要翻译大量的英文资料。因此有很多职业培训学校一开始都是进行外语方面的培训,有的甚至职业学习的前一两年都要进行的相关英语的培训,学校认为如果语言不过关,这些学生后继的编程学习一定学不好,学不好就不能找到工作。学习成本高,也就意味着资源的浪费,要花更多的金钱进行学习深化,与中国的“多、快、好、省”地培养人才创造节约型社会的目标相去甚远,如果能省去学习英语的第一步,直接用母语进行思考,那么就更有可能在中国发展真正有创造能力的人才。中国的“信息技术”教科书中,大多教现成的软件如何使用,如WORD、FLASH、3DSMAX,PHOTOSHOP等,这些还不能称之为信息技术,这些只是学习了现成的流行软件,学生不能成为这些固化软件的学习工具,他们长大后可以用极短的时间学会,而我们信息技术教育工作者的任务是激发学生们的创造能力。易语言汉语编程系统非常适合于在教育系统推广,学生中不是每个孩子的学习外语资质都好,每个人都有不同的学习兴趣与能力,外语的环境也不是人人都可得,不能强求大家都学英语编程。易语言经过多年的发展和成熟,已经形成了自己的语编标准,成为真正意义上的编程语言了,而不是一个简单的工具,她就象矿石一样,通过冶炼可以造出各种工具。学习编程可让孩子们去思考解决问题的办法,即算法,让学生用自己的母语实现自己的想法,编程语言只是工具而已。笔者欣喜地看到,“易语言”已初步在国内的教育系统中推广了,老师与学生们的反馈都非常好。一个汉语编程语言一定是博大的,是融合的,可以与其他语言互通互融,学习一种语言后,由于思想相通,因此可以很方便地转而学习其他语言,不存在学习汉语编程后再学习其他语言不行的情况,因为上期文章也说了,就是关键字是类似的,仅是思想的符号而已。3.其他国家怎么没有法语编程、德语编程?西方国家对东方国家的高科技是封锁的,而欧洲国家却可轻易得到。中国人学习英语要比西方国家付出更多成本,东西方文化是不同的。印度模式确实已给了我们很大的启示,印度的官方语言是英语,因此他们的这个优势只是表面现象。前两年华为公司在印度建立分公司之后,深入调研才发现,印度外包发展地好不仅是语言的问题,而在于印度人已普遍接受了西方的文化思想,他们的思维习惯都是西方的,因此能很好地写出适合于西方的软件作品,人力资源的成本也低,西方国家也更愿意与他们进行合作。因此编程语言之争的焦点还在于文化之争,中国人有自己的思维习惯,因此大部分人都还在用中国的文化思想进行思考问题。4.嵌入式系统难以应用汉语吗?嵌入式系统大多数人已接触到了,打个现实的比方,手机功能已越来越接近电脑了,很多电脑有的功能,手机都有,而且上面所运行的可以是WINCE、Mobile、Linux系统,有的甚至可以用英文写段JAVA代码直接运行了。因此,强求用指令集用汉语确实没有什么优势,但从编程这点考虑,汉语实现嵌入式系统的编程不是没有可能,既然英语可以直接转换为机器码,汉语也可以直接转换为机器码,可以通过汉语直接调用指令集的办法实现。总之,一个新生事物,可能会暂时存在一些缺点,普及和应用汉语编程还有很长的路要走,中国要想成为软件大国,就一定要普及大众化,象打乒乓球一样,人人都能写程序,都可以用自己的母语编程,形成广大的用户基础,就不愁软件行业不发展。笔者不会引用很资深的专家学者的话树立权威,希望大家共同思考这个问题。我相信,在中国人的努力下,一定会开创一个更美好的未来。
现状简介/中文编程
流行的一些汉语编程的简介由于有些语言已不再开发和推广了,及篇幅关系,下文中以一些流行的语言进行介绍。汉语编程它的发展早于 1993 年,看起来像Forth,“汉语编程”是中国人自己研发的完全以汉语为描述语言的计算机程序设计语言,它完全具有中国自主知识产权。作为一种计算机语言,它和现在流行的大部分计算机语言具有一些共同的特点,都是人机对话必须的工具语言。但该语言绝非曾流行过的任何一种计算机语言的简单汉化,或是为某种软件制造一个中文环境。这是一个完全由中国人自行开发,由中国人自我掌握全部源代码,从形式到内容全面符合中国人的思维方式,使用汉文字表达的面向对象、面向问题计算机程序设计语言。“汉语编程”具有自成平台、面向对象、面向问题、所见即所得、高度安全性、强大的繁衍功能、高度兼容性以及资源占用少、速度快等特点,开辟了计算机语言发展的新纪元。自2003年以后只见推广,虽未见新版编译器发布,但允许学习者自己向指令集(词典)里面,扩充更多的命令词!易语言易语言主界面于2000年开始开发,是一款全中文、全可视、跨平台的编程语言。易语言汉语编程环境由核心层、扩展层、环境层和应用层组成。核心层的易语言及其编译器构成了基础编程平台;扩展层提供了专业编程人员的开发运行平台;环境层提供了用户集成开发环境;应用层支持用户创建本行业、领域的开发平台的框架。易语言汉语编程环境是一个支持基于汉语字、词编程的、全可视化的、跨主流操作系统平台的编程环境;拥有简、繁汉语以及英语、日语等多语种版本;能与常用的编程语言互相调用;具有充分利用API,COM、DLL、OCX组件,各种主流数据库,各种实用程序等多种资源的接口和支撑工具。更简单易学:繁琐、晦涩、不常用的语言特性被尽量精简,且补充了很多便于使用的语言特性,支持中英文双语关键字,在语法格式和关键字方面,尽量与现有类似编程语言相同,减少了学习量。对系统环境的适应和控制能力更强:定义有语言无关的“EF对象模型”,从而允许使用其它各种编程语言来直接书写“易语言.飞扬”本地类,和用“易语言.飞扬”本身书写的类完全融合互补,没有任何差别,可用作快速建立强大高效的本地应用环境,同时可充分利用现有代码资源。习语言习语言即中文版的C语言,由一套完备的编程语法和相配套的工具组成,旨在将计算机及软件编程大众化,普及化,中文化,提高程序的维护性而诞生。适合国人使用,尤其适合作为初学者的入门学习工具。作为一种中文编程语言,习语言中所有的关键字和函数都为中文。习语言已经完全支持汇编和C语言,并向windows图形处理发展。历史经验证明,英文写的代码时间久了大部分都会遗忘的。而习语言则避免了这一点,中文浏览下就可以回忆起来,真正符合汉语言特色。而且支持全角标点符号,编程时输入符号类时不用频繁切换中英文输入。中文C(习)语言中文编程系统(简称:习语言):是一款主要用于教育和学习的中文编程软件系统。基于现有C语言系统实现并有扩充。其特点如下:1、完全兼容现有的C语言系统,在设置好头文件路径的条件下,可以编译现存大部分C代码。2、完全支持全中文编程,自带大量中文函数。3、综合了PASCAL和C的优点实现,支持 “开始”“结束”扩起语句块。支持【】注释方法,方便程序组织。4、支持多字节字直观表示。如 '我', 'abcd'都可以作为字符看待。5、支持中文标点符号,中文标点符号和英文标点符号可以混合使用。6、支持文章式的程序组织,中文文章中嵌入程序,直接编译。7、支持中文运算符,支持全角,半角混合使用。8、体积小巧,简单使用情况下只需单一接口文件,降低使用难度。用途:1、开发底层软件如操作系统等2、写控制台程序(俗称DOS程序)3、写纯图形界面程序(通常的WINDOWS程序 )4、写控制台和图形界面同时存在的混合程序。5、编写游戏程序( opengl)O汇编语言顾名思义O汇编语言也是一门汇编语言,它具有传统汇编语言的基本特点,也有与它们诸多不同之处。O汇编语言一个最大显着的特点是支持语言配置,使得它可以支持所有你想支持的语言,当然,O汇编语言的初衷是为了支持中文,所以它可以非常好的支持中文汇编。如果你已经习惯了其它英文的汇编模式,比如你喜欢用EAX、EBP类似这样的方式来命名寄存器,不要紧,只需要修改一下语言配置文件,这可以轻松做到。O汇编语言另一个显着的特点是指令使用非常直观和人性化,在不缺失汇编语言灵活性的情况下,使汇编语句的语意可以很直观地表现出来,这主要得益于用了一些象征性的符号,使得汇编语句不再是千篇一律的(指令 寄存器,内存操作数) 这样的格式,而是更像 (寄存器 操作符 内存操作数)这样的格式,不但容易理解,而且便于记忆,使汇编语言不再那么枯燥,使人一团雾水。搭建之星原名“发烧积木”属于搭建式的编程工具,完全可视化编程,有各种各样的构件,用拖放的方式拼成程式的流程。特点:1.安装简单、迅速,纯中文界面。构件丰富,设计过程直观、自由;无需掌握电脑语言,所有编程构件化、命令化、可视化。2.交互式开发,只需要四种类型的“命令”,便可建立各种构件之间的联系;象搭积木一样简单,并可快速的搭建出具有专业水平的软件作品。3.微解释执行,命令解释量小,执行速度快。可以和编译后的可执行文件相媲美。基本功能:多媒体软件制作,支持多种声音、动画、图像、视频文件格式。有关教学构件,平面直角坐标系、表达式、变量组、函数图像、函数列表、树形浏览等;另外还新了动态流程图、浏览器构件、软件服务号等。提供打包工具,使您即刻将自制软件安装到其它机器上运行;自动对开发项目加密;使您的项目,在未经授权下,别人无法“浏览、修改”项目的构件关系与搭建方法。雅奇MIS无代码编程的领先者。该软件采用“可视化语言”,实现了软件开发的“无代码图示编程”。任何人只要会打字,就能在30分钟内学会编程。可视化的无代码编程,使开发效率提高百倍。1小时完成的开发,相当于代码编程方式 2个月的工作量总和。“窗体、报表、计算”等各种功能设计,可达到“秒级”的设计效率。适合于普通办公人员开发“财务、人事、工资、进销存”等各行各业的管理信息系统。创新LOGOCX-LOGO语言是一种结构化程序设计语言。它是交互式的,为少年儿童提供了良好的编程环境;它是模块化的,便于程序的修改与扩充;它是过程化的,包含了过程、参数、变量等重要概念,并允许递归调用;它有丰富的数据结构类型,有生动的图形处理功能。CX-LOGO语言独创的流程图工作方式和过程库的建立,可方便的使用“搭积木”的方法,构建“知识”,使学习更容易、操作更简便,学生只需简单的学习就可以操作。CX-LOGO语言不仅具备多种优秀程序设计语言的优点,而且更接近自然语言,生动有趣,简单易学,它能用直观的运动来体现编程的结果,让少年儿童在游戏中进行思考,在趣味中学习,深受少年儿童的欢迎。通过CX-LOGO语言的教学,以学习一种“玩具”为出发点,可以培养学生学习计算机的兴趣,使他们初步了解计算机是如何工作的,为他们今后学习其他高级程序语言设计铺设道路CX-LOGO语言是专为我国少年儿童开发的创新平台,孩子们可以在电脑上指挥七色瓢虫移动、转向、行走、发光、响应外界刺激等。这些具有创造性的学习工具所倡导的“做中学”的学习理念,非常适合课堂教学,极大地激发了孩子们学习的兴趣。计算机编程汉语字母表本字母表的125个汉语字母对应128进制的125个数码,空格和语句分割符(/)对应128进制的2个数码。声母表(55个)
’(空声母)
韵母表(70个)
注:1.第二、三、四列声母也称声介合母,为了拼式统一,在书写时统一占半格或一格,分别形似于“引”、“兦”、“函”字。2.【〇】作为注音字母,指空韵母。3.阴平调号不标。(设计人:刘学中 设计时间:)a[13921W33
&|&相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于www.baike.com。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
此词条还可添加&
编辑次数:6次
参与编辑人数:6位
最近更新时间: 03:36:11
贡献光荣榜
扫码下载APP追根溯源-C语言和Unix的发明史
导言:偶然在网上看到此文,因其详尽和流畅的文字,转此分享给大家。尽管我们对C和Unix的历史并不陌生,尽管我们对Linux的流行视为必然,但在这些现象的背后,总演绎着一些伟大的人或者事。了解这些,或许,我们不会轻易被眼前的繁华所遮蔽。
------------------------------------------------------------------------------------------------------------
在计算机发展的历史上,大概没有哪个程序设计语言像C那样得到如此广泛地流行;也没有哪个操作系统像UNIX那样获得计算机厂家和用户的普遍青睐和厚爱。它们对整个软件技术和软件产业都产生了深远的影响。而C和UNIX两者都是贝尔实验室的丹尼斯·里奇(Dennis MacAlistair Ritchie)和肯尼思·汤普森(Kenneth Lane Thompson)设计、开发的。因此,他们两人共同获得1983年度的图灵奖是情理中的事。我们先介绍汤普森,因为就C和UNN两者的关系而言,UNIX的开发在前,C是为了使UNIX具有可移植性而后来研制的;就里奇和汤普森两人的关系而言,他们两人当然是亲密的合作者,但汤普森在UNIX的开发中起了主导的作用,而里奇则在C的设计中起的作用更大一些。
汤普森日生于路易斯安娜州的新奥尔良,其父是美国海军战斗机的驾驶员。汤普森自幼的爱好有两个,一个是下棋,一个是组装晶体管收音机。他父亲为了发展孩子的智力和能力,在晶体管当时问世不久,价格不菲(每只晶体管约售10美元)的情况下,很舍得为汤普森买晶体管让他摆弄。由于爱好无线电,汤普森上加州大学伯克利分校时学的专业是电气工程,于1965年取得学士学位,第二年又取得硕士学位。求?诩洌??共渭恿送ㄓ枚?ρЧ?荆?General Dynamics Corporation)在伯克利实行的半工半读计划( work-study Program),因此既增长了知识,又积累了不少实践经验。
毕业以后,汤普森加盟贝尔实验室。虽然他学的是电子学,主要是硬件课程,但由于他半工半读时在一个计算中心当过程序员,对软件也相当熟悉,而且更加偏爱,因此很快就和里奇一起被贝尔派到MIT去参加由ARPA出巨资支持的MAC项目,开发第二代分时系统MULTICS。但就在项目完成前不久,贝尔因感到开发费用太大,而成功的希望则不大而退出了该项目,把所有成员都调回贝尔。这使汤普森和里奇深感沮丧。返回贝尔以后,面对实验室中仍以批处理方式工作的落后的计算机环境,他们决心以他们在MAC项目中已学到的多用户、多任务技术来改造这种环境,以提高程序员的效率和设备的效率,便于人机交互和程序员之间的交互,用他们后来描写自己当时的心情和想法的话来说,就是“要创造一个舒适、愉快的工作环境”。但他们意识到,贝尔领导人既然下决心退出MAC,就不可能支持他们的想法,不可能为之立项,提供资金和设备,他们只能悄悄干,自己去创造条件。1969年,万般无奈的汤普森在库房中偶然发现一台已弃置不用的PDP-7,大喜过望,立即开始用它来实施他们的设想。但开头是十分困难的,因为这q PDP-7除了有一个硬盘、一个图形显示终端和一台电传打字机这些硬设备外,什么软件也没有。
他们只能在一台 GE 645大型机上编程、调试,调通以后穿孔在纸带上,再输入PDP-7。以这种“可怕的”工作方式开发两年以后,连这台PDP-7也损坏得不能再用了。这时,他们听到一个消息,实验室的专利部需要一个字处理系统以便处理专利申请书(贝尔每年要提出不少专利申请),汤普森立即找到上级自告奋勇承担这一开发任务,在这个冠冕堂皇的借口下,他们申请到了一台新的、设备完善的PDP- 11,这才使开发工作顺利地真正开展起来。
汤普森以极大的热情和极高的效率投入工作。开发基本上以每个月就完成一个模块(内核,文件系统,内存管理,I/O……)的速度向前推进,到1971年底,UNIX基本成形。UNIX这个名称是从MUL-TICS演变而来的:他们变MULTI为UNI,变CS为X。为了向上级“交差”,UNIX首先交给实验室的专利部使用,3个打字员利用UNIX输人贝尔当年的专利申请表,交口称赞系统好用,大大提高了工作效率,这样,UNIX迅速从专利部推广到贝尔的其他部门,又从贝尔内部推向社会。贝尔实验室的领导人终于认识到了UNIX的巨大价值,把它注册成为商标(但有趣的是,由于法律上的原因,注册商标及版权被贝尔的上属公司AT&T取得),推向市场。贝尔的一个行政长官甚至宣称,在贝尔的无数发明中,UNIX是继晶体管之后的最重要的一项发明。著名的国际咨询公司 IDC的高级分析员 Huie Bruce Kin估计,1985年单是美国就有27万7千个计算机系统使用UNIX,1990年这个数字增长至210万。目前世界上UNIX的安装数量超过500万套,用户数达到3000万。
UNIX之所以获得如此巨大的成功,主要是它采用了一系列先进的技术和措施,解决了一系列软件工程的问题,使系统具有功能简单实用,操作使用方便,结构灵活多样的特点。它是有史以来使用最广的操作系统之一,也是关键应用中的首选操作系统。UNIX成为后来的操作系统的楷模,也是大学操作系统课程的“示范标本”。归纳起来,UNIX的主要特性如下:
1作为多用户多任务操作系统,每个用户都可同时运行多个进程。
2提供了丰富的经过精心编选的系统调用。整个系统的实现紧凑、简洁、优美。
3提供功能强大的可编程外壳(Shell)语言作为用户界面,具有简洁高效的特点。
4采用树形文件结构,具有良好的安全性、保密性和可维护性。
5提供多种通信机制,如管道通信、软中断通信、消息通信、共享存储器通信和信号灯通信。
6采用进程对换内存管理机制和请求调页内存管理方式实现虚存,大大提高了内存使用效率。
7系统主要用C编写,不但易读、易懂、易修改,更极大提高了可移植性。
由于以上特点,也由于看好UNIX的应用和前景,各大公司纷纷推出自己的 UNIX版本,如 IBM的 AIX,SUN的Solaris,HP的 HP-UX, SCO的 UNIXWARE和 open Server, DEC(已被 Compaq收购)的digital UNIX,以及加州大学伯克利分校的 UNIX BSD。这些 UNIX各具特色,形成百花齐放的局面。到20世纪op年代,UNIX版本多达100余个。UNIX的标准化工作则经历了一个复杂的过程。最早是UNIX用户协会从20世纪80年代开始此项工作,1984年颁布了试用标准。后来此工作被IEEE接收和继承,制定了多个基于UNIX的“仍移植操作系统环境”标准,即POSIX。而计算机厂家在UNIX标准上则分裂为两大阵营,即以AT&T和SUN为首的UNIX国际(UI)和以IBM、HP、DEC为首的开放系统基金会(OSF)。分裂和竞争一方面促进了UNIX技术的迅猛发展,另外一方面则引起用户的困惑,不利于UNIX市场的健康发展。因此,1993年3月,两大阵营终于走到一起,成立了“公共开发软件环境”组织(COSE),以实现UNIX系统的统一化。1993年10月,Novell公司将从AT&T购得的UNN商标权无偿移交给开放系统标准化组织X/OPEN,这样,UNIX商标不再受某一厂商控制,而由中性的国际组织管理。1995年,关于UNIX的两个重要标准 CDE(规定 UNIX的图形界面)和 UNIX 95(规定 UNIX的应用程序界面,也叫Spec.1170)正式颁布,为整个UNIX的标准化打下了基础。1998年,IBM、Intel和SC0三家业界巨头在加利福尼亚的蒙特雷(Monterey)聚会,进一步商讨了UNIX统一问题,制定了蒙特雷计划。这个计划结合了IBM公司的AIX、NUMA-Q和SCO的UnixWare技术,建立一条企业级商用 UNIX产品线,使之能同时运行在 Intel IA-32、IA-64和 IBM PowerPC处理器之上,平台适用范围将覆盖从部门级服务器到大型数据库中心的超级服务器。目前,AIX和UnixWare已经相互融合并达到了二进制级的互操作性。
应该指出,目前操作系统平台形成了 UNIX、Windows NT和 LINUX三强鼎立的局面,而由芬兰大学生 Linus Torvalds推出的 LINUX本身实际上也是UNIX见的一个变种。
由于功能强劲,用途多样,使用方便,因此有人把UNIX称作软件中的“瑞士多用途折叠刀”(或叫“瑞士军刀”)。
汤普森本人围绕UNIX的开发工作于1978年结束。之后他从事过的项目有 Plan 9,这是另一个操作系统,旨在提高分布式计算的性能。 Plan 9用单一协议查询不同的资源、过程、程序和数据,并与之进行通信,为访问分布于由服务器、终端和其他设备组成的网络上的计算资源提供一个统一的方式,尤其适合于那些要求安全运行的Web服务器。 Plan 9的设计思路是惊人的,它小而功能强大,而且非常灵活,是 UNIX和 LINUX的竞争产品。 Plan 9早在 20世纪 80年代后期就已设计成型,目前的 Plan 9第三版是 1995年推出的。但 Plan9至今只限于贝尔实验室内部使用,没有推广和流行。最近(2000年6月),贝尔实验室采取惊人措施,免费开放 Plan 9源代码,以便让实验室以外的人使用 Plan 9。贝尔实验室的这一举措也许会像当年推出UNIX一样,在软件界引起一次新的震荡。此外,鉴于汤普森自幼爱好下棋,他还建造过一台名为Belle的下棋计算机,还与康顿(Joseph Condon)合作,在 PDP- 11/23和 PDP- 11/70上编制了下棋程序,这个程序从1979年到1983年在连续几届计算机下棋世界比赛中都独占鳌头,成为“四连冠”,同时也成为被美国围棋联盟USCF授予“大师”称号的第一个下棋程序。这个程序每秒可观察15万个棋步,与现今的IBM的“深蓝”当然无法相比,但在当时却是一个了不起的成就。
里奇比汤普森年长2岁,日生于纽约州的勃浪克斯山庄(Bronxville),但在9岁时移居新泽西州的塞米特。里奇的父亲是一个电气工程师,在贝尔实验室的交换系统工程实验室当主任,因此,里奇一家可谓“呗尔世家”。里奇中学毕业后进哈佛大学学物理,并于1963年获得学士学位。其间,哈佛大学有了一台UNIVAC I,并给学生开设有关计算机系统的课程,里奇听了以后产生了很大的兴趣。毕业以后他在应用数学系攻读博士学位,完成了一个有关递归函数论方面的课题,写出了论文,但不知什么原因没有答辩,没有取得博士学位,他就离开了哈佛,于1967年进入贝尔实验室,与比他早一年到贝尔的汤普森会合,从此开始了他们长达数十年的合作。
前面说过,UNIX的开发是以汤普森为主的,那末,为什么文献资料中一提到UNIX,都一致地说是里奇和汤普森共同于发的,而且在“排名”上往往是里奇在前,汤普森在后呢?包括他们在1973年由ACM主办、IBM承办的操作系统原理讨论会上首次向社会推介UNIX的论文 The UNIX Time- Sharing System的署名,里奇也是第一作者,汤普森则为第二作者。里奇在UNIX开发中有些什么功劳呢?
这里有两个很重要的因素。首先,UNIX的成功应归功于它的创新。前面曾经提到,UNIX吸取与借鉴了MULTICS的经验,如内核,进程,层次式目录,面向流的I/0,把设备当作文件,等等。这是可以理解的,因为任何新事物必然是对原有事物的继承和发展。尤其是UNIX,毕竟没有正式立项,是汤普森、里奇等少数几个人偷偷干的,如果一切都要从头从新设计,那几乎是不可能的。但是UNIX在继承中又有创新,比如 UNIX采用一种无格式的文件结构,文件由字节串加句号组成。这带来两大好处:一是在说明文件时不必加进许多无关的“填充物”(类似于COBOL中的FILLER),二是任何程序的输出可直接用作其他任何程序的输入,不必经过转换。后面这一点叫做“流水”(piping),就是UNIX首创的。此外,像把设备当作文件,从而简化了设备管理这一操作系统设计中的难题,虽然不是UNIX的发明,但是实现上它采用了一些新方法,比MULTICS更高明一些。正是在这些方面,里奇发挥了很重要的作用,使UNIX独具特色。
其次,UNIX成功的一个重要因素是它的可移植性。正是里奇竭尽全力开发了C语言,并把UNIX用C重写了一遍,这才使它具有了这一特性。汤普森是用汇编语言开发UNIX的,这种语言高度依赖于硬件,由它开发的软件只能在相同的硬件平台上运行。里奇在由剑桥大学的里查德(M.Richard)于1969年开发的BCPL语言(Basic Combined Programming Language)的基础上,巧妙地对它进行改进、改造,形成了既具有机器语言能直接操作二进制位和字符的能力,又具有高级语言许多复杂处理功能如循环、转移、分支等的一种简单易学而又灵活、高效的高级程序设计语言。他们把这种语言称为C,一方面指明了继承关系(因为BCPL的首字母是B。有些资料说是汤普森先根据BCPL开发了一种称为B的语言,再由里奇根据B开发了C。这种说法并不太确切,因为我们在汤普森与里奇本人的叙述中,都没有见到有关B语言这一中间过程的说法),另一方面也反映了他们对软件追求简洁明了的一贯风格。C开发成功以后,里奇用C把U-NIX重写了一遍。我们这里用了“重写”这个词,因为文献资料在提到这件事时都是用的这一说法,显得很轻巧;实际上,里奇做的这件事本身就是“移植”,即把汤普森用汇编语言实现的UNIX改用C来实现,这决不是什么轻巧的工作,尤其是对UNIX这样的大型软件。这需要付出艰苦的劳动,也是一件需要创造性的工作。单是里奇此举就是可以大书特书的,而C作为可以不依附于UNIX的一个独立的软件产品,也自有其本身的巨大价值,在计算机发展史上可以写下浓重的一笔。C已经实现标准化,即ISO于1990年公布的ISO/IEC9899,它以 ANSIC为基础,是第一个支持多8位字符集的程序设计语言国际标准。
前述里奇和汤普森的论文 The UNIX Time-Sharing Symtem后来发表于 Communications of ACM,1974年 7月。 ACM 1983年在纪念该刊创刊25周年时曾经评选出刊登于其上的25篇文章称之为具有里程碑式意义的研究论文,该文就是其中之一。
除了论文以外,里奇还和凯尼汉(B.W.Kernighan)合著了一本介绍 C的专著:《C程序设计语言》(The C Programming Language, Prentice-Hall,)。我们现在见到的大量论述C语言程序设计的教材和专著都是以本书为蓝本的。
汤普森和里奇在成名以后,都没有走办公司、挣大钱的路,他们仍然在贝尔做他们喜爱做的事,而且还一直保持着他们历来的生活习惯和作风,常常工作到深夜,在贝尔是出名的“夜猫子”。里奇在接受记者采访时,就自称自己是 definitely a night person。里奇 1983年接受图灵奖时已经42岁,但仍然单身。
ACM于1983年10月举行的年会上向汤普森和里奇颁奖。有趣的是,ACM当年决定新设立一个奖项叫“软件系统奖”(Software Sys-tem Award),奖励优秀的软件系统及其开发者。而首届软件系统奖评选结果中奖的也是UNIX。这样,这届年会上汤普森和里奇成了最受关注的大红人,他们同时接受了“图灵”和“软件系统”两个大奖,这在ACM历年的颁奖仪式上是从来没有过的。里奇发表的图灵奖演说题为“对软件研究的反思”(Reflections on Software Research),汤普森的演说题为“对深信不疑的信任的反思”(Reflections on Trusting Trust),它们刊载于 Communications of ACM,1984年 8月,757- 763页,或见《前20年 ACM图灵奖演说集》(ACM Turing Award Lectures——The First 20 Years: 1966- 1985, ACM Pr.), 163- 178页。里奇在演说中强调了UNIX成功的因素,包括比较长的酝酿时期和他们在开发时没有商业上的压力。里奇认为,对研究工作而言,受到过份的关注反而会影响创造力和自由的交换意见。汤普森在演说中谦虚地自称是“程序员”(在他以前获图灵奖的狄克斯特拉、霍尔、克努特和弗洛伊德也都这样称呼过自己)。同里奇一样,汤普森强调了开发程序系统时环境和背景的重要性。
除图灵奖外,汤普森和里奇还从两个著名的杂志那里获得奖励和荣誉,一是《电子学》(Electronics)周刊,它从1974年起设立“成就奖”(achievement award),奖励在电子线路、工艺、仪器设备等方面有重大发明创造的科学家,曾经获得该项奖励的人中包括著名的提出“摩尔定理”的 Intel总裁摩尔(G. E. Moors),MOS工 的发明者里趣曼(P.Richman),发明软盘的舒格特(A.F.Shugart)等。但由于UNIX和C的巨大成功和影响,使1982年的这个奖破例授予了软件开发者汤普森和里奇。二是读者面很广的Datamation月刊,它于1987年创刊30周年时建立了一个“计算机名人堂”(Hall of Fame),首批 30位名人中包括图灵、冯·诺伊曼及多位图灵奖得主,如克努特(D.Knuth),巴克斯(J.Backus),麦卡锡(J.McCarthy)等。第二年首次增补名人,就选中了汤普森和里奇。
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点}

我要回帖

更多关于 多阶段决策问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信