加载失败
这是 Hacker News 上一次关于“在 LLM/AI 普及时代如何学习编程”的讨论,参与者包括大学教师与多年开发者,话题集中在 AI 应该被当作哪种学习工具。评论基于对大型语言模型(LLM)能力与局限的现实观察:它能快速生成代码与解释但会幻觉、且无法替代算法思维与架构能力。因此讨论既有实际的学习策略(手写练习、指定项目、利用 Perplexity 找到优质教程、先实现后让 LLM 审查),也涉及对职业前景的推测(编码商品化、岗位向 prompt/协调转变)。读者需理解这是基于当前 LLM 能力的经验性观察,且技术与市场仍在快速变化中。
多位评论者认为AI 工具无法替代对算法分解能力、系统设计与编程语言内部机制的深刻理解。具体建议包括学习若干非平凡的经典算法(例如排序与图算法)、熟悉高层设计与架构以构建可维护代码、以及同时体验强类型与动态语言来理解各自取舍。有人额外指出数学基础(线性代数、概率论)对深入理解与性能优化非常重要,并建议通过书籍或系统化在线课程来补足这些长期回报的知识。总体结论是:把时间花在这些基础上,AI 只能作为辅助而非替代。
许多评论把 LLM 描述为“超高级交互式文档”:适合用来解释代码、提出替代实现、审查手写代码或快速掌握一个领域的术语与约定。常见做法是先手写小示例再把代码粘给模型审查、要求模型解释直到理解、让它给出不同的设计模式或简化版本,或把它当成查找高质量资源的工具。也有人建议切换到 chat 模式而非 agent 模式以进行更深入的对话式探讨,并反复验证模型输出因为会出现幻觉或意外设计。这些观点共同强调把 AI 作为反馈与加速器而不是权威来源。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6]
一组评论强调“挣扎”与亲手解决问题的重要性:自己构思、失败、调试比接受现成答案更能培养深度能力。建议初学阶段不要依赖 LLM 代写项目,完全手写并独立调试;把 AI 限制为只有在卡住时提供提示或对自己实现做审查。具体操作包括在每次提交前确保理解 commit 中的每段代码、控制接受 AI 首个建议的频率作为学习度量,以及放弃 Copilot 等自动补全来强迫自己思考。原因是直接采纳模型生成的解决方案可能掩盖核心逻辑,阻碍长期技能形成。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6]
有经验开发者担忧 AI 会把编码变成可自动化的商品,程序员角色可能转向收集业务需求、撰写 prompt、协调与验证模型输出,变成类似产品经理/架构师的混合岗位。有人用音乐或编译器时代类比表达这种焦虑:手工编码会变成‘手工艺’,商业价值转向如何运用与管理工具而不是编码细节。但也有反对声音指出在复杂堆栈、长期维护和非典型问题上,深厚的编码能力与调试经验仍旧不可替代。总体讨论把未来职业路径分为短期以交付效率为主与长期以专业深耕为主两类,并强调软技能与领域知识的相对提升。
评论中给出大量实操性建议:使用 Exercism(练习平台)做小练习、禁用 Copilot 以防依赖、用 Perplexity 或 Reddit AI 帮你筛出高质量教程而非 SEO 文章。练习项目有明确例子:光线追踪、Gameboy 模拟器、表达式求值这些在几百行内能体现语言细节的题目,以及用 Zachtronics 类益智游戏练抽象与优化思维。学习流程建议包括先用官方书与 API 手动实现,再把实现粘给 LLM 审查并借用优点,或只与模型讨论概念不让其直接写完整实现。总体方向是“高质量原始资料 + 设计性练习 + 有控制的 AI 协助”。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6]
LLM: LLM(Large Language Model, 大型语言模型):用于生成自然语言与代码的深度学习模型,擅长解释、补全与生成代码片段,但会出现 hallucination(错误或捏造输出),因此需要人工验证与审查。
prompt / prompt engineering: Prompt(提示词)与 prompt engineering(提示词工程):向 LLM 提供指令、上下文与示例以引导其产出期望结果的技巧,涉及构造问题、选择 chat/agent 模式、限定输出类型(仅解释、不生成代码)等策略。
编程范式:OOP 与 functional programming: OOP(面向对象编程)与 functional programming(函数式编程):两种不同的程序设计范式,前者强调对象、封装与继承,后者强调纯函数与不可变性;评论建议同时体验它们以理解设计取舍与语言特色。