“龙语硬件”专项攻关组,在黄建功宣布成立的下一秒,就进入了战时状态。
地点,还是那间布满了黑板的会议室。
人员,却是西山基地最豪华的阵容。
钱学敏坐镇中央,她的左右手,分别是孙立国和赵成。
一边,是代表着硬件世界最深厚工程经验的“工程总师”。
另一边,是代表着理论世界最前沿思想火花的“首席架构师”。
而他们的对面,坐着的是从软件、硬件、逻辑、算法等各个部门抽调出来的,最顶尖的三十名专家。
这间小小的会议室,此时此刻,堪称华夏信息技术的“圣殿”。
而他们要讨论的,是为这个圣殿,奠定第一块基石——“龙语硬件描述语言”(LHDL)的核心语法。
气氛,从一开始就无比凝重。
钱学敏在白板上,写下了第一个需要定义的概念。
“模块(Module)。”
“在硬件世界里,任何一个具备独立功能的单元,都可以看作一个模块。小到一个加法器,大到一个完整的CPU核心。它是我们构建硬件世界的基本‘积木’。”
“那么,在LHDL中,我们用什么关键字来‘定义’一个模块呢?就像当初我们用‘定义’来定义一个‘类’一样。”
这个问题,瞬间点燃了第二次“关键字战争”。
“我认为,应该用‘单元’!”一个来自硬件组的老专家立刻发言,“在我们的行话里,一个逻辑单元,功能单元,这都是最常用的词!直观,好懂!”
“我反对!”一个软件组的年轻工程师站了起来,“‘单元’这个词太普通了,缺乏一种‘封装’感。我建议用‘构件’,取‘结构化构件’之意,强调它的可组合性!”
“‘构件’太书面化了!不够口语化!”
“我觉得可以叫‘盒子’!黑盒子!我们不关心它内部怎么实现,只关心它的输入和输出!多形象!”
“‘盒子’?太不严肃了!这可是要载入史册的语言!”
争论瞬间进入了白热化。
从“模块”、“单元”、“构件”、“盒子”,到“功能体”、“逻辑块”、“芯片”,甚至有人提出了用更加古典的“机巧”、“枢机”等词。
每一个人都试图从自己的知识背景和专业习惯出发,为这个最基础的概念,赋予一个最精准、最优雅的名字。
这不-只是一个名词之争。
这关系到这门新语言的“气质”,关系到未来几十年,所有华夏芯片设计师的思维习惯。
孙立国听得一个头两个大。他虽然是工程总师,但对这种咬文嚼字的事情,实在是不擅长。他求助地看向赵成。
赵成一直在安静地听,没有说话。
他发现,硬件工程师倾向于使用具象的、功能性的词汇。而软件工程师,则更喜欢抽象的、带有结构化思想的词汇。
双方都没有错,但他们站的角度不同。
“赵总师,你怎么看?”钱学敏也注意到了赵成的沉默,主动问道。
赵成站起身,走到白板前。
“各位老师,我觉得,我们或许陷入了一个误区。”
“我们在试图用一个‘名词’,去定义一个‘动作’。”
他拿起笔,在白板上写道:
“我们要做的事情,是‘搭建’一个硬件世界。我们需要的,是一块块‘积木’。”
“老师的教诲是‘万物皆对象’。在软件世界里,我们用‘定义’关键字,来创造一个‘类’,也就是一个对象的‘模板’。”
“这个动作,是‘定义’。这个产物,是‘模板’。”
“那么,在硬件世界里,我们同样需要一个‘动作’,来创造一块‘积木’的‘图纸’。”
他的目光扫过全场,声音清晰而有力。
“我建议,我们不需要一个新的名词。我们只需要一个新的‘动词’。”
“我提议,使用‘构建’(Build)这个关键字。”
“‘构建’一个加法器模块。”
“‘构建’一个寄存器模块。”
“‘构建’一个CPU模块。”
“这个词,既有软件工程里‘编译构建’的含义,也包含了硬件世界里‘建造’、‘构造’的实体感。它本身就是一个动词,一个指令,清晰地告诉编译器,我们要‘创造’一个硬件模块的‘图纸’。”
“构建”!
这个词一出来,整个会议室瞬间安静了。
之前还在激烈争论的专家们,此刻都在反复咀嚼着这个词的含义。
“构建……构建……”一个老专家喃喃自语,“有意思,有意思……不是去‘定义’它是什么,而是直接‘动手’去‘构建’它……”
“我同意!”之前那个提议用“构件”的年轻软件工程师眼睛一亮,“‘构建’这个动词,天然就蕴含了‘封装’和‘接口’的思想!我们构建一个东西,必然要先想好它的边界在哪里,它和外部的连接点在哪里!”
孙立国也反应过来了,他一拍大腿:“这个词好!带劲!有股子工程师的实干味道!不像‘定义’那么文绉绉的,我们就是要‘构建’!用代码构建出一个芯片!”
钱学敏看着赵成,眼中是毫不掩饰的赞许。
赵成再一次,从更高的维度,用一个简单的词,统一了软件和硬件两种不同的思维范式。
他没有去搞平衡,也没有去创造一个新名词。
他直接用一个“动词”,点明了这门语言的本质——它不是一门用来“描述”的语言,而是一门用来“创造”的语言!
“好。”钱学敏拿起笔,在白板上郑重地写下了LHDL的第一个核心关键字。
【构建】
“那么,下一个问题。”钱学敏继续道,“我们用‘构建’创造了模块的‘图纸’。现在,我们要用这张图纸,造出具体的‘积木’,并且把它们连接起来。这个过程,叫‘实例化’和‘连线’。我们又该用什么关键字?”
如果说“构建”是战争的开始,那么“实例化”和“连线”就是战争的主战场。
“实例化,就是根据图纸造实物。我建议用‘生成’!”
“不行,‘生成’和‘构建’太像了。我建议用‘调用’,就像软件里调用函数一样!”
“硬件世界里没有‘调用’!只有‘放置’!我们是把一个造好的模块,‘放置’在芯片的某个位置!”
“‘连线’就更简单了!直接用‘连接’不就行了?”
“‘连接’太模糊了!是数据流向哪边?我建议用箭头‘->’或者‘