至少在美国,其中大部分可以追溯到 1981 年的一个案例,Diamond v Diehr。
在此之前,专利局的工作原理是软件就像数学方程式,因此没有资格申请专利。
Diamond v Diehr 是关于一台执行一系列步骤以(如果没记错的话)制造模压橡胶产品的机器。确切的步骤并不重要——重要的是它有一系列的步骤要执行。他们可能已经建造它来机械地完成所有这些步骤。或者他们可以建造专用的电子设备。但相反,他们选择使用小型 CPU,并配备软件来读取温度、计时等。
然后他们试图为这台机器申请专利。该专利描述了机器必须采取的步骤。专利局驳回了该专利,因为他们没有采用机械方式或专用电子电路,而是使用带有存储程序的 CPU 来控制流程。该公司将其告上法庭,称其符合专利法对某人可以申请专利的那种发明的描述。
法院同意了。他们基本上是说,即使机器可能包含一些本质上是数学公式来控制它的工作方式,但机器是一个执行过程的东西——它不仅仅是描述它执行过程的数学公式.
起初,很多人基本上认为这真的只适用于他们的机器之类的东西,在那里你有一台机器,从外面看,就像一台能做某事的机器,并且可以用机械计时器和这样才能控制过程。
但随着时间的推移,人们将这些界限推得越来越远,直到他们用它来涵盖诸如“包含执行步骤的软件的存储介质……”之类的东西整件事都是关于软件的,而不是一台真正的机器。
最终,人们试图超越这一点,并开始为商业方法申请专利,专利甚至不再口头上涉及任何物理表现。
这导致联邦巡回上诉法院进行了一项测试:他们说专利必须要么涉及特定机器,要么涉及物质的转化(例如,混合一种新化学品),才有资格获得专利。
最高法院确实(在一个名为 Bilski v Kappos 的案件中)最终裁定“机器或转换”测试不能被视为绝对规则,但坚持认为这是有用的指导方针。
20 年前,几乎没有人会对几乎没有顺便提及该软件必须在某种计算机上运行的软件专利眨眼。现在,机器或转换测试不再是绝对的,但也没有人真正知道它的任何特定例外,因此如果您今天正在撰写专利,通常会更加强调谈论特定机器。与其说是恰好需要一些硬件才能运行的软件专利,不如说是关于构建专用机器的专利,其中一部分恰好是在软件中实现的。
我的看法
我不认为有任何有意义的方法来区分使用软件构建的机器和以其他方式设计的机器。许多数字电路是用 Verilog 或 VHDL 之类的东西设计的,它们看起来与普通的编程语言没有根本的不同。我们现在还有高级综合工具,可以使用 C 或 C++ 之类的代码,而不是将其编译为特定 CPU 的机器代码,实际上生成一个直接实现代码中描述的逻辑的电路。这有限制(当然),但它不仅在理论上是可能的,而且在广泛的实际应用中是可行的。
概括
嵌入式软件很难划清软件的构成,并将其与硬件区分开来,因此您可以禁止软件专利,但不能禁止硬件专利。随着时间的推移,试图划出这样一条线变得越来越困难,以至于现在即使试图这样做也是一件愚蠢的事。
参考