科学
言论
- 加尔定律经常被引用:”一个有效的复杂系统,总是从一个有效的简单系统进化而来。”但是,它的推论很少被引用:”一个从零开始设计的复杂系统永远不会有效,你必须从一个可以运行的简单系统开始。” – There’s More To That Nugget of Wisdom (Stack Staves)
- AI 是比真人更好的老师,但是以后的学校还会需要真人老师,他们的主要职责是看管孩子。 – 路易斯·冯·安 (Luis von Ahn) ,Duolingo 的首席执行官
- 最有害的建议之一就是不要重新发明轮子。这种建议会导致一种抑制好奇心和探索的氛围。现代生活的很多重要发明,都来自那些不听从这个建议的人们。重新发明轮子就是一种学习,并且学习过程中,你可能会做出更好的版本。 – Reinvent the Wheel
- 我们生命中最美好的时刻,并非是那些接受给予、放松享受的时刻,而是那些为了完成一件困难而有价值的事情,自愿将身心发挥到极限的时刻。 – The Hidden Cost of AI Coding
- 软件是卡不住脖子的,那是数学的图形符号、代码,一些尖端的算子、算法垒起来的,没有阻拦索。困难在我们的教育培养、人才梯队的建设。 – 人民日报对话任正非:国家越开放,会促使我们更加进步
- 买国外的产品很贵,因为价格里面就包含他们在基础研究上的投入。中国搞不搞基础研究,也要付钱的,能不能付给自己搞基础研究的人。 – 人民日报对话任正非:国家越开放,会促使我们更加进步
- 很多人总是拖拖拉拉,抱怨自己没有做事的动力。但是,动力恰恰源自行动,只要你开始做一些事情,只要能朝着目标前进,你就会发现动力随之而来。所以,当我遇到一个很艰巨的任务时,我会把问题分解成若干更简单的部分,此时我的目标不是完成任务,而只是让自己能够行动起来,向前迈出一小步。 – Getting Past Procastination
- 最安全的代码并非优美、巧妙或优雅的代码,而是枯燥乏味的代码。Go 语言就奉行这种理念,故意去除了那些富有表现力或优雅的写法,只保留简洁和可读的写法。这使得代码易于审查、难于滥用,不容易发生安全漏洞。 – Boredom Over Beauty: Why Code Quality is Code Security
- 最好的离职就是不惹恼别人,悄悄地离开,全力以赴你接下来的路。 – Skip the exit interview when you leave your job
- AI 使得我的90%技能,价值变为0,但使得剩下的10%技能,价值增长了1000倍。每个人在 AI 面前,都需要重新调整自己的技能。 – Kent Beck, interview with Gergely Orosz
- 西方国家的博士学位,基本上是移民计划,而大学很乐意配合。 – Hacker News
- 企业将来不会区分”Python 程序员”或”React 程序员”,招聘的时候,不会在意你会什么语言。企业只会招聘能够解决问题的程序员,不管他们的技术栈。因为有了大模型,编程语言障碍已经完全消失了。我们已经到了这个地步:学习哪种编程语言无关紧要。现在真正的技能是系统设计、架构、DevOps、云计算—-那些在 AI 之上快速构建系统的技能。 – Dev jobs are about to get a hard reset and nobody’s ready
- 社会的危机,不是人变得孤独,而是人变得隐形、没有用处、可有可无。 – The unseen
- Today, quite suddenly, billions of people have access to AI systems that provide augmentations, and inflict amputations, far more substantial than anything McLuhan could have imagined. This is the main thing I worry about currently as far as AI is concerned. I follow conversations among professional educators who all report the same phenomenon, which is that their students use ChatGPT for everything, and in consequence learn nothing. We may end up with at least one generation of people who are like the Eloi in H.G. Wells’s The Time Machine, in that they are mental weaklings utterly dependent on technologies that they don’t understand and that they could never rebuild from scratch were they to break down. – Neal Stephenson, Remarks on AI from NZ
- 我记得,大概12岁的时候,读过一篇文章,应该是在《科学美国人》杂志。那篇文章给出了地球上所有物种的运动效率,从 A 点到 B 点,同样的距离,它们消耗了多少能量。结果,秃鹫位居榜首,运动效率最高,超越了其他所有生物。人类排在榜单的最后三分之一,对于”万物之王”,这个成绩实在不值一提。但是,作者很有想象力,测试了人类骑自行车的效率,结果远远超过了秃鹫,荣登榜首。这给我留下了深刻的印象。我们人类是工具制造者。我们可以制造工具,将自己的能力放大到惊人的程度。对我来说,计算机就是思维的自行车。它能让我们超越自身的能力。我认为,我们才刚刚处于计算机的早期阶段—-非常早期的阶段—-我们只走了很短的一段路,计算机仍在发展中,但我们已经看到了巨大的变化。我认为现在与未来一百年即将发生的事情相比,根本不算什么。 – 斯蒂夫·乔布斯1980年的访谈
- 政因时以兴,机随物而动,故圣王究穷通之源,审始终之理,适时之宜,期于济世。 – 《晋书·纪瞻传》 数量组必须多拍,所以学生慢慢习惯了接受摄影的不完美,从一次次的实践之中,开始精通摄影,最终从许多次不完美的拍摄之中,诞生出一张完美的照片。想想看,100次拍摄意味着什么:100次与光的对话、100次构图实验、100次的反思机会去检讨意图与结果之间的差距,然后进行调整。相反的,质量组不得不苦苦学习理论,搞清楚如何拍出一张完美的照片,先掌握理想的构图,再探索最佳的技巧。他们因此积累了丰富的摄影知识,却没有培养出那种只有反复按下快门才能获得的直觉。这就好比,质量组是地图专家,而数量组是探险家。学期结束时,质量组可以告诉你为什么某一张照片很棒,而数量组拍出了这样的照片。 – being too ambitious is a clever form of self-sabotage
- 我真的不明白 Cursor 这样的 AI 工具,本身有什么价值。它就是一些 API 的包装器,对吧?据我所知,世界上真正的 AI 公司大概只有四家,其他公司都是在贴牌。 – Hacker News
观点
《高斯林口述历史》(Oral History of James Gosling)
- 我在卡内基梅隆大学读研究生时,开始从事字节码方面的工作。当时,我的导师要求我,将一些软件从一种计算机移植到另一种计算机。我不知道他怎么想的,移植软件非常困难。但是我发现,写一个字节码到汇编代码的编译器却很容易,得到的代码质量比原生的 C 编译器还要好,能够顺利运行。这件事让我记住了,只要生成软件的字节码,然后为不同平台写一个字节码到汇编语言的编译器,就能让软件在不同架构的计算机上运行。
- 我们最初的目标不是发明一种编程语言,但是我们意识到,很多问题都源于编程工具。我们想改进一下 C 和 C++,让它们更适合我们的环境。我自愿承担了这项任务,因为我是小组里唯一一个之前开发过编译器的人。随着时间的推移,我改动的部分越来越不像 C++ 了,开始像一种独立的语言。
- Java最初被命名为 Oak(橡树)。这纯粹是偷懒,我当时需要新建一个文件夹,存放代码。我坐在办公桌前,望着窗外,看到一棵橡树,就为文件夹起了这个名字。Oak 已经被其他公司注册成商标了,我们被迫选择一个新名字。那时,我们已经准备好发布软件了,就是缺一个名字。我们组织了一场命名会议,询问大家的意见,列出一张大家感觉可以的单词列表,然后发给律师,让他们从上到下检查有没有商标问题,哪个单词第一个通过检查,我们就用那个。
- 平台独立性是我们从一开始就考虑的事情之一。这其实来自那些消费电子公司,他们是这种语言的使用者。他们非常不乐意受制于特定供应商,如果某个供应商有问题,他们希望可以更换供应商。CPU 也是如此,他们不希望受制于特定的 CPU。问题就来了:如何才能让他们轻松地从一种芯片切换到另一种呢?这不就是我在卡内基梅隆大学移植字节码时遇到的问题吗。所以,新语言的核心特性就是字节码,这样才能轻松地针对不同的 CPU 指令集进行开发。如果厂商要为某个芯片制造一些东西,比如下一代录像机或电视机,即使处理器架构发生变化,也不用重写大量代码。现有的代码可以有把握地在尚未发明的机器上运行。
“胶水工作”Glue work considered harmful
“胶水工作”(glue work)指的是,帮助做出产品、提高效率的一些辅助工作。举例来说,更新文档、解决技术债务、培训新人、维护团队成员的正常交流等等,都属于胶水工作。每个团队都需要大量这类工作。公司不奖励胶水工作,因为他们不想让你优先考虑它,而想让你更重视产品的发布。胶水工作很辛苦。如果你有能力做好胶水工作,他们希望你把这种能力用在产品发布,而不是提高团队效率。你必须明白,让团队更顺利地运行不是你的工作,你的真正工作是执行公司领导层的使命。与其花大量时间提高团队效率,不如让团队以60%的效率运行。这里有两个主要原因。
- 如果团队以100%的效率运行,团队成员不可避免地会精疲力尽,这对每个人都不好。
- 最好让团队成员习惯于在公司的基本效率水平上运作,而不是在短时间内人为地消除摩擦。因为低摩擦的状态不可能长期持续,这要求巨大的投入。
大型科技公司在任何时间内都以大约20%-60%的效率运行(公司越大,运行效率越低)。大公司的增长主要在于占据更多的市场,而不在于提高效率,所以公司不在意让团队效率提高到一个很高的水平。另一方面,如果个别员工愿意在胶水工作上投入大量时间,将团队的效率提升到80%或90%,公司将利用这种免费价值,但公司对长期锁定这种价值没有任何真正的兴趣,因为这取决于优秀的人才自愿奉献时间,是不可持续的。所以,结论就是,公司需要有一些胶水工作,但是不需要太多的胶水工作。作为开发者,你的正确做法应该是,在战术层面上做一些胶水工作,而不能把胶水工作提高到战略层面。也就是说,你应该把胶水工作视为额外工作,你的关注重点永远应该是项目的成功。你不会因为胶水工作而得到特别的奖励,但你会因为项目的成功而获得奖励。
The Unreasonable Effectiveness of an LLM Agent Loop with Tool Use
过去几个月,我和我的同事一直在开发一个名为 Sketch 的 AI 编程助手。让我最惊讶的是,使用带有工具使用的 LLM 主循环竟然如此简单:
def loop(llm):
msg = user_input()
while True:
output, tool_calls = llm(msg)
print("Agent: ", output)
if tool_calls:
msg = [ handle_tool_call(tc) for tc in tool_calls ]
else:
msg = user_input()
There's some pomp and circumstance to make the above work (here's the full script) , but the core idea is the above 9 lines. Here, llm() is a function that sends the system prompt, the conversation so far, and the next message to the LLM API.
要实现上述功能需要一些仪式感(这是完整脚本),但核心思想是上述 9 行代码。
值得因为推动采用AI 编码而离职吗?
求助帖这样写道:
我是一个高级工程师,已经在公司工作五年了。公司越来越推崇快速工程,CEO 和 CTO 都对 AI 编程痴迷不已。
公司强制大家使用 AI 编程,甚至提倡让 AI 生成单元测试,对于失败的测试用例,也是扔给 AI 处理,而不是手动解决,以加快开发速度、产品尽早上线。
我考虑辞职,不想参与这种流程,成为不写代码、只写提示的"提示工程师",眼睁睁看着自己的技术停滞或退化。我也不想两三年后,负责维护一堆由 AI 生成的意大利面条代码。
我想听听大家的意见,怎么应对公司推行 AI 编程。
网友的看法,总结起来就是三种选择,都有一定的道理。换成你,会怎么选择?
选择一:听从内心 如果你确实精疲力竭,那就离开吧。即使你还能忍,做一份自己讨厌的工作,也很快会精疲力竭。
最糟糕的情况是,你平时在公司里,表面上假装对 AI 充满热情,但心里又不愿意,那真的是煎熬。
放任自流的 AI 编程会快速积累技术债,最终导致项目失败。公司迟早会要求你,修复 AI 造成的代码混乱,如果你回答唯一解决方法就是大规模的手动重写,可能还是会被解雇。
而且,你们的 CEO 和 CTO 看上去盲目信任 AI,公司的前途堪忧。
已经有一些公司明确声明,现阶段不打算将 AI 编程用于线上代码,你可以试试找这样的公司。
不过,如果没有足够的积蓄,你还需要再忍几个月,一边攒钱,一边找工作,并学习一些 AI 不容易取代的复杂枯燥的技术。记住,除非你是超级技术明星或非常富有,否则不要在找到新工作之前就辞职。
选择二:接受现实 你去其他公司也一样,现在到处都在使用 AI 编程。有些公司实际上通过采用 AI,来清除那些”拒绝改变”的人。
我认为,我们永远不会再走回头路了,你用过就知道回不去了。下一代程序员都会在 AI 的陪伴下成长。你不愿意使用 AI,就好比不愿意用电脑替代打字机。AI 编程的普及,只是时间迟早的问题,不接受它的人都会被淘汰。
再说,反正是公司付钱,让你学习使用 AI。聪明点,留下来接受这笔交易。
现在的市场是雇佣者市场,有的是人愿意接替你的位置。即使你找到一家目前不使用 AI 的公司,很可能意味着他们远远落后于时代潮流,也许很快也转向 AI。
你最好适应现实,找到在公司立足的方法。即使心理上接受不了,也要用公司的钱来试试新技术。
你可以先在小范围使用 AI 编程,检查它做的代码变更。AI 代码需要大量审查和重构,你能做的比你想象的要多。
选择三:静观其变 你可以继续留在公司,一边学习 AI 和其他新技术,一边观察会发生什么情况。
如果公司发展比你预期的要好,AI 效果不错,那么你应该改变想法,为新的工作模式做好准备。
如果结果跟你预计的一样,代码快速劣化,项目面临失败。你得到了使用 AI 的经验,知道它在第一线的优势和劣势,把它写进简历,为应聘下一家公司提供帮助。
无论哪一种情况,你接下来留在公司的几个月,都会对你的职业生涯有帮助。
私底下,你必须现在就开始找下一个更符合你期望的职位,为不利局面做准备,为自己留一条后路。
有趣
荐书
杂谈
手机版“神探玺洛克”请扫码