本节书摘来自异步社区《计算机科学概论(第12版)》一书中的第0章0.4节算法,作者【美】J. 格伦•布鲁克希尔(J. Glenn Brookshear) , 丹尼斯•布里罗(Dennis Brylow),更多章节内容可以访问云栖社区“异步社区”公众号查看。
0.4.1 算法
数据存储容量有限,程序设计过程复杂耗时,这些限制了早期计算机器所能处理的算法的复杂性。如今,随着这些局限性的消除,机器能完成的任务越来越大、越来越复杂。人们试图用算法表达这些任务,但单凭人类的智力无法做到,于是,越来越多的研究工作转向了算法和程序设计过程的研究。
正是在这种背景下,数学家的理论研究开始有了回报。由于哥德尔不完备性定理,数学家已经在研究有关算法过程的问题了,而这正是先进技术目前面临的问题。由此,孕育出了被称作计算机科学的这门学科。
如今,计算机科学已经奠定了它算法科学的地位。这门科学范围很广,涉及数学、工程学、心理学、生物学、商业管理和语言学等多个学科。事实上,研究计算机科学不同分支的研究人员对计算机科学的定义也许会截然不同。例如,计算机体系结构领域中的研究人员,主要关注微型电路技术,因此他们将计算机科学视为技术的进步和应用,但数据库系统领域的研究人员则认为,计算机科学就是要寻求方法来提升信息系统的有用性,而人工智能领域的研究人员则把计算机科学视为智能和智能行为的研究。
尽管如此,所有这些研究人员的工作还是都涉及了算法科学的方方面面。鉴于算法在计算机科学中扮演的核心角色(见图0-5),找出焦点问题,对学习算法会非常有益。
算法过程可以解决哪些问题?
怎样才能比较容易地发现算法?
如何改进表示和传达算法的技术?
如何分析和比较不同算法的特征?
如何使用算法来操作信息?
如何应用算法来产生智能行为?
算法的应用对社会有何种影响?
0.4.2 抽象
术语抽象(abstraction)在本书中是指一个实体的外部特征与其内部构成细节之间的分离。抽象使我们可以忽略一些复杂设备(如计算机、汽车和微波炉)的内部细节,把它们当作一个单个的、可理解的单元使用。此外,正是通过抽象,这些复杂的系统才能够被设计和生产出来。计算机、汽车和微波炉都是由若干部件构成的,其中每一个部件表示一层抽象,在此层面上,该部件的使用是独立于这个部件的内部构成细节的。
运用抽象,我们能够构造、分析和管理大型的复杂计算机系统,但如果从细节的层面上看问题,就会不识庐山真面目。在每一个抽象层面上,我们都把此系统看成是由若干称为抽象工具(abstract tool)的部件组成,而忽略这些部件的内部构成。这样我们的精力就集中了,可以考虑一个部件如何与同一层面其他部件发生作用,以及这些部件如何作为一个整体构成更高级别的部件。由此,我们就可以理解该系统中与手头任务有关的那部分,而不会在众多的细节中迷失方向。
需要强调的是,抽象并不局限于科学和技术领域。它是一门重要的简化技术,我们的社会形成的任何一种生活方式都离不开抽象。很少有人知道,日常生活中各种各样的便利是怎样实现的:我们需要吃饭穿衣,但我们自己无法生产;我们使用电器设备和通信系统,但不了解它们的内部技术;我们享受其他人提供的服务,但不知道他们的专业细节。对每一项新的发展,只有一小部分社会成员专职于其实现,其他人则将实现的结果作为抽象工具来使用。这样,社会的抽象工具仓库扩大了,社会进一步发展的能力也增强了。
抽象这一话题在本书中会被反复提及。我们将了解到,计算设备是通过各种抽象工具构建的。我们还会看到,大型软件系统的开发是以模块化的方式完成的,其中每个模块都是较大模块中的一种抽象工具。此外,在计算机科学本身的发展中,抽象也扮演了很重要的角色,有了它,研究人员可以把精力集中在一个复杂领域中的特定范围上。实际上,本书的编排也反映了该科学的这种特征:每一章都围绕着计算机科学的一个特定的方面,而且往往出人意料地完全独立于其他各章,但所有这些章合在一起,又形成了这一巨大研究领域的全面介绍。
0.4.3 创新
虽然计算机可能只是复杂的机器,机械地执行着机械式算法指令,但是我们应该看到,计算机科学领域是一个创造性的领域。发现并应用新算法是人类的一项活动,这项活动取决于我们天生的用工具解决我们周围世界中的问题的欲望。计算机科学不仅扩展了表示形式,使其跨越了视觉、语言和音乐艺术,而且还让新的数字表示模式遍及了现代世界。
创建大型软件系统,不太像照菜谱做菜,更像是设想一个宏大的新雕塑。构想雕塑的形式和功能需要仔细的规划。制造它的组件需要时间、对细节的关注以及熟练的技能。最终的产品体现了设计美学及其创造者的情感。
0.4.4 数据
计算机能表示任何可以被离散化或数字化的信息。算法可以用各种令人眼花缭乱的方式,处理或转换这种数字表示信息。因此,算法不仅能将计算机的一部分数字数据与另一部分混洗;还能让我们搜索模式、创造模拟,以产生新知识和新见解的方式来关联连接。海量存储容量、高速计算机网络以及强大的计算工具,推动着科学、工程和人文领域中许多其他学科的发现。无论是通过模拟复杂蛋白质折叠来预测一种新药的治疗效果,统计分析横跨数百年的数字化图书的语言的演化,还是渲染通过非入侵式医学扫描获得的三维内脏图像,数据都在驱动着现代发现超越人类自身的能力。
在本书中,我们会探讨一些有关数据的问题,具体如下。
计算机是如何存储那些与常见的数字人工制品有关的数据(如数字、文本、图像、声音和视频)的?
计算机是如何粗略估计那些现实世界中模拟人工制品的数据的?
计算机是如何检测和避免数据中的错误的?
我们现在所掌控的这个由日益增长的、互连的数据构成的数字宇宙,最后会变成什么样子?
0.4.5 程序设计
尽管现在产生的大量的可用语言和工具,与20世纪50年代及20世纪60年代早期的可编程计算机,没什么相似之处,但是将人类的意图翻译成可执行的计算机算法的这种行为,现在被广泛称为程序设计。虽然计算机科学的组成部分并不只有计算机程序设计,还包括许多其他方面,但是通过设计可执行算法(程序)解决问题的能力依然是所有计算机科学家的一项基本技能。
计算机硬件只能执行相对简单的算法步骤,但有了计算机程序设计语言所提供的抽象,人类就能针对复杂得多的问题,进行推理并制定出编码解决方案。下面这几个关键的问题为我们这个主题的讨论提供了框架。
如何构建程序?
程序中会出现哪些类型的错误?
程序中的错误是如何被发现并修复的?
现代程序中的错误对程序有什么影响?
如何对程序进行文档化和评估?
0.4.6 因特网
因特网连接了全世界的计算机和电子设置,这对我们这个技术社会存储、检索和共享信息的方式产生了深远的影响。现在,商业、新闻、娱乐和通信都越来越依赖这个由较小的计算机网络组成的互联网络。我们的讨论将不仅限于把因特网的机制描述为人工制品,还会涉及人类社会业已被全球网络交织在一起的许多方面。
因特网的覆盖对我们的隐私和个人信息的安全也有着深远的影响。网络空间里有很多危险,所以在我们这个互联的世界里,密码学和网络安全正变得越来越重要。
0.4.7 影响
计算机科学不仅对我们使用的通信、工作和娱乐的技术有深远的影响,对我们的社会生活也有巨大的影响。计算机科学的进步正淡化着许多差别,而这些差别正是我们过去作出某些决策的基准;计算机科学的进步也向许多长久以来的社会准则提出了挑战。在法律上,因此产生了某些疑问——知识产权的度以及伴随这个所有权的权利和义务。在伦理上,人们面临着许多挑战传统社会行为准则的抉择。对于政府,又产生了许多争议——计算机技术及其应用应该规范到什么程度?在哲学上,人们开始争论智能行为的存在与智能本身的存在。同时,整个社会也在讨论:新的计算机应用是代表新的自由还是新的控制。
这些话题对于那些想涉足计算或者计算机相关领域的人,还是很重要的。科学中的新发现有时会使许多应用产生争议,这使人们对相关的研究人员产生极大不满。进一步而言,伦理上的过错足以摧毁本可以很成功的事业。
计算机技术的发展给人们提出了许多难题,而具备一些解决此类问题的能力对于非计算机领域的人也十分重要。的确,计算机技术已经在全社会迅速普及,几乎无人不受其影响。
本书提供了一些技术背景,有助于人们以一种理智的思维来处理计算机科学所产生的问题。然而,计算机科学的技术知识本身无法提供全部问题的解决办法。因此,本书的一些章节致力于介绍计算机科学的社会、伦理和法律上的问题,包括安全问题、软件所有权和义务问题、数据库技术的社会影响以及人工智能发展的后果。
此外,一个问题通常并不只有唯一一个正确的答案,许多有效的解决方案都是在两个对立的(也许都是有理的)观点之间进行折中的。寻找解决方案通常需要这样的能力:能够倾听、辨别其他各种观点、开展理性的讨论,并在获得新的见解时改变自己的观点。因此,本书每章最后都有一系列“社会问题”,研究计算机科学和社会的关系。这些问题不是需要作答的,而是需要思考的。在许多情况下,当人们发现其他答案时,就不会再满意于那个最先出现的明显答案了。简言之,给出这些问题的目的,并不是让大家找到“正确”答案,而是要提高大家的意识:要意识到一个问题会牵扯多位利益相关者,一个问题会有多个解决方案,那些解决方案都同时具有长短期效应。
哲学家在基础理论的研究中提出了许多伦理学方法,从而产生了指导决策和行为的原则。
性格伦理(有时称为德行伦理)是由柏拉图和亚里士多德提出的,他们认为“好行为”不是应用可识别规则的结果,而是“良好性格”的自然结果。而其他伦理基础(如结果伦理、职责伦理以及合同伦理)认为,一个人在解决伦理难题时,应该考虑的是:“结果会怎样?”“我的职责是什么?”或者“我有什么合同?”而性格伦理考虑的是:“我想成为什么样的人?”因此,好行为是建立在好性格基础上的,而这通常得益于良好的教育以及德行习惯。
在向不同专业领域人士教授伦理知识时,一般以性格伦理为基础。不用教授专门的伦理理论,只要举一些能够暴露该专业领域中各种伦理问题的案例即可。然后,通过讨论这些案例的利弊,让这些专业人士对职业生活中潜在的危险有一个更清醒、更深入和更敏感的认识,并将这种认识融入到他们的性格中。这就是每章最后设计社会问题的精神所在。
社会问题
希望下面的问题能引导读者思考一些与计算领域相关的伦理、社会和法律问题。回答出这些问题还不够,还应该考虑为什么这样回答,以及你的判断是否对每个问题都标准如一。
1.如果没有计算机革命,我们现在的社会将有很大不同。人们已经广泛接受这种观点。与没有计算机革命的社会相比,现在的社会是更好了?还是更差了?如果你在社会中的地位不同,答案会有所不同吗?
2.想参与到当今的技术社会中,却又不想努力了解技术的基础知识,这种做法是否可行?例如,要通过表决来决定如何支持和使用某种技术,那么表决者是否有责任了解那种技术?你的答案是否与具体哪种技术有关?例如,考虑使用核技术时和考虑使用计算机技术时,回答是否一样?
3.传统上,人们使用现金进行交易,因而处理账务时不需要支付服务费用。然而,随着我们经济生活中自动化程度的不断提高,金融机构正在对这些自动化系统的使用推行服务收费。那么,“服务收费不公正地限制了人们参与经济活动”这种说法是否正确呢?例如,假设雇主仅用支票支付雇员的工资,并且所有金融机构都对支票兑现和存款收取服务费用,那么雇员是否因此受到了不公正的待遇呢?如果雇主坚持通过直接存款的方式支付工资,那该怎么办呢?
4.在交互式电视节目中,某一个公司有可能会从孩子那里获取有关其家庭的信息(也许是通过交互式游戏),那应该控制到什么程度呢?例如,是否可以允许公司通过孩子得知其父母的购物习惯?关于孩子自己的信息呢?
5.政府对计算机技术及其应用的法规管制应当到什么程度?例如,考虑一下问题3和问题4中提到的问题。政府管制的依据是什么?
6.对于技术,尤其是计算机技术,我们所作出的决策会对我们的后代产生多大的影响?
7.随着技术的进步,我们的教育系统不断面临挑战,要重新考虑在哪些抽象层次上安排哪些主题。许多问题是类似的,如某项技能是否必要,是否允许学生依赖某种抽象工具等。学三角时,不再教学生如何利用函数表求三角函数的值,而是允许学生用计算器作为抽象工具来求函数值。有些人认为,长除也应该让位于抽象。还有哪些主题涉及类似的争论?现代的文字处理软件是否会使人们不需要练习书法?视频技术的使用是否会在将来的某一天取代阅读?
8.公共图书馆这个概念,建立的前提是,民主国家里的所有公民都有权获得信息。越来越多的信息通过计算机技术存储和传播,是否每一位公民都应该有权利访问这个技术系统呢?答案如果是肯定的,那么公共图书馆是否应该为这种访问提供渠道呢?
9.在一个依靠抽象工具的社会里,会产生什么样的伦理问题呢?是否存在这样的情况,当我们使用某个产品或某项服务时,不了解它的工作原理有悖伦理吗?那不知道它是如何生产出来的呢?再或者,不了解其使用的副产品呢?
10.随着我们社会的逐步自动化,政府监督公民的活动变得很容易。这是好还是坏呢?
11.乔治·奥威尔(埃里克·布莱尔)在他的小说《1984》中想象出来的那些技术,其中哪些已经实现?它们的使用方法是否与奥威尔预想的一样?
12.如果你有一台时间机器,你想生活在哪一个历史阶段?有你想带去的现代技术吗?你所选择的技术可以脱离其他技术而被你单独带走吗?一项技术可以在多大程度上独立于其他技术?抗议全球变暖,却又接受现代医疗,这两者一致吗?
13.假如由于工作关系,你必须生活在另一种文化氛围中。你会按照自己的本土文化习惯我行我素,还是会选择遵循所在地的异域生活习俗?对这个问题的回答,是否会因跟穿衣打扮有关还是跟人权有关而不同呢?如果你是在本国生活,但需要处理因特网上各种外来文化的冲突,那你会坚持什么伦理标准?
14.在商务、通信或社交互动方面,社会是否已太过依赖于计算机应用?例如,如果长期中断因特网或移动电话服务,会有什么后果?
15.大多数智能手机都能够利用GPS识别手机的位置。这样一来,相关的应用程序就可以基于手机的当前位置提供与该位置相关的信息(如本地新闻、本地天气,或者附近的商业机构)。然而,这些GPS功能却也能让其他应用将手机的位置广播给其他各方。这样好吗?手机的位置(继而手机用户的位置)信息会被如何滥用呢?
课外阅读
Goldstine, J. J. The Computer from Pascal to von Neumann. Princeton, NJ: Princeton University Press, 1972.
Kizza, J. M. Ethical and Social Issues in the Information Age, 3rd ed. London: Springer-Verlag, 2007.
Mollenhoff, C. R. Atanasoff: Forgotten Father of the Computer. Ames, IA: Iowa State University Press, 1988.
Neumann, P. G. Computer Related Risks. Boston, MA: Addison-Wesley, 1995.
Ni, L. Smart Phone and Next Generation Mobile Computing. San Francisco, CA: Morgan Kaufmann, 2006.
Quinn, M. J. Ethics for the Information Age, 5th ed. Boston, MA: Addison-Wesley, 2012.
Randell, B. The Origins of Digital Computers, 3rd ed. New York: Springer-Verlag, 1982.
Spinello, R. A., and H. T. Tavani. Readings in CyberEthics, 2nd ed. Sudbury, MA: Jones and Bartlett, 2004.
Swade, D. The Difference Engine. New York: Viking, 2000.
Tavani, H. T. Ethics and Technology: Ethical Issues in an Age of Information and____Communication Technology, 4th ed. New York: Wiley, 2012.
Woolley, B. The Bride of Science: Romance, Reason, and Byron’s Daughter. New York: McGraw-Hill, 1999.
[1] www.csprinciples.org
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。