“软件是数学”是什么意思第1部分
软件是符号的操作
由PolR提供 此文章是根据Creative Commons许可证. [PDF格式的文章.]
你可能听过计算机专业人士说软件就是数学。你肯定在Groklaw上读过不止一次。但这是真的吗?那句话是什么意思?首先,我想告诉你为什么这是真的,我还将回答一些典型的批评。然而,我的目的是建议一种方法来开发一种测试,用于测试涉及软件的专利是或不是专利资格,现在联邦巡回法院授予一个全体成员审查CLS Bank International诉Alice Corporation法院希望回答的问题是:
a.法院应采用何种标准来确定计算机实现的发明是否为不符合专利资格的“抽象概念”;如果有的话,权利要求中的计算机在什么时候赋予了不符合专利资格的想法专利资格?
b.在根据《美国法典》第35章第101条评估计算机实现的发明的专利资格时,如果该发明是作为一种方法、系统或存储介质而提出的,则应视为重要;就§101而言,此类索赔有时是否应被视为等同?
我认为基于符号操作的测试是可行的。我想解释一下为什么我认为这可能是画线的正确位置。
数学是一门语言1软件是数学,因为根据计算理论的原理,软件的执行始终是根据数学算法进行的数学计算。也就是说,计算机程序的执行就是计算机用数学语言生成语句。
有些人认为“软件就是数学”这句话的意思是软件描述然后他们说一切都可以用数学来描述。在这个意义上,他们说,一切都是数学。如果我们将这一逻辑推到结论上来,那么没有什么东西是可以申请专利的,因为数学不应该是可申请专利的主题。他们说这是一个违反法律的荒谬结果。
这不是我们所说的软件就是数学的意思。如果我们愿意,我们可以用数学来描述软件。有时我们会这样做。这不是我们说软件就是数学的原因。我们说软件的执行是话语在数学语言中,与话语的意义相对。一句话是数学话语的意思是用数学描述这是这两个短语之间的一个重要区别,我希望现在向大家展示。2这一点与三种数学实体之间的区别有关:公式、算法和计算。
我会用E类=mc公司2.
概述
著名的方程式E类=mc公司2是数学的公式它是用数学语言用数学符号书写的文本。这个是数学语言中的话语。它类似于我们在英语语法中所称的(陈述性)句子。这个公式是数学.
这个公式的意义是一个自然定律,实际上是一个物理定律。这是一种将静止物体的质量与该物体中有多少能量联系起来的说法。物体的能量和质量是描述通过数学语言的表达。物体的质量和能量不是数学。它们是用数学描述的,因为它们就是公式的含义。
该公式暗示了当质量已知时计算能量的程序。这里是:
-
倍增光速c(c)自行获得其正方形c(c)2.
-
乘以质量米按的价值c(c)2在步骤1中获得。
-
步骤2的结果是能量E类.
这种过程在数学中被称为算法。公式不是算法。这个程序是算法。有足够数学技能的人只需看一下公式就能知道算法。这就是为什么当我们想要陈述一个算法时,陈述一个公式通常就足够了。
这个算法是一个相当于进行逻辑推导的过程。假设我们知道质量,我们怎么知道能量?我们应该能够从公式所述的关系中推断出它。算法就是我们进行这个推导的方式。当我们使用算法解决问题时,我们实际上使用了一种逻辑形式。三算法也是数学语言的一部分。
执行算法的任务称为计算当用铅笔和纸执行算法时,我们必须书写数学符号,大多数数字代表数字,也包括其他符号,如小数点。这些文字也是用数学语言表达的。在这个例子中,话语的含义是代表光速、光速的平方、物体的质量和能量的数字。执行该算法是数学的,因为它正在生成这些语句。
但如果我们使用机器呢?我们可以使用袖珍计算器或计算机等数字设备进行计算。那么这些符号就不再是纸上的铅笔标记了。它们是某些数字电子电路中的位。这也是数学语言中的话语,但现在是机器而不是人类发出的话语。根据存储程序体系结构背后的数学原理,所有计算机程序的执行都是数学算法的执行,因此这种执行是一种数学计算。这就是“软件就是数学”的含义。4
这是对关键思想的概述。现在让我们详细阐述一下。
数学是一门语言
我相信,有些人会想知道我说数学是一门语言是什么意思。对他们来说,数学是关于数学主题的,比如数字、几何图形或抽象集合论。5这种观点是正确的,但数学不止如此。认真的数学工作需要在纸上或计算机中的位上写符号。语言方面是不可避免的。另一方面,如果没有数学意义,这些符号是毫无意义的。这真的很像一枚硬币的两面。一个不能没有另一个。从这个意义上说,数学是一门语言,尽管数学也是研究数学主题的。
还有基金会问题。有一个数学分支叫做数学逻辑这就是数学家定义其学科基础的地方。什么是数学公式? 什么是定理? 对于确实的证据有效吗?这些是数学逻辑回答的一些基本问题。还有一个数学分支叫做计算理论这实际上是数学逻辑的一个分支。这就是数学家定义什么是算法什么是计算根据算法。如果你去阅读合格作者的教科书中的这些定义,你会发现它们都是数学语言的要素。这些定义明确地指代符号、它们在语法上的排列及其语义。所有数学最终都依赖于这些基础。从这个意义上说,数学确实是一门语言。
符号是抽象的思想
语言是用符号写的,通常是字母、数字和标点符号。数学语言在此列表中添加了各种数学符号。
符号与其物理表示之间存在差异。以字母为例。我们可以说字母是纸上的墨水标记,但我们错了。如果我们用铅笔,它们就是纸上的铅痕。或者当你使用电脑时,它们是屏幕上像素的排列。如果你走在城市街道上,你可能会在建筑物上看到霓虹灯标志和石头雕刻。符号是抽象的概念。当我们看到它们的物理表示时,我们就能认出它们。但是,符号并不是表示。
位是符号。像字母一样,它们可以用多种方式表示。在晶体管之间的通路中,它们是电压。在主存储器中,它们是存储在电容器中的电荷。在硬盘上,它们是磁矩。在一些光盘上,它们是表面上的空腔。比特可以采取许多其他形式。与字母一样,比特也是抽象的概念。
符号无需人类观看就能产生意义
有些人希望符号是人类可以看到的东西。这个观点太严格了。符号无需肉眼可见即可表达其含义。6虽然位通常是不可见的,但如果程序员愿意,他可以使用调试工具间接地观察到它们。然后程序员可以阅读它们并理解它们的含义。
一个极端的例子是楔形文字古代美索不达米亚文明的石碑。数以千计的这些石碑被埋葬在中东沙漠数百年之久,这一时期的所有人都不知道。古代语言被遗忘了。但是,考古学家仍然能够找到石碑并破译它们。这些年来,没有人知道这门语言,甚至没有人意识到埋藏在那里的石碑,他们的意思发生了什么变化?意思并没有消失。他们在耐心地等待考古学家。
Groklaw的评论也发生了类似的情况。在他们被输入并且评论员点击“提交”按钮之后,一系列的电子冒险开始了。比特通过互联网发送,在到达某个数据中心的Groklaw数据库之前,必须经过无数的通信线路和设备。然后,评论被存储在磁性存储器上的数据库中。当读者点击链接显示评论时,评论通过互联网从Groklaw数据库传输到用户屏幕上时,会发生更多的电子冒险。当这些评论存储在数据库中时,它们是无法被观察到的,当它们在互联网上传播时,它们也是无法被观察的。但是,当他们到达目的地时,评论仍然有其含义。
计算不处理电子,计算处理符号
让我告诉你一些数字电子的基础知识和数学的基本原理。我希望这将澄清硬件和符号之间的区别。
位来自两个符号的字母表,分别写为0和1。数学的相关分支是布尔代数这是逻辑的一部分。位代表真值,0代表假1代表真的。布尔代数还识别三个运算符,和,或和不,可以应用于真值。这些运算符对应于同名逻辑的普通操作。
让我描述一下每个布尔运算符的一些算法。
这个和运算符接受两个参数。它是真的当两个参数都为真的。它是假否则。相应的算法是:
-
读取两个符号作为输入。
-
如果两个符号均为1,则答案为1。
-
否则答案是0。
这个或运算符还接受两个参数。它是真的当其中一个或两个参数都是真的。它是假否则。相应的算法是:
-
读取两个符号作为输入。
-
如果两个符号均为0,则答案为0。
-
否则答案是1。
这个不运算符反转其唯一参数的真值。相应的算法是:
-
读取一个符号作为输入。
-
如果符号为1,则答案为0。
-
否则答案是1。
布尔代数中还允许更多的操作。它们都是通过三个基本运算符的组合来计算的。布尔逻辑中的一切都可以通过将这三个简单算法的多个实例组装成一个更大的算法来完成。
请仔细看看这些算法。您将看到,它们都是对符号的操作。它们可以在不参考其含义的情况下执行。所需要的只是识别符号是1还是0,并相应地采取行动。没有必要决定它们是否符合任何真值。这是所有数学算法中的典型情况。数学家已经定义了他们的标准,什么是数学算法,而不是其他类型的程序。这一观察结果是其中一些标准的结果。7
布尔运算符可以通过数字电子学实现,因为无需参考位的含义。如果电子信号被视为符号的表示,那么电路的活动就是算法的镜像。
例如,让我们假设一位工程师决定,电压0V表示位0,电压0.5V表示位1。他还决定不使用其他电压。他可以建立一个称为逻辑门对应于布尔运算符。
AND门实现布尔值和操作员:
OR门实现布尔值或操作员:
NOT门实现布尔值不操作员:
请花点时间检查电压操作是否确实是算法的镜像。当电压被解释为工程师决定的位时,电路的动作是执行布尔逻辑运算。通过在更复杂的电路中组装多个逻辑门,可以实现更复杂的算法。这是数字电子学的原理之一。电路通过将符号的物理表示作为电压来操作符号。
现在问问你自己,如果工程师改变了惯例会发生什么?如果他决定0V代表1而不是0,会发生什么?当然,这意味着0.5V意味着0而不是1。电路是否仍然是算法的镜像?答案是“是”,除了AND门现在正在计算或运算符,而OR门现在计算和操作员。NOT门仍然计算不操作员。简而言之,AND和OR门已经交换了它们的角色。请再看看大门,自己看看。
这意味着什么?这意味着位不是电压。仅仅通过观察电路对电压的作用,就无法判断电路计算出了哪种算法。根据电压如何被解释为符号,同一电路将实现两种不同的算法。
正如我之前所说,比特是符号。它们是抽象的概念。它们可以由工程师选择的任何电压表示。0V和0.5V对是常见的行业标准,但可能存在其他标准。0V和0.35V对是另一个常见的对。位也可以用非电压的东西来表示。在主存储器中,它们是电容器中的电荷。8
有些人认为计算是一个电子过程,晶体管的活动操控着电路中的电流。他们错了。计算是关于处理位的。它是关于符号的。这与电压或电子无关。
位必须组织成语法
人们不能随意地把一堆符号放在一起,期望它们有意义。符号必须根据语法规则组合在一起。有点像E类=mc公司2是一个数学公式,而=e)Ru(俄罗斯)+不是。这部分是因为E类=mc公司2符合数学语法规则,而=e)Ru(俄罗斯)+没有。
同样,计算机中的位必须根据语法规则进行组织。通常,它们被分组以表示数字。有几种方法可以做到这一点。
一种可能性称为“无符号整数”。根据这种约定,位代表自然数0、1、2、3……直到可用位数量所允许的最大数量。如果我们有8位可供使用,则无符号数字的范围是0到255。另一种可能性称为“2s-complement”9格式”,允许负数。2s-complement格式中的相同8位可以表示-128到127范围内的数字。
注意这两个语法如何表示不同的数字范围。这意味着有时,根据语法的选择,相同的位序列可能意味着两个不同的数字。例如,11111111表示255为无符号整数,在2s-complement格式中表示-1。仅仅通过检查位是不可能知道它是哪一个的,因为它们是相同的。为了区分差异,我们必须知道写位的人使用了哪种语法。
这是一个关键想法。写比特的人可以选择语法。如果你不知道他选了哪一个,你就看不懂其中的内容。
这是数据与其电子表示不同的另一个原因。假设工程师将8个电压排成一行,并告诉您哪个电压对应0或1。他让你读这个数字。你能读吗?除非工程师告诉你他选择的语法,否则你不能这样做。仅仅知道电压和它们所代表的比特数是不够的。
这种模糊性也可能适用于电路。例如,有一种电路称为加法器用于添加二进制数。相加的相关算法是,相同的加法器对无符号数进行相加,也能正确地对2s补码格式的数字进行相加。10例如,当此电路将10000000+01111111相加,得到11111111时,可能表示无符号整数格式中的128+127=255,或者表示2s补码格式中的-128+127=-1。仅通过对位和电路结构的检查不可能知道是哪一个。我们还必须知道使用了哪种表示数字的约定。
电路是相同的。这些位是相同的。意思不同,因为语法不同。电路的用户可以选择是添加无符号整数还是2补码数,因为同一个电路会同时添加这两个数字。计算不是电路的电子活动。它是一个抽象的概念,涉及符号和表示意义的语法选择。
对于各种类型的数据,有很多语法规则。有一些是浮点数。当计算需要分数时,需要使用它们。其他规则是对字符进行编码,例如ASCII码或Unicode码。对于视频和音频文件等非常复杂的数据,有相应的标准。这些规则中有许多是国际标准。其他由特定程序的作者定义,供内部使用。
数据有意义
符号有意义。在布尔代数的情况下,0表示假和1表示真的在算术数列的情况下,位表示数字。有时数字对字母进行编码,文本具有法律摘要或合同等含义。这篇文章有意义。有时位存储在文件或数据库中。这些数据也有意义。
数学符号可能同时具有两种含义。有抽象的数学意义,比如真值和数字。然后可能会对抽象的数学含义进行一些非数学解释。例如,一个数字可以是食品杂货库存中的苹果数,也可以是飞行中火箭的速度。
与符号和语法一样,符号的含义不是进行计算的电路的物理组件。当你用电脑维护杂货店的库存时,会有一些比特代表柠檬和其他食物的信息。这些小块是对食物的描述;它们不是食物。柠檬不是机器的电子部件。
数据和计算是内容
综上所述,我们有一系列语法和语义关系定义的符号语言,如下所示:
-
有一些表示符号的物理基板,通常是物理计算机的元素。
-
有关于符号组织方式的语法约定。
-
当符号具有正确的语法时,它们在数学中有意义,例如布尔值或数值。
-
可以单独或组合使用数学值来表示其他实体,例如字母表中的字母或文件和数据库(例如视频和数据库记录)中的复杂结构。
-
然后,数学语言也可以被给予一些非数学的解释。
所有这些关系都是由各种约定定义的。有一种约定,用于标识哪个电压代表哪个位。有关于数字格式的约定。关于如何使用数字来表示字母、数字和其他字符,有一些约定。有关于文件格式和数据结构的约定。还有更多的约定。这不是一份详尽的清单。
这些公约来自不同的来源。其中一些约定是由设计计算机组件的计算机工程师定义的。其他是行业标准。还有一些是文化的一部分,比如我们在文本信息中发现的英语单词的含义。其他约定由程序员在定义其程序使用的数据时定义。无论来源如何,所有这些约定都是无形的。它们既不是电路的物理元素,也不是物理现象。它们是能够读写数据所需的知识要素。
算法在这幅图中的位置是什么?算法独立于硬件和含义。它们位于中间;它们是关于符号及其语法的。
算法,在数学家的意义上,是操纵符号的方法。计算是根据算法进行的操作。符号并不像布尔门和电压的讨论所显示的那样是物理上的电压。计算和算法不是硬件过程,因为它们操纵符号而不是电压。
算法必须是机器可执行的。它必须是可以由逻辑门执行的程序类型,逻辑门只能对代表符号的电压作出反应。11无法解释其含义。大门不能那样做。符号的含义对于能够读取位的人来说是可以理解的,但在执行计算时,计算电路不使用它。因此,算法并不依赖于要执行的含义。
如果算法既不是硬件过程,也不是意义运算,那么它们是什么?算法是对未解释符号及其语法安排的操作。
请考虑一份法律摘要。你需要一堆有墨水痕迹的纸。或者你需要电子文件。但简报不是一堆有墨水痕迹的纸,也不是文件中的电子。就像法律摘要一样,算法和计算不是物理实体。它们是内容。它们需要物理表示,但仍与表示不同。
但与法律摘要不同,算法仅限于符号及其语法。它们必须是可执行的,而不必解释语义。在这方面,算法更像是一台印刷机,它能够在不参考字母含义的情况下印刷字母。但与印刷机不同,算法不是机器,因为它们不是物理实体。
计算机硬件如何进行计算
有了这些背景信息,我们可能会问计算机是如何进行计算的?我们已经在布尔门的讨论中看到了部分解释。当电压用于表示位时,门实现布尔运算符。如果我们给一个称职的工程师一个算法,他会找到一个门的布置来进行相应的计算。当工程师在集成电路上蚀刻栅极时,他会制作一个专用电路,因为该电路只能执行其设计的计算。但通用计算机可以根据软件的要求进行任何计算。制造一台通用计算机需要更多的东西。
数学家发现了一类特殊的算法,称为通用算法。已知几种通用算法。12这些算法中的每一个都可以计算出每个可计算的函数,只要我们给它们一个相应的程序作为输入。实际上,任何通用算法都可以模拟其他所有算法的行为。这就是为什么我们称之为普遍性。这就像一把美化了的瑞士军刀,但却是为了计算。一个算法就足以满足所有算法的目的。
通用算法的专用电路可以用布尔门实现。这个电路只能计算它所设计的通用算法。这与任何其他算法的专用电路完全相同,但有一点不同。所选算法具有通用性。这使得该电路成为可编程的通用计算机。原因是,当通用算法接收到相应的程序作为输入时,它将执行任何计算。编写这样一个程序并将其提供给计算机的任务称为“为计算机编程”。
请注意,程序是数据。它是由钻头组成的。这就像将视频作为输入提供给视频播放器。在这两种情况下,我们都将数据作为算法的输入。
大多数现代通用计算机都是根据一种称为存储程序计算机体系结构这些计算机专用于执行一种称为指令周期.13该算法的程序是一系列指令。每一条指令都对应于一个必须在执行指令时执行的操作。
计算机有许多部件。其中两个在执行指令中最为重要。14第一个是主存储器。这个组件正是它的名字所暗示的。它是一个信息容器,是一个可以读写比特的地方。指令必须存储在计算机主存储器中才能执行。另一个重要的计算机组件称为处理器或CPU。15这个组件也是其名称的含义。它从存储器中读取指令并执行相应的操作。
指令周期的工作方式如下:16
-
CPU从主存储器读取指令。
-
CPU对指令的位进行解码。
-
CPU执行与指令位对应的操作。
-
如果需要,CPU将指令的结果写入主内存。
-
CPU找出主内存中下一条指令所在的位置。
-
CPU返回到步骤1以进行循环的下一次迭代。
如您所见,指令周期以顺序方式一个接一个地执行指令。从本质上讲,指令周期是一个“阅读指令并按指令行事”的食谱。17
这是数学家赋予这个词的意义上的算法。它是通过操纵符号来执行任务的一系列步骤,这些符号符合数学家定义的将过程作为数学算法的要求。我们说软件就是数学,因为所有计算机程序的执行都是通用数学算法的执行。从这个意义上说,软件是用数学语言来说话的。
请回忆一下本文开头提到的反对意见,有些人认为我们说软件是用数学描述的。你现在应该更清楚地看到为什么我们没有争论这个问题。指令周期不是对计算机的描述。这就是电脑的功能。我们认为软件是数学,因为计算机所做的是根据数学算法进行的数学计算。
来源
与存储程序计算机相对应的计算数学模型称为RASP或随机存取存储程序。已记录在计算机算法的设计与分析【Aho 1974,见下文参考】。这就是数学家和理论计算机科学家如何用数学语言将实现的算法描述为指令周期。
RASP是一系列算法的通用版本,称为登记机。此系列在中进行了描述计算模型与形式语言[Taylor 1998,见下文参考文献]第5章。
我已经探索了如何用lambda-calculus语言表述指令周期的算法。这句话更详细,因为它涵盖了现代计算机中常见的更广泛的功能。此文件可以是在此处下载(PDF)。
一些人认为随机元素的存在使算法超出了数学的范围。这是不正确的。数学,包括概率论,能够处理随机性。特别是在数学中,随机数学过程被称为随机过程物理学家通常使用概率论来阐述量子力学在计算机科学中,正常的确定性算法可以转换为随机算法如果随机数源被视为读取数据的输入。那么概率算法的过程与确定性算法没有区别,区别在于输入。这正是Linux等操作系统处理硬件数字生成器的方式。从软件的角度来看,它们是从中读取随机数据的系统文件。
一些编程语言的语义已经在数学上定义。用这些语言之一实现的程序文本必须是由语言语义定义的数学算法的描述。这种语言的一个例子是标准ML。语言的定义见标准ML的定义(修订版)[Milner 1997,见下文参考文献]。请参阅标准ML评述[Milner 1991,见参考文献,如下]的评论和ML中的并发编程[Reppy 2007,见下文参考],了解I/O和并发编程库的数学定义。具有数学定义语义的编程语言的另一个示例是Coq公司。此语言记录在交互式定理证明和程序开发,Coq'Art:归纳构造的微积分[Bertot 2004,见下文参考文献]。
在Groklaw上发表的先前文章中可以找到更多的数学参考文献:
算法与抽象思想述评
数学算法是操作符号过程的一个子类。指令周期也是操作符号的过程。
一些法律专业人士表示,所有操作符号的程序都是抽象概念。这很有趣。特定计算是否是数学算法的问题可能是多余的。只要我们显示一个过程正在操作符号,我们就不需要确定这种操作是否是数学上的。我们已经有证据证明这是一个抽象的概念。
我认为这种情况可以用来开发一个测试,测试涉及软件的专利何时符合专利资格。联邦巡回法院的判例法表明,法律上的困难在于找到一些关键术语的可行定义。
联邦巡回法院在“数学算法”一词的含义上存在分歧。发件人关于Warmerdam:
在计算机相关案件中出现并被援引的一个概念是,“数学算法”无法获得专利请参阅关于Schrader,《联邦判例汇编》第3编第22卷第290页、《美国药典》第30卷第1455页(1994年联邦巡回法庭)以及其中讨论的案例。该规则通常通过称为Freeman-Water-Abele公司该测试由我们的前任法院开发,其第一步是确定权利要求中是否直接或间接地引用了数学算法,第二步是确定所要求保护的发明作为一个整体是否仅仅是算法本身。参见Schrader,《联邦地区法院判例汇编》第22卷第3d页第292页,《美国药典》第30卷第2d页第1457页.
困难在于,对于什么是“数学算法”没有明确的一致意见,这使得判断整个索赔是否仅限于此。参见Schrader,22 F.3d,第292 n.5页,30 USPQ2d,第1457 n.5页以及对此的异议。
试图定义什么是抽象概念似乎也没有用。发件人MySpace公司诉GraphOn公司。:
当涉及到用不那么抽象的术语解释什么是“抽象概念”时,法院就不那么成功了。近年来,当应用于被松散描述为商业方法专利的这类声称发明时,这一努力变得尤其困难。如果说管辖专利的法律的不确定性过去是一个问题,那么现在肯定会成为一个更大的问题,正如当前的案例所证明的那样。
在试图解释抽象概念是(或不是)什么的过程中,我们尝试了“机器或转换”公式——“最高法院对此不屑一顾。比尔斯基,130 S.Ct.,第3226-27页。我们自那时以来承认,这一概念缺乏具体定义:“本法院也不会假定在承认这种不合格特征应如此明显地表现出来,从而凌驾于合格标的物的广泛法定类别之外,对`抽象'进行定义……”研究公司技术部。,Inc.诉微软公司。《联邦地区法院判例汇编》第三编第627卷第859、868页(2010年联邦巡回法庭)。
我们的意见花了一页又一页的时间重新审视我们和最高法院的案件,但我们仍然在什么是或不是可申请专利的主题上存在强烈的分歧。参见,例如,Dealertrack,Inc.诉Huber,___F.3d ___(美联储巡回法庭,2012年)(Plager,J.,部分异议);Classen Immunotheraps,Inc.诉Biogen IDEC《联邦上诉法院判例汇编》第三编第659卷第1057页(联邦巡回法庭,2011年)(Moore,J.,持异议);分子病理学助理《联邦判例汇编》第三编第653卷第1329页(联邦法院,2011年)(摩尔·J的赞同意见,布莱森·J的反对意见);另请参见关于弗格森《联邦判例汇编》第三编第558卷第1359页(2009年联邦法院)(Newman,J.,同意)。
这种描述§101法理学的努力让人想起酒类学家试图描述一种新葡萄酒。它们有大量的形容词——“土的、果味的、青草的、坚果的、酸的、木本的,仅举几个——”但在特定的情况下,选择哪些形容词适用,在什么组合中,与其说取决于单词的假定内容,不如说取决于发音它们的舌头的味道。
我认为符号操作的概念是明确的。应该可以在此基础上制定一个可行的法律测试。一个明显的可能性是修改Freeman-Water-Abele公司在中被拒绝的测试瓦梅达姆,测试符号操作而不是算法。另一种可能性是将梅奥诉普罗米修斯“将无法获得专利的自然法转化为具有专利资格应用对于这样的法律,人们必须做的不仅仅是简单地陈述自然法,还要添加“应用它”等词。“这个替代性测试将把权利要求作为一个整体的效用与单独处理符号的效用进行比较,并添加“应用它”。两者之间必须有实质性的区别,否则根据梅奥.
我认为法院应该能够应用这种测试,因为术语定义的根本问题已经解决。
关于银行审查联邦巡回法院属于CLS Bank International诉Alice Corporation,现在让我们考虑一下该上下文中的符号。不用说,符号必须具有物理表示。这并没有使操作符号的过程变得不那么抽象。推铅笔和在纸上做铅标记的数字等效过程不应获得专利资格。 认为允许这样的专利并不是抽象的数学专利,这是一个哑谜。如果不真正写下符号,就无法进行数学计算。因此,符号操作是否被称为方法、系统、存储介质或任何其他物理设备都不重要。在所有这些情况下,它都不应具有专利资格。
符号的含义应该没有区别。我建议这样做: 只要程序操作符号,其含义就永远不会授予专利资格。 我有一个谜语,可能有助于说服你为什么这是一个理想的结果。
请拿一个袖珍计算器。现在用它来计算12+26。结果应该是38。现在给这些数字一些非数学意义,比如说它们是苹果计数。使用计算器计算12个苹果+26个苹果。结果应该是38个苹果。你看到计算器电路有什么不同吗?这是谜语。为了在计算器电路中产生符合专利资格的差异,必须给数字赋予什么样的非数学意义?
这是联邦巡回法院就计算机提出的问题。当我阅读有关第101节可申请专利的主题的判例法时,我看到法院分析这些比特的含义,以确定发明是否抽象。但与此同时,我看到法院从法律理论出发,认为软件专利实际上是一项硬件发明。难道他们看不出这是矛盾吗?这就是谜语的重点。位的含义不是机器的硬件组件,它不会影响计算的步骤。
诸如输入、输出和阅读、书写和思考符号含义的心理步骤等活动不应授予符号操作的专利资格。这些步骤只是对符号的更多操作。
除了获得将要被操纵的数据之外,没有其他实现的数据收集不应授予符号操纵的专利资格。 _____________
工具书类
【Aho 1974】阿霍,阿尔弗雷德五世。,约翰·霍普克罗夫特、和杰弗里·乌尔曼。.计算机算法的设计与分析,Addison-Wesley出版公司1974
[本·阿里2001年]莫德凯·本·阿里,计算机科学数学逻辑,第二版,施普林格-弗拉格出版社,2001年
[伯特2004年]伊夫·贝托特,皮埃尔·卡塞兰,交互式定理证明和程序开发,Coq'Art:归纳构造的微积分,施普林格,2004
[德夫林2000年]基思·德夫林,数学语言,让无形变得可见,W.H.Freeman,Henry Holt and Company,2000年
【爱泼斯坦1989】爱泼斯坦,Richard L。,沃尔特·卡尼埃利。,可计算性可计算函数、逻辑和数学基础,沃兹沃思和布鲁克斯/科尔,1989年
[Hamacher 2002]哈马赫,V.卡尔,Vranesic,Zvonko G。,扎基。Safwat G.公司。,计算机组织,第五版,McGraw-Hill公司,2002年
[克莱恩1967年]克莱恩,斯蒂芬·科尔,数学逻辑,John Wiley&Sons,Inc.,纽约,1967年。我使用多佛出版社2002年的重印本。
【Kluge 2005】沃纳·克鲁格,Lambda微积分视角下的抽象计算机器2005年,柏林-海德堡施普林格-弗拉格
[米尔纳1991年]罗宾·米尔纳,托夫特,疯子,标准ML评述麻省理工学院出版社,1991年。
[米尔纳,1997年]罗宾·米尔纳,托夫特,疯子,罗伯特·哈珀,大卫·麦奎因,标准ML的定义(修订版)麻省理工学院出版社,1997年
【Reppy 2007】约翰·H·Reppy。《ML并行编程》,剑桥大学出版社,1999年首次出版,2007年数字印刷版(含更正)。
[Taylor 1998]Taylor,R.Gregory,计算模型与形式语言,牛津大学出版社,1998年
脚注
1实际上有几种数学语言,因为数学的每个分支都有自己的记法要求。但为了简单起见,我们可以说它是一种语言。
2数学不仅仅是数学语言中的话语。数字和几何图形等数学实体也是数学。这篇文章提到了数学语言中的语句,因为这是“软件就是数学”这句话所指的数学部分。
有些人有时试图在由描述数学和是数学。他们认为,当用数学描述事物时,它不是数学,因为被描述的事物不是描述。没有这样的矛盾。用数学公式描述数字、几何图形和算法等实体是可能的,也是常见的。例如,以原点为中心的半径为1的圆由以下等式描述x个2+年2=1.因此,数学实体既可以是数学,也可以用数学来描述。
类似的情况也发生在数学之外。例如,可以用英语描述英语句子的语法。然后这个句子既有英语又有英语描述。
三这是数学的事实。算法和逻辑推理之间的一种数学上精确的联系称为咖喱-霍华德信件另一个精确的数学表述是分辨率算法用于数学逻辑。这一发现导致了逻辑程序设计对于更熟悉的家庭命令式编程语言,此连接的数学精确语句称为霍尔逻辑.
4软件不仅仅是程序执行。但根据专利法,获得专利的软件方面是程序执行。我们把“软件就是数学”作为一个口号来提醒人们,获得专利的软件的方面完全是数学计算。
5我相信我们的数学家朋友会对什么是数学主题有一些看法。我选择保持这个讨论简单。如果你需要探究这个问题,我建议你阅读[Devlin 2000],尤其是序言。这本书用非数学家容易理解的语言讨论了什么是数学。
6比特无论是否被人类观看,都是受版权保护的。
7参见[Kleene 1967年]第223页,斯蒂芬·克莱恩定义了数学家眼中的算法概念。你会发现几个要求。其中有一个:
在执行这些步骤时,我们只需像机器人一样机械地遵循指令;我们不需要洞察力、智慧或干预。
如果符号的含义不明确,则不可能以这种方式执行算法。解决歧义是一种需要洞察力或独创性的干预。这一要求将无法满足。另一方面,如果符号是明确的,为了像机器人一样机械地执行算法,它们的含义是多余的。为什么我们需要注意符号含义的步骤真的当我们已经知道它是1时?没有理由。当我们像这些布尔算法那样单独对符号进行操作时,该算法也能很好地工作。
这种逻辑适用于数学家赋予这个词的意义上的所有算法。理查德·爱泼斯坦和沃尔特·卡尼埃利注意到了这一点。参见[Epstein 1989]第70页,其中描述了用于定义算法类的一系列计算模型:
所有这些形式化的共同点是,尽管通常有拟人化的描述,但它们都是纯粹的句法。它们是推动符号的方法。
8这假设内存技术是动态随机存取存储器。其他技术可能以不同的方式表示位。
9这是发音二的补码.
10见[Hamacher 2002]第368页。
11我指的是数学家为过程定义的数学意义上的算法标准。见上文脚注7。虽然数学家没有用这些术语说明他们的标准,但在实践中,他们等同于要求算法是机器可执行的符号操作。就数字电子而言,这意味着算法必须可以通过逻辑门电路进行计算。
12理论上重要的通用算法称为通用图灵机。其他通用算法在实践中用于编程目的。指令周期是首选的通用算法命令式编程这是使用最广泛的编程范式。在逻辑程序设计算法,如SLD分辨率用于解决使用Horn子句以逻辑术语描述的问题。请参阅计算机科学数学逻辑,第二版【Ben-Ari 2001年】第7章和第8章,进行完整讨论。在函数式编程的各种实现正态β-还原使用。参见【Kluge 2005】,了解一本专门介绍正常阶β-减少的几种实现的书。需要注意的是,正规阶β-约简是一种通用算法,它会随着计算的进行修改其程序。不能像命令式编程中通常(但不总是)的规范那样,假定程序在计算中始终保持不变。
13如脚注12所示,还存在其他通用算法。然而,在构建存储程序计算机时,指令周期是被选择的。
14主存储器相当于纸笔计算中的一张便笺。CPU在电子上相当于任何处理铅笔的人。我们可以将存储程序计算机视为人类进行笔和纸计算的自动化版本,但速度要快得多。
存储程序计算机的其他组件是用于输入和输出的外围设备和称为总线的通信组件,用于互连所有组件,以及其他组件,如电源、外壳等。
15缩写词CPU代表中央处理器。
16这是对可读性的简化解释。以下是[Hamacher 2002]第43页如何描述指令周期的硬件实现。(原文强调)
让我们考虑一下这个程序是如何执行的。处理器包含一个名为程序计数器(PC)保存下一个要执行的指令的地址。要开始执行一个程序,它的第一条指令的地址(我在我们的示例中)必须放入PC。然后,处理器控制电路使用PC中的信息来获取和执行指令,一次一条,按地址递增的顺序执行。这叫做直线测序。在执行每条指令期间,PC将递增4,以指向下一条指令。因此,在位置处的Move指令之后我+执行8时,PC包含值我+12是下一程序段的第一条指令的地址。
执行给定指令是一个两阶段的过程。在第一阶段,称为指令获取,从地址位于PC中的内存位置获取指令。此指令位于指令寄存器处理器的(IR)。在第二阶段开始时,称为指令执行,检查IR中的指令以确定要执行的操作。然后由处理器执行指定的操作。这通常涉及从内存或处理器寄存器中获取操作数,执行算术或逻辑操作,并将结果存储到目标位置。在这个两阶段过程中的某个时刻,PC的内容会被提前到下一条指令。当指令的执行阶段完成时,PC包含下一条指令的地址,并且可以开始新的指令获取阶段。
17每个存储程序计算机都包含该算法的硬件实现。这并不是实现它的唯一可能方法。像Python字节码解释器的虚拟机一样的程序是指令周期的软件实现。还有一些通用算法,它们不是指令周期。这些算法也可以在软件中实现。最终,软件通用算法由硬件指令周期执行。
打算作为某些通用算法的软件实现的输入的程序不是硬件指令周期的指令。这是需要记住的一点,因为有些人认为所有软件都是CPU的指令。有时,他们会基于这个想法建立法律依据。这些论点往往是错误的,因为它们没有考虑到软件可以采用的所有可能的形式。
|