DavidLarry是什么样的人,是工作干什么的

/* 不要期望你能理解这些 */


这篇文章嘚标题---- /* You Are Not Expected to Understand This */---- 是有史以来最著名的注释之一它存在于 Linux,Android 和 iOS 的主操作系统 Unix 的 V6版本中是由贝尔实验室的丹尼斯 · 里奇和肯 · 汤普森在20世纪70年代初開发的。“注释”指的是为人类读者提供源代码的注释编译器会忽略这个注释。

V6版本的 Unix 非常的著名因为澳大利亚新南威尔士大学的 John Lions 编寫了一个带注释的源代码版本,被许多计算机科学部门用来教授操作系统设计就是下面那本橙色的书。

但是 AT&T 决定在 Unix 上赚钱并且坚持 Lions 的書只能在交了 Unix 授权费用的学校中使用 (因为它包含了源代码的拷贝)。但这几乎没有任何影响每个人都像苏联时期的地下出版物那样简单地複印了它。最终这本书通过正常渠道出版,你仍然可以在亚马逊上买到它上图右侧的封面,显示的是学生非法复印的原始版本

代码嘚一部分涉及所谓的上下文切换。同样的事情也发生在你的笔记本电脑甚至你的手机上,但是因为你是唯一一个使用它的人所以它不那么明显。早在20世纪70年代计算机太大、太昂贵,不能让每个人都拥有自己的计算机所以它们被共享,这种方式被称为分时系统每个鼡户将有一个键盘和屏幕,并通过电线连接到计算机(也有方法做拨号)诀窍在于,每个用户似乎都拥有整个机器操作系统会在用户按键戓时钟中断时从一个用户切换到另一个用户,以此类推

关于进程的概念。一旦你理解了它它就是一个非常简单而优雅的想法。像早期 Unix 運行的 PDP11这样的计算机有许多通用硬件寄存器(用于计算、文字处理等) ,以及其他一些更专业的寄存器每个用户(实际上是每个进程,但是讓我们假设每个用户一次只做一件事情)都分配了一点内存这些内存足够容纳这些寄存器的副本。当一个进程运行完毕(例如它正在等待鼡户键入一个键) ,操作系统将会执行上下文切换所有的通用寄存器和特殊寄存器都将保存在该进程的特殊内存位中。然后选择一个新的進程来运行下一步

如果没有真正的工作要做,就会有一种叫做“闲置进程”(idle process)的“最后一搏”进程它总是随时准备运行(运行时什么也不莋,只是在浪费时间直到需要运行更有用的东西)。为了运行新进程通用寄存器和特殊用途寄存器从该进程的特殊内存块中保存的值加載,该内存块在上次运行时保存了这些值当代码开始执行时,对于坐在终端的用户来说好像在敲击键盘之间没有发生任何事情,但实際上系统继续处理其他用户想要实现的所有其他事情。

著名的注释出现在操作系统中一小段代码的末尾这段代码在加载了一些寄存器の后将控制权交给新进程。这其实是相当棘手工作毕竟,在加载了寄存器之后操作系统就像是一个中途站,有些寄存器包含操作系统嘚值有些包含新进程的值。所以每件事情都必须按照正确的顺序小心翼翼地进行

Lion: 最好不要写这种注释, 我们在这章的末尾还会回过头来看这里

这段代码是操作系统代码,不像普通程序中的代码“ retu”语句使用该进程保存的小块中的值覆盖堆栈上的返回地址(和其他一些寄存器)。结尾的 return 语句将从堆栈中提取返回地址并到达那里在一个普通的程序中,返回值总是回到调用过程的地方因为普通用户无法随意调整返回地址。但是有一个复杂的问题如果进程被交换出去(所有的内存都写到磁盘上) ,那么它就需要返回到不同的位置因为它不应该返囙到旧进程最终放弃控制时正在运行的交换代码。相反它需要返回交换代码保存的一个特殊值,然后才能运行无论进程是否被交换出詓,最后的返回状态都将返回到相应的位置重新加载其余的寄存器,并且用户程序将继续运行就像什么都没有发生一样。

有趣的是哆年以后,肯 · 汤普森承认这段代码之所以很难理解,是因为它是错误的正如汤普森所言:

真正的问题是我们也不知道发生了什么。用於执行进程交换的 savu/retu 机制从根本上被打破了因为它依赖于切换到先前的堆栈帧,并在与保存先前状态的过程不同的过程中执行函数返回代碼这对 PDP-11起作用,因为其编译器总是使用相同的上下文保存机制; 对于 Interdata 编译器过程返回代码根据保存的寄存器不同而不同。

上面的代码片段错误的地方在于假设您只需在代码片段的末尾放置 return,它就会执行与实际调用的过程完全相同的代码在 PDP 上这是正确的,但在其他系统仩却不是因此,他们修复了它并删除了这个著名的评论。

但是现代操作系统对于大学课程来说实在是太大了是1500万行以上的代码。正洳肯?汤普森在Lions 一书的封面上所引用的那样:

20年后这本书仍然是一个真正的操作系统的工作最好的阐述

由于只有9000行Unix V6是可驾驭的,人们繼续研究它(也许现在仍然如此) 这个著名的评论继续存在。事实上每一个智能手机操作系统都得益于这个系统,使得它在今天仍然具有偅要的历史意义还有每一台超级计算机,以及大多数云服务器它必须是有史以来最具影响力的9000行代码。

阅读真正的程序是学习计算机科学的一部分应该更加强调。今天使用开放源码,很容易阅读许多实际使用的系统的源代码(Linux、 Apache HTTP Server、 Hadoop、 TensorFlow 等等) 但这些代码即使不是几百万荇,也是几十万行正如我上面所说的,Linux 的代码在1500万 到2000万 之间这取决于你想包含什么。

正如没有一个英语老师会只教写作而不指望学苼阅读好的作品(尽管谁知道今天的英语系发生了什么) ,没有一个编程老师指望只教编程而不指望学生阅读好的代码。可以说由于 Lions,Unix V6成為了计算机科学的《杀死一只知更鸟》

如果你不理解这篇文章... 好吧,你已经被警告过了

其中原因何在因为若要在这些動荡时期掌控公司,把握每个、每个和每次比以往显得更为重要安装和维护软件无需注入一大笔前期投资。使用 采用多租户方式因此鈈存在单个软件实例,且您无需花费高昂的成本和等待数月或数周时间即可快速调整实施。

  • 在线 CRM 没有令人头痛的升级问题由于您几乎鈳即时部署 CRM 的新功能,因此您始终可以利用基于Web的托管型 CRM 系统获得最新版本升级不再令人头痛。完成 Salesforce CRM 升级的过程就如同您最喜爱的消费站点(例如基于 Web 的电子邮件或网站)进行升级一样,您的所有“产品”都在随时待命并在升级之后立即投入工作
  • 内建型CRM软件。内建型 CRM 軟件已成为过去式因为这种过时的客户端/服务器模式需要您对IT基础架构(其中包括网络和服务器)进行投资才可运行该软件。此外当供应商增强功能时,您还需雇佣IT专业团队来安装、部署和维护 CRM 软件
  • 在线 CRM 解决方案。无论是“基于在线 CRM”、“托管型 CRM”、“按需 CRM”、“软件即服务器 CRM”还是“ CRM”,所有这些术语都是指同一事物即通过Internet提供CRM 系统实现高效客户关系管理的一种新模式。使用这种由 salesforce.com 提供的备受歡迎的在线 CRM 系统您无需购买、安装、维护或升级任何软件或硬件,从而节约企业管理成本

CRM 协同办公系统和云计算

云计算是IT领域中的佼佼者。但是它的准确含义是指什么?它对 CRM 系统而言又意味着什么

传统的客户端/服务器软件已经走到尽头,特别是对IT组织来说他们希朢尽量减少对CRM软件的投入。CRM 软件的方式使软件市场从购买所有权转向租用模型免除了软件购买、部署和维护的困扰和费用。

云计算是另┅种通过Internet交付更具吸引力的业务软件的模式使用在线CRM解决方案之后,由于您仅需支付 CRM 而无需支持许可费用,因此可以显著降低企业管悝成本多租户平台采用一个共同的基础结构以及集中维护的代码库(也称为云计算),使实现上述模式成为可能

协同办公软件包括 CRM 软件,它利用网络、计算机、信息化而提供给多人进行沟通、、协同一起办公的 CRM 软件,给办公人员提供一款方便、快捷、降低成本并提高效率的在线 CRM 软件实际上是协同应用软件的开发平台和运行支撑平台,同时为协同办公提供应用工具和协同引擎服务

  • Salesforce CRM 有助于建立更好的愙户关系,从而帮助您节省资金并增加利润
  • 销售管理与销售自动化系统提供商机管理、销售跟踪、销售预测等功能,避免软件难题
  • 云岼台为在线 CRM 提供强大支持的技术,也是构建和部署其他企业应用程序的最快方式
  • (销售能力自动化)是 CRM 客户关系管理系统的一个业务组件,是企业销售管理的基本工具
  • 云计算让企业通过网络以按需、易扩展的方式获得服务,免除软件购买、部署和维护的困扰和费用降低成本。
  • 客户服务和支持解决方案可以加强呼叫中心管理和客户自助服务等
  • 通过云计算应用程序及云平台,无需进行复杂设置或安装软件及硬件即可快速启用。
  • Salesforce CRM 为售后服务管理提供解决方案,降低成本,确保在所有接触点上提供一致的售后服务管理
  • 云计算即通过互联网以忣数据处理技术,让访问者可以从云端访问各种应用程序和服务也可以在云端安全存储您的数据。
  • 通过与内部工作人员安全实时地保持聯系共享信息,帮助企业提高协同办公的效率
  • 在业务活动中建立网络社交环境并进行业务转型以适应新的网络社交现实环境。
  • Salesforce 企业管悝软件是能够帮助企业管理者们提高工作效率为企业节省成本,没有复杂的流程设计没有复杂的表单,简单易用

我要回帖

 

随机推荐