周末发个程序猿的笑话,干相关行业的可以看看。也欢迎对号入座。

来源: 监考老师 2024-05-17 22:33:04 [] [博客] [旧帖] [给我悄悄话] 本文已被阅读: 次 (6652 bytes)

https://martin-thoma.com/joke-electrical-engineering-vs-computer-science/

从前,在离这里不远的一个王国里,一位国王召集了他的两位顾问进行测试。

他向他们展示了一个闪亮的金属盒子,顶部有两个插槽、一个控制旋钮和一个控制杆。 “你觉得这是什么?”

一位顾问,一位工程师,第一个回答。 “这是一个烤面包机,”他说。 国王问:“你会如何设计一个嵌入式计算机呢?” 工程师回答道:“使用四位微控制器,我会编写一个简单的程序,读取暗度旋钮并将其位置量化为 16 种暗度之一,从雪白到煤黑。该程序将使用该暗度级别作为 初始计时器值的 16 元素表的索引,然后它会打开加热元件并使用从表中选择的初始值启动计时器,在时间延迟结束时,它将关闭加热并弹出。 下周回来,我会向你展示一个工作原型。”

第二位顾问是一位计算机科学家,他立即意识到这种短视思维的危险。 他说:“烤面包机不只是把面包变成吐司,它还可以用来加热冷冻华夫饼。你所看到的实际上是一个早餐炊具。随着你王国的臣民变得更加复杂,他们将需要更多的功能 他们需要一个可以煮香肠、煎培根和炒鸡蛋的早餐炊具,如果我们不放眼未来,我们将不得不在几年后彻底重新设计烤面包机。”

“考虑到这一点,我们可以针对问题制定更智能的解决方案。首先,创建一类早餐食品。将此类专门化为子类:谷物、猪肉和家禽。应该重复专门化过程,将谷物划分为吐司 、松饼、煎饼和华夫饼;猪肉分为香肠、链接和培根;家禽分为炒鸡蛋、煮鸡蛋、荷包蛋、煎蛋和各种煎蛋卷。” “火腿奶酪煎蛋卷类值得特别关注,因为它必须继承猪肉、乳制品和家禽类的特征。因此,我们看到如果没有多重继承,问题就无法得到正确解决。

在运行时,程序必须创建 正确的对象并向该对象发送一条消息:“把自己做了。” 当然,该消息的语义取决于对象的类型,因此它们对于一片吐司和对于炒鸡蛋具有不同的含义。” “回顾到目前为止的过程,我们发现分析阶段已经揭示了主要需求是烹饪任何种类的早餐食品。在设计阶段,我们发现了一些派生需求。具体来说,我们需要一种面向对象的语言 当然,用户不希望煎培根时鸡蛋变冷,因此也需要并发处理。”

“我们不能忘记用户界面。降低食物的控制杆缺乏多功能性,而且黑暗旋钮令人困惑。除非产品具有用户友好的图形界面,否则用户不会购买该产品。当早餐炉插入电源时 ,用户应该会在屏幕上看到牛仔引导,然后单击它,并且屏幕上会出现消息“正在引导 UNIX v.8.3”(UNIX 8.3 应该在产品上市时发布。)。 拉下菜单并点击他们想要烹饪的食物。”

“在设计阶段做出了首先指定软件的明智决定后,剩下的就是为实施阶段选择一个足够的硬件平台。配备 8MB 内存、30MB 硬盘和 VGA 显示器的 Intel 80386 应该是 如果您选择支持多重继承并具有内置 GUI 的多任务、面向对象的语言,那么编写程序将是轻而易举的事(想象一下,如果我们愚蠢地允许硬件优先的设计策略,我们将会遇到什么困难。 将我们锁定在四位微控制器中!)。”

国王明智地斩首了计算机科学家,从此他们都过上了幸福的生活。

所有跟帖: 

睡觉长的长的胖,跑不快,肯定是个bug,不过您们也真有意思,讨论拨出插进秒才有趣,哈哈哈 -Hightides- 给 Hightides 发送悄悄话 (0 bytes) () 05/17/2024 postreply 22:45:08

dev - PM - user 不可能三角,一般会选择把PM给推出去斩了 -dakinglaile- 给 dakinglaile 发送悄悄话 dakinglaile 的博客首页 (0 bytes) () 05/17/2024 postreply 23:07:10

直接说就是喜欢油条早餐别的不考虑,多简单。不过文科生喜欢写段子,正常。 -TreeNewBee- 给 TreeNewBee 发送悄悄话 (0 bytes) () 05/18/2024 postreply 01:21:16

请您先登陆,再发跟帖!

发现Adblock插件

如要继续浏览
请支持本站 请务必在本站关闭/移除任何Adblock

关闭Adblock后 请点击

请参考如何关闭Adblock/Adblock plus

安装Adblock plus用户请点击浏览器图标
选择“Disable on www.wenxuecity.com”

安装Adblock用户请点击图标
选择“don't run on pages on this domain”