那么问题又来了。根据上文中程序的第8行和第9行,可以求得M的第一位数字(或者上一个数的第一位数字)的平方,但是该程序可能并不存在于M的内存(记忆)当中。通常,计算机程序总是先被转化成另一种易于硬件执行的形式,用计算机术语来说,上文中的程序叫作源代码。储存在M内存中的转化版本叫作目标代码。即使这位神经系统学家再怎么才华横溢,也只可能获得目标代码。即使有了目标代码,也完全没有可能恢复其源代码。
比如通常来说,在计算机系统中求一个数字的平方并非单一操作,在目标代码的操作过程中可能会大量出现乘法运算。(但是,这要比我们在小学里学的一个数字乘以一个数字的运算高级得多。)
更麻烦的是,对数字进行编码无法像处理电子元件那样简单。操作可能会需要多个元件共同参与,但是并不需要它们在物理位置上彼此相近。实际上,在所谓分布式表征(常用于大脑神经网络模型)当中,我们需要观察众多电子元件的状态,发现其所代表的单个数字的值。但最麻烦的问题是,在分布式表征当中,单个元件有可能代表多个数值。
由此可见,虽然将源代码转化成目标代码相当容易,但是把目标代码转化为源代码就相当于破解一个加密的谜语,难似登天。所以软件公司为保护自己的知识产权,只会出售软件产品的目标代码,因为他们相信,获取源代码这种“反向工程”在技术上非常困难,经济成本也一般令人难以承受。(“开放源代码”的软件产品则恰恰相反,其源代码都被公之于众。)
第 2 章巨型拼图之谜
029