ONE SENTENCE SUMMARY:
与软件工程传奇人物Grady Booch的对话,探讨软件架构的演变、UML的创建及其对大型语言模型的看法。
MAIN POINTS:
- Grady Booch是软件工程领域的先驱,参与了UML的创建和多个设计概念。
- 软件架构的三个维度包括仪式、风险和复杂性,影响系统设计。
- 软件经济学与架构密切相关,成本因素在技术选择中至关重要。
TAKEAWAYS:
- 军方在70年代和80年代开发了复杂的软件系统,推动了分布式计算的进步。
- 软件架构的演变经历了从单体到分布式系统的重大转变。
- Grady认为大型语言模型的影响与过去的技术变革同样深远。
现在可以在 Apple 、 Spotify 和 YouTube 上收听。 请在本页顶部查看本集的文字记录。
由以下公司赞助:
•
WorkOS
— 现代B2B SaaS身份平台。
•
Sevalla
— 部署从预览环境到Docker镜像的任何内容。
•
Chronosphere
— 为控制而构建的可观测性平台。
—
在我们开始之前:Alex Xu的新书 《Coding Interview Patterns》 现已出版。该书帮助理解技术面试中常用的编码问题。Alex是畅销书《Systems Design Interview》的作者。我们之前曾介绍过该书的整整一章: 设计支付系统 。Alex花了1.5年时间撰写这本书,其中包含超过1000个插图。
—
欢迎来到 《实用工程师》 !今天,我很高兴邀请到软件开发领域的传奇人物Grady Booch。Grady是 IBM 的软件工程首席科学家,领导着在具身认知领域的开创性研究。
他是多个面向对象设计概念的创始人之一,还是统一建模语言的共同作者,以及敏捷联盟和Hillside Group的创始成员。
Grady撰写了六本书,数百篇文章,并拥有多个荣誉头衔,如 IBM 、 ACM 和 IEEE Fellow ,以及 Lovelace Medal (授予对计算机科学进步有杰出贡献者的奖项)的获得者。在本集中,我们讨论了:
-
成为IBM Fellow的意义
-
软件开发领域的演变
-
UML的创建过程、目标以及Grady对后续版本方向的不同意见
-
软件开发历史上的关键时刻
-
软件架构师角色在过去50年的变化
-
为什么Grady拒绝成为微软的首席架构师——对Bill Gates说不!
-
Grady对大型语言模型(LLMs)的看法
-
对经验较少的软件工程师的建议
-
……以及更多内容!
要点
从这次引人入胜的对话中,我最大的收获是:
1. 令人惊讶:美国国防部和军方在70年代和80年代构建了一些最复杂的软件系统。 在70年代,这些组织可能拥有全球最多的代码量!分布式计算等技术正是由于这些应用场景而得以开创。
2. 软件架构的三个轴。 Grady认为,在谈论软件架构时,我们应该关注这三个维度:
-
仪式性: 在构建软件时,我们应该遵循哪些流程和形式?
-
风险: 这个系统的影响是什么?如果出现问题会发生什么?
-
复杂性: 这个系统有多复杂?其中有多少是从头开始构建的?
3. 软件和软件架构的经济学始终是相互关联的。 在20世纪60年代和70年代,机器时间非常昂贵,软件必须从头开始编写。良好的架构意味着编写高性能的代码以利用这些相对有限的机器。
然而,如今机器时间已经变得非常便宜,我们也有很多“构建模块”可供使用:从框架到云服务。软件架构仍然经常与成本相关:在决定使用哪些服务和技术时,需要考虑成本因素!
4. 软件工程中曾经出现过与我们现在看到的LLMs类似的大变革。 Grady举了两个他认为比今天的LLMs更具颠覆性的例子:
-
从单体架构到分布式系统,始于80年代。这是一个重大转变,习惯于“旧方式”做事的软件工程师(通过硬件挤出更多性能,使用低级方法)发现很难适应。他分享了例如在60年代和70年代,创建子程序(基本上是函数)因其性能开销而具有争议。
-
GPU在游戏中的兴起。GPU为更广泛的行业带来了新的计算范式:即并行计算。GPU对于LLM应用也至关重要。
5. 软件工程的前两个“黄金时代”发生在1990年代之前。 Grady将20世纪70年代末和80年代初称为“软件工程的第一个黄金时代”,当时的重点是用算法解决问题,系统主要是单体架构。
他将“第二个黄金时代”称为20世纪80年代末,当时系统工程成为焦点——可读性变得比性能更重要——这是面向对象编程兴起的时期。
时间戳
( 00:00 ) 介绍
( 01:56 ) 成为IBM Fellow的意义
( 03:27 ) Grady与遗留系统的工作
( 09:25 ) Grady贡献过的一些领域示例
( 11:27 ) 软件开发领域的演变
( 16:23 ) Booch方法概述
( 20:00 ) Booch方法之前的软件开发
( 22:40 ) 与Paul和Mike成立Rational Machines
( 25:35 ) Grady与Bjarne Stroustrup的合作
( 26:41 ) ROSE与商业部门的合作
( 30:19 ) Grady如何与Ibar Jacobson和James Rumbaugh一起构建UML
( 36:08 ) 对UML的解释以及将其转变为编程语言的错误
( 40:25 ) IBM的收购以及Grady为何拒绝比尔·盖茨的工作邀请
( 43:38 ) 为什么UML不再被业界使用
( 52:04 ) Grady对形式化方法的看法
( 53:33 ) 软件架构师角色的演变
( 1:01:46 ) 软件开发中的颠覆性变化和重大飞跃
( 1:07:26 ) Grady早期在人工智能领域的工作
( 1:12:47 ) Grady与约翰逊航天中心的合作
( 1:16:41 ) Grady对大型语言模型(LLMs)的看法
( 1:19:47 ) Grady认为我们距离拥有感知能力的AI还有很长的路要走
( 1:25:18 ) Grady对经验较少的软件工程师的建议
( 1:27:20 ) Grady的未来计划
( 1:29:39 ) 快问快答环节
参考资料
与本期节目相关的《实用工程师》深度探讨:
Grady Booch的联系方式:
• X: https://x.com/grady_booch
• LinkedIn: https://www.linkedin.com/in/gradybooch
• 网站: https://computingthehumanexperience.com
节目中提到的内容:
• IBM: https://www.ibm.com
• Rational Software: https://en.wikipedia.org/wiki/Rational_Software
• Alan Kay: https://en.wikipedia.org/wiki/Alan_Kay
• IBM Basic assembly language and successors: https://en.wikipedia.org/wiki/IBM_Basic_assembly_language_and_successors
• SAGE: https://en.wikipedia.org/wiki/Semi-Automatic_Ground_Environment
• NATO: https://www.nato.int
• James Webb Space Telescope: https://science.nasa.gov/mission/webb
• UML: https://en.wikipedia.org/wiki/Unified_Modeling_Language
• Fortran: https://en.wikipedia.org/wiki/Fortran
• COBOL: https://en.wikipedia.org/wiki/COBOL
• Lisp: https://en.wikipedia.org/wiki/Lisp_(programming_language)
• ARPANET: https://en.wikipedia.org/wiki/ARPANET
• Simula: https://en.wikipedia.org/wiki/Simula
• Smalltalk: https://en.wikipedia.org/wiki/Smalltalk
• Ada: https://en.wikipedia.org/wiki/Ada_(programming_language)
• David Parnas: https://en.wikipedia.org/wiki/David_Parnas
• The Booch Method: https://en.wikipedia.org/wiki/Booch_method
• 柏拉图对话录: https://www.amazon.com/Dialogues-Plato-Enriched-Classics/dp/1439169489
• 抽象数据类型理论: https://en.wikipedia.org/wiki/Abstract_data_type
• Barbara Liskov: https://en.wikipedia.org/wiki/Barbara_Liskov
• Edsger W. Dijkstra: https://en.wikipedia.org/wiki/Edsger_W._Dijkstra
• Tony Hoare: https://en.wikipedia.org/wiki/Tony_Hoare
• Mike Devlin: https://en.wikipedia.org/wiki/Mike_Devlin_(entrepreneur)
• Arthur Rock: https://en.wikipedia.org/wiki/Arthur_Rock
• Hambrecht & Quist: https://en.wikipedia.org/wiki/Hambrecht_%26_Quist
• Rational R1000: https://en.wikipedia.org/wiki/Rational_R1000
• Bjarne Stroustrup: https://en.wikipedia.org/wiki/Bjarne_Stroustrup
• Rational ROSE: https://en.wikipedia.org/wiki/IBM_Rational_Rose
• Pure Atria: https://en.wikipedia.org/wiki/Pure_Software
• Reed Hastings: https://en.wikipedia.org/wiki/Reed_Hastings
• James Rumbaugh: https://en.wikipedia.org/wiki/James_Rumbaugh
• Dr. Ivar Jacobson: https://en.wikipedia.org/wiki/Ivar_Jacobson
• Philippe Kruchten: https://en.wikipedia.org/wiki/Philippe_Kruchten
• Winston Royce: https://en.wikipedia.org/wiki/Winston_W._Royce
• Walker Royce的《软件项目管理》: https://www.amazon.com/Software-Project-Management-Walker-Royce/dp/8177583786
• 大科技漫画背后的人: https://newsletter.pragmaticengineer.com/p/manu
• Redis: https://redis.io/
• NVIDIA: https://www.nvidia.com/en-us
• Dr. Mary Shaw: https://s3d.cmu.edu/people/core-faculty/shaw-mary.html
• 《软件架构:新兴学科的视角》: https://www.amazon.com/Software-Architecture-Perspectives-Emerging-Discipline/dp/0131829572
• Linux内核: https://en.wikipedia.org/wiki/Linux_kernel
• Linus Torvalds: https://en.wikipedia.org/wiki/Linus_Torvalds
• 林肯图书馆时间线: https://timeline.ll.mit.edu/timeline
• Andrew Ng: https://en.wikipedia.org/wiki/Andrew_Ng
• David Ferucci在LinkedIn上: https://www.linkedin.com/in/david-ferrucci
• 构建Watson:DeepQA项目概述: https://research.ibm.com/publications/building-watson-an-overview-of-the-deepqa-project
• Aldebaran: https://corporate-internal-prod.aldebaran.com/en
• 约翰逊航天中心: https://www.nasa.gov/johnson
• 心智社会: https://www.amazon.com/Society-Mind-Marvin-Minsky/dp/0671657135
• 子层架构: https://en.wikipedia.org/wiki/Subsumption_architecture
• 我是一个奇异的环: https://www.amazon.com/Am-Strange-Loop-Douglas-Hofstadter/dp/0465030793
• 约翰·卡梅隆: https://www.imdb.com/name/nm0131625
• Yann LeCun 在 X 上: https://x.com/ylecun
• 人工神经元: https://en.wikipedia.org/wiki/Artificial_neuron
• Grady 关于 LLMs 的推文: https://x.com/Grady_Booch/status/1697346790679593349
• Alphafold 源代码: https://github.com/google-deepmind/alphafold
• 宇宙:个人旅行: https://en.wikipedia.org/wiki/Cosmos:_A_Personal_Voyage
• Python: https://www.python.org
由 https://penname.co/ 负责制作和营销。如需咨询赞助播客事宜,请发送电子邮件至 [email protected]。
文章来源:Software architecture with Grady Booch
关键问题与行动计划
关键问题 1: 如何评估大型语言模型(LLMs)在软件开发中的实际应用潜力?
行动计划:
- 进行行业分析:研究团队将针对软件开发行业,分析当前使用LLMs的案例,评估其在代码生成、错误检测和自动化测试等方面的实际应用效果。
- 收集开发者反馈:数据团队将通过调查问卷和社交媒体分析,收集开发者对LLMs的使用体验和需求,识别潜在的改进方向和市场机会。
关键问题 2: 软件架构的演变如何影响新兴技术的投资机会?
行动计划:
- 研究软件架构趋势:研究团队将分析过去50年软件架构的演变,特别是从单体架构到分布式系统的转变,识别出新兴技术(如微服务、容器化等)带来的投资机会。
- 评估技术整合:数据团队将评估当前市场上不同软件架构技术的整合情况,寻找能够提升效率和降低成本的创新解决方案,作为潜在投资标的。
关键问题 3: 如何利用经济学原理优化软件开发的成本结构?
行动计划:
- 成本效益分析:研究团队将对比不同软件开发方法(如敏捷开发、传统开发等)的成本效益,识别出最具经济效益的开发模式。
- 数据驱动决策:数据团队将收集和分析行业内的项目成本数据,建立模型预测不同开发策略的经济影响,为投资决策提供数据支持。
请告诉我们你对此篇总结的改进建议,如存在内容不相关、低质、重复或评分不准确,我们会对其进行分析修正