Traditional compiler
Source code ? deterministic ? binary. Precise input. Exact output. Every time.

Fuzzy compiler (LLM)
Natural language spec ? probabilistic ? source code. Ambiguous input. Approximate output. Usually.

Same Job, Different Contract

A C compiler rejects ambiguity. It throws a syntax error. You fix it.

An LLM resolves ambiguity. It picks an interpretation and keeps going. It never tells you it guessed.

Traditional: "int x = ???" ? ERROR: expected expression

Fuzzy: "handle auth" ? builds session-cookie auth. You wanted JWT. It didn't ask.

Every ambiguity in your spec is a branch point. More ambiguity, more branches, more drift from what you wanted.

Example: Authentication Ambiguity

# Vague spec (many valid compilations)

"Add authentication to the API"



# What the fuzzy compiler might produce:

# Option 1: Session cookies

def authenticate(request):

    session_id = request.cookies.get('session')

    return db.get_user_by_session(session_id)



# Option 2: JWT tokens

def authenticate(request):

    token = request.headers.get('Authorization')

    return jwt.decode(token, SECRET_KEY)



# Option 3: API keys

def authenticate(request):

    api_key = request.headers.get('X-API-Key')

    return db.get_user_by_api_key(api_key)

All three are valid interpretations. Traditional compiler: syntax error. Fuzzy compiler: picks one and keeps going.

# Constrained spec (one valid compilation)

"Add JWT-based authentication with RS256 signing.

Include refresh token rotation and 15-minute access token TTL."



# Now the fuzzy compiler has one clear path:

def authenticate(request):

    token = request.headers.get('Authorization')

    payload = jwt.decode(token, PUBLIC_KEY, algorithms=['RS256'])

    if payload['exp'] < time.now():

        raise TokenExpired()

    return payload['sub']

Errors Are Silent

Traditional compilers fail loud: red text, line numbers. Fuzzy compilers fail silent: the code runs, tests pass, ships to production.

Traditional error:
Line 42: undefined reference to 'processPayment'. Fix: define the function.

Fuzzy "error":
Code works. Tests pass. Ships. Three weeks later: "Why does checkout fail with mixed currencies?" The spec never mentioned multi-currency. The compiler assumed single-currency. Nobody noticed.

Example: The Multi-Currency Bug

Real production incident from a 2026 e-commerce platform:

# Vague spec (the fuzzy compiler filled in the gaps)

"Add checkout with Stripe payments.

Calculate total from cart items.

Show success page after payment."



# What the fuzzy compiler produced:

def calculate_total(cart_items):

    return sum(item.price * item.quantity for item in cart_items)



def process_payment(total):

    stripe.Charge.create(amount=int(total * 100), currency='usd')



# Tests passed. Code shipped. Worked fine.

# For three weeks.

Then a customer in the UK bought something. Cart had GBP prices. Stripe charged 99 GBP as 9900 USD. $12,000 charge for a $120 order.

Why this is worse than a traditional compiler error:

Traditional compiler: "Error: currency type undefined." You fix it before shipping.

Fuzzy compiler: Assumes single currency. Tests pass (all test data was USD). Ships. Fails in production with real multi-currency traffic. You discover it via angry customers and chargebacks.

# What the spec needed to say:

"Calculate total in item's native currency.

Support USD, GBP, EUR.

Pass currency to Stripe with amount.

Reject if cart has mixed currencies."



# Now the fuzzy compiler has constraints:

def calculate_total(cart_items):

    if not cart_items:

        return 0, None

    

    currency = cart_items[0].currency

    if any(item.currency != currency for item in cart_items):

        raise ValueError('Mixed currencies in cart')

    

    total = sum(item.price * item.quantity for item in cart_items)

    return total, currency



def process_payment(total, currency):

    if currency not in ['USD', 'GBP', 'EUR']:

        raise ValueError(f'Unsupported currency: {currency}')

    stripe.Charge.create(

        amount=int(total * 100),

        currency=currency.lower()

    )

The Implication

Your spec is source code. The quality of your spec determines the quality of your output, not as a nice-to-have but as a conservation law.

You wouldn't write half a function and expect gcc to figure out the rest. Don't write half a spec and expect the fuzzy compiler to guess correctly.

As one developer put it in 2026: "The main weakness would be that they understand nothing about programming, they just generate text that they think you want to see."