<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>AI on Message from Garden Place</title>
    <link>https://gardenplace.me/tags/ai/</link>
    <description>Every post filed under “AI” on Message from Garden Place — 2 so far.</description>
    <image>
      <url>https://gardenplace.me/images/brand/feed-icon.png</url>
      <title>Message from Garden Place</title>
      <link>https://gardenplace.me/tags/ai/</link>
    </image>
    <webfeeds:icon>https://gardenplace.me/images/brand/feed-icon.png</webfeeds:icon>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sun, 13 Sep 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://gardenplace.me/tags/ai/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Prompting, Once and for All: The Skill That Never Fades</title>
      <link>https://gardenplace.me/posts/the-prompt-trick-that-never-expires/</link>
      <pubDate>Sat, 12 Sep 2026 21:18:00 +0900</pubDate><dc:creator>Guoliang Chen</dc:creator>
      <guid>https://gardenplace.me/posts/the-prompt-trick-that-never-expires/</guid>
      <description>For everyday ChatGPT and Claude users. There are two kinds of effort involved in using AI: their job is what model makers are already improving, so tricks that compensate for model weaknesses lose value as models improve; our job is saying what we want clearly. Expression, judgment, and understanding how machines work are skills honed before AI arrived, and they are now worth even more. Let them do their job, and we do ours.</description>
      <content:encoded><![CDATA[<h2 id="learn-slowly-enough-and-you-wont-have-to-learn-at-all">Learn Slowly Enough, and You Won&rsquo;t Have to Learn at All</h2>
<p><a href="https://gardenplace.me/posts/natural-language-is-the-new-programming-language/">The previous essay</a> covered the three eras of programming: handwritten code, machine learning, and natural language. Now that natural language has become the new programming language and everyone is a spellcaster, you&rsquo;re no doubt itching to practice your incantations. But there&rsquo;s a joke going around in the AI age: &ldquo;Learn slowly enough, and you&rsquo;ll never have to learn at all.&rdquo; And a similar one-liner: &ldquo;Wake up after a night&rsquo;s sleep and you&rsquo;ve missed so much; a year goes by and you haven&rsquo;t missed a thing.&rdquo;</p>
<h2 id="lazy-learning-from-jic-to-jit">Lazy Learning: From JIC to JIT</h2>
<p>These jokes are half right. Details that change quickly and are easy to look up when needed can wait.</p>
<p>In programming, there&rsquo;s a concept called lazy evaluation: don&rsquo;t compute an expression until someone actually needs its value. Haskell uses this to represent an infinitely long list, evaluating only the parts you actually use. Machine learning has a related concept called lazy learning: a basic k-nearest-neighbors algorithm stores the samples without fitting a parametric model in advance, waiting until a query comes in to compare against them. In the age of AI, there&rsquo;s more worth learning than ever, and we learn faster than ever &ndash; so we should adopt the same philosophy, especially when:</p>
<ol>
<li>We may not need something soon, and it will be easy to look up and learn when we do.</li>
<li>The current task only requires an understanding of inputs and outputs, so we can treat the rest as a black box for now.</li>
<li>Things change so quickly that details memorized now may need to be relearned later.</li>
</ol>
<p>As technology advances, the cost of looking things up and learning them changes. A <a href="https://www.science.org/doi/10.1126/science.1207745">2011 study in <em>Science</em></a> found that when people expected to be able to access information later, they remembered the information itself less well but remembered where to find it better. We offload part of our memory to external systems. AI takes this a step further: beyond helping you find information, it can explain things in response to your question, give you examples, and walk you through experiments.</p>
<p>Many people have a hoarding instinct for this kind of knowledge. I suspect there&rsquo;s a bit of inertia from years of exam culture: too many people only care about whether something would help on a closed-book test, when reality is an open-book exam. We used to learn &ldquo;just in case&rdquo; &ndash; what if I need this someday? Now we should learn &ldquo;just in time&rdquo; &ndash; at the moment you need it. Like some JIT compilers: whichever code path runs hot gets the optimization. Wait until you discover that learning something would actually boost your efficiency, and then learn it.</p>
<h2 id="principles-hold-their-value-longer">Principles Hold Their Value Longer</h2>
<p>Some knowledge is worth learning early, because it keeps helping you evaluate new problems. You don&rsquo;t need to be able to derive the Transformer, but there are a few mental models that, once built, stay useful.</p>
<p><strong>The model doesn&rsquo;t see the same characters you do.</strong> It first splits text into chunks called tokens &ndash; sometimes a word, sometimes half a word. &ldquo;strawberry&rdquo; looks like ten letters to you<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, but to the model it might be two or three tokens. That&rsquo;s why earlier models couldn&rsquo;t count the r&rsquo;s reliably: their granularity is different from yours. But this isn&rsquo;t a ceiling &ndash; the tokenization itself <a href="https://github.com/openai/tiktoken">doesn&rsquo;t throw away information</a>, and newer models can perfectly well learn to handle such tasks better. Don&rsquo;t mistake one generation&rsquo;s shortcoming for a permanent limit.</p>
<p><strong>Fluency is not correctness.</strong> A language model&rsquo;s basic training objective is &ldquo;given the preceding text, predict the next most plausible token.&rdquo; This objective lets it learn vast amounts of knowledge and reasoning patterns, but the training process doesn&rsquo;t come with a built-in fact-checker. So the smoother it sounds, the more you should stop and ask: can I verify this claim?</p>
<p><strong>&ldquo;But I already told you&rdquo; &ndash; except the model may no longer see it.</strong> Every model has a context window &ndash; an upper limit on how much it can take in at once. As a conversation goes on, the earliest exchanges may have slid out of view. You think the conversation history is still there, but from the model&rsquo;s perspective those messages are no longer in sight. On top of that, the model&rsquo;s weights don&rsquo;t update during a conversation &ndash; it can pick up a pattern from examples you give in this turn, but close the chat and it forgets, unless the product has a separate <a href="https://help.openai.com/en/articles/8590148-memory-faq">memory feature</a> that stores things for you. The model&rsquo;s knowledge cutoff constrains what it learned during training; it doesn&rsquo;t stop it from reading material you just pasted in.</p>
<p><a href="https://arxiv.org/abs/1706.03762"><em>Attention Is All You Need</em></a> came out in 2017, and models have changed enormously since then, but a few concepts &ndash; tokens, the context window, the difference between training and inference &ndash; still have explanatory power. To judge whether a piece of knowledge is worth learning for the long term, I ask whether it can explain multiple phenomena and whether it continues to help me make judgments after I&rsquo;ve switched tools. Principles get revised too; a good mental model should also tell you where your own judgments are unreliable.</p>
<h2 id="system-prompts-and-user-prompts">System Prompts and User Prompts</h2>
<p>Let&rsquo;s start with chatbots like ChatGPT and Claude. When you type &ldquo;help me write an outline&rdquo; or &ldquo;make this shorter&rdquo; in the text box, that&rsquo;s a user prompt. The product also provides a <a href="https://platform.claude.com/docs/en/release-notes/system-prompts/overview">system prompt</a> behind the scenes, laying out the assistant&rsquo;s basic identity, behavioral rules, and so on. To use the temp worker analogy: the system prompt is the company handbook; the user prompt is the specific task you hand them. For a fuller guide to writing prompts, check out the community-maintained collection of <a href="https://github.com/asgeirtj/system_prompts_leaks">leaked system prompts</a>. As an aside, I believe users should have a right to know about these trust-shaping instructions, just as mainstream general-purpose compilers are almost all fully open source.</p>
<p>For day-to-day chatting, just state your need in the text box. Within a single conversation, earlier messages typically remain as context for subsequent responses &ndash; you don&rsquo;t have to start from scratch every turn. If you have preferences you keep repeating, like &ldquo;respond in Chinese, keep technical terms in English,&rdquo; you can save them in <a href="https://help.openai.com/en/articles/8096356-chatgpt-custom-instructions">ChatGPT&rsquo;s custom instructions</a>. Background and requirements that apply only to a particular set of conversations can go into <a href="https://support.claude.com/en/articles/9517075-what-are-projects">Claude&rsquo;s project knowledge and project instructions</a>.</p>
<p>These are personalization features offered by the product &ndash; not the same as editing the vendor&rsquo;s system prompt directly. For users, it&rsquo;s enough to start by stating the task at hand clearly; whatever you find yourself repeating, save it and stop repeating it. The system prompt always takes priority over the user prompt.</p>
<p>How prompts are arranged inside agents is considerably more complex &ndash; I&rsquo;ll cover that in a future piece.</p>
<h2 id="role-prompting-is-just-cosplay-now">Role Prompting Is Just Cosplay Now</h2>
<p>With that division of responsibilities in mind, it is easier to judge what work popular prompting techniques still require us to do.</p>
<p>A slide from Stanford&rsquo;s fall 2025 CS146S: The Modern Software Developer reads <a href="https://docs.google.com/presentation/d/1MIhw8p6TLGdbQ9TcxhXSs5BaPf5d_h77QY70RHNfeGs/edit?slide=id.g3827d98ef8c_0_0#slide=id.g3827d98ef8c_0_0">Use role prompting aggressively to make system prompts more powerful</a>. Role prompting means opening with something like &ldquo;You are a top-tier frontend expert.&rdquo; Many people treat it as a mandatory opener, as if the model wouldn&rsquo;t know how to write frontend code without it.</p>
<p>With this generation of thoroughly post-trained assistant models &ndash; <a href="https://www.anthropic.com/claude-fable-and-mythos-5-1">Fable 5.1</a> / <a href="https://openai.com/index/gpt-6-astra/">GPT-6 Astra</a> &ndash; my default is to state the task directly and skip the preamble. Understanding the problem carefully, applying relevant knowledge, and giving a helpful answer are precisely the behaviors the labs are training into these models. Much of the work of shaping a model into a good assistant has already been done before it reaches your hands.</p>
<p>Through post-training methods like <a href="https://arxiv.org/abs/2203.02155">instruction tuning and RLHF</a>, labs fine-tune models with demonstration responses and preference feedback to make them better at following requests and helping users. &ldquo;Be a helpful assistant&rdquo; has become the model&rsquo;s learned default behavior &ndash; users don&rsquo;t need to teach it from scratch in every conversation. Anthropic&rsquo;s <a href="https://alignment.anthropic.com/2026/psm/">persona selection model</a> offers a useful frame: post-training shapes and refines the Assistant persona.</p>
<p><strong>Even without specifying a persona, you&rsquo;re already talking to a model deliberately shaped to be an assistant.</strong> The task &ldquo;build me a React web page&rdquo; itself already provides a frontend development context. Whether a line like &ldquo;you are a top-tier frontend expert&rdquo; adds value depends on what it contributes beyond this baseline &ndash; not merely on whether the output changes.</p>
<p>This is why I skip the generic persona: what it&rsquo;s trying to remind the model to do is very likely already built into the default assistant behavior and the task description. &ldquo;Already tuned&rdquo; here means behavior optimized toward helping users across a broad range of tasks; whether a specific task turns out well still comes down to results. So I state the task first, and add requirements only when I spot gaps &ndash; rather than treating &ldquo;you are an expert&rdquo; as a prerequisite.</p>
<p>If I want it to &ldquo;act like an interviewer who asks one question at a time,&rdquo; or &ldquo;evaluate this page from an accessibility auditor&rsquo;s perspective,&rdquo; that&rsquo;s different: I&rsquo;m specifying the mode of collaboration or the scope of review. That information can&rsquo;t necessarily be inferred from &ldquo;help me build a web page.&rdquo; A persona can still serve as shorthand for requirements like these; what makes it useful is the task information it adds.</p>
<p>Existing research also cautions against putting too much faith in titles. Zheng et al.&rsquo;s <a href="https://arxiv.org/html/2311.10054v3">study</a>, first published in 2023 and finalized in 2024, tested 162 personas in system prompts across nine models from four model families on 2,410 MMLU multiple-choice questions &ndash; and found no stable improvement in overall accuracy from adding a persona. This study didn&rsquo;t test the Fable 5.1 generation of models and can&rsquo;t substitute for evaluating them; what it tested was the common assumption that &ldquo;adding a persona makes the model stronger.&rdquo;</p>
<p>I tried the example from the CS146S slides myself with <a href="https://www.anthropic.com/claude-fable-and-mythos-5-1">Fable 5.1</a>: same problem (longest palindromic substring), two personas.</p>
<blockquote>
<p><strong>Gen Z digital bestie</strong> &ndash; <a href="https://claude.ai/share/bfe773fd-a985-4618-bf8b-4f6bfb8de242">conversation log</a></p>
<p><strong>A helpful assistant that loves programming at the level of a senior software developer</strong> &ndash; <a href="https://claude.ai/share/37bd90d7-93b4-4bff-815e-043b640dc3fd">conversation log</a></p>
<p>This time, both got the program right, and both mentioned the more efficient Manacher&rsquo;s algorithm unprompted. The most obvious difference was in tone.</p>
</blockquote>
<p>This time it looked a lot like cosplay &ndash; or VTubing, if you will: the avatar changed, but the person behind it didn&rsquo;t.</p>
<p>Overusing role prompting is just laziness in disguise. You haven&rsquo;t thought through the specific requirements of your task and are hoping a generic persona will do the thinking for you. It&rsquo;s like opening an essay on China&rsquo;s college entrance exam, the gaokao, with a famous quote: plenty of flourish, little substance specific to the task.</p>
<p>As for why a single persona line changes model behavior at all, I&rsquo;ll write a separate piece on that &ndash; &ldquo;Why Personas Change Behavior&rdquo; &ndash; when I dive deeper into LLM internals, unpacking conditional probability, attention, and role representations.</p>
<h2 id="when-tricks-become-built-in">When Tricks Become Built-In</h2>
<p>A <a href="https://arxiv.org/abs/2205.11916">2022 paper</a> found that adding the prompt &ldquo;Let&rsquo;s think step by step&rdquo; could boost a model&rsquo;s accuracy on MultiArith from 17.7% to 78.7%. If one sentence is that effective and that broadly applicable, it should end up in the system prompt. Sure enough, models that reason internally later appeared, and <a href="https://developers.openai.com/api/docs/guides/reasoning-best-practices">OpenAI&rsquo;s guidance</a> was that there was no longer any need to add this line. What once required a manual nudge had become the model&rsquo;s default behavior.</p>
<p>Zero-shot and few-shot illustrate this distinction more clearly. Asking a model to translate “今天天气很好” into English without first providing translation examples is zero-shot prompting; giving it a few Chinese-English pairs first and then asking it to translate a new sentence is few-shot prompting. The &ldquo;shots&rdquo; here refer to task demonstrations within the prompt, not data the model saw during training. GPT-3&rsquo;s paper was literally titled <a href="https://arxiv.org/abs/2005.14165"><em>Language Models are Few-Shot Learners</em></a>.</p>
<p>As models get better at understanding instructions directly, you can try some tasks without examples first and see how well the model does; few-shot is far from obsolete. A specific tone of voice, a triple-nested JSON structure, whether an edge case should return an empty array or throw an error &ndash; in cases like these, one example can be worth a thousand words of explanation. Show, don&rsquo;t tell &ndash; an old piece of writing advice.</p>
<p>These techniques still help. They are so broadly useful that, as technology advances, they get built into the model itself, the system prompt, or the vendor&rsquo;s harness. What becomes unnecessary is having to remind the model each time.</p>
<h2 id="the-model-makers-job-and-our-job">The Model Makers&rsquo; Job and Our Job</h2>
<p>Naval put it more bluntly in his February 2026 podcast <a href="https://nav.al/ai#:~:text=worth%20learning%20tips%20and%20tricks%20of%20how%20to%20work%20with%20these%20AIs">A Motorcycle for the Mind</a>: he&rsquo;s not keen on learning the tips and tricks of how to prompt and which harness to use, because he believes the technology will adapt to him faster than he can adapt to it; in his view, those workflows and tools have a lifespan measured &ldquo;in weeks, maybe months, not in years.&rdquo; He did leave one exception: if you&rsquo;re building a frontier product right now and need every competitive edge, then it&rsquo;s worth learning. By May, he gave <a href="https://nav.al/tokens#:~:text=resisted%20learning%20all%20the%20tricks%20and%20tips">the coding version</a>: skip the Ralph Wiggum, OpenClaw, plan mode advice, throw Codex, Claude, and Gemini at the same problem repeatedly &ndash; &ldquo;waste tokens, save time.&rdquo;</p>
<p>Following Naval&rsquo;s line of thinking, I&rsquo;d split the effort of using AI into two categories: their job and our job. Their job is what model and tool developers are actively improving &ndash; making models reason better, use tools more reliably, adapt to how people naturally speak. If a technique merely patches a model&rsquo;s shortcoming, its value may decline as models improve. Of course, if it helps you get work done today, learning it today is worthwhile. Our job is a different kind of effort. Naval says he doesn&rsquo;t learn those tricks, but the very next sentence is:</p>
<blockquote>
<p><a href="https://nav.al/ai#:~:text=I%20just%20can%20speak%20English">I just can speak English.</a> And for someone like me who is relatively articulate with English and also has a structured mind, and I know how computer architectures work, and I know how computer programs work, and I know how programmers think, then I can actually very precisely specify what I want just through structured English.</p>
</blockquote>
<p>That itself is the most powerful prompt technique: clear natural language, a structured mind, knowing how machines work, knowing how programmers think, and then stating precisely what you want. It&rsquo;s not that Naval has no skills; he developed them long before AI arrived. His prior investment in articulation, programming, and judgment hasn&rsquo;t just held its value in the AI era &ndash; it&rsquo;s become worth more.</p>
<h2 id="the-prompting-skill-thats-truly-yours-writing">The Prompting Skill That&rsquo;s Truly Yours: Writing</h2>
<p>Tricks that compensate for model weaknesses become unnecessary as models improve, but the ability to clearly express what a task requires never goes out of date.</p>
<p>Think of the model as a temp worker sent by an agency. This person is extraordinarily smart, widely read, and fluent in many languages. But they arrived at your office this morning &ndash; they don&rsquo;t know what your product does, who it&rsquo;s for, what unwritten rules the team follows, or what caused the last incident. For things they&rsquo;re already good at, you don&rsquo;t need to start by teaching them for-loops; what&rsquo;s worth spending time on is giving them the context specific to this project.</p>
<p>A prompt doesn&rsquo;t have to be comprehensive from the start. Good prompting isn&rsquo;t just LLM-friendly &ndash; it should be human-friendly too. If every task requires writing a full spec before you begin, you may be put off before you even get started. Evaluating a prompting method should factor in the human cost of getting started.</p>
<p><a href="https://minihabits.com/about-mini-habits/"><em>Mini Habits</em></a> argues for shrinking the daily action you demand of yourself to something tiny; the <a href="https://www.behaviormodel.org/ability">Fogg Behavior Model</a> also emphasizes that making a behavior easier makes it more likely to happen. Borrowing this idea, the first step of working with AI can be small too: just say what you want to do. Haven&rsquo;t thought it through? Let the AI help you work it out by asking questions and trying things with you.</p>
<p>Once you have a first draft, review the results and add requirements. Writing has revision; working with AI is the same. What we should care about includes whether people can start easily and follow through step by step &ndash; not just how well the first prompt makes the model answer.</p>
<p>If I were to seriously study prompting, I&rsquo;d start with the vendor&rsquo;s <a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices">official guide</a>: state the task clearly, provide context, give an example when needed. These are the fundamentals worth practicing over time. The official guidance changes too &ndash; check the latest version when you need it and judge by results. The generality of AI also means you can use AI to learn AI. Don&rsquo;t know how to ask a question? Let it help you frame one. Not sure whether something is worth investing time and effort to learn? Ask the AI. You don&rsquo;t have to finish learning &ldquo;how to use AI&rdquo; before you start using AI.</p>
<p>Let them do their job, and we do ours.</p>
<h2 id="further-reading">Further Reading</h2>
<ul>
<li>Vaswani et al., <a href="https://arxiv.org/abs/1706.03762"><em>Attention Is All You Need</em></a> (2017) &ndash; attention, feed-forward networks, and the computational architecture of the Transformer.</li>
<li>Ouyang et al., <a href="https://arxiv.org/abs/2203.02155"><em>Training language models to follow instructions with human feedback</em></a> (2022) &ndash; how instruction tuning and RLHF change a model&rsquo;s default behavior.</li>
<li>Marks, Lindsey &amp; Olah, <a href="https://alignment.anthropic.com/2026/psm/"><em>The Persona Selection Model: Why AI Assistants might Behave like Humans</em></a> (2026) &ndash; an interpretive framework for pre-training personas and post-training assistants, along with its boundaries.</li>
<li>Zheng et al., <a href="https://arxiv.org/html/2311.10054v3"><em>When &ldquo;A Helpful Assistant&rdquo; Is Not Really Helpful</em></a> (Findings of EMNLP 2024, preprint from 2023) &ndash; a controlled study of persona effects in system prompts, with conclusions scoped to specific models and tasks.</li>
<li>Anthropic, <a href="https://www.youtube.com/watch?v=T9aRN5JkmL8"><em>AI prompt engineering: A deep dive</em></a> (2024-09-05, Alex Albert, Amanda Askell, David Hershey, Zack Witten) &ndash; roundtable discussion on prompting practice, personas, and reasoning.</li>
<li>Anthropic, <a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices"><em>Prompting best practices</em></a> &ndash; official guidance on personas, examples, context, and output constraints, updated with new models.</li>
<li>Kojima et al., <a href="https://arxiv.org/abs/2205.11916"><em>Large Language Models are Zero-Shot Reasoners</em></a> (NeurIPS 2022) &ndash; the original &ldquo;Let&rsquo;s think step by step&rdquo; paper.</li>
<li>Naval &amp; Nivi, <a href="https://nav.al/ai"><em>A Motorcycle for the Mind</em></a> (Naval Podcast, 2026-02) &ndash; on the tradeoffs of learning AI tools, and the lasting value of structured expression and foundational knowledge.</li>
<li>Naval, Guillermo Rauch, Blake Scholl &amp; Max Hodak, <a href="https://nav.al/tokens"><em>Waste Tokens, Save Time</em></a> (Naval Podcast, 2026-05) &ndash; the coding version: skip Ralph Wiggum / OpenClaw / plan mode, brute-force with multiple models.</li>
<li>Mihail Eric, <a href="https://themodernsoftware.dev"><em>CS146S: The Modern Software Developer</em></a> (Stanford, 2025) &ndash; the course and prompt slide discussed in this article.</li>
<li>For background on programming paradigms (Software 1.0 / 2.0 / 3.0), see <a href="https://gardenplace.me/posts/natural-language-is-the-new-programming-language/">Natural Language Is the New Programming Language</a>.</li>
</ul>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>While writing the first draft of this article, the author tried to repeat this experiment. The AI got the r count right &ndash; three &ndash; but miscounted the total letters, saying nine.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded>
    </item>
    <item>
      <title>Natural Language Is the New Programming Language</title>
      <link>https://gardenplace.me/posts/natural-language-is-the-new-programming-language/</link>
      <pubDate>Fri, 04 Sep 2026 00:40:00 +0900</pubDate><dc:creator>Guoliang Chen</dc:creator>
      <guid>https://gardenplace.me/posts/natural-language-is-the-new-programming-language/</guid>
      <description>In the fall of 2022, I told her the compiler couldn&amp;#39;t understand free-form expression. Then ChatGPT arrived. A look at how programming paradigms evolved from 1.0 (humans write rules) to 2.0 (machines find rules in data) to 3.0 (you state the rules in natural language).</description>
      <content:encoded><![CDATA[<h2 id="programming-has-always-been-a-kind-of-writing">Programming Has Always Been a Kind of Writing</h2>
<p>I remember the fall of 2022, when I was teaching a friend to write Python. She was the freewheeling type — she&rsquo;d write whatever felt roughly right, without following Python&rsquo;s syntax rules. It drove me up the wall. I told her: the compiler can&rsquo;t understand your free-form expression. It parses code by breaking it down layer by layer, and at the bottom, every piece has to be a valid expression. It might look close enough to a human eye, but to a machine it doesn&rsquo;t — one missing symbol and the entire syntax tree changes shape.</p>
<p>What happened next, everyone knows. That winter, ChatGPT came out. And just like that, machines really could understand what we say.</p>
<p>The lesson: don&rsquo;t be too sure of yourself. You think what you said is ironclad truth, but truths change. Because I understood how a Python interpreter works under the hood, I assumed programming in natural language was unrealistic — and missed the fact that the demand for it was very real. It was the same story when ChatGPT first went public: the most dismissive voices among my friends were the NLP researchers, who found it all brute force, no elegance to speak of. The very people who already knew the Transformer architecture were the ones whose expertise blinded them to the magic.</p>
<p>Today, no one doubts that <a href="https://x.com/karpathy/status/1617979122625712128">natural language is the new programming language</a>. And the unity of writing and programming was articulated long before — in SICP&rsquo;s famous line that programs must be written for people to read, and only incidentally for machines to execute. Paul Graham put it more bluntly in <em>Hackers &amp; Painters</em>: hackers and painters are both makers, and the standard for good code is the same as for good prose — clarity, concision, rhythm. I wrote about this very idea in my college Chinese literature final.</p>
<h2 id="the-evolution-of-programming-paradigms">The Evolution of Programming Paradigms</h2>
<p><img src="https://gardenplace.me/images/posts/Software-3.0_hu_b15a7ac13694afb0.jpg" alt="The territories of Software 1.0, 2.0, and 3.0" width="1360" height="1184" fetchpriority="high"></p>
<p>In 2017, Karpathy wrote a post called <a href="https://karpathy.medium.com/software-2-0-a64152b37c35"><em>Software 2.0</em></a>, dividing software into two generations. In his <a href="https://www.youtube.com/watch?v=LCEmiRjPEtQ">2025 talk at YC</a>, he added a third. The distinction among the three isn&rsquo;t what language you write in — it&rsquo;s how the program comes into being.</p>
<h3 id="10-hand-written">1.0: Hand-Written</h3>
<p>You figure out the rules first, then type them in line by line as if-else statements. Compilers, operating systems, databases, Excel, TCP/IP — most of the software you use today was made this way. When there&rsquo;s a bug, you can trace it line by line back to the mistake.</p>
<p>The compiler is 1.0 at its most extreme: a piece of text must parse into a syntax tree with absolute precision — one extra space and it breaks. The upside is determinism: the same input always yields the same output. The cost is that only specialists can write it, and in those days there were never enough software engineers anywhere in the world.</p>
<p>What I told my friend that fall of 2022 was pure 1.0 thinking: machines only understand rules, and humans have to bend to the machine.</p>
<h3 id="20-machine-learning">2.0: Machine Learning</h3>
<p>Some rules, humans simply cannot write. What exactly distinguishes a cat from a dog? What does spam look like? If you can&rsquo;t write the rules, don&rsquo;t. Take a different approach: give the system an objective function, a dataset, and a network skeleton, then let gradient descent search for the program in weight space. What it finds is a pile of floating-point numbers that no one can explain. A black box.</p>
<p>Why does it have to be a neural network? Because weight space must be continuous and differentiable for the gradient to move through it — decision trees don&rsquo;t have that property. Karpathy&rsquo;s original post put it directly: Software 2.0 is written in the weights of a neural network. Face recognition, speech recognition, machine translation, the recommendation engines behind TikTok and YouTube, AlphaGo — all 2.0. Google Search&rsquo;s inverted index is 1.0; the RankBrain plugged into its ranking after 2015 is 2.0.</p>
<p>The insight that &ldquo;rules need not be written by humans&rdquo; had actually won once before. In <em>The Beauty of Mathematics</em>, Wu Jun recounts how, from the 1950s onward, the mainstream approach to NLP was the rule-based school, following Chomsky&rsquo;s lead and having linguists hand-write grammars one by one. In the 1970s, IBM&rsquo;s Frederick Jelinek used statistical methods for speech recognition and drove the error rate down dramatically, leaving behind a memorable line: &ldquo;Every time I fire a linguist, the performance of the speech recognizer goes up.&rdquo; The two camps argued for over a decade; by the 1990s, the statistical school had won outright. That was already a victory for not writing rules by hand — only the search method at the time used probabilistic models rather than neural networks.</p>
<p>2.0 has another defining trait: one model does one thing. A face-recognition network can&rsquo;t play Go; a Go-playing network can&rsquo;t translate. Switch the problem and you have to collect new data and retrain from scratch. This is ANI — artificial narrow intelligence. You need not just software engineers but also machine learning engineers, plus the data infrastructure to support them. Training a model from scratch as an individual is already impractical.</p>
<h3 id="30-natural-language">3.0: Natural Language</h3>
<p>Among the programs that 2.0 found, one turned out to be very special: it was trained on essentially all the text on the internet, with syntax, libraries, and every argument on Stack Overflow compressed into its trillions of parameters, and its input is naturally language. You don&rsquo;t need to retrain it. You just talk to it — your words enter the context window, and its behavior changes. Not a single weight moves.</p>
<p>This is the fundamental break from 2.0: train once, and from then on, switching problems doesn&rsquo;t require retraining — just a different prompt. ChatGPT, Claude Code — they are this generation. Google Search is shifting too; AI Overviews now sit above the inverted index. The same model writes SQL one moment, polishes a résumé the next, and explains quantum entanglement the moment after that. Whether this counts as AGI is debatable; that &ldquo;train once, use everywhere&rdquo; is not.</p>
<p>All you need is someone who can write a prompt. And writing a prompt, at the end of the day, is just saying what you mean clearly. That someone can be you.</p>
<p>Why was it language, of all things, that pulled this off? Because language has always had the power to act on the world. Spells, decrees, contracts — things that, once spoken, change reality. Austin&rsquo;s 1955 lectures at Harvard were literally called <a href="https://en.wikipedia.org/wiki/How_to_Do_Things_with_Words"><em>How to Do Things with Words</em></a>. Code is merely the most rigid variety — so rigid that only specialists could recite the incantations. Naval put it this way: programmers used to be like wizards, needing to memorize arcane spells to cast them; AI amounts to <a href="https://nav.al/ai#:~:text=every%20human%2C%20in%20a%20sense%2C%20is%20a%20spellcaster">handing everyone a wand</a>. Every problem can be described in language, so a program that has learned language holds the key to every problem.</p>
<p>Karpathy says a prompt is a program. I don&rsquo;t think that&rsquo;s a metaphor: a piece of text that changes the behavior of a machine — that is the definition of a program.</p>
<p>The diagram at the top doesn&rsquo;t quite tell the right story: Software 2.0 and 3.0 didn&rsquo;t merely eat into the territory of 1.0. What they chiefly did was bring far more new software into existence — especially 3.0, which will create vastly more. Many needs that were previously too costly to serve with software can now be served.</p>
<p><img src="https://gardenplace.me/images/posts/Software-3.0-new_hu_dc35d24279ac1e53.png" alt="The territories of Software 1.0, 2.0, and 3.0 are expanding: 2.0 and 3.0 mostly add new territory rather than replacing 1.0" width="1360" height="575" loading="lazy" decoding="async"></p>
<h3 id="comparison">Comparison</h3>
<table>
	<thead>
			<tr>
					<th></th>
					<th>Software 1.0</th>
					<th>Software 2.0</th>
					<th>Software 3.0</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>How the program comes into being</td>
					<td>Written by humans: figure out the rules, type them as code</td>
					<td>Trained: searched from data</td>
					<td>Spoken: specified in natural language within the context window</td>
			</tr>
			<tr>
					<td>What the program looks like</td>
					<td>Source code — deterministic, readable, auditable</td>
					<td>Weight matrices — billions of floating-point numbers, uninterpretable</td>
					<td>Natural language — tokens in the context window, readable by both humans and machines</td>
			</tr>
			<tr>
					<td>What the human does</td>
					<td>Requirements → algorithm design → coding → testing</td>
					<td>Define a loss function, build a dataset, architect a network, tune hyperparameters</td>
					<td>Put intent, constraints, and examples into the context window</td>
			</tr>
			<tr>
					<td>Problems one program solves</td>
					<td>One</td>
					<td>One (ANI)</td>
					<td>As many as you like (AGI, in a sense)</td>
			</tr>
			<tr>
					<td>Representative products</td>
					<td>Compilers, databases, inverted indexes, Excel</td>
					<td>Face recognition, speech recognition, recommendation systems, AlphaGo</td>
					<td>AI chatbots, coding agents, AI music generators, AI image generators, working agents</td>
			</tr>
			<tr>
					<td>People required</td>
					<td>Software engineers</td>
					<td>Software engineers + ML engineers</td>
					<td>Anyone who can say what they mean (product managers)</td>
			</tr>
			<tr>
					<td>How to debug</td>
					<td>Breakpoints, step-through, read the stack trace</td>
					<td>Check data distributions, tune hyperparameters, change the architecture, retrain</td>
					<td>Edit the prompt: add context, give examples, rephrase</td>
			</tr>
			<tr>
					<td>What failure looks like</td>
					<td>Bugs: reproducible, traceable</td>
					<td>Generalization failure, overfitting: alchemy that takes experience</td>
					<td>Hallucination, misunderstood intent: confidently wrong</td>
			</tr>
	</tbody>
</table>
<p>The barrier hasn&rsquo;t disappeared — it&rsquo;s just moved. 1.0 tested you on algorithms and syntax. 2.0 tested you on data and math. 3.0 tests whether you can make your intent clear.</p>
<p>So how do you train intent and expression? Among so-called &ldquo;prompt techniques,&rdquo; which ones expire and which ones don&rsquo;t? See <a href="https://gardenplace.me/posts/the-prompt-trick-that-never-expires/">the next essay</a>.</p>
<h2 id="further-reading">Further Reading</h2>
<ul>
<li>Andrej Karpathy, <a href="https://karpathy.medium.com/software-2-0-a64152b37c35"><em>Software 2.0</em></a> (Medium, 2017) — the original 1.0/2.0 split.</li>
<li>Andrej Karpathy, <a href="https://www.youtube.com/watch?v=LCEmiRjPEtQ"><em>Software Is Changing (Again)</em></a> (YC AI Startup School, 2025) — introducing 3.0; a prompt is a program.</li>
<li>Paul Graham, <em>Hackers &amp; Painters</em> (O&rsquo;Reilly, 2004) — programming as a creative act; the standard for good code is the same as for good prose.</li>
<li>Naval &amp; Nivi, <a href="https://nav.al/ai"><em>A Motorcycle for the Mind</em></a> (Naval Podcast, 2026-02) — the source for &ldquo;every human is a spellcaster.&rdquo;</li>
<li>Wu Jun, <em>The Beauty of Mathematics</em> (数学之美) (Posts &amp; Telecom Press, 2012; based on the 2006 Google China blog series) — Chapter 2, &ldquo;Natural Language Processing: From Rules to Statistics,&rdquo; the decade-long war between the rule-based school and the statistical school.</li>
</ul>
]]></content:encoded>
    </item>
  </channel>
</rss>
