Remix.run Logo
▲ jimmaswell 3 hours ago

A rewrite is a slam dunk for any decent frontier AI. It has a penchant for maintaining API/etc contracts to a fault in the absence of instructions to the contrary. It can easily validate its work and loves building exhaustive test cases. You can tell it to get 100% code coverage if you want. It will laborously accurate document every accumulated edge case and help you find a better overall cohesive structure.

A rewrite has historically been a huge mistake in many situations, some of which I've personally had the agony of witnessing firsthand, powerless to stop it. But AI completely changes the calculus because it doesn't waste significant developer time or energy crawling back to the previous working state, it just does it while you go get coffee. And this I've found to be a huge benefit, that I can continue making my codebases nicer to work with and better documented/integrated with bugs stamped out for free. There are upsides to a rewrite, and they're now much more likely to be worth it as the downsides are automated away.

▲amelius 2 hours ago | parent | next [-]

If this was true then Python would already have been rewritten to be GIL-free, and the entire ecosystem of Python packages would have been rewritten to respect its API.

▲solyin 2 hours ago | parent | next [-]

Absence of evidence is not evidence of absence! We're on this thread because Cisco is sponsoring piles of tokens at the problem. No such megacorp sponsor exists for this problem for Python. The megacorps have decided not to sponsor that specific problem.

▲cwillu 7 minutes ago | parent | next [-]

Absence of evidence is evidence, it's just not very strong evidence.

▲Bayart an hour ago | parent | prev [-]

What would be the Python megacorps of choice ? Trading firms ? Not a regular pythoner (pythonist ? pythonian ?) myself.

▲heylook 37 minutes ago | parent | prev | next [-]

I hope everyone that reads this can understand why it's a ridiculous argument.

▲80fj0348i 2 hours ago | parent | prev [-]

In my experience it's been much simpler to rewrite programs from Python to <insert lower level language of choice here>

▲InsidiousWombat 2 hours ago | parent | prev | next [-]

I'd even argue AI is better for maintaining/moderninzing existing code than writing it, just because there is so much less input from developer about architecture it requires, as it has it in the code itself.

But there is pretty big risk of false positives and negatives; some "bugs" are design decisions that were not documented well/at all, and inevitably some new ones will appear when it reasoned something wrong.

▲stavros 3 hours ago | parent | prev [-]

The entire point of a rewrite is to get rid of the behaviour you don't want, while you keep the behaviour you do want. Consider the pathological case: Rewriting your FORTRAN codebase in Rust would obviously be useless if you had to reimplement every bug in the rewrite.

An LLM doesn't have enough context to know what you so and don't want. If you give it call logs for every function that was called and how, maybe, but a seasoned engineer will have more context around what the company needs.

▲habitue 3 hours ago | parent | next [-]

Not necessarily, a rewrite can just move to a language that's easier to maintain (off C / cobol).

Honestly though, it's pretty clear the AI rewrites work, we have a ton of high profile examples. It's just a holdover attitude about rewrites from before AI. In reality, AI is going to make the code better when it rewrites

▲what 39 minutes ago | parent [-]

> we have a ton of high profile examples

Such as?

▲literalAardvark 2 hours ago | parent | prev | next [-]

Defining the legacy bugs and porting them as features during the rewrite is actually one of the most difficult parts of enterprise rewrites.

You don't get to pick what parts of the API you're porting during something like that, it has to work the same or some of the ecosystem around it will break.

▲beardbandit an hour ago | parent [-]

Usually you’d choose to port features in slices end to end so that you don’t have to pull in bugs as side effects. Strangler fig.

Obviously this fails if this is a large org with many teams and microservices, but for a leaner org this isn’t really a problem.

I realize this thread is about Cisco so my comment doesn’t apply here haha.

▲ravishi an hour ago | parent | prev [-]

The thing is, to get rid of unwanted behavior the first step is to document all the behavior and be able to reimplements it. Then you can pick and choose what to keep vs what to dump.

And AI is really good at all the stages here.