The Pragmatic Engineer - 软件工程的第三个黄金时代——多亏了AI,与Grady Booch共同见证 封面

软件工程的第三个黄金时代——多亏了AI,与Grady Booch共同见证

The third golden age of software engineering – thanks to AI, with Grady Booch

本集简介

本期节目由以下赞助商为您呈现: • Statsig —— 集功能标志、分析、实验等功能于一体的统一平台。 • Sonar —— SonarQube的开发者,自动化代码审查的行业标准。 • WorkOS —— 让您的应用具备企业级功能所需的一切。 — 每隔几十年,软件工程就会被宣告“死亡”或濒临被自动化取代的边缘。类似的说法我们已听过多次。但倘若这不过是另一种软件工程新“黄金时代”的开端,如同历史上多次重演的那样呢? 在本期《务实工程师》节目中,我再次邀请到软件工程史上最具影响力的人物之一格雷迪·布奇(Grady Booch),将当前关于AI与自动化的讨论置于历史语境中。 格雷迪是统一建模语言的联合创始人,多部塑造现代软件开发格局的书籍与论文的作者,现任IBM软件工程首席科学家,专注于具身认知领域。 格雷迪分享了自20世纪40年代以来计算领域的三次黄金时代,以及每个时代如何应运而生以应对当时的局限。他阐释了技术限制与人为因素如何始终塑造着我们构建的系统,以及为何剧烈变革时期往往既催生真实进步又滋生过度期待。 针对软件工程即将完全自动化的当下论调,他回应道:即便工具持续演进,系统思维、人类判断与责任仍将是这项工作的核心。 — 时间轴 (00:00) 开场 (01:04) 软件工程的第一个黄金时代 (18:05) 软件危机 (32:07) 软件工程的第二个黄金时代 (41:27) 千年虫与互联网泡沫破裂 (44:53) 早期人工智能 (46:40) 软件工程的第三个黄金时代 (50:54) 为何软件工程师仍将不可或缺 (57:52) 格雷迪回应达里奥·阿莫代 (1:06:00) 工程师需要掌握的新技能 (1:09:10) 复杂系统研究资源推荐 (1:13:39) 如何在变革时期蓬勃发展 — 本期相关《务实工程师》深度内容: • 当AI编写几乎所有代码时,软件工程将何去何从? • 一家五年初创公司的快速AI转型内幕 • 与格雷迪·布奇探讨软件架构 • 历久弥新:老技术的新生 — 节目制作与营销由https://penname.co/负责。赞助合作请联系podcast@pragmaticengineer.com。 订阅完整版《务实工程师》请访问newsletter.pragmaticengineer.com/subscribe

双语字幕

仅展示文本字幕,不包含中文音频;想边听边看,请使用 Bayt 播客 App。

Speaker 0

有些人担心,AI写出令人惊讶的优质代码可能意味着软件工程的终结。

Some people worry that AI writing surprisingly good code could mean the end of software engineering.

Speaker 0

但格拉迪·布奇持不同意见,他认为我们正进入软件工程的第三个黄金时代。

But Grady Booch disagrees and says that we are entering the third golden age of software engineering.

Speaker 0

格拉迪·布奇是我们所熟知的软件工程领域的奠基人之一。

Grady Booch is one of the founding figures of software engineering as we know it.

Speaker 0

他共同创建了UML,开创了面向对象设计,担任IBM院士数十年,并见证了自1970年代以来这个行业经历的每一次重大变革。

He co created UML, pioneered object oriented design, spent decades as an IBM fellow, and has witnessed every major transformation this industry has undergone since the 1970s.

Speaker 0

在今天的对话中,我们将讨论:软件工程的三个黄金时代,以及历史教会我们如何在重大技术变革中生存与发展。

In today's conversation we discuss: The three golden ages of software engineering and what history teaches us about surviving and thriving through major technology shifts.

Speaker 0

为什么编程始终只是软件工程的一部分,以及平衡技术、经济和伦理力量的人类技能将永远不会消失。

Why coding has always been just one part of software engineering and why the human skills of balancing technical, economic and ethical forces are not going anywhere.

Speaker 0

格拉迪对达里奥·阿莫代i预测软件工程将在十二个月内被自动化给出了直接回应,他毫不保留。

Grady's direct response to Dario Amodei's prediction that software engineering will be automated in twelve months he does not hold back.

Speaker 0

还有更多内容。

And many more.

Speaker 0

如果你想理解AI带来的巨大变革其实早已发生过不止一次,那么这一集就是为你准备的。

If you want to understand that the massive change that AI is bringing has in fact happened before and not just once, this episode was for you.

Speaker 0

本集由Statsig赞助播出,Statsig是一个用于功能开关、分析和实验的统一平台。

This episode was presented by Statsig, the unified platform for flags, analytics experiments and more.

Speaker 0

请查看节目说明,了解更多关于他们以及其他资深赞助商的信息。

Check out the show notes to learn more about them and our other seasoned sponsors.

Speaker 0

Grady,很高兴你再次做客我们的播客。

Grady, it's great to have you back on the podcast again.

Speaker 1

谢谢你的邀请。

Thanks for having me.

Speaker 1

你好。

Aloha.

Speaker 0

所以稍微谈一下软件工程的历史。

So touching a little bit on the the history of of software engineering.

Speaker 0

你曾多次说过,软件工程的整个历史就是抽象层次不断提升的过程。

You've said many times before that the entire history of software engineering is one of rising levels of abstraction.

Speaker 0

你能为我们梳理一下关键的转折点,帮助我们理解这一点,然后自然地将其与人工智能如何融入这一趋势联系起来吗?

Can you walk us through the key inflection points that help us understand this, and then of course tie it into how AI is all tying into this?

Speaker 1

事实上,'软件工程'这个术语直到玛格丽特·汉密尔顿可能首次使用时才出现。

Well, the very term software engineering did not come to be until Margaret Hamilton was probably the first to anoint it.

Speaker 1

当时她刚刚离开载人轨道实验室项目。

She at the time had just left the manned orbiting laboratory project.

Speaker 1

她正在参与阿波罗计划,是少数几位软件开发者之一,而周围大多是从事硬件和结构工程的男性。

She was working on the Apollo program, and she was one of the very few people who were software developers in a sea of mostly men who were the hard work structural engineers.

Speaker 1

她希望创造一个术语来将自己与其他人区分开来。

And she wanted to come up with a phrase that distinguished herself from the others.

Speaker 1

于是她开始使用'软件工程师'这个说法,我认为我们有充分理由将她视为这一术语的首创者。

So she began using the term software engineer, and I think we can rightfully give her the claim to the first one that coined that.

Speaker 1

之后也有人跟进,最著名的是关于软件工程的北约会议。

There were others that followed, most notably people talk about the NATO conference, on software engineering.

Speaker 1

当组织者确立这一名称时——这实际上是在玛格丽特的工作几年之后——他们用这个名称颇具争议,就像'人工智能'一词在西海岸首次会议时被命名时一样具有争议性。

And when the organizers established that, which was actually a few years after Margaret's work, they did so as kind of a controversial name, not unlike how the term artificial intelligence was named controversially for its first conference on the West Coast.

Speaker 1

后来也有人跟进,经过一段时间,这个说法就逐渐固定下来了。

So there were others that followed, and after a period of time, it kinda stuck.

Speaker 1

我认为玛格丽特和其他人所做工作的核心在于,他们想表达:软件开发具有某种工程的特质,因为我们这个领域致力于构建相对最优的解决方案。

And I think what it meant, the essence of what Margaret and others were doing, is to say, there is something engineering ish about it in the sense that ours is a field that tries to build reasonably optimal solutions.

Speaker 1

你不可能拥有完美无缺、能平衡周围静态与动态因素的解决方案,这就像结构、电气、化学工程师所做的那样。

You can't have perfect solutions that balances the static and dynamic forces around them, much like what structural, electrical, chemical engineers do.

Speaker 1

在软件世界中,我们处理的媒介极其可变、弹性且流动,但即便如此,我们依然面临同样的约束力量。

In the software world, of course, we deal with the medium that is extraordinarily fungible and elastic and fluid, and yet we still have the same kinds of forces upon us.

Speaker 1

在这里,我们面临着物理定律的约束。

Here, we've got the forces of the laws of physics.

Speaker 1

你无法让信息传递超过光速,这在某些情况下令人烦恼,但好吧,我们只能接受它。

You can't pass information faster than the speed of light, which is kind of annoying in some cases, but, hey, we'll have to live with it.

Speaker 1

我们在构建规模上也存在限制,这在很大程度上受到下方硬件的制约。

There are issues about how large we could build things, largely constrained by our hardware below us.

Speaker 1

我们在算法层面也面临一些限制。

There are constraints we have on the algorithmic side of things.

Speaker 1

我们可能在理论上知道如何做某事,比如Vertabry算法,它对蜂窝电话的诞生至关重要。

We may know theoretically how to do something, such as the Vertabry algorithm, which was essential to the creation of cellular phones.

Speaker 1

很长一段时间里,我们不知道如何实现它,但确实存在一个可计算的解决方案。

For the longest time, we didn't know how to implement it, but there was indeed a calculable solution.

Speaker 1

关于快速傅里叶变换,也有类似的故事。

Similar stories with regards to fast Fourier transform.

Speaker 1

我们了解理论,但在傅里叶变换能够转化为可计算的形式之前,我们无法取得进展。

We knew the theory, but until Fourier transforms could be turned into something computational, we couldn't progress.

Speaker 1

此外,我们还面临其他限制,不仅仅是这些科学和计算机科学方面的限制,还包括人为因素的限制。

And there are also other constraints upon us, not just these scientific ones and and the computer science y ones, but constraints such as the human ones.

Speaker 1

我能找到足够的人来完成我需要的工作吗?

Can I get enough people to do what I need to do?

Speaker 1

我能组织起团队来实现我想做的事情吗?

Can I organize teams doing what I want to do?

Speaker 1

理想情况下,软件开发中最理想的团队规模是零。

Ideally, the largest team size you want for software is zero.

Speaker 1

嗯,这不太实际。

Well, that's not very practical.

Speaker 1

次优的选择是一个人,然后逐渐扩大。

The next best one is one, and then it kinda grows from there.

Speaker 1

有些项目规模如此之大,根本无法想象由一小群人完成。

And there are projects that simply are of a certain scale that you cannot conceive of them being done by a small group of people.

Speaker 1

我的意思是,为什么我们现有的大型项目都需要一个团队呢?

I mean, why do any of the large projects we have have a cadre of folks in them?

Speaker 1

这是因为这些系统的规模及其持久的经济和社会重要性如此巨大,不能只依赖个人。

It's because the footprint of these systems and their enduring economic and social importance is so great, you can't rely upon just an individual.

Speaker 1

这些软件必须超越个人而持续存在。

That software must endure beyond them.

Speaker 1

随着软件越来越多地渗透到世界的各个角落,我们面临着法律问题,比如数字版权管理。

And increasingly, as software moves into the interstitial spaces of the world, we have the legal issues, such as we see with, you know, digital rights management.

Speaker 1

但我认为更重要、更根本的是伦理问题。

But I think more importantly and overarching, the ethical issues.

Speaker 1

我们知道如何构建某些东西,但我们应该构建它们吗?

We know how to build certain things, but should we build them?

Speaker 1

从人性的角度来看,这真的是我们应该做的事吗?

Is it the right thing for us to do in our humanity?

Speaker 1

因此,这些因素在某种程度上——不,确切地说——正是那些影响软件工程师的静态与动态力量。

So these are the collection of things that are in a way, well, not in a way, but absolutely are the static and dynamic forces that weigh upon a software engineer.

Speaker 1

这就是为什么我说我们是工程师,因为就像其他领域的工程师一样,我们构建的系统需要平衡这些力量。

And that's why I can say we are engineers because much like the other kinds of engineers, we build systems that balance those forces.

Speaker 1

而我们是在一种极其美妙的媒介中完成这一切的。

And we do so in a medium that is absolutely wonderful.

Speaker 1

这就是软件工程。

So that's software engineering.

Speaker 1

现在,我在上一次通话中提到,软件工程存在某些发展阶段。

Now, I mentioned in our last call, there are certain ages of software engineering.

Speaker 1

如果我们从回顾的角度来看,软件工程至少可以识别出两个主要的史诗级阶段。

And I think as we look from the lens of looking backward, there are at least two identifiable major epics in software engineering.

Speaker 1

在最早期,还没有软件,因为我们所做的只是管理我们的机器。

In the earliest days, there was no software because what we did was simply managing our machines.

Speaker 1

硬件和软件之间的区别完全无法区分。

And the difference between the hardware and the software was completely indistinguishable.

Speaker 1

你知道,就像ENIAC那样往插板上插插头,这算编程吗?

You know, putting plugs in a plug board as was happened with the ENIAC, Is that programming?

Speaker 1

嗯,算是吧,但那里其实并没有真正的软件。

Well, yes, but there's not really software there.

Speaker 1

那是别的东西。

It's something else.

Speaker 1

直到四十年代末、五十年代初,我们的机器发展到一定程度,我们才开始意识到它们之间的区别。

And it wasn't until our machines came to the point in late forties, early fifties, that we began to find a difference for them.

Speaker 1

当时编写的大部分软件都是定制的,实际上全部都是,而且几乎所有的软件都与特定的机器绑定。

Most of this software written at that time was bespoke, well, really all of it was, and virtually all that software was tied to a particular machine.

Speaker 1

但软件的经济模式如此糟糕,以至于我们如此热爱这些机器。

But the economics of software were shot such that we love these machines.

Speaker 1

我们希望它们更快,但天啊,我们在软件本身上投入了大量资源。

We'd like them to be faster, but gosh, we put a lot of investment in the software itself.

Speaker 1

有没有办法将这些事情解耦?

Is there a way to decouple these kinds of things?

Speaker 1

我们谈谈我们世界的近期历史。

We talk about the recent history of our of our world.

Speaker 1

‘数字’这个词直到20世纪40年代末才被创造出来。

The term digital was not coined until the late '40s.

Speaker 1

‘软件’这个词直到50年代才出现。

The term software was not done until the '50s.

Speaker 1

因此,甚至承认软件是一个独立实体,也只是在我有生之年的事,想想真令人震惊。

And so even the acknowledgment that software was an entity unto itself was just about in my lifetime, which is frightening to think about.

Speaker 1

是的。

Yeah.

Speaker 1

就像八十年前。

Like, eighty years ago.

Speaker 1

哇。

Wow.

Speaker 1

是的。

Yeah.

Speaker 1

对。

Yeah.

Speaker 1

没错。

Exactly.

Speaker 1

所以,我们是一个极其年轻的行业。

So this is this we're an astonishingly young, young industry.

Speaker 1

如果你用卡尔·萨根的宇宙日历来衡量,把软件放进去,我们只处于那个宇宙日历的最后几纳秒。

If you were to take Carl Sagan's cosmic calendar and, and put software in it, we would be in the last few nanoseconds of that cosmic calendar.

Speaker 1

这还不到一眨眼的工夫。

It would be less than a blink of an eye.

Speaker 1

但无论如何,当软件开始与硬件本身分离时,像格蕾丝·霍珀这样的人就开始意识到,这可以被当作一个独立的商业、产业和制度来对待。

But, anyway, as software began began to be decoupled from hardware itself, then folks such as Grace Hopper and others were beginning to realize that this is a thing that we could treat as a business and an industry, as an institution unto itself.

Speaker 1

最早的软件当然是汇编语言,它与机器紧密相关。

So the earliest software, of course, was as it was software itself, was assembly language, which was very much tied to the machine.

Speaker 1

再往前看一点,到了六十年代,IBM意识到可以建立一套具有共同指令语言的机器架构,这样就能保留软件投资,同时将软件与硬件解耦——我可以升级硬件而不必丢弃软件。

And jumping ahead a little bit, as IBM came along in the sixties, recognizing that there was a way to establish a whole architecture of machines with a common instruction language, then it was possible to preserve software investments and yet decouple it from hardware in a way that I could improve my hardware without throwing away the software.

Speaker 1

一旦这种认识形成——这既是工程决策,也是商业决策,更是经济决策——大门便就此打开。

Once that realization happened, which was both an engineering decision, a business decision, and overall an economic decision, then the floodgates opened up.

Speaker 1

突然之间,我们需要编写和能够编写的软件数量大幅增加。

And all of a sudden, we had a lot more software that could be and needed to be written.

Speaker 1

这是软件工程的第一个黄金时代,软件本身已成为一个独立的产业。

This was the first golden age of software engineering in which we had software was an industry unto itself.

Speaker 1

因此,当时世界面临的核心问题是复杂性问题。

And so the essential problems that world faced were problems of complexity.

Speaker 1

这种复杂性体现在我们所构建的系统难以理解,试图以巧妙的方式操控我们的机器。

Complexity in that we were building things that were, you know, difficult to understand, that were trying to manipulate our machines in some cunning ways.

Speaker 1

但以今天的标准来看,这种复杂性简直是微不足道的。

But it was complexity that by today's standards was, you know, laughably simple.

Speaker 1

我们可以这么说,这相当于‘Hello World’,但这些问题本身就很困难。

We could you know, this is the equivalent of hello world, but they were problems that were hard unto themselves.

Speaker 1

因此,由于我们与机器高度耦合,软件工程第一黄金时代的主要抽象方式是算法抽象,因为这正是我们的机器所做的事情。

And so because we were so coupled to the machines, the primary abstraction used in the first golden age of software engineering was that of algorithmic abstraction because that's what our machines did.

Speaker 1

我们的大多数机器都是为了进行数学运算而设计的。

Most of our machines were meant for mathematical kinds of operations.

Speaker 1

因此,就像Fortran所做的那样,我们的工作就是构建能够进行公式翻译的软件。

And so as, as was done in Fortran, it was a matter of building our software that could do formula translation.

Speaker 1

这就是第一代人所面对的领域和问题。

So that was the realm and the problems faced by the first generation.

Speaker 0

那么,这一代人,从时间线上看,你会大致放在什么时候?

And then this first generation, like in timeline, where would you put it roughly?

Speaker 1

从时间线上看,我会把它放在20世纪40年代末到70年代末左右。

Timeline, I'd put it in the late forties to the late seventies or thereabouts.

Speaker 1

那段时间主要就是由这个主导的。

And that's what dominated that time frame.

Speaker 1

因此,你会看到的人物包括埃德·约尔登、汤姆·德马科、拉里·康斯坦丁。

So the figures you would see would be, Ed Yordon, Tom DeMarco, Larry Constantine.

Speaker 1

这个时期,ERP,抱歉,不是实体关系概念开始出现。

This is when, ERP, sorry, not entity relationship ideas came about.

Speaker 1

所以,这类抽象思想不仅渗透到软件领域,也延伸到了数据方面。

And so these ideas of that kind of abstraction poured over not just to software, but also into the data side of things as well.

Speaker 1

这是软件工程领域一个极其活跃的时期,例如,我们当时发明了流程图,这有助于思考如何构建这类系统。

This was an extraordinarily vibrant period of time in software engineering in which we had the aden invention of flowcharts, for example, which were an aid to thinking about how to construct these kinds of systems.

Speaker 1

你看到了劳动分工,有人负责分析系统,有人负责编程,有人负责打孔输入解决方案,还有人负责操作计算机。

You saw division of labor where you had people who had analyzed the system, people who would then program it, people who would key punch the solutions, people would operate the computers.

Speaker 1

同样,这主要是由经济原因驱动的,因为机器的成本远高于参与其中的人力成本。

And again, this was largely driven by economic reason because the cost of machines were far greater than the cost of the humans involved in them.

Speaker 1

因此,当时发生的很多事情都是为了优化机器的使用,而机器是非常非常稀缺的资源。

So a lot of what was happening was done to optimize the use of the machines, which were very, very rare resources.

Speaker 1

这里的教训,正如我们将在接下来的几代人中看到的那样,是这些力量,就像软件工程本身一样,塑造了软件行业和经济,而整个社会背景也影响着它们。

The lesson in this, as we'll see coming back in the next generations, is that these forces, much like with software engineering itself, have shaped the very industry of software and economics and the whole social context also influences them.

Speaker 1

因此,在第一代,主要关注的是数学需求和现有业务流程的自动化。

So in the first generation, it was largely focused upon mathematical needs and the automation of existing business processes.

Speaker 1

于是,你看到企业里真的有整层办公室,人们在做会计、工资核算等工作。

So what you had happen is that you would have businesses that have literal, you know, floors of offices with people doing accounting and payroll and like that.

Speaker 1

这正是唾手可得的成果,因为突然之间,我们能够加速这些流程,并通过移除人为干预、实现自动化来提升其精确性。

And this was the low hanging fruit because now all of a sudden we could accelerate those processes and actually improve their precision by pulling the human out of it and automating it.

Speaker 1

因此,那个时代编写的大量软件都是商业、数学和数值类的。

So, the vast amount of software written during that time was business and mathematical and numerical kinds of things.

Speaker 1

这一点很重要,因为尽管这是主要焦点,但并非唯一类型的应用。

Now, this is an important thing because while this was the focus, this was not the only kind of thing.

Speaker 1

因为在边缘地带,或者说从当时程序员的视角来看,主导领域似乎是IBM、保险公司、银行等机构。

Because you saw in the periphery, or shall I say, from the point of view of a person who was a programmer in that time, it looked to them as the dominant places was in the IBMs, the insurance companies, the banks, and the like.

Speaker 1

在国防工业领域,也有大量工作在进行。

There's a lot of work going on outside that world in the defense industry as well.

Speaker 1

我们看到软件和硬件被引入我们的毁灭性机器中,比如飞机和导弹。

We saw people moving software and hardware into our machines of destruction, into our aircraft, into our missiles.

Speaker 1

我们看到它被应用于天气预报。

We saw it moving into weather forecasting.

Speaker 1

我们看到它被融入医疗设备本身。

We saw it moving into medical devices itself.

Speaker 1

因此,尽管关注点集中在公众可见的领域,边缘地带也发生了大量工作。

So while as the concentration was the things that the general public would see, a lot of stuff happening around the edges as well.

Speaker 1

我认为,在软件工程的第一个黄金时代,核心推动力是将算法抽象应用于商业和数值领域。

I would say in the first golden age of software engineering, there was this central push of algorithmic abstractions into business and numerical things.

Speaker 1

但真正的创新发生在这些边缘领域。

But the real innovation was happening in that fringe.

Speaker 1

特别是,这些创新并非出现在商业案例中,而是出现在国防案例中,因为当时俄罗斯是我们明确而紧迫的威胁,我们需要构建实时性质的分布式系统。

In particular, it wasn't in business cases, but it was in defense cases because Russia was the clear and present threat for us at the time, in which there was a need to build distributed systems of real time nature.

Speaker 1

到目前为止,我所提到的大多数系统都不是实时的。

Most of the systems I've talked about thus far were not real time.

Speaker 1

因此,我们看到了像旋风机这样的实验性机器的兴起。

And so we saw the rise of experimental machines such as Whirlwind.

Speaker 1

我们看到了‘所有演示之母’中的工作,那是各种人机交互方式的实验,而当时软件开发的重心并不在这些边缘领域。

We saw the work in the mother of all demos, which was experimentation of various human interface kinds of things, which was not the center of gravity of software development at the time with the things on the fringes.

Speaker 1

我们看到了像大卫·帕纳斯这样的研究人员开始崭露头角,C。

We saw researchers such as David Parnas who were coming on the scene, C.

Speaker 1

A。

A.

Speaker 1

阿霍、戴克斯特拉等人开始关注这些系统的形式化方法,将软件开发视为一种真正的数学活动。

Ahore, Dijkstra and others were beginning to look at the formalisms of these systems and looking at treating software development as actually a formal mathematical activity.

Speaker 0

格雷迪刚刚提到了形式方法、形式数学和软件工程。

Grady just mentioned formal methods and formal mathematics and software engineering.

Speaker 0

自软件工程早期以来,验证软件是否能正确执行其功能一直是一个难题。

Being able to verify that software does what it should has been a problem since the early days of software engineering.

Speaker 0

这自然引出了我们的资深赞助商Sonar。

And this leads us nicely to our seasoned sponsor Sonar.

Speaker 0

在我们所经历的、格雷迪可能称之为软件工程的第三个黄金时代,AI编程助手生成代码的速度远超我们以往的想象。

As we are living through what Grady might call the third golden age of software engineering, AI coding assistants generate code faster than we ever thought was possible.

Speaker 0

这种快速的代码生成已经造成了代码审查中的巨大新瓶颈。

This rapid code generation has already created a massive new bottleneck at code review.

Speaker 0

我们都感受到了。

We're all feeling it.

Speaker 0

所有这些新生成的AI代码都必须检查其安全性、可靠性和可维护性。

All that new AI generated code must be checked for security, reliability and maintainability.

Speaker 0

不过,一个难以回答的问题是:我们如何在获得AI速度的同时,避免背负巨大的风险?

A question that is tricky to answer though: how do we get the speed of AI without inheriting a mountain of risk?

Speaker 0

SonarQube的开发者Sonar对此有一个清晰的表述:先感受,再验证。

Sonar, the makers of SonarQube, has a really clear way of framing this: vibe then verify.

Speaker 0

‘感受’部分是指给予团队自由,让他们使用这些AI工具进行创新和快速构建。

The vibe part is about giving your teams the freedom to use these AI tools to innovate and build quickly.

Speaker 0

‘验证’部分则是必不可少的自动化安全护栏。

The verify part is the essential automated guardrail.

Speaker 0

它是一种独立的验证机制,用于检查所有代码——无论是人工编写的还是AI生成的——是否符合你的质量和安全标准。

It's the independent verification that checks all code, human and AI generated, against your quality and security standards.

Speaker 0

帮助开发者和组织领导者在保持质量、安全性和可维护性的同时充分释放AI的潜力,是即将召开的Sonar峰会的主要主题之一。

Helping developers and organizational leaders get the most out of AI while still keeping quality, security, maintainability is high on the main themes of the upcoming Sonar Summit.

Speaker 0

这不仅仅是一场用户大会,更是开发者、平台工程师和工程领导者齐聚一堂,分享这一新时代实用策略的场所。

It's not just a user conference, it's where devs, platform engineers, and engineering leaders are coming together to share practical strategies for this new era.

Speaker 0

我很高兴地宣布,我也将在会上发表演讲。

I am excited to share that I will be speaking there as well.

Speaker 0

如果你正在思考如何在不牺牲代码质量的前提下采用AI,欢迎来参加Sonar峰会。

If you are trying to figure out how to adopt AI without sacrificing cold quality, come join us at the Sonar Summit.

Speaker 0

要查看议程并注册3月3日的活动,请访问sonarsource.com/pragmatic/sonarsummit。

To see the agenda and register for the event on March 3, head to sonarsource.com/pragmatic/sonarsummit.

Speaker 0

好了,让我们回到Grady的话题,把软件开发视为一种数学活动。

With this, let's get back to Grady and treating software development as a form of mathematical activity.

Speaker 1

你看到了分布式实时系统主要是在国防领域兴起的。

And you saw the rise of distributed real time systems primarily in the defense world.

Speaker 1

从Whirlwind系统衍生出了SAGE系统,即半自动地面环境系统,该系统在20世纪50年代和60年代出现。

So from Whirlwind, it begat a system called SAGE, the Semi Automatic Ground Environment, which came about during the 1950s and 1960s.

Speaker 1

事实上,最后一个系统是在上世纪九十年代退役的。

And indeed, the last one was decommissioned, I think, the nineteen nineties.

Speaker 1

这主要是基于来自俄罗斯的威胁。

This was based upon the threat of Russia.

Speaker 1

这可是导弹出现之前的事了。

This is, you know, pre pre missiles.

Speaker 1

俄罗斯会派出一支轰炸机编队穿越北极,入侵美国。

Russia would send a fleet of bombers over the Arctic and invaded The United States.

Speaker 1

因此,诞生了DEW线,即横跨加拿大的远程预警系统。

So thus was born the DEW line, the distance early warning system across Canada.

Speaker 1

所有这些数据随后被输入一系列名为SAGE的系统,即半自动地面环境系统。

And all that data was then fed into a series of systems called SAGE, the semiautomatic ground environment.

Speaker 1

这个系统规模庞大,根据一些报告,它消耗了当时美国软件开发人员总数的20%到30%。

This system was so large, it consumed according to some reports, easily 20 to 30% of every number of software developers in The United States at the

Speaker 0

时候。

time.

Speaker 0

哇。

Wow.

Speaker 1

这么多人啊。

That's a lot of folks.

Speaker 1

但要记住,那时候软件开发者可能只有几万人,但这是最大的项目。

But remember back in the time, there were maybe only a few tens of thousands of software developers, but this was the biggest project.

Speaker 0

基本上,军事领域是研发投入和推动行业前进的最大支出方。

Basically, military was the biggest spender, in soft in in research and moving the industry forward.

Speaker 0

对吧?

Right?

Speaker 0

因为他们

Because they

Speaker 1

不得不。

had to.

Speaker 1

完全正确。

Absolutely correct.

Speaker 1

他们必须这么做,因为这是一个明确而紧迫的威胁。

They had to because it was a clear and present threat.

Speaker 1

因此,许多创新发生在国防领域,我想把这个说法传递给你。

And so a lot of the innovation was happening to the defense world as I think I pass this phrase on to you.

Speaker 1

在我正在制作的关于计算的纪录片中,我使用了这样一个说法:计算史上主要有两大影响因素。

In the documentary I'm working on in computing, I use the phrase that there are two major influences in the history of computing.

Speaker 1

一个是商业。

One is commerce.

Speaker 1

我们已经讨论过经济方面了。

We've talked about the economics already.

Speaker 1

第二个是战争。

And the second is, warfare.

Speaker 1

因此,我主张——我认为这一点有充分的依据——现代计算的很大一部分实际上是编织在悲伤的织机之上,回溯到笛卡尔的织机。

And thus, I claim, and I think there's much defense for it, much of modern computing is really woven upon the loom of sorrow, referring back to Descartes' loom.

Speaker 1

所以,是的,我们今天习以为常的许多事物,比如互联网、微电子化,都源于政府在这些领域的资助。

So, yeah, a lot of the things we take for granted today, like the Internet, like micromanitarization, this all came from government funding in these cases.

Speaker 1

所以我们非常感谢冷战。

So we owe a lot to the Cold War.

Speaker 1

这一阶段,还是第一个黄金时代吗?

This phase, was this still the first golden age?

Speaker 1

我们已经度过了第一个黄金时代。

We passed the first golden age.

Speaker 1

这些都发生在第一个黄金时代。

These are the things happening in the first golden age.

Speaker 1

但我想指出的是,虽然当时有一个核心,但边缘地带也发生了许多事情,推动软件脱离了其原始根基。

But what I'm pointing out is there was sort of a center of mass to it, but lots of things happening on the edge that were driving software out from its primary roots.

Speaker 1

让我们来回顾一下。

So let's recap here.

Speaker 1

在第一个黄金时代,你必须主要关注数学和商业类应用。

In the first golden age, you had to focus primarily upon mathematical and business kinds of applications.

Speaker 1

而主要的分解方式是算法抽象。

And the primary means of decomposition was an algorithmic abstraction.

Speaker 1

我们当时通过过程和函数来看待世界,而不是通过数据。

We looked at the world through processes and functions, not so much through data.

Speaker 1

但在边缘地带,我们遇到了一些组织和用例,推动我们超越了这种简单的模式。

But on the fringe, we had organizations, use cases that were pushing us beyond that simple place.

Speaker 1

这些用例要求分布式处理,要求多台机器的协同,也要求实时处理和人机交互界面。

Use cases that demanded distribution, use cases that demanded the coupling of multiple machines, and also use cases that demanded real time processing and use cases that demanded human user interfaces.

Speaker 1

我们今天所使用的界面,其根源可以追溯到旋风计划和Sage系统。

The interfaces we deal with today, they had their roots in Whirlwind and the roots in Sage.

Speaker 1

这是第一个图形界面,采用阴极射线管(CRT)显示。

This is the first UI interface that was Graphic Tube, a CRT.

Speaker 1

因此,这些事物都是由此诞生的。

And so these kinds of things were born from that.

Speaker 1

这就是我想表达的重点。

So that was the point.

Speaker 1

我认为从中得到的启示是,软件是一个极其动态、灵活且可变的领域。

And I think the lesson from this is that software is a wonderfully dynamic, fluid, fungible domain.

Speaker 1

但它也是一个倾向于不断扩展的领域,因为一旦我们构建了某个东西,掌握了构建方法并形成了相应模式,我们突然就会发现,存在一些在经济上有吸引力的方式,可以将它应用到其他地方。

But it's also one that tends to grow because once we built something and we know how to build it and we have patterns for doing so, all of a sudden we discover there are economically interesting ways we can apply it elsewhere.

Speaker 1

所以,这是第一代,软件工程的第一个黄金时代。

So this was the first generation, the first golden age of software engineering.

Speaker 1

但在七十年代末、八十年代初,你就能开始看到其表面出现了裂痕。

But you could begin to see cracks in the facade in the late seventies, early eighties.

Speaker 1

北约那次关于软件工程的会议,是首次以大规模公开方式做到这一点的会议之一。

The NATO conference on, software engineering, was one of the first to do this in a big public way.

Speaker 1

对他们来说,北约意识到我们——北约——存在一个软件问题。

And for them, NATO was realizing we, NATO, have a software problem.

Speaker 1

我们对软件有着永不满足的需求,然而我们快速生产高质量软件的能力却不足,我们根本不知道该如何做到。

We have an insatiable demand for software, and yet our ability to produce it of quality at speed, we just don't know how to do it.

Speaker 1

这就是所谓的软件危机。

And so this was the so called software crisis.

Speaker 1

而且,你知道,人们当时不知道该如何应对这个问题。

And, you know, people didn't know what to do about it.

Speaker 0

你能帮我们理解一下,或者回顾一下吗?

Can you help us understand or take us back?

Speaker 0

这场危机到底是什么?

What what was the crisis about?

Speaker 0

当时人们都在说,天啊,

What were people, like, kind of, like, saying, oh my gosh.

Speaker 0

这就是问题所在。

This is the problem.

Speaker 1

是的。

Yeah.

Speaker 1

简而言之,问题在于软件显然很有用。

The problem was, to recap, was software was clearly useful.

Speaker 1

人们有强烈的经济动机去使用它,但整个行业却无法快速生产出足够规模且高质量的软件。

There were economic incentives to use it, and yet the industry could not generate quality software of scale fast enough.

Speaker 0

我明白了。

I see.

Speaker 0

我明白了。

I see.

Speaker 0

所以它既昂贵又缓慢,而且质量不好。

So it it was both expensive, slow, and and not good.

Speaker 1

还有一个第四点,就是需求如此之大,我想你可以说它很慢。

There's a fourth one which was the demand was so great that I guess you would call the slow.

Speaker 1

需求如此之大。

The demand was so great.

Speaker 1

天啊。

It's like, wow.

Speaker 1

我们想要更多这种东西。

This is we want more of this stuff.

Speaker 1

给我们更多软件。

Give us more software.

Speaker 1

这四点加在一起,让我们陷入了危机感。

So those four things together put us in the sense of crisis.

Speaker 1

请注意,这种危机与我们今天所面临的、担心监控的那种危机并不相同。

Notice subtly, it's not the same kind of crisis we have today where we worry about surveillance.

Speaker 1

我们担心的是崩溃之类的问题。

We worry about, you know, crashes, that kind of thing.

Speaker 1

所以问题的性质已经改变了,而每一段黄金时代都会如此。

So the nature of the problems have changed, and they do in every every golden age.

Speaker 0

令人着迷的是,这种事情曾经真实存在过,而我们如今却活在当下的现实里。

It's fascinating that this thing existed, you know, living in our our current reality.

Speaker 1

是的。

Yes.

Speaker 1

是的。

Yes.

Speaker 1

那是一个完全不同的世界,但当时明确而紧迫的危险确实是那样。

It's a very different world itself, but it was a the clear and present danger at the time was that.

Speaker 1

那是一个充满活力和激情的时代,因为可以做的事情太多了,而软件作为一种可替代、灵活、流动的媒介,意味着我们主要的限制只是想象力。

And it was an exciting, vibrant time because there was so much that could be done, and software being such a fungible, elastic, fluid medium meant that we were primarily limited just by our imagination.

Speaker 1

然后你再加入微细化。

You add to this then micrometrization.

Speaker 1

为什么会出现集成电路?

Why did integrated circuits come about?

Speaker 1

仙童公司之所以出现并成为硅谷的基础,是因为晶体管。

Why did, Fairchild, come about and and establish Silicon Valley be the basis for it is because of the transistor.

Speaker 1

仙童公司的第一个客户是谁?

Who was the first customer of the Fairchild?

Speaker 1

主要是空军,用于他们的民兵导弹。

It was the air force primarily for their, men men missile.

Speaker 1

事实上,硅谷最早期生产的大部分晶体管都用于我们的冷战项目。

In fact, most of the transistors being made in Silicon Valley in the earliest days went to our Cold War programs.

Speaker 1

但这非常好,因为它建立了整个基础设施的经济基础,使得大规模开展这些工作成为可能。

But that was great because that established then the the economic basis for the whole infrastructure we're doing, where where it was possible to start doing these things at scale.

Speaker 1

当然,我们知道这催生了集成电路,进而催生了个人电脑等等。

Of course, we knew that begat integrated circuits, that begat personal computers, and so on.

Speaker 1

所以我们现在来到了七十年代末,软件危机已经非常明显。

So here we are now in the late seventies, and the software crisis was quite clear.

Speaker 1

特别是美国政府,以其中一个故事为例,意识到他们面临着语言混乱的问题,当时有太多不同的编程语言存在。

The US government in particular, to focus on one story, recognized that they had the problem of babble and that there were so many programming languages in place.

Speaker 1

据他们统计,军事系统中至少使用了14,000种不同的编程语言。

By their count, there were at least 14,000 different programming languages used through military systems.

Speaker 0

哦,天哪。

Oh, wow.

Speaker 0

那时候的软件比现在小得多。

Back then when software was so much smaller than today.

Speaker 0

哇。

Wow.

Speaker 1

确实如此。

Absolutely.

Speaker 1

这太不可思议了。

It's incredible.

Speaker 1

像Jovial这样的语言当时非常流行。

And languages like languages like jovial was a very popular one.

Speaker 1

Jovial这个名字是对COBOL之类的语言的一种文字游戏。

A jovial kind of a play on words for COBOL and and the like.

Speaker 1

我们见证了Algal的兴起,它虽然不是军用语言,但CA、霍尔、迪杰斯特拉和维尔特等人的正式理论推动了将数学严谨性应用于编程语言的学科。

We had the rise of Algal, which was not a military language, but the formal forces of CA or Horan, Dijkstra, and Wirth led to this discipline of applying mathematical rigor to our languages.

Speaker 1

于是,形式语言研究的理念就此诞生。

And so the idea of, you know, formal language research was born.

Speaker 1

到了七十年代末,政府意识到我们面临一个问题,而这一时期恰好汇聚了大量资源。

You had this wonderful confluence of resources that said by the late seventies, the government recognizing that we have a problem.

Speaker 1

正是在那时,他们资助了AIDA项目,该项目当时被称为联合项目工作组之类的名称,旨在减少现有语言的数量,尝试统一为一种统治一切的语言。

That's when they funded the AIDA project, which at the time was called the Joint Program Working Group, something just something like that, which was an attempt to remove the number of languages that exist and try to reduce it to one language that ruled them all.

Speaker 1

有趣的是,当时有许多相关研究正在为这一目标提供支持。

Now, what was interesting is that you saw at this time, there was a lot of interesting research that was feeding into it.

Speaker 1

包括高德纳的抽象数据类型研究,以及戴夫·帕纳斯的信息隐藏理念、关注点分离等思想。

The work of, abstract data types, from Gauguin and the ideas of information hiding from Dave Parnas, separation of concerns.

Speaker 1

今天我们称之为整洁编程或干净编码的理念,实际上源自康恩斯的文学化编程思想。

The ideas today we would call it clean programming, a clean coding, but it's the ideas of literate programming from Canuth.

Speaker 1

这些想法在七十年代末到八十年代初逐渐酝酿发展。

So these kinds of things were bubbling away in the late seventies and early eighties.

Speaker 1

而Ada语言在一定程度上推动了这些理念的大规模应用。

And Ada was a little bit of a a push to make that happen on a big scale.

Speaker 1

当时没有任何其他行业或公司能够做到这一点,因为它们缺乏像美国军方那样的影响力、分量或经济实力。

No other industry or company could really do it because they didn't have the exposure or weight or gravitas or economic powerhouse as US military at the time did.

Speaker 1

与此同时,像贝尔实验室这样的研究机构也在进行一些有趣的工作,催生了C语言和Unix等重要成果。

At the same time, you had some interesting work going on in laboratories like at Bell, which had begot sea and eunuchs and the like, which was becoming incredibly important.

Speaker 1

但当时有一位名叫比雅尼·斯特劳斯特鲁普的疯狂研究者说:‘这确实很酷,但为什么不把Simula的一些理念借鉴过来呢?’

But there was this crazy researcher at the time by the name of Bjarnas Stroustrup who was saying, wow, you know, this is kinda cool, but, hey, let's take some of these ideas from Simula.

Speaker 1

我应该提一下,Simula是第一种面向对象的语言。

I should mention Simula, was the first object oriented language.

Speaker 1

让我们看看能否把这些理念应用到C语言上,因为你知道,C语言本身存在一些问题。

And, let's see if we can apply them to c because, you know, c's got problems with it.

Speaker 1

我们来看看能不能移动一下。

Let's see if we can move about.

Speaker 1

因此,在学术界和这些边缘领域背后发生的是,人们意识到我们需要新的抽象方式。

So what was happening in the background in academia and in in these fringes was the realization that we needed new kinds of abstractions.

Speaker 1

这不仅仅是算法上的抽象,更是对象层面的抽象。

And it wasn't just algorithmic abstractions, but it was object abstractions.

Speaker 1

事实上,这种二元对立背后有一段有趣的历史。

Turns out there's an interesting history behind that dichotomy.

Speaker 1

柏拉图曾就这种分裂进行过讨论,他在对话中让两个人探讨如何看待世界,其中一人说,我们应该从过程的角度来看待世界。

There is a discourse in Plato about that very kind of split in which he has he has a dialogue between two people who are talking about how I look at the world, and one of them says, we should look at the world in terms of its processes.

Speaker 0

这是公元前的古希腊哲学家。

This is the ancient Greek philosopher from, like, before Christ.

Speaker 1

就是那个人。

That guy.

Speaker 1

那个地方

That place

Speaker 0

哇。

Wow.

Speaker 0

是的。

Yes.

Speaker 0

他他他提出了一些并行的想法。

He he he brought up some parallel ideas.

Speaker 1

他提出了用两种视角来看待世界的二分法理念。

He brought up the ideas of the dichotomy of looking at the world for two lenses.

Speaker 1

正是这位柏拉图,他的著作如今在某些美国大学被禁,因为他太激进了。

The very Plato whose work has now been banned in certain, US universities because he was so radical.

Speaker 1

对吧?

Right?

Speaker 1

但在其中一篇对话录中,他注意到其中一位作者说,哦,我们必须通过过程、事物如何流动来看待世界。

But but in one of these dialogues, he observed that one of the writers said, oh, we have to look at the world through through the processes, how things flow.

Speaker 1

而另一位则说,不,不,不。

And the other one said, no, no, no.

Speaker 1

我们必须通过事物本身来看待它们。

We have to look at them through things.

Speaker 1

这就是原子概念的由来。

And this is where the idea of atoms came about.

Speaker 1

原子这个术语本身就源自希腊语及其术语体系。

The very term atom came from Greek terms and and that terminology.

Speaker 1

所以,将观察世界视为一种抽象过程,这个想法并不新鲜。

So the idea of looking at the world and looking at and looking at the world are basically abstractions is not a new one.

Speaker 1

但是像帕纳斯这样的人以及其他一些人,还有Simula的设计者们说,等一下。

But people like Parnas and and others and the the designers of Simula said, wait a minute.

Speaker 1

我们可以把这些想法应用到软件本身,我们不仅可以通过算法抽象来看待世界。

We can apply these ideas to software itself, and we can look at the world not just through algorithmic abstractions.

Speaker 1

我们还可以通过对象抽象来看待它们。

We can look at them through object abstractions.

Speaker 1

现在还有另一个因素介入其中,这就是Fortran的发明者出现的地方。

Now there's another factor that came into the place, and this is where, the inventor of Fortran came into be.

Speaker 1

在Fortran之后,他离开了,当然是在IBM做的这些事。

After Fortran, he went off and he did this at IBM, of course.

Speaker 1

他被任命为研究员,然后离开并说,这很有趣,但我想做点别的事情。

He he was made a fellow and he went off and said, this was fun, but I wanna do something else.

Speaker 1

他说,让我们看看一种不同的编程方式。

And he said, let's let's look at a different way of programming.

Speaker 1

这就是函数式编程的理念,即通过数学函数、无状态的方式来观察世界。

And it was the idea of functional programming, which was looking at the world through mathematical functions, stateless kinds of things.

Speaker 1

所以当时有相关工作在进行。

So there was work.

Speaker 1

我们现在谈论的是七十年代,那时函数式编程的理念开始兴起。

Here we are talking about in the seventies now, in which, the ideas of functional programming came to be.

Speaker 1

在他去世前的几个月,我有机会采访了他。

I had a chance to interview him a few a few months before he passed away.

Speaker 1

我问他,你知道为什么函数式编程从未真正流行起来吗?

And I asked him, you know, why did functional programming never make the big time?

Speaker 1

他的回答是,因为函数式编程让做困难的事情变得容易,却让做简单的事情变得惊人地不可能。

And his answer was, because functional programming makes it easy to do hard things, but it makes it astonishingly impossible to do easy things.

Speaker 1

简单的事情。

Easy things.

Speaker 1

是的。

Yeah.

Speaker 1

所以,函数式编程有其用武之地。

So so functional programming has a role.

Speaker 1

毫无疑问。

There's no doubt.

Speaker 1

我认为其基础在当时是由约翰奠定的。

And I think its foundations were laid at the time by John.

Speaker 1

但即使在今天,它也有其作用,有其特定领域,但正是由于那条同样的原则,它并未成为主流。

But even today, it has a role, it has a niche, but it hasn't become dominant because of that very same edict.

Speaker 1

总之,我们现在处于软件工程第一个黄金时代的末期,正迈向第二个时代,那么引领我们进入那个时代的力量是什么呢?

So at any rate, here we are at the end of the first golden age of software engineering, and moving into the second, what were the forces that led us into that?

Speaker 1

首先,是日益增长的复杂性。

First off, it was growing complexity.

Speaker 0

格拉迪刚刚提到,复杂性的增加是推动行业进入软件工程新时代的力量。

Grady just mentioned how growing complexity was a force pushing the industry into a new golden age of software engineering.

Speaker 0

放眼今天,软件的复杂性仍在持续增长、增长、再增长,部分原因在于人工智能以更快的速度生成了大量代码。

Fast forward to today, and software complexity keeps growing, growing, and growing, in part thanks to AI generating a lot more code a lot faster.

Speaker 0

这自然引出了我们的资深赞助商WorkOS。

And this brings us nicely to our seasoned sponsor WorkOS.

Speaker 0

WorkOS提供了让您的应用轻松实现企业级功能的底层组件。

WorkOS provides the primitives that make it easy to make your app enterprise ready.

Speaker 0

但在其背后,存在着大量的复杂性。

But under the hood, there is so much complexity that happens.

Speaker 0

我知道这一点,因为我最近参加了WorkOS的一次工程规划会议,名为Hilltop评审,会上有工程师详细阐述他们提出的实施方案。

I know this because I recently took part in an engineering planning meeting at WorkOS called the Hilltop review, an engineer walking through their proposed implementation.

Speaker 0

在这次评审中,我们讨论了如何为客户的用户在通过WorkOS跨多个平台进行身份验证时实现认证功能。

In this review, we discussed how to implement authentication for customers when their users authenticate across several platforms using WorkOS.

Speaker 0

例如,如果用户在移动版本中登出,他们是否应该在网页版本中保持登录状态?

For example, what should happen if a user logs out on the mobile version, should they stay logged in on the web version?

Speaker 0

反过来呢?

What about the other way around?

Speaker 0

我们讨论了十多个类似的问题。

We covered 10 plus similar questions.

Speaker 0

正如我所了解到的,答案取决于使用WorkOS的客户想要什么。

The answer, as I learned, goes down to it depends what the customer using WorkOS wants.

Speaker 0

WorkOS团队会逐一排查我从未想到过的边缘情况,然后将这些决策转化为管理面板中的可配置行为,让客户能够为自己的产品和用户选择合适的权衡,而无需自己构建和维护所有这些逻辑。

The WorkOS team walks through edge cases I had no idea existed and then turns those decisions into configurable behavior in the admin panel so customers choose the right tradeoffs for their product and their users without having to build and maintain all of this logic themselves.

Speaker 0

但这并不总是足够的,当客户有独特需求时,WorkOS工程团队通常会直接与他们合作,找出如何解决他们特定的问题。

But this is not always enough, and when customers have unique needs, the WorkOS engineering team often works with them directly to figure out how to solve their very specific problem.

Speaker 0

然后,他们会将这些解决方案通用化,使其成为平台的一部分,供所有人使用。

They then generalize these solutions so they become part of the platform for everyone.

Speaker 0

在这次规划会议之后,我对WorkOS承担了多少复杂性、从而让产品和工程团队无需操心这一点,有了全新的认识。

After this planning session I have a newfound appreciation for just how much complexity WorkOS absorbs so product and engineering teams don't have to.

Speaker 0

同样的规划也应用于所有WorkOS产品,客户都能享受到这些优势。

The same planning goes into all WorkOS products and customers get all the benefit.

Speaker 0

了解更多,请访问workerwise.com。

Learn more at workerwise.com.

Speaker 0

好了,让我们回到Grady,看看软件工程的第二个黄金时代是如何兴起的。

And with this, let's get back to Grady and how the second golden age of software engineering came about.

Speaker 1

正如我提到的,复杂性不断增加,开发软件的速度和规模难以跟上需求。

As I mentioned, growing complexity, difficulty of building software fast enough, and building big enough software.

Speaker 1

我还想补充一点,那就是国防领域出现的趋势——即以分布式方式构建系统的迫切需求和明显价值。

And, I would add to this, the things that came about in defense world, which were the desire and obvious value in building systems from a distributed kind of way.

Speaker 1

与此同时,微小型化技术的成果开始显现,推动了个人电脑的诞生。

Now come on to the scene because what was happening around that same time is the fruits of microminiaturization came to be, and it led us to the personal computer.

Speaker 0

这将涉及晶体管。

This will look at transistors.

Speaker 0

对吧?

Right?

Speaker 0

还有电子学和精密技术方面的突破。

And and the breakthroughs in in, like, electronics and and Precisely.

Speaker 1

而且,你知道,那也是一个充满活力的时期,因为当时有一些爱好者能够把这些东西组装起来,从零开始制造,而那时候还没有个人电脑。

And, you know, this too was a vibrant time because you had, you know, you had hobbyists who could put these things together and and build them from scratch, and there were no personal computers at the time.

Speaker 0

这真的是计算史上第一次,爱好者们能够真正地接触到这些技术吗?

Was this the first time that hobbyists could actually, like, meaningfully get their hands on it in in the history of computing, really?

Speaker 1

我认为是在规模上。

I think at scale.

Speaker 1

是的。

Yes.

Speaker 0

在规模上?

At scale?

Speaker 1

你有像帕斯卡那样的爱好者,当年他看到父亲在会计工作上过于繁琐,就为他造了一台小机器。

You you had you had hobbyists such as, Pascal back in his day who decided that his father was so tediously working over his accounting that Pascal built a little machine for him.

Speaker 1

所以那时候就已经有爱好者的工作了。

So there was hobbyist work at that time.

展开剩余字幕(还有 480 条)
Speaker 1

毫无疑问。

No doubt about it.

Speaker 1

但从规模上讲,别忘了二战后,尤其是在美国,人们的可支配收入增加了,这使得爱好者们能够真正从事这些事情。

But in terms of scale and also remember post World War two, you had the addition of especially in The United States, you had more disposable income, which made it possible for hobbyists to actually do these kinds of things.

Speaker 1

最后,还有军方在生产集成电路和晶体管。

And then lastly, you had the military who was producing integrated circuits and transistors.

Speaker 1

突然之间,尤其是在硅谷,你可以去Fry's或者Fry's的前身商店购买这些元件——那时还没有Fry's。

And all of a sudden, especially in Silicon Valley, you could go down to Fry's or the Fry equivalent, this is before Fry's, and buy these things.

Speaker 1

它们就在那里,触手可及。

They were just they were there.

Speaker 1

这使得人们能够去尝试,而尝试在软件历史上是非常重要的一部分。

And so it enabled people to play, and play is an important part in the history of software.

Speaker 1

所以,在七十年代末到八十年代初,发生了一件非常美妙的事,那是一个充满实验精神的活跃时期。

So you had this wonderful thing happening in, I'd say, the late seventies and early eighties, which was a vibrant time of experimentation.

Speaker 1

有一本名为《睡鼠说了什么》的精彩书籍,书中提出个人电脑的兴起与嬉皮士反文化运动的兴起密切相关。

There's a delightful book called What the Dormouse Said, which posits that the rise of the personal computer was also tied together with the rise of the hippie counterculture.

Speaker 1

于是就有了这种推动——你知道的,权力归人民,还有那种‘要爱不要战争’之类的理念。

And so this this drive toward, you know, power to the people and, you know, let's, you know, love like, make love, not war, these kinds of things.

Speaker 1

这是斯图尔特·布兰德的时代,是默里恶作剧者们的时代。

This is the era of Stewart Brand, the era of of, the Murray pranksters and the like.

Speaker 1

这催生了像The Well这样的东西,那是最早的社交网络,今天我们将它们称为公告板,它们在硅谷兴起。

And that led to things like The Well, which was the very first social network, which was today, we call them bulletin boards, grew up in in Silicon Valley.

Speaker 1

顺带一提,斯图尔特是个非常可爱的人。

Quick aside, Stuart, just a lovely fellow.

Speaker 1

他实际上在那本关于这群恶作剧者的书中被提及为其中一员。

He was actually mentioned as one of the merry pranksters in, in the book about, about them.

Speaker 1

他至今仍活跃在公众视野中,最近刚出版了一本精彩的新书,名为《维护:第一部分》,探讨了系统的问题。

He's still on the scene, and he's just released a wonderful book called Maintenance Part one, which looks at the problems of systems.

Speaker 1

软件是其中之一,还有与之相关的种种问题。

Software is one of them and the problems of main associated with them.

Speaker 1

总之,我们现在就在这里。

Anyway, here we are.

Speaker 1

七十年代末,八十年代初。

Late seventies, early eighties.

Speaker 1

这也是一个非常充满活力的时期,因为有很多酷炫的事情可以做。

Also a very vibrant time because there's a lot of cool stuff that could be done.

Speaker 0

是的。

Yeah.

Speaker 0

实际上,Stripe Press 正在出版这本书。

And Stripe Press is publishing this actually.

Speaker 0

我会在下方的节目笔记中留下链接。

I'll leave a link in the show notes below.

Speaker 0

这本书看起来非常不错。

It looks like a really nice book.

Speaker 0

Stripe Press 以出品高质量作品而闻名。

And Stripe Press is known to produce excellent quality.

Speaker 0

所以我真的很期待去深入了解这本书。

So I'm actually excited to look into this.

Speaker 1

是的。

Yeah.

Speaker 1

这是一本非常、非常棒的书。

It's a great, great book.

Speaker 1

所以,我们意识到,我们现在开始拥有了一种新的理论视角,不是通过过程,而是通过对象和类来看待世界。

So the realization was that we now had the beginnings of theories of looking at the world, not through processes, but through objects and classes.

Speaker 1

我们有来自分布式系统的需求拉动,也有来自试图构建越来越复杂系统的需求拉动。

We had the demand pull of distributed systems, the demand pull from trying to build more and more complex systems.

Speaker 1

因此,当时也出现了这场完美风暴,真正开启了第二个黄金时代。

And so there was also this perfect storm that really launched that second golden age.

Speaker 1

坦白说,我就是在那时登上这个舞台的。

And that's frankly where I came onto the scene.

Speaker 1

我只是在正确的时间出现在了正确的地点。

I was just in a lucky place at a lucky time.

Speaker 1

那时我还在范登堡空军基地工作,负责导弹系统和太空系统。

I was at the time working at Vandenberg Air Force Base on, missile systems and space systems.

Speaker 1

当时有一个设想中的军用航天飞机,我也是这个项目的一员。

There was a envisioned military space shuttle, and I was part of that program as well.

Speaker 1

那真是太棒了。

It was great.

Speaker 1

那是个很有趣的地方,因为我们每周都会有两次发射。

It was a fun place to be because we'd have launches, like, twice a week.

Speaker 1

这相当酷。

It was pretty cool.

Speaker 1

你会跑过去说,哇。

You'd run up and say, wow.

Speaker 1

看那景象。

Look at that.

Speaker 1

那真是相当疯狂。

It was it was pretty wild.

Speaker 1

在我工作的那栋楼里,每次有发射任务时,我都得疏散,因为那是泰坦火箭的发射。

At the building in which I work, I had to evacuate whenever there was a building or a launch because it was a Titan launch.

Speaker 1

泰坦火箭发射台离我们非常近,如果

The Titan launch pad was really close to us, and if

Speaker 0

它在发射时爆炸了,

it had blown up on

Speaker 1

就会把我们的大楼炸飞,那可就太烦人了。

the lie launch pad, it would have it would have blown up our building, which would have been really annoying.

Speaker 1

所以是的。

So yeah.

Speaker 1

那是段美好的时光。

Good times.

Speaker 1

还有另一个小故事。

One other one other quick story.

Speaker 1

你总能分辨出秘密发射正在进行,比如秘密间谍卫星,因为有两个明显的迹象。

You could always tell when it was the secret launches going off, the secret spy satellites, because there were two main clear indications.

Speaker 1

第一个迹象是所有酒店都会住满,因为会有承包商赶来。

The first is all the hotels would fill up because you'd have the contractors come in.

Speaker 1

其次,发射当天,附近可以观看发射的高速公路会挤满前来观看的人群。

And second, the day of the launch, the highway nearby where you could see the launch would fill up with people to watch it.

Speaker 1

所以在那个世界里,根本没什么秘密。

So there were no secrets in that world.

Speaker 1

所以我们现在来到八十年代末。

So here we are, late eighties.

Speaker 1

当时世界正准备迎来一种看待世界的新方式,那就是面向对象编程和面向对象设计。

The the world was poised for a new way of looking at the world, and that was object oriented programming and object oriented design.

Speaker 1

那么,它与第一代有什么不同呢?

So how does that differ from the first generation?

Speaker 1

不同之处在于,我们以不同的抽象层次来理解世界。

It differs in the sense that we approach the world at a different layer of abstraction.

Speaker 1

不再是仅仅关注这里这片原始的数据海洋,以及我们用来操作这些数据的算法。

Rather than just looking at the data, which was this raw lake out here, and the algorithms we have to manipulate them.

Speaker 1

而是将它们整合到一个地方。

We bring them together into one place.

Speaker 1

我们将对象和过程结合起来。

We combine the the objects and the and the, processes together.

Speaker 1

而且它成功了。

And it worked.

Speaker 1

天哪。

My gosh.

Speaker 1

它让我们能够完成以前无法做到的事情。

It'll label us to do things we could not do before.

Speaker 1

它是许多系统的基础。

It was the foundation for a lot of systems.

Speaker 1

去计算机历史博物馆看看MacWrite和MacPaint的软件吧。

Go out to the computer history museum and go look at the software for for MacWrite and MacPaint.

Speaker 1

它是用ObjectPascal编写的,这是早期的面向对象编程语言之一。

It was written in ObjectPascal, one of the early object oriented priming languages.

Speaker 1

我见过最美丽的软件作品之一。

One of the most beautiful pieces of software I've seen.

Speaker 1

它的结构良好,组织有序,事实上,其中所做的设计决策,你至今仍能在诸如Photoshop这样的系统中看到其延续。

It's well structured, it's well organized, and in fact, of the design decisions made in it, you still see persist in systems such as Photoshop today.

Speaker 1

它们依然存在,这本身就是一个关于软件生命周期的有趣故事。

They still exist, which is an interesting story unto itself about the lifetime of software.

Speaker 1

因此,通过对象的视角来看待软件被证明是非常有效的,因为它使我们能够以一种全新的、新颖的方式来应对软件的复杂性难题。

So looking at software through the lens of object proved to be very effective because it allowed us to attack software, the software complexity problem, in a new and new and novel way.

Speaker 1

所以,就像第一个黄金时代一样,这也是一个非常充满活力的时期。

And so much like the first golden age, this was also a very vibrant time.

Speaker 1

我想说的是,在八十年代和九十年代,当时有诸如‘三剑客’这样的人物,比如我、伊夫·阿拉加卡桑、伊芙,还有吉姆·朗博。

And I would say the the eighties and nineties where you had people such as the three amigos, me, Yves Aragakassan, Eve and, Jim Rumbaugh.

Speaker 1

还有皮特·科德。

You had Pete Code.

Speaker 1

拉里·康斯坦丁也重新回到了这个领域。

You had Larry Constantine was back on the scene.

Speaker 1

埃德·约尔顿也重新回到了这个领域。

Ed Yordon was back on the scene.

Speaker 1

很多人开始说,让我们不要从流程的角度,而是从对象的角度来看待软件,去思考它。

A lot of folks who were saying, let's look at software not from processes, but from objects and think about it.

Speaker 1

这非常好。

Now this was great.

Speaker 1

我们犯了一些错误。

We made some mistakes.

Speaker 1

对继承概念的强调过度了。

There was an overemphasis upon the ideas of inheritance.

Speaker 1

我们认为这会是,你知道的,最了不起的事情。

We thought this would be, you know, be the greatest thing.

Speaker 1

这有点不对。

That was kinda wrong.

Speaker 1

但从类和对象的角度来看待世界,这种理念已经根深蒂固了。

But the idea of looking at the world from classes and objects, it was kinda built in.

Speaker 1

于是,开始发生的事情——这也是一种经济现象——当人们开始构建这些系统时,我们突然看到了平台的兴起。

And so what began to happen, this was also an economic thing, is as people started building these things, all of a sudden we saw the rise of platforms.

Speaker 1

其实这早有先例,因为在软件的第一个黄金时代,人们就开始一遍又一遍地构建同类的东西。

Now there was precedence for this, because in the first golden age of software, people started building the same kinds of things over and over again.

Speaker 1

这个想法是收集流程,收集那些常用的算法,比如,你知道,我该如何操作硬盘或磁鼓?

The idea of collecting processes, collecting algorithms that were commonly used, like, you know, how do I manipulate a hard drive or a drum?

Speaker 1

我该如何将内容写入电传打字机?

How do I write things to a teletype?

Speaker 1

我该如何,你知道,把东西显示在屏幕上?

How do I, you know, put things on a screen?

Speaker 1

这类算法该如何分类并编码化?

These kinds how do I sort these kinds of algorithms could be codified?

Speaker 1

于是,最初的想法——如果你愿意这么说的话——是将它们打包成可复用的组件,这便应运而生。

And so the first ideas of, if you will, packaging them up into reusable things came into be.

Speaker 1

正是在这个时候,至少在商业系统领域,IBM Share诞生了。

This is when, at least in the the the world of, business systems, IBM Share came to be.

Speaker 1

Share是一个由客户组织的团体,他们彼此之间完全公开地共享软件。

Share was a customer organized group that literally shared software among one another's totally clean.

Speaker 0

在第一个黄金时代内。

Within the first golden age.

Speaker 0

对吧?

Right?

Speaker 0

这个第一个黄金时代。

This first golden age.

Speaker 0

没错。

Right.

Speaker 0

所以,这有点像一种原始的、或者从我回看的角度来看更原始的方式,就是把东西打包成,嗯,相关的模块。

So so this was kinda like a primitive or, like, by me looking back a more primitive way of just, like, packaging stuff into, like, yeah, related.

Speaker 0

就像你所说的,可能是排序算法,IBM 也在分发一些函数之类的东西。

May that be sorting algorithms, as you said, IBM was also distributing just like functions and things like that.

Speaker 0

IBM 并没有在做这件事。

IBM wasn't doing it.

Speaker 0

这完全是公众驱动的。

It was perfectly it was completely public driven.

Speaker 0

IBM支持了它,但他们是将其分发的。

IBM supported it, but was They they disagreedated it.

Speaker 1

是的。

Yeah.

Speaker 1

所以关键在于,这是最早的开源软件。

So the point is this was the earliest open source software.

Speaker 1

因此开源的理念早已存在。

So the ideas of open source existed.

Speaker 1

还要记得当时软件和硬件的经济模式,软件基本上都是由主要制造商免费提供的。

And remember too in the economics of software and hardware back in the time, software was pretty much given away free by the main manufacturers.

Speaker 1

IBM直到后来才开始对软件收费。

IBM did not charge for software until later.

Speaker 1

到了六十年代末、七十年代初,他们才意识到,天哪,我们可以靠这个赚钱,于是他们将软件和硬件分离,并开始为此收费。

In the later sixties, seventies, they realized, my gosh, we can make money, and they decoupled software and hardware and started charging you for it.

Speaker 1

但在最早的时期,有一个充满活力的社区,人们可以说,天哪,我写了这个东西。

But in the earliest days, there was this vibrant community of people who could say, you know, gosh, I've written this thing.

Speaker 1

尽管用吧。

Go ahead and use it.

Speaker 1

没问题。

That's fine.

Speaker 1

没问题。

No problem.

Speaker 1

所以,那时候源代码还是后来才出现的。

So, source was, was late at that time.

Speaker 1

在第二个黄金时代,同样的事情再次发生,我们看到了操作系统兴起类似的景象——开源软件的兴起,这一现象在第二个黄金时代再次出现,但这次是新的抽象层。

And the same thing began to happen in the second golden age, in which we saw much like the rise of operating systems, the rise of open source software, the same phenomena applied in the second golden age, but now it was a new layer of abstraction.

Speaker 1

哦,我现在想要一个用于操作这些新潮的阴极射线管的库。

Oh, I want to have now a new, library for, you know, writing to these new fangled CRTs.

Speaker 1

这儿就有。

Here it is.

Speaker 1

我自己拥有它并没有什么竞争价值,但天啊,它让我能做出一些非常酷的东西。

No competitive value in me having it, but by gosh, it enables me to build some really cool things.

Speaker 1

你也可以拥有它。

You can have it too.

Speaker 1

因此,开源汲取了第一个黄金时代的根基与理念,并在第二个黄金时代得以应用,但形成了一种不同的抽象层次。

So open source laid its roots, took its ideas from the first golden age, applied itself in the second golden age, but a different kind of abstraction.

Speaker 1

在幕后,谈及经济时,平台正在崛起。

Lurking in the background, speaking of economics, was the rise of platforms.

Speaker 1

因为突然间,这些库变得越来越庞大。

Because now all a sudden, these libraries are becoming bigger and bigger.

Speaker 1

随着我们转向分布式系统,当时出现了所谓的面向服务的架构。

And as we move to distributed systems, there was the rise of, back then, we called it service oriented architectures.

Speaker 1

当时我们有了HTML之类的技术。

There was this need of, you know, we had HTML and the like.

Speaker 1

我们可以互相传递链接,但有一些疯狂的人说,如果我们能做些像分享图片这样的事,会不会很酷?

We could, you know, pass links back and forth, but there was some crazy folks that said, wouldn't it be cool if we could do things like, you know, share images?

Speaker 0

那正是其中之一

And that was one of

Speaker 1

网景允许的那些功能,就是他们为HTML添加了可以嵌入图片的特性。

the things that Netscape allowed, which was they produced this addition to HTML that allow you to put images.

Speaker 1

如果我们能通过HTML传递消息,那岂不是很酷?

Wouldn't it be cool if we could pass messages back and forth via HTML?

Speaker 1

于是,互联网通过HTML协议和HTTP协议,成为了一个更高层次的抽象媒介,用于传递信息和流程。

So all of a sudden, the Internet became via HTML protocols, HTTP protocols became a medium at a higher level of abstraction for passing information and processes around.

Speaker 1

但当时需要将这些内容打包起来。

But there was a need to package it up.

Speaker 1

因此,面向服务的架构、SOAP、面向服务的架构、面向服务的协议等应运而生。

So thus was born service oriented architectures, SOAP, the service oriented architecture, service oriented protocols, all that.

Speaker 1

它们是我们今天所拥有技术的前身。

The predecessors to what we have today.

Speaker 1

这在第二黄金时代为平台时代的开端奠定了基础,也就是贝索斯等人真正引领我们走向的时代。

And this was laying the foundations in the second golden age for the the beginnings of the platform era, which is, you know, what Bezos and and others have really brought us to.

Speaker 1

在我们当前的时代,你看到的是一些由各种API围绕形成的孤岛。

We're jumping ahead in our current age where you have these islands which are sort of formed by all sort of APIs around them.

Speaker 1

但那是第二个黄金时代,它们正在诞生。

But it was the second golden age is they were being born.

Speaker 0

当你说到平台时,你所说的平台崛起是指什么?

And when you say platforms, what do you mean when you say the rise of platforms?

Speaker 0

你如何理解平台?

What how how do you think of a platform?

Speaker 1

AWS 就是一个很好的例子。

AWS would be a good one.

Speaker 1

Salesforce 是另一个例子,它们就像被护城河环绕的经济上极具吸引力的城堡。

Salesforce would be another one in which I have these economically interesting castles defended by the moat around them.

Speaker 1

像 Salesforce 这样的组织会允许你跨越护城河,当然,要收取一点费用。

And those organizations like Salesforce give you access across the moat for, you know, a slight fee.

Speaker 1

甚至不只是小费用。

Well, not even a slight fee.

Speaker 0

对。

Yes.

Speaker 0

不是一笔小费用。

Not a slight fee.

Speaker 1

对。

Yeah.

Speaker 1

假设我们作为Salesforce,你自己做的成本如此之高,以至于从我们这里购买是合算的。

Under the assumption that we as like a Salesforce, the cost of you doing it yourself is so high, it makes sense for you to buy from us.

Speaker 1

所以在第二个黄金时代,我们看到了这类企业的兴起,因为某些类型软件的成本足够高,复杂性也确实很高。

So during the second golden age, we saw the rise of those kinds of businesses because the cost of certain kinds of software was sufficiently high and the complexity was certainly high.

Speaker 1

这促进了这类SaaS公司的商业和产业发展。

It allowed the business and the industry of these kinds of SaaS companies.

Speaker 1

让我们看看九十年代末、两千年初。

So let's look at the late nineties, early two thousands.

Speaker 1

那也是一个充满活力的时期,就像第一个黄金时代一样。

Also a vibrant time, much like the first golden age.

Speaker 1

我们见证了互联网的增长。

We had the growth of the Internet.

Speaker 1

你是什么时候拥有第一个电子邮件地址的?

When did you get your first email address?

Speaker 0

我的第一个电子邮件地址,大概是1956年2月左右获得的。

My first email address, I got sometime in maybe 02/1956.

Speaker 0

当Gmail推出时,这仍然非常新颖。

It was still very fresh when Gmail launched.

Speaker 0

但你是什么时候拥有第一个电子邮件地址的?

But when did you get your first email address?

Speaker 1

1987年。

1987.

Speaker 1

那时候还是ARPANET时代。

When it was the ARPANET.

Speaker 1

事实上,是的。

In fact, at yes.

Speaker 1

那时候我们有一本小册子。

That time We had a little book.

Speaker 1

那本小册子大概有100页长,列出了世界上每个人的电子邮件地址。

It was probably a 100 pages long that listed the email address of everybody in the world.

Speaker 1

那感觉相当酷。

It was pretty cool.

Speaker 1

你可以在网上找到它们,还能看到我的邮箱地址。

You could find them online, and you can see my email there.

Speaker 1

现在已经不能用了,因为域名系统之类的已经不一样了。

Doesn't work anymore because it doesn't have the same, you know, top level domain kind of things.

Speaker 1

所以我在电子邮件还没流行起来之前就开始用了。

So I've been on email before email was cool.

Speaker 1

因此,当你看到像电子邮件这类结构变成大众化商品时,在软件的第二个黄金时代,软件开始渗透到文明的缝隙中。

And so as you saw these kinds of structures like email becoming a commodity thing, In the second golden age of software, this is when software began to filter into the interstitial spaces of civilization.

Speaker 1

它不再仅仅是推动商业或特定领域发展的单一事物,而是成为了文明结构本身的一部分。

And it became not just this one thing fueling businesses or certain domains, it became something that became part of the very fabric of civilization.

Speaker 1

这一点很重要。

This was important.

Speaker 1

因此,我们现在不再担心第一黄金时代那些问题了,大部分都已经解决了。

And so now, the things we worried about in the first golden age, we'd solve them for the most part.

Speaker 1

它们已经成为我们环境的一部分。

They were part of the very atmosphere.

Speaker 1

我们很少去思考算法,因为你知道,大家基本都了解它们。

We didn't think about algorithms much because, you know, gosh, everybody kinda knows about them.

Speaker 1

这正是技术应该达到的状态。

And this is as technology should be.

Speaker 1

最好的技术会悄然消失,融入我们呼吸的空气之中。

The best technology evaporates and disappears and becomes part of the the air that we breathe.

Speaker 1

而现在,这种情况正在发生。

And that's what's happening now.

Speaker 1

但在第二黄金时代,我们今天所处位置的基础已经奠定。

But it was in the second golden age, the foundations of where we are today are here.

Speaker 1

那么,大约在2000年左右发生了什么?

So what happened around two thousand or so?

Speaker 1

到那时,互联网已经很发达了,许多企业正在兴起,但同时也发生了崩盘,因为从经济上讲,这根本说不通。

Well, we had, by that time, Internet was big, lots of businesses being built, but there was the crash, around that time because economically, it just didn't make sense.

Speaker 1

于是出现了大幅回调。

So there was this great pullback.

Speaker 1

与此同时,还发生了整个Y2K问题,人们投入了大量精力来解决这个问题。

Also happening was the whole Y2K situation where a lot of effort was put into, solving that problem.

Speaker 1

事后人们回过头来说,哎呀,我们其实没必要为此担心。

People in retrospect say, well, gosh, we didn't need to worry about that.

Speaker 1

但身处其中时,你会意识到:天哪,这可不得了。

But being in the middle of it, you realize, oh, no.

Speaker 1

当时做了大量英勇的工作。

There was a lot of heroic work.

Speaker 1

如果这些工作没有完成,就会引发大量问题。

If that hadn't been done, then lots of problems would have happened.

Speaker 1

因此,这是一个很好的例子,说明最好的技术是你根本看不到的。

So this is a good example of how the best technology you simply don't see.

Speaker 1

为了规避一个根本没有出现的问题,投入了大量的精力和金钱。

A lot of effort and a lot of money was spent to subvert a problem that simply did not manifest itself.

Speaker 1

这其实是件好事。

That's a great thing.

Speaker 0

格雷迪刚才提到,最好的技术就是你根本注意不到的技术。

Grady just mentioned how the best technology is one that you simply do not see.

Speaker 0

这是一个被低估的观察,对于大多数关键任务软件来说都是如此:当它正常工作时,你是看不见它的。

This is an underrated observation and is true for most mission critical software: when it works it's invisible.

Speaker 0

只有当它出问题时,用户才会注意到它的存在。

It's only when it breaks when users notice that it's there.

Speaker 0

然而,构建可靠、无形的软件存在一个问题。

There is, however, a problem with building reliable, invisible software.

Speaker 0

在快速推进(缺乏防护措施可能导致故障)与加强防护以确保稳定(但会降低发布速度)之间,常常存在一种张力。

There is often a tension between moving fast with few guardrails that can make things break, or putting in more guardrails for stability but then slowing down in shipping speed.

Speaker 0

其实还有第三种方式,这正好引出了我们今天的赞助商——Statsig。

Well, there is a third way, which leads us nicely to our presenting sponsor, Statsig.

Speaker 0

Statsig 构建了一个统一的平台,融合了两种文化的优势:持续交付和实验。

Statsig built a unified platform that enables the best of both cultures: continuous shipping and experimentation.

Speaker 0

功能开关让你能够自信地持续发布,先向 10% 的用户推送,尽早发现问题,必要时立即回滚。

Feature flags get you shipped continuously with confidence, roll out to 10% of users, catch issues early, roll back instantly if needed.

Speaker 0

内置的实验功能意味着每次发布都自动成为一次学习机会,通过严谨的统计分析,清晰展示功能对指标的具体影响。

Built in experimentation means every rollout automatically becomes a learning opportunity with proper statistical analysis showing you exactly how features impact your metrics.

Speaker 0

由于所有功能都集成在一个平台,并使用相同的产品数据,加上完整的分析和会话回放,整个组织的团队都能协同工作,做出数据驱动的决策。

And because it's all in one platform with the same product data, analytics session replays everything, teams across your organization can collaborate and make data driven decisions.

Speaker 0

像 Notion 这样的公司,从每个季度仅进行个位数的实验,提升到使用 Statsig 后进行超过 300 个实验。

Companies like Notion went from single digit experiments per quarter to over 300 experiments with Statsig.

Speaker 0

他们通过功能开关发布了超过 600 个功能,在快速迭代的同时有效防止了指标倒退。

They shipped over 600 features behind feature flags, moving fast while protecting against metric regression.

Speaker 0

微软、Atlassian 和 Brex 也因相同的原因使用 Statsig。

Microsoft, Atlassian and Brex use Statsig for the same reason.

Speaker 0

它是实现规模化下速度与可靠性并存的基础设施。

It's the infrastructure that enables both speed and reliability at scale.

Speaker 0

他们提供慷慨的免费套餐供新手使用,团队的专业定价从每月150美元起。

They have a generous free tier to get started and pro pricing for teams starts at $150 per month.

Speaker 0

要了解更多信息并获取三十天的企业版试用,请访问 statsig.com/pragmatic。

To learn more and get a thirty day enterprise trial, go to statsig.com/pragmatic.

Speaker 0

好了,让我们回到格雷迪提到的千年虫事件上。

And with this, let's get back to the Y2K event that Grady was talking about.

Speaker 0

是的,你还记得2000年临近时那段紧张的时光吗?

Yeah, remember how stressful that time was leading up to year 2000.

Speaker 0

我觉得当时甚至有不少电影预测世界会崩溃,但人们普遍担心这些系统会不会全部瘫痪?

I think some movies even came out predicting, you know, how how the world would collapse, but there was this fear of, like, will all these systems crash?

Speaker 0

在临近那几年的几个月里,情况变得越来越紧张,虽然我当时还是个孩子,但2000年新年那会儿,大概是我经历过的最紧张的一个新年,因为你根本不确定会发生什么。

And it it started to become pretty intense in in the few months leading up, so I I I was, you know, like a a kid at that time, but when the year 2000 like, that was probably the most stressful new year because you weren't kind of sure.

Speaker 0

你心里盼着别出事,结果什么都没发生,你就想:好吧。

You were hoping, you know, to and then nothing happened and you're like, okay.

Speaker 0

原来就是一场虚惊。

It was just a hoax.

Speaker 0

所以任何经历过那段时期的人都学会了不再相信这些说法,但你说得对。

So anyone who went through their, like, kind of learned to, like, not trust these But you're right.

Speaker 0

比如,知道不会发生。

Like, knowing what no.

Speaker 0

当时做了大量的工作。

There was so much work.

Speaker 0

对吧?

Right?

Speaker 0

为了确保溢出不会在错误的地方发生。

To to make to make sure that that overflow did not, like, hit at the wrong place.

Speaker 1

是的。

Yeah.

Speaker 1

所以我们现在在这里。

So here we are.

Speaker 1

试着想象自己身处二月的第一个十年。

Mentally put yourself in the the first first decade of the February.

Speaker 1

那是个很有趣的地方,因为虽然发生过崩溃,但依然有太多有趣的事情可做,有太多优秀的软件可以编写。

Is a fun place because, well, yeah, the there was the crash, but still so much fun stuff to do, so much great software to be written.

Speaker 1

我们当时主要受限于自己的想象力。

We were still only limited largely by our imagination.

Speaker 1

现在我要暂停一下,补充一些之前没提到的历史背景。

Now I'm gonna pause for a moment and backfill with some history that I hadn't mentioned.

Speaker 1

我们一直在谈论一般的软件。

We've been talking about software in general.

Speaker 1

在人工智能领域,也存在着一条并行的历史,同样经历了几代发展。

There was a parallel history going on in AI in which we saw also some generations.

Speaker 1

人工智能的第一个黄金时代出现在四十年代和五十年代,当时有赫伯特·西蒙、纽厄尔和明斯基等人。

The first golden age of AI was in the forties and fifties where you had people such as Herbert Simon and Newell and Minsky in particular.

Speaker 1

那时的重点是,天啊,我们可以用符号方法人工构建智能。

The focus there was upon, gosh, we could build intelligence artificially using symbolic methods.

Speaker 1

所以这是人工智能的第一个黄金时代,也是第一个伟大时代。

So this is the first golden age, first great age of AI.

Speaker 1

神经网络的想法也曾被尝试过。

And the ideas of neural networks were tried.

Speaker 1

他们构建的东西是SnarQ,这是第一个使用真空管的人工神经元。

The the thing they built was the SnarQ, which was the first, vacuum tube artificial neuron.

Speaker 1

制造一个单一的神经元需要大约五个真空管。

It took, like, five vacuum tubes to make a single neuron.

Speaker 1

当时英国有一份报告指出:我们在这里投入了大量资金,但说实话,这根本行不通。

And there was a report coming out of The UK at the time that said, we're spending a lot of money here, but by gosh, it doesn't work.

Speaker 1

因此,当人们意识到确实无法构建出任何有趣的东西时,第一个黄金时代就结束了。

And so the first golden age ended when they realized, yeah, you can't really build anything interesting.

Speaker 1

而且,神经网络是一条死胡同。

And furthermore, neural networks are a dead end.

Speaker 1

这在很大程度上是一条死胡同,因为我们缺乏足够的计算能力来实现它们。

Largely a dead end because we didn't have the computational power to do them.

Speaker 1

我们也没有相应的算法概念和抽象方法,来知道在规模扩大后该如何利用它们。

We didn't have the algorithmic concepts, the abstractions to to know what to do with them once we had them at scale.

Speaker 1

人工智能的第二个黄金时代是在八十年代,当时像法尔科姆这样的学者出现,提出了一种全新的视角。

The second golden age of of AI was really in the eighties when you had people like Falconmime come along and say, hey, there's another way of looking at it.

Speaker 1

那就是通过规则来审视问题。

And it's looking at it through rules.

Speaker 1

于是,机器学习的概念应运而生,像MICE之类的系统也开始登场。

Thus was born the idea of machine learning, things like mice and the like came upon the scene.

Speaker 1

但同样地,我们也见证了又一次AI寒冬的到来。

But there too, we saw the AI winter come about.

Speaker 1

顺便说一下,当时硬件也出现了显著的发展。

By the way, there was an interesting rise in hardware at the time.

Speaker 1

Lisp机器、思维机器都是在这一时期被研制出来的。

The Lisp machine, the thinking machine, were all built during this time.

Speaker 1

这是计算机架构充满活力的时期。

Vibrant periods of time of a of computer architectures.

Speaker 1

因此,你可以看到这些因素彼此相互促进。

So you see these kind of feeding into one another.

Speaker 1

但最终它失败了,因为这些方法无法扩展。

But ultimately, it failed because they didn't scale up.

Speaker 1

一旦你超越了几百条if-then语句,我们就真的没有能力构建能够处理它们的推理引擎了。

Once you got beyond a few 100 if then statements, we simply didn't have a means of building inference engines that could do anything with them.

Speaker 1

所以我们再次处在一个令人兴奋的时代。

So here we are in an exciting time again.

Speaker 1

21世纪头十年,人工智能又回到了幕后。

First decade of the 2000s, AI was kind of back in backrooms.

Speaker 1

我们仍然有很多酷炫的事情可以做,而且越来越多的分布式系统出现了。

We still had a lot of cool things to do and more and more distributed kind of systems.

Speaker 1

此外,推动这一趋势的还有这样一个事实:软件如今已通过个人电脑进入个人手中。

Plus, fueling that also was the fact that software was now in the hands of individuals through personal computers.

Speaker 1

因此,对软件的需求变得更大了。

So the demand for software was even greater.

Speaker 1

我认为——这可能有点争议——我们正处在软件工程的第三个黄金时代,但实际上它始于千禧年之交。

I would claim, and this may be a little controversial, we are in the third golden age of software engineering, but it actually started around the turn of the millennium.

Speaker 1

不是现在,而是那时。

It's not now, but it's then.

Speaker 1

其崛起的第一个迹象是,我们看到了抽象层次的新一轮提升,从软件程序的单个组件到构成我们平台的整个库和包。

And the first indication of the rise of it is we saw a new rise in levels of abstraction from individual components of our software programs to whole libraries and packages that were part of our platform.

Speaker 1

哦,我需要处理消息传递吗?

Oh, do I need to do messaging?

Speaker 1

嗯,我不会在自己的机器上做这个。

Well, I'm not gonna do that on my own machine.

Speaker 1

我可以去这个处理消息传递的库。

I can go out to this library which does messaging.

Speaker 1

我需要管理这整块数据。

I need to manage this whole chunk of data.

Speaker 1

我们用Hadoop或类似的东西吧。

Let's use Hadoop or something like that.

Speaker 1

当时它还不存在,但种子已经播下,正在生长。

It wasn't around the time, but the seeds where it was growing.

Speaker 1

因此,我们再次看到抽象层次的增长,从简单的程序发展到系统的子组件。

So we again saw a growth in levels of abstraction from just simple programs to now subcomponents of systems.

Speaker 1

这是我们的方法论、语言以及随之而来的一切发生的下一次重大转变。

And that was the next great shift that happened in our methodologies, in our languages, and all that began to follow.

Speaker 1

所以第三个黄金时代,我们已经身处其中好几年了。

So the third golden age, we've been in for several years already.

Speaker 1

不过我们先别跑得太快,目前在编码领域中AI助手等技术的发展,从很多方面来看,正是对这类事物增长的一种回应,因为我们希望加速它们的使用。

And not to get ahead of ourselves, what's happening with AI assistants and the like in the coding space is in many ways a reaction to the growth of those kinds of things because we want to accelerate their use.

Speaker 1

我们有这么多这类库,但懂得它们的人却不够多。

We want to we have so many of those kinds of libraries out there and not enough people who know about them.

Speaker 1

我们希望通过辅助工具来加速它们的使用。

We want to accelerate the use of them by having aids that help us do so.

Speaker 1

因此,这就是我将Kershur和ChatGPT等AI代理所处的背景,它们在某种程度上是推动我们进入第三个黄金时代的力量的延续。

So that's the context in which I put AI agents such as Kershur and ChatGPT in, and that they are in a way a follow on to the forces that have already led us to this third golden age.

Speaker 1

所以我们现在正处于一个非常活跃的时期,但问题与第一代和第二代已大不相同。

So we are now in a very vibrant time, but the problems are different from the first and second generations.

Speaker 1

现在的问题是什么?

What are the problems now?

Speaker 1

首先,我们有太多的软件。

First, it's problems of we have so much software.

Speaker 1

我们该如何管理它?

How do we manage it?

Speaker 1

我们还必须应对安全和保密性问题。

And we have to deal with issues of safety and security.

Speaker 1

别人会不会偷偷注入一些我无法信任的东西?

Can somebody sneak in something that I can't trust?

Speaker 1

我该如何保护自己免受这种威胁?

How do I defend myself against that?

Speaker 1

在软件供应链中注入恶意内容实在太容易了。

It is so easy to inject something in the software supply chain.

Speaker 1

我该如何阻止坏人往里面塞东西?

How do I prevent the bad guys from putting stuff inside there?

Speaker 1

我该如何防御它?

How do I defend against it?

Speaker 1

关于僵化瓶颈之类问题的整个历史,很适合用来说明间谍活动与软件的关系。

The whole history behind stuck necks and the like is a good one to show, you know, espionage and software.

Speaker 1

于是,我们过去在软件发展史上长期面临的那些人为问题,曾经因为它们深深融入文明而被我们忽视了。

And so all of a sudden, the human issues that we had for much of the history of software, we were insulated about because it was so much part of civilization.

Speaker 1

这些人为问题如今变得突出而紧迫,直接影响着我们的世界。

These human issues became front and center, clear and present for our world.

Speaker 1

另一个方面是其经济问题。

And the other element is to the economic issues of it.

Speaker 1

我们现在有了那些大到不能倒的公司。

We had now companies that were too big to fail.

Speaker 1

如果微软倒闭了,会发生什么?

What would happen if a Microsoft were to go under?

Speaker 1

如果谷歌倒闭了,会发生什么?

What would happen if Google were to go under?

Speaker 1

它们对全球经济如此重要,只要它们一打喷嚏,世界某个地方就会感冒。

They're so economically important to the world that the things they do, they sneeze and some part of the world catches a cold.

Speaker 1

因此,我们如今在软件的第三个黄金时代所面临的问题,与第一代和第二代不同,但同样令人兴奋。

And so the problems we have now in this third golden age of software are different than they were than the first and second generations, but equally as exciting.

Speaker 1

最后,我们还有伦理问题。

And then last, we have the ethical issues.

Speaker 1

因为我能开发这种软件,所以我有能力追踪你在一天中每一个时刻的位置。

Because I can do this kind of software, it is possible for me to track where you are in every moment of the day.

Speaker 1

我确实能做到这一点。

I can do that.

Speaker 1

我应该这么做吗?

Should I do that?

Speaker 1

有些人会说,应该,因为这对人类来说是好事。

Some will say, yes, I should because it's, you know, it's a good thing for humanity.

Speaker 1

另一些人则不太确定。

Others will say, not so sure

Speaker 0

关于这一点。

about that.

Speaker 0

我很喜欢你这样的阐述方式。

So I like how you laid it on.

Speaker 0

这非常有趣,尤其是通过你的个人经历以及分享的历史——我想我们很多人都没有真正反思过这段历史,即这一切是如何开始的,坦白说,这个领域是多么年轻。

It's very interesting, especially through both your experience and also sharing the history that I think a lot of us don't really reflect on, which is how it all started and just honestly how young it is.

Speaker 0

我的意思是,你知道,七八十年可能很长,这取决于你的年龄,但它甚至算不上一个世代,或者说勉强算一个世代。

If if I mean, you know, like seventy or eighty years can be long depending on how old you are, but it is it's it's not even a generation or a barely generation.

Speaker 1

这已经经历了几代发展了。

It's a couple of generations.

Speaker 1

是的。

Yeah.

Speaker 0

但我在整个行业观察到的一个现象是,虽然这种架构设置很有道理,但对于当今许多软件工程师来说,似乎存在一种与之相悖的普遍感受,那就是一种正在加速蔓延的生存焦虑,尤其是在寒假期间。

But one thing that I'm seeing across the industry right now, which feels very like, this setup makes sense, but one thing that kinda feels it contradicts it for a lot of software engineers today is there seems to be an existential dread that is especially accelerating, especially over the winter break.

Speaker 0

寒假期间发生的情况是,在假期之前,这些人工智能语言模型在自动补全方面已经相当不错了。

What happened over the winter break is before the winter break, these AI LMs were were pretty good for autocomplete.

Speaker 0

有时候它们能生成这样或那样的东西。

Sometimes they could generate this or that.

Speaker 0

在寒假期间,我不确定你有没有试过一些新模型,我试过了,它们生成的代码真的很好,好到我开始信任它们了。

And over the winter break, I'm not sure if you played with some of, I have with the new models, they actually generate really good code to the point that I'm starting to trust them.

Speaker 0

是的。

And Yes.

Speaker 0

就软件发展的历史而言,我的理解是,软件开发者一直都在编写代码,这是一件很难的事情,我们中的许多人需要多年才能学会,甚至更长时间才能变得出色。

As far as the history of software has been, my understanding is that software developers have written code and it's a hard thing to do and a lot of us, you know, it takes years for us to learn and to be excellent at it even longer.

Speaker 0

因此,我们很多人开始陷入一种深刻的生存危机:好吧,机器居然能写出非常非常优秀的软件代码,首先这到底是怎么回事?为什么在过去的几个月里突然就发生了?

And so a lot of us are starting to have this really existential crisis of, okay, well the machine can write really, really good software code, first of all, like WTF and how did this happen over the last few months?

Speaker 0

然后接下来的问题是:接下来会怎样?

And then the question is, what next?

Speaker 0

我觉得这可能会动摇整个职业,因为我觉得编程与软件工程一直紧密相连,但现在可能不再如此了。

It feels that it could shake the profession because I feel coding has been so tightly coupled to software engineering and now it might not be.

Speaker 0

你知道,先深吸一口气,回顾一下历史,你对当前正在发生的事情有什么看法?

You know, looking at, I guess, you know, like taking a breath out first and looking through both the history what is your take on what's happening right now?

Speaker 1

让我这么说吧,这并不是开发者们第一次面临存在危机。

Well, let me say that this is not the first existential crisis the developers have faced.

Speaker 0

再多说一点。

Tell us more.

Speaker 1

他们在第一代和第二代时就经历过类似的存在危机。

They have faced the same kind of existential crisis in the first and the second generation.

Speaker 1

所以我看到这种情况时会说,你知道的,当我和那些为此担忧的人交谈时,这种危机也会过去。

So that's why I look at this and say, you know, this too will pass when I talk to people who are concerned about it.

Speaker 1

别担心。

Don't worry.

Speaker 1

专注于基础知识,因为这些技能永远不会消失。

Focus upon the fundamentals because those skills are never gonna go away.

Speaker 1

我有幸见过格蕾丝·霍珀。

I had a chance to meet Grace Hopper.

Speaker 1

她真是个令人愉快的人,就像一个精力充沛的女性。

She was just delightful, you know, fire plug of a woman.

Speaker 1

太惊人了,真是了不起。

Just amazing, amazing thing.

Speaker 1

对于你们的读者,去谷歌搜索一下格蕾丝·霍珀和大卫·莱特曼,她曾登上过大卫·莱特曼的节目,你们就能感受到她的个性。

For for your readers, go Google Grace Hopper and David Letterman, and there's this she appeared on the David Letterman show, and then she you'll get a sense of her personality.

Speaker 0

我们会把相关链接放在下方的节目笔记里。

Well, we're gonna link her to the show notes below.

Speaker 1

当然,是她第一个认识到,在五十年代,将软件与硬件分离是可能的。

She, of course, is the one who recognized that it was possible here we are in the fifties, It was possible to separate our software from our hardware.

Speaker 1

这对当时制造早期计算机的人构成了威胁,因为他们说,天哪,你永远无法构建出高效的东西,因为你必须紧贴着机器来设计。

This was threatening to those who were building the early machines because they said, you know, gosh, you can never build anything efficient because you have to be a tide so closely to the machines.

Speaker 1

那个领域中的许多人写文章表达了担忧,认为这会毁掉我们的工作,本该如此。

And many in that field, and they wrote about it, expressed concerns that, you know, this is going to destroy what we do, and it should have.

Speaker 1

于是,我们在这里见证了首批编译器的诞生。

So we had here the beginnings of the first compilers.

Speaker 1

Fortran语言的发明也发生了同样的情况,当时人们说,天哪,我们写的紧凑汇编语言比任何人都强,比任何机器都强。

The same thing happened with the invention of Fortran, where people were saying, gosh, you know, we can write tight assembly language better than anybody else, better than any machine can kinda do.

Speaker 1

但当我们将抽象层次从汇编语言提升到更高性能的语言时,这一观点被证明是错误的。

But that was proved wrong when we moved up a level of abstraction from the assembly language to the higher performing languages.

Speaker 1

因此,有一群人同样对抽象层次的变化感到担忧和不安,因为他们意识到自己当时所掌握的技能将会消失,并被他们自己创造的事物所取代。

And so you had a set of people who were similarly concerned and distressed by the changes in levels of abstraction because they recognized that the skills they had in that time were going to go away, and they were going to be replaced by the very thing themselves created.

Speaker 1

当时你并没有看到那么大的危机,因为在那段时间里,我们的人数并不多。

Now you didn't see as much of a crisis because there weren't that many of us back in that time frame.

Speaker 1

我们谈论的,你知道,也就几千人。

We're talking, you know, a few thousands of people.

Speaker 1

现在,我们面对的是数以百万计的人,他们非常合理地提出这个问题:这对我意味着什么?

Now we're talking millions of people who ask quite legitimately the question, what does it mean for me?

Speaker 1

所以,就像我相信你也遇到过一样,我遇到过不少,尤其是年轻的开发者,他们来找我说:格雷迪,我该怎么办?

So I've had, as I'm sure you have had, a number of, you know, especially young developers come up to me and say, Grady, what should I do?

Speaker 1

我是不是选错了领域?

Am I choosing the wrong field?

Speaker 1

我是不是应该,你知道,去做些不同的事情?

Should I, you know, do something different?

Speaker 1

我向他们保证,现在正是从事软件行业的激动人心的时刻,原因如下。

And I assure them that this is actually an exciting time to be in software because of the following reasons.

Speaker 1

我们正在向更高层次的抽象迈进。

We are moving up a level of abstraction.

Speaker 1

就像从机器语言到汇编语言,从汇编语言到高级编程语言,再从高级编程语言到库的演变一样。

Much like what happened in the rise from machine language to assembly language, from assembly language to to higher order programming languages, from higher order programming languages to libraries.

Speaker 1

同样的事情正在发生,我们正目睹抽象层次的又一次变革。

The same kind of thing happened, and we're seeing the same change in levels of abstraction.

Speaker 1

现在,作为一名软件开发者,我不必再操心那些细节了。

And now, I, as a software developer, I don't have to worry about those details.

Speaker 1

因此,我认为这极大地解放了我,让我摆脱了以往必须处理的繁琐工作,但核心原则依然不变。

So I view it as something that is extraordinarily freeing from the tedium of which I had to do, but the fundamentals still remain.

Speaker 1

只要我选择构建经得起时间考验的软件,也就是说,我不是建完就扔掉。

As long as I am choosing to build software that endures, meaning that I'm not gonna build it and I throw it away.

Speaker 1

如果你打算建完就扔,那你想怎么做都行。

If you're gonna throw it away, do what you want.

Speaker 1

那太好了。

That's great.

Speaker 1

而且我看到很多人正是为此目的使用这些智能体。

And I see a lot of people using these agents for that very purpose.

Speaker 1

这真是太棒了。

That's wonderful.

Speaker 1

你将能够去自动化那些你目前无法承担的事情。

You're gonna go off and automate things you could not have afforded to do today.

Speaker 1

而如果你只是为自己使用,那更是再好不过了。

And if you're a single user for it, then more power to you.

Speaker 1

这可以说是软件领域的爱好者时代或爱好者层面,就像我们在个人电脑最早期的日子里看到的那样,人们构建了这些东西。

This is the hobbyist era and the hobbyist side of software, if you will, much like we saw in the earliest days of, personal computers where people have built these things.

Speaker 1

非常棒。

Great stuff.

Speaker 1

伟大的想法将由此诞生。

Great ideas will come from it.

Speaker 0

我喜欢这个比喻。

I like the comparison.

Speaker 0

对。

Yes.

Speaker 1

是的。

Yeah.

Speaker 1

伟大的想法将由此产生。

Great ideas will come from it.

Speaker 1

你知道,人们会培养出新的技能。

You know, people will build skills.

Speaker 1

我们将做以前无法做到的事情。

We'll do things we could not have done before.

Speaker 1

我们会自动化那些在经济上不可能实现的事情,但这些事情未必能持久。

We'll automate things that were economically not possible, but they're not going to endure necessarily.

Speaker 1

但无论如何,它们已经产生了有价值的影响。

But still, will have made a valuable impact.

Speaker 0

我想就像在第一个时代,个人可以购买它一样,现在也会有与这个行业毫无关联的人进入,但他们可能会带来惊人的想法。

And I guess just like in the first era where personal people could buy it, you will have people come into the industry who have honestly nothing to do with it, they might bring amazing ideas.

Speaker 0

对吧?

Right?

Speaker 0

就像那时候,你知道,一位小学老师可能会买一台个人电脑。

Like back then, you know, school school teacher might have bought a personal computer today.

Speaker 0

我刚刚跟楼上的邻居聊了,他是个会计师。

I I just talked to my neighbor upstairs, an accountant.

Speaker 0

她让ChatGPT帮她编写了一些Apps Script,来稍微改善他们会计团队的工作流程,因为她知道这东西怎么运作。

She has instructed Chad GPT to build some Apps Script to help their accounting team's process a bit better because she knows how that thing works.

Speaker 0

她跟软件完全没关系,但如今却在为自己创建属于个人的临时性软件,顺便说一句。

Nothing to do with software, but now creating their own personal throwaway software, by the way.

Speaker 1

是的,完全相同的类比。

Yes, absolutely the same parallels.

Speaker 1

而且我为此感到欣喜。

And I celebrate that.

Speaker 1

我支持这一点。

I encourage it.

Speaker 1

我认为这是最棒的事情,这正是我们处于这个充满活力时期的原因。

I think it's the most wonderful thing, which is why we're in this vibrant period.

Speaker 1

在个人电脑的早期,同样的事情也发生过。

In the early days of the personal computer, the very same thing happened.

Speaker 1

你发现艺术家们被吸引,尤其是当时的个人电脑和Amiga。

You found artists drawn to, especially the PC and the Amiga at the time.

Speaker 1

你发现游戏玩家意识到:我拥有了一个以前没有的新表达媒介。

You found gamers who realized, I've got a new medium for expression that I did not have before.

Speaker 1

这就是为什么那是一个非常充满活力的时期。

And that's why it was a very vibrant time.

Speaker 1

同样的事情正在发生。

The same thing is happening.

Speaker 1

而那么多关于‘天啊,我们面临存在危机’的抱怨,都来自那些只狭隘关注自己行业的人,他们没有意识到,这里发生的事情实际上正在拓展整个行业。

And so much of the lamenting of, oh gosh, we have an existential crisis, are those who are narrowly focused upon their industry, not realizing that what's happening here is actually expanding in the industry.

Speaker 1

我们将看到更多由非专业人士编写的软件。

We're gonna see more software written by people who are not professionals.

Speaker 1

我认为这是最了不起的事情,因为现在我们正经历着与个人计算机反文化时代相似的情形,今天也在发生同样的事情。

And I think that's the greatest thing around because now we have software much like in the in the counterculture era of of the personal computer, the same thing is happening today as well.

Speaker 0

我喜欢你所说的。

I like what you're saying.

Speaker 0

不过,有一个但是。

However, one However.

Speaker 0

不过,我也关注一个人,那就是Entropic的首席执行官达里奥·阿莫代伊,我关注他的原因是,我通常不关注首席执行官,但他大约一年前说了一些有趣的话。

However, one thing that I also pay attention to, one person I pay attention to is Dario Amodei, the CEO of Entropic, and the reason I pay attention to him is I I try I tend not to pay attention to CEOs, but he actually said about a year ago, said something interesting.

Speaker 0

他说他认为大部分代码将由AI生成,可能一年内达到90%,之后还会更多,我们当时觉得这很荒谬,但他是对的,代码确实被生成了。

He says he thinks most code will be generated by AI, about 90% of it maybe in a year, and then more, and we thought that's silly, and then he was right, and code was generated.

Speaker 1

是的。

Yes.

Speaker 0

现在,他又说了一件有趣的事。

And now, he said another thing interesting.

Speaker 0

这听起来很有趣,但下一个听起来有点吓人。

That sounded interesting, but the next one sounds scary.

Speaker 0

他说,引述一下,软件工程将在十二个月内实现自动化。

He said, I quote, software engineering will be automatable in twelve months.

Speaker 0

这个说法听起来更吓人,因为我们都知道编程是软件工程的一个子集。

Now, this sounds a lot more scarier for reasons we know coding is a subset of software engineering.

Speaker 0

但他说了这个,你怎么看?

But he said this, what is your take on this?

Speaker 0

而且你已经给出了强烈的回应,所以。

And you've had a strong response already, so.

Speaker 1

关于这一点,我有一两点要说。

I have one or two things to say about it.

Speaker 1

首先,我使用Claude。

So first off, I use Claude.

Speaker 1

我使用Anthropic的工作。

I use Anthropics' work.

Speaker 1

我认为这是我的首选系统。

I think it's it's my it's my go to system.

Speaker 1

我用它来处理JavaScript、Swift、PHP,甚至Python的各种问题。

I've been using it for problems with JavaScript, with Swift, with PHP, of all things, and Python.

Speaker 1

所以我用它,它对我来说非常有用,主要是因为我有一些特定的库想用。

So I use it, and it's it's been a great thing for me primarily because, you know, there are certain libraries I wanna use.

Speaker 1

谷歌搜索太差了。

Google search sucks.

Speaker 1

这些东西的文档也很烂。

Documentation with these things suck.

Speaker 1

所以我可以借助这些助手来加速我对它们的理解。

And so I can use these agents to accelerate my understanding of them.

Speaker 1

但也要记住,我在这些领域至少有一两年的经验基础。

But remember also, I have a foundation of at least one or two years of experience in these spaces.

Speaker 1

好的。

Okay.

Speaker 1

几十年来,我对这些基本原理有了一定的理解。

A few decades where I sort of understand the fundamentals.

Speaker 1

这就是我之前说基本原理不会消失的原因。

And that's why I said earlier that the fundamentals are not gonna go away.

Speaker 1

这在每一个工程领域都是如此。

And this is true in every engineering discipline.

Speaker 1

基本原理不会消失。

The fundamentals are not gonna disappear.

Speaker 1

我们所使用的工具会改变。

The tools we apply will change.

Speaker 1

所以,达里奥,我尊重你的观点,但也要认识到,达里奥的看法和我不一样。

So Dario, man, I I respect what you're saying, but recognize also that Dario has a different point of view than I do.

Speaker 1

他领导着一家需要盈利的公司,并且需要向他的利益相关者传达信息。

He's leading a company who needs to make money, and it's a company who he needs to speak to his stakeholders.

Speaker 1

因此,会说出像这样的极端言论。

So outrageous statements will be said like that.

Speaker 1

我想他在达沃斯论坛上说过这类话,如果

I think he said these kind of things at Davos, if

Speaker 0

我没记错的话。

I'm mistaken.

Speaker 0

那番话其实非常合理。

It it was very reasonable.

Speaker 1

是的。

Yes.

Speaker 1

而且,我会礼貌地说,嗯,我会用一个科学术语来描述达里奥所说的话,并将其置于背景中。

And and I'd say politely well, I'll use a scientific term in terms of how I would characterize what what Dario said and put it in context.

Speaker 1

这完全是胡说八道。

It's utter bullshit.

Speaker 1

这是技术术语。

That's the technical term.

Speaker 1

因为我认为他大错特错,而且我认为他错的原因有很多。

Because I think he's profoundly wrong, and and he I think he's wrong for a number of reasons.

Speaker 1

首先,我接受他的观点,即它会加速某些事物的发展。

First, I accept his point of view that it's going to accelerate some things.

Speaker 1

它会淘汰软件工程吗?

Is it going to eliminate software engineering?

Speaker 1

不会。

No.

Speaker 1

我认为他对软件工程是什么存在根本性的误解。

I think he has a fundamental misunderstanding as to what software engineering is.

Speaker 1

回到我一开始说的。

Go back to what I said at the beginning.

Speaker 1

软件工程师就是平衡这些力量的工程师。

Software engineers are the engineers who balance these forces.

Speaker 1

所以我们把代码作为一种工具,但它不是驱动我们的唯一因素。

So we use code as one of our mechanisms, but it's not the only thing that drives us.

Speaker 1

他或他任何同事所谈论的内容,都没有触及软件工程师必须处理的那些决策问题。

None of the things that he or any of his colleagues are talking about attend to any of those decision problems that a software engineer has to deal with.

Speaker 1

我们在自动化领域所看到的这些,都不属于那些问题。

None of those we see within the within the realm of automation.

Speaker 1

他的工作主要集中在最低层次的自动化,我认为这类似于当年编译器所发生的情况。

His work is primarily focused upon the automation at the lowest levels, which is, I would put akin to what was happening with compilers in these days.

Speaker 1

这就是为什么我说,这又是另一个层次的抽象。

That's why I say, it's another level of abstraction.

Speaker 1

别担心,各位开发者。

Fear not, oh developers.

Speaker 1

你们的工具在变化,但你们的问题没有变。

Your tools are changing, but your problems are not.

Speaker 1

我反对他观点的另一个原因在于。

There's another reason why I I push back on what he's saying.

Speaker 1

如果你看看Cursor之类的东西,它们主要是在我们反复遇到的一系列问题上训练出来的。

And that is if you look at things like cursor and the like, they have mostly been trained upon a set of problems that we have seen served over and over again.

Speaker 1

是的。

Yep.

Speaker 1

这没什么关系。

And that's okay.

Speaker 1

就像我在第一代、第一个黄金时代所说的那样,我们有一组特定的问题,因此库就是围绕这些问题构建的。

Much like I said in the first generation, first golden age, we had a certain set of problems, and so libraries are built around them.

Speaker 1

这里正在发生同样的事情。

The same thing is happening here.

Speaker 1

如果我需要在CRUD之上构建一个UI,比如某种以Web为中心的东西,我完全可以做到。

If I need to build a UI on top of CRUD, it's sub winter or some web centric kind of thing, I can do it.

Speaker 1

就像你的朋友一样,他们能做就再好不过了。

And much like your friend, more power to them.

Speaker 1

他们可以自己去做,因为有这样的能力。

They can do it themselves because the power is there to do so.

Speaker 1

他们可能不会以此为基础建立一个企业。

They're gonna, you know, probably not build a business around it.

Speaker 1

只有一小部分人可能会这么做。

Some small percent of them might do so.

Speaker 1

但它让他们能够做以前无法做到的事情,因为他们现在处于更高的抽象层次。

But it's enabled them to do things they could not do before because they're now at a higher level of abstraction.

Speaker 1

达里奥忽视了这一点,我稍微化用了莎士比亚的一句话:计算世界中的事物,达里奥,远比你哲学中所能想象的要多。

What Dario neglects, and I used a bit of a paraphrase from Shakespeare, there are more things in computing, Dario, than are dreamt of in your philosophy.

Speaker 1

计算的世界远比以网络为中心的系统要广阔得多。

The world of computing is far larger than web centric systems of scale.

Speaker 1

因此,我们今天在这些以网络为中心的系统上看到了许多应用。

So we see many of the things applied today on these web centric systems.

Speaker 1

我认为这很棒、很美好,但这意味着还有很多东西尚未被自动化。

And I think that's great and wonderful, but it means that there's still a lot of stuff out there that hasn't yet been automated.

Speaker 1

所以我们不断将这些边缘领域向远处推移。

So we have we keep pushing these fringes away.

Speaker 1

所以我开头跟你讲了那些故事,因为历史正在重演,或者说,正如一些人所说,历史正在再次押韵。

So I told you those stories at the beginning because history is repeating itself, or as some will say, history is rhyming again.

Speaker 1

同样的现象今天正在发生,只是处于不同的抽象层次。

The same kinds of phenomena are applying today, just at a different level of abstraction.

Speaker 1

所以这是第一个。

So that's the first one.

Speaker 1

软件比这个软件世界更大,比他所关注的要大。

Software is bigger than this world of software is bigger than what he's looking at.

Speaker 1

它比软件密集型系统更大。

It's bigger than the software intensive systems.

Speaker 1

然后第二,如果你看看这些代理所处理的系统类型,它们实际上是在自动化我们反复看到的模式,而这些模式正是它们被训练所依据的。

And then second, you know, if you look at the kinds of systems that most of these agents deal with, they are in effect automating patterns that we see over and over again for which they have been trained upon.

Speaker 1

模式本身是新的抽象,它们不仅仅是单个算法或单个对象,而是代表了协同工作的对象和算法的群体。

Patterns themselves are new abstractions that are in effect not just single algorithms or single objects, but they represent societies of objects and algorithms that work together.

Speaker 1

这些代理在自动化模式的生成方面非常出色。

These agents are great at automating generations of patterns.

Speaker 1

我想做这样的事情,我可以用地道的英语告诉你,因为这就是我描述模式的方式。

I want to do, you know, this kind of thing, and I can tell you in English because that's how I describe the pattern.

Speaker 1

所以,总之,我认为他是错的。

So, anyway, that's why I think he's wrong.

Speaker 1

他有这个能力很好。

More power to him.

Speaker 1

但你知道,我认为这更是一个令人兴奋的时代,而不是存在主义的担忧。

But, you know, I think this is an exciting time more than things to worry about existentially.

Speaker 1

让我再讲一个故事,关于我们如何看待抽象层次的转变。

Let me offer another story with regards to how we see a shift in levels of abstraction.

Speaker 1

英语是一种非常不精确的语言,充满歧义和细微差别。

English is a very imprecise language, full of ambiguity and nuance and the like.

Speaker 1

因此,人们会好奇,我怎么能将它用作一种有用的语言呢?

So one would wonder, how could I ever make that as a useful language?

Speaker 1

答案是,我们软件工程师已经这样做了。

And the answer is, we already do this as software engineers.

Speaker 1

我去对某人说:嘿,我希望我的系统做这件事。

I go to somebody and say, Hey, I want my system to do this.

Speaker 1

它看起来有点像这样。

It kinda looks like this.

Speaker 1

我会给他们一些示例。

And I give them some examples.

Speaker 1

我早就这么做了。

I do that already.

Speaker 1

然后有人会把这些转化为代码。

And then somebody goes and turns that into code.

Speaker 1

我们已经提升了一个抽象层次,可以说:我希望它能做这个。

We've moved up a level of distraction to say, I'd like it to do this.

Speaker 1

我给你一个具体的例子。

I'll give you a concrete example.

Speaker 1

我正在使用一个以前从未接触过的库。

I'm working with a library I'd never touched before.

Speaker 1

它是JavaScript的D3库,让我能够实现一些非常有趣的可视化效果。

It's the JavaScript D3 library, which allows me to do some really fascinating visualizations.

Speaker 1

去搜索一个叫 Victorian Engineering Connections 的网站。

Go off and search for a site called Victorian Engineering Connections.

Speaker 1

这是一个非常棒的小网站,这位先生为博物馆做了这个,安德鲁,你可以输入一个名字,比如乔治·布尔。

It's this lovely little site where the gentleman did this for a museum, Andrew, and you can put in a name like George Boole.

Speaker 1

你会看到他的名字,找到关于他的信息,以及他周围的社会关系网络。

And you see his name, you find things about him, and you find his social network around him.

Speaker 1

你可以点击并探索。

And you can go touch and explore.

Speaker 1

这非常非常酷。

It's very, very cool.

Speaker 1

我说,我想要这样的东西。

And I said, I want that kind of thing.

Speaker 1

但天哪,我不知道该怎么实现。

But my gosh, I don't know how to do that.

Speaker 1

那么,我能做些什么呢?

So, what can I do?

Speaker 1

他把他的代码给了我。

He gave me his code.

Speaker 1

我意识到它使用了 D3 库。

I realize it uses the d three library.

Speaker 1

我对 D3 库一无所知。

I knew nothing about the d three library.

Speaker 1

于是我让 Cursor 给我构建一个最简单的版本。

So I said to Cursor, go build me the simplest one possible.

Speaker 1

就用五个节点,给我演示一下。

Go do it out of, you know, five nodes and show me.

Speaker 1

这样我就能研究它的代码。

So I could then study the code.

Speaker 1

然后我就能说,他们想做的其实是这个。

Then I could say, Well, what they wanted to do is this.

Speaker 1

让节点根据类型呈现不同的样子。

Go make the nodes look like this, depending upon their kind.

Speaker 1

就像我对人类表达需求一样,我现在用英语表达需求,就突然不需要再费力地将其转化为现实了。

Just like I would do with a human, I was expressing my needs in an English language, that now all of a sudden, I didn't need to labor to turn that into reality.

Speaker 1

我可以直接和我的工具对话来帮助我完成这件事。

I could simply have a conversation with my tool to help me do that.

Speaker 1

因此,它缩短了我想做的和我能做的之间的距离。

So it reduced the distance between what I wanted and what I could do.

Speaker 1

我觉得这太棒了。

And I think that's great.

Speaker 1

这是一次突破。

That's a breakthrough.

Speaker 1

但请记住,正如我对达里奥说的,这只在我做那些人们已经做过成百上千次的事情时才有效。

But remember, as I said to Dario, this only works in those circumstances where I'm doing something that people have done hundreds and hundreds of times before.

Speaker 1

我本可以自己学习,就像费曼会说的,你自己去做吧,因为只有这样你才能真正理解。

I could have learned it on my own, as Feynman would have said, you know, go do it yourself because then that's the only way you're gonna understand.

Speaker 1

我的反应是,这很好,但世界上有太多我感兴趣的东西。

And I my reaction is that's great, but there's so much in the world I'm curious about.

Speaker 1

我无法理解所有东西。

I can't understand it all.

关于 Bayt 播客

Bayt 提供中文+原文双语音频和字幕,帮助你打破语言障碍,轻松听懂全球优质播客。

继续浏览更多播客