{"slug": "astra-won-t-kill-anything-it-will-silence-everything-and-why-that-s-good-news", "title": "Astra won't kill anything. It will silence everything. (And why that's good news.)", "summary": "A developer argues that AI-assisted programming can be reconciled with human understanding by writing code in PureScript, a pure statically typed functional language whose structure mirrors business specifications. The approach treats the language as a high-level spec that a compiler or transpiler translates into low-level C++ or Rust, letting engineers delegate implementation details while reviewing concise, readable models such as a RefundDecision type.", "body_md": "In discussions around AI-assisted programming with LLMs, I often see **two opposing camps**. And since the release of Astra, it's become even more obvious...\n\nOn one hand, there's the idea that code is becoming just an implementation detail: you write the **specs**, add some tests, and let the models do the heavy lifting.\n\nOn the other hand, some argue we still need to scrutinize **every single line**, or even avoid these tools entirely to keep true mastery over our software.\n\nI might be forcing the trait a bit, sure. But not by much. Just scroll through tech X or LinkedIn, and you'll inevitably run into these two takes in the comment sections.\n\nThis tension raises an important question:\n\nWhat shape should our code take so that we can confidently delegate more of the writing process, while still actually understanding it?\n\nBasically: can we **split** the difference? Can we find a **compromise** that pulls everyone **upward**?\n\nBecause, as is often the case in life, the most useful path is found in **hybridization**, in dialectics: a successful marriage of both worlds.\n\nThis is where **PureScript** seems to offer something special. (Quick reminder: PureScript is a pure, statically typed functional language, close to Haskell).\n\nWhat interests me here is the ability to write a program whose structure stays **closely aligned** with actual business reasoning.\n\nPureScript code remains an implementation, but it naturally carries a chunk of the specification itself. That's exactly what your specs look like when you realize you need to brush up on technical terminology **to make sure** your AI understand you clearly. That's the marriage we're looking for.\n\nSee what I mean? When you're concatenating strings... what you care about is the text. You don't want to worry about how to manage memory safely, or what differentiates a Chinese character from an English one at the byte level.\n\nDon't get me wrong, I'm not saying those low-level details are uninteresting. I'm saying that asking yourself those exact same questions every single day is much less interesting.\n\nSo, the best approach is to **solve the problem once**, and then let a program translate your high-level ideas based on those solutions. There's a word for that: a compiler.\n\nAnd yes, just as a compiler turns your C or Rust into low-level machine instructions, a program can now translate your high-level technical ideas into C or Rust code. We call that a transpiler because it sounds more modern, but the philosophy is exactly the same.\n\nLet's take a refund decision as an example:\n\n```\ndata RefundDecision\n  = Approve Amount\n  | Reject RejectionReason\n\ndecideRefund :: RefundPolicy -> Order -> RefundDecision\n```\n\nEven without knowing the syntax, you can **immediately read** a few things. The decision depends on a refund policy and an order. It can approve an amount, reject with a reason, or require a manual review with a reason.\n\nThese possibilities are explicitly present in the program's model. They can be discussed before anyone even looks at the concrete algorithm used to implement them.\n\nAnd it gives humans something reasonable to review. It's as concise as a spec document. What extra noise is there? A `data`, an `=`, a `|`. That's it! Not much more than the commas and periods that structure standard human writing.\n\nAfter that, you feed this PureScript code into a smart compiler that knows exactly what to do to squeeze out maximum performance, and you get something like that (e.g, in C++):\n\n```\nstruct RefundDecision {\n    enum { TAG_APPROVE, TAG_REJECT } tag;\n    union {\n        double approveAmount;\n        struct RejectionReason* rejectReason;\n    } _data;\n};\n\ninline struct RefundDecision* Core_decideRefund(\n    const struct RefundPolicy* policy, \n    const struct Order* order\n) {\n    // ... Boilerplate memory management, bit-twiddling, \n    // and auto-generated C++ optimizations ...\n    return nullptr;\n}\n```\n\nIf a modification adds a ton of code, you still have to re-discover the underlying assumptions, track state changes, and understand the interactions. The fact that this code was generated in seconds doesn't magically eliminate that cognitive effort.\n\nWhen you crank out code in 5 minutes with an AI, it's awesome. The payoff is **immediate**, and you want to go tell everyone about your miracles. And you're absolutely right to.\n\nExcept?\n\nExcept there's a slight problem... one day, that code is going to need a change. Too complicated to touch? You'll just ask the AI again. And there you have it: the loop is closed. You depend entirely on AI to code, it costs money, and you have nothing but your specs & tests to save you.\n\nBut you know as well as I do that tests aren't enough. At some point, you actually have to play around with the code.\n\nYou wouldn't board a plane if they told you its software had never been read by a human.\n\n(Okay, maybe 1% of you would. I'm talking to the remaining 99%.)\n\nThis is why the best approach is ultimately to return to a middle ground, rather than betting the house entirely on \"all-spec\" and \"all-test\". (Or use a proven language this time, like Lean.)\n\nWhat you really need is a **concise, spec-oriented** language.\n\nWith small functions, explicit data structures, and strictly bounded side effects, you can **focus** your code reviews on actual decisions:\n\nTypes take care of a good chunk of the consistency checks. They also provide the LLM with hard constraints that its proposed output must satisfy.\n\nObviously, this doesn't make a program magically correct.\n\nA function might apply a 30-day refund window when the rule states 14 days. It will still type-check perfectly. Tests remain necessary to verify examples, properties, and interactions. Code review remains necessary to examine assumptions.\n\nThis is **exactly why** PureScript interests me: because it **brings together everything** we care about today.\n\nThe specification naturally extends into the types. The rules extend into pure functions. Tests can directly exercise these functions without needing to spin up an entire runtime environment.\n\nWhen you write PureScript, you don't need side specs. **The code IS your spec** document. You compile it, and that's it. (And it's deterministic.)\n\nBy the way, after Go and PHP, my latest very serious hobby is Rust. I'm currently building a PureScript-to-Rust compiler, and the performance is identical to, or even better than, hand-written Rust code (because a human won't bother rethinking every possible optimization step...). It's a WIP, I'll talk about it again when it's finished. You can [find it here](https://github.com/0x000000000000000000001/purust).\n\nCatch you later, folks!", "url": "https://wpnews.pro/news/astra-won-t-kill-anything-it-will-silence-everything-and-why-that-s-good-news", "canonical_source": "https://dev.to/0x1/astra-wont-kill-anything-it-will-silence-everything-and-why-thats-good-news-1lnc", "published_at": "2026-09-11 09:19:17+00:00", "updated_at": "2026-09-11 09:33:28.869937+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "large-language-models", "ai-products"], "entities": ["PureScript", "Haskell", "C++", "Rust", "Astra"], "alternates": {"html": "https://wpnews.pro/news/astra-won-t-kill-anything-it-will-silence-everything-and-why-that-s-good-news", "markdown": "https://wpnews.pro/news/astra-won-t-kill-anything-it-will-silence-everything-and-why-that-s-good-news.md", "text": "https://wpnews.pro/news/astra-won-t-kill-anything-it-will-silence-everything-and-why-that-s-good-news.txt", "jsonld": "https://wpnews.pro/news/astra-won-t-kill-anything-it-will-silence-everything-and-why-that-s-good-news.jsonld"}}