News for hackers. Stuff that matters.
Re:Software 2.0 by pyrolistical on Tuesday February 21, 2023 @10:56AM (#34882549)
Hard to inspect but very possible test.

Correctness will go from a binary pass/fail to a probability

Re:Software 2.0 by rco8786 on Tuesday February 21, 2023 @11:40AM (#34883216)
> Hard to inspect but very possible test.

Probably, but is testing to the necessary level of correctness more or less effort than writing the code ourselves?

Re:Software 2.0 by hinkley on Tuesday February 21, 2023 @12:39PM (#34884072)
Languages with very high degrees of static analysis are basically making you write the tests in the code. We have people who think they can keep extending that until there's barely any code, but they haven't been proven right or wrong yet.
Re:Software 2.0 by layer8 on Tuesday February 21, 2023 @01:25PM (#34884752)
Static analysis creates proofs, which is fundamentally different from tests. Merely testing AI output will always be inferior on principle than proving code to be correct. One would have expected AI to be better than humans at proving code correct (instead of just testing it for certain inputs), but LLMs currently fall short of that.
Re:Software 2.0 by hinkley on Tuesday February 21, 2023 @01:43PM (#34884999)
What I'm saying is that if you have the proof, someone will write an AI to pass it.

There's still a lot of very, very sophisticated work that goes into locking down requirements that tightly.

Re:Software 2.0 by layer8 on Tuesday February 21, 2023 @02:51PM (#34886091)
> if you have the proof, someone will write an AI to pass it.

That doesn’t make any sense. What passes the proof is the program code. You have the code, and then you construct a formal proof that the code is correct, similar to how a mathematician proves that some theorem is correct. The code is a prerequisite for the proof. When you can construct a proof for the code, you’re done.

This proof-construction process is what AIs currently aren’t good at, because it requires logical precision, and probability isn’t sufficient. They can generate code, but they can’t construct the formal proof that the code is correct (and it often isn’t).

> There's still a lot of very, very sophisticated work that goes into locking down requirements that tightly.

What’s true is that you need to know what you want to prove about the code, and that isn’t always easy.

Re:Software 2.0 by booleandilemma on Tuesday February 21, 2023 @11:38AM (#34883169)
* * *
Re:Software 2.0 by danrocks on Tuesday February 21, 2023 @11:03AM (#34882652)
> Correctness will go from a binary pass/fail to a probability

Excellent point. The pervasiveness of neural nets will require engineers (and really, everyone) to start thinking more probabilistically and establish acceptability thresholds instead of certainty. It's the way of the future.

Re:Software 2.0 by rco8786 on Tuesday February 21, 2023 @11:41AM (#34883233)
> It's the way of the future.

For some use cases, sure. We go through painstaking efforts to ensure things like correctness, consistency, and idempotency for a reason though. Most things we want to be deterministic, and when something's not deterministic we freak out and fix it ASAP (including waking people up in the middle of the night to do so)

Re:Software 2.0 by marginalia_nu on Tuesday February 21, 2023 @11:06AM (#34882680)
That seems like a regression in many regards, especially given how much of this seems like a solution looking for a problem it can solve rather than the other way around.
Re:Software 2.0 by guhidalg on Tuesday February 21, 2023 @11:14AM (#34882799)
Agreed. We may imagine ourselves very smart but in my experience most people do not understand probability and statistics well.

Is 90% accuracy good enough? Is 95%? 99%? 99.9%? No matter the answer, you have to tolerate errors. Now your stakeholders have to tolerate errors. Are they going to accept errors just because "Software 2.0" is here and that's what we all have to live with? Nope.

Re:Software 2.0 by staunton on Tuesday February 21, 2023 @11:25AM (#34882962)
All software is riddled with errors and for most purposes that's fine. Any developer, stakeholder, whatever, who thinks otherwise is living in a parallel universe.

It may be possible in the future to have "for all practical purposes flawless" software, which might make sense for select special applications. That would be a new thing though, rather than something we have and could lose due to adopting AI development.

Re:Software 2.0 by marginalia_nu on Tuesday February 21, 2023 @11:33AM (#34883084)
Formal verification of software has been around for a while though.
Re:Software 2.0 by staunton on Tuesday February 21, 2023 @01:52PM (#34885168)
Which has almost never been used to build software anyone ever used... That might be changing very slowly
Re:Software 2.0 by rco8786 on Tuesday February 21, 2023 @11:49AM (#34883350)
> All software is riddled with errors and for most purposes that's fine.

This is typically not that true when it comes to correctness. Most software does the correct thing in the eyes of the user, nearly 100% of the time. And when it doesn't, the bug gets fixed and that edge case is corrected for every other user going forward.

AI generated software, from what I've seen, has a wide range of errors in correctness (along with all the other errors that you mentioned all software having..which is true). Like it literally just does the wrong thing given what the user is expecting it to do. The path toward iteratively improving and getting it to an acceptable level of correctness for any given application might be there, but so far I have not seen it.

Re:Software 2.0 by staunton on Tuesday February 21, 2023 @02:15PM (#34885542)
That's an interesting difference but I'm not convinced it's valid. Perhaps you can explain what you mean in more detail?

Let's say the software is good enough if it does the right thing 99.9% of the time it is used. I take it, you're saying that if an AI starts modifying it and only writes correct code in 99.9% of cases (yes, current AI is not even close, but it will improve), that makes it worse because the software might start failing completely. However, if you have proper tests and release management, such obvious flaws will quickly be detected and fixed or rolled back. For most applications that seems pretty much equivalent to what we have now.

The other case is software that is completely AI generated and cannot reasonably be modified by humans anymore. In that case, again, you have tests and a sane deployment strategy that mitigates failures to a sufficient degree depending on application.

So the only issue is when you start making a completely AI generated software and fail to ever meet requirements, or pass the human written test cases? Users at least will never be impacted by that. Even now, many human-written software projects never get to the stage where they can be used. Is this really a problem, especially if the attempt at AI generation of software is cheap?

Re:Software 2.0 by rco8786 on Tuesday February 21, 2023 @02:39PM (#34885893)
> yes, current AI is not even close

This is really my main argument currently...

> but it will improve

With this being the "if" question. Improve, but improve to a point where we can trust it to do the things with the level of correctness actually required? Unclear so far. GPT3, the state of the art, can't be trusted to answer basic questions correctly (yet).

I also don't personally buy into the other notions in these comments that "the future is probabilistic software". I think that's wishful thinking outside of some specific domains and an attempt to bend our actual requirements to meet the capabilities of AI software, rather than the opposite.

> pass the human written test cases

I'm not super sold on this idea either. It seems reasonably possible that writing the test cases to a level of specification necessary to ensure that correctness we're after is just as much effort as just writing the code.

But, time will tell with everything.

Re:Software 2.0 by staunton on Tuesday February 21, 2023 @03:11PM (#34886379)
The way I see it is as expanding the high-level-low-level spectrum of programing tools towards the high end. In very large-scale projects that have many levels of complexity, I would argue "probabilistic software" is already a reality. You don't even try to fix all the bugs or edge cases. You try to minimize the impact of failures while accepting that there will always be failures. Building in logic to fail more gracefully is a big part of that and cost/benefit of such efforts is a probabilistic question, even if it might rarely be framed as such.

It's usually much easier (and never harder) to specify what needs to be done than how it should be done. Whether you can trust the result (enough) depends on the application. AI driven development will be applied first wheree errors and failures are least harmful and advance from there. It might take a long time until the degree of correctness improves enough and trust is build around it. After all, some countries' railroad networks still don't use computers but instead have a human map out new routes and schedules on paper to make sure trains don't crash. Nevertheless, the speed of AI development has exceeded (at least my) expectations time and time again in recent years.

What might happen is that we eventually get a lot of software that fails more often than now but is a lot cheaper. That would still mean that the new methods are widely adopted. People accept software errors as a part of life already, so even if they get more frequent in less critical applications, we will adapt.

What is really dangerous is when the various software components get too fast and complex to understand or control and develop pathological feedback loops in situations that cause real trouble. This kind of thing is a continuum of badness which tops out at "AI taking over and wiping out humanity". Given market incentives driving adoption, which I anticipate to be strong, it's hard to imagine how such risks might be mitigated.

Re:Software 2.0 by rco8786 on Tuesday February 21, 2023 @03:28PM (#34886643)
> You don't even try to fix all the bugs or edge cases. You try to minimize the impact of failures while accepting that there will always be failures

Yes but I'll point you back at my original comment about correctness. I've never been on a team that shipped code we knew would do the wrong thing. I ship code with known failure points all the time. But when the code runs to completion, I'm pretty darn sure it's doing the correct thing and we try very, very hard to make sure of that. With AI I am seeing that they can't discern between issues of correctness and issues of failure or availability. It's just like 95% success across all of those spectrums.

> What is really dangerous is when the various software components get too fast and complex to understand or control and develop pathological feedback loops in situations that cause real trouble.

Yea I agree, that's somewhat scary to think about.

Re:Software 2.0 by User23 on Tuesday February 21, 2023 @04:42PM (#34887867)
> This is typically not that true when it comes to correctness. Most software does the correct thing in the eyes of the user, nearly 100% of the time. And when it doesn't, the bug gets fixed and that edge case is corrected for every other user going forward.

You're confusing pleasantness with correctness. Pleasantness is the property of pleasing the user, or more often the software's owner. Correctness is the property of conforming to a specification. Since most software written has no specification, correctness is undefined. Evidently this works adequately well in the marketplace.

Re:Software 2.0 by rco8786 on Tuesday February 21, 2023 @06:45PM (#34889432)
Yea fair, but I think the point stands
Re:Software 2.0 by madeforhnyo on Tuesday February 21, 2023 @11:59AM (#34883461)
It might be easier for an engineer to fix a bug by changing some lines of text than readjust a neural network, for the time being at least.

As pointed out, there are already formal languages that allow formal verification like B [0] notably for like-critical systems.

[0] https://en.wikipedia.org/wiki/B-Method

Re:Software 2.0 by hwayne on Tuesday February 21, 2023 @01:32PM (#34884842)
There's a difference between errors in UI/reliability/performance/etc and errors in business logic. When there's an error in the business logic, then heads roll.
Re:Software 2.0 by duckmysick on Tuesday February 21, 2023 @12:16PM (#34883705)
> No matter the answer, you have to tolerate errors.

We already do that in manufacturing. Physical parts are imperfect and we design with such variation in mind.

Re:Software 2.0 by badloginagain on Tuesday February 21, 2023 @12:29PM (#34883914)
The entire field of Service Reliability is dedicated to finding the exact boundaries of acceptable errors, and defining the response function when those boundaries are crossed.

I would assume this actually gels very nicely with neural nets since its constantly optimizing for fitness. Hell in theory you could bake in your SLA/SLIs into the models to self correct? Give the model direct feedback that its unfit?

Re:Software 2.0 by davedx on Tuesday February 21, 2023 @12:12PM (#34883659)
Less of a regression than you might think. How many software systems (outside of very well unit tested components) really have strong correctness proofs? It’s an almost futile task in modern software engineering with all those distributed systems everywhere
Re:Software 2.0 by xp84 on Tuesday February 21, 2023 @12:29PM (#34883909)
I'd argue that it's a solution to the problem that programmers are expensive AND only a fraction can be counted on to produce 100% reliable code anyway.

While it's possible for a highly-skilled, highly-professional developer can both write code that will solve a given problem 100% correctly AND write tests that will prove that it solves them for the entire domain, in practice most developers fall short on both counts. Every time you interact with a date or phone number field that chastises you for your use or non-use of punctuation, you know this.

So, for many use cases, it's possible imperfect programmers will be replaced with neural networks that are 95% accurate, perhaps with a differently-trained one checking the work of the first one.

Re:Software 2.0 by __MatrixMan__ on Tuesday February 21, 2023 @12:39PM (#34884071)
I've been looking for an opportunity to try out a pattern where the two approaches improve each other:

1. Generate a 95% accurate model 2. Use it to generate test cases 3. Code the thing, with the help of the cases 4. Manually remove cases in the 5%

I image steps 1 and 2 being completed by a product owner and 3 and 5 being completed by a software engineer.

We're so horrifically bad at communicating a requirement's intent, I wonder what would happen if we tried to use AI to communicate them via their extent instead.

Re:Software 2.0 by lifeisstillgood on Tuesday February 21, 2023 @04:38PM (#34887825)
That's probably genius :-)

I mean ... can it be done?

- build a platform (ie the data we care about and are going to build some workflow over)

- have business describe what should happen in english

- How does GPT build something that will run? Can it create the infrastructure? does it speak AWS?

- then ...

OK - I am actually excited by that

Re:Software 2.0 by __MatrixMan__ on Tuesday February 21, 2023 @06:38PM (#34889367)
I'm not familiar enough with AI workflows to weigh in on how easy or hard it would be. I've just noticed that it's much easier to describe why something is not what you want than describing what you want.

So if AI can give us a mockup that's workable enough to skip the first few iterations of "no that's not what I want" and get right to the part where the engineer is asking questions about the edge cases that weren't explicit in the requirements... That's a win.

I imagine you'd still want to have it in a box of some sort re: creating infra. Like you give it a very small cluster and probably make the stack decisions "write me a postgres schema for... write a fastapi API for the schema... write a react UI for the API... write me a k8s operator that up/down's the above components... Workshop the idea with other product people...

...and only then involve the engineer like: "make this AI-generated house of cards into a fortress".

Re:Software 2.0 by agileAlligator on Tuesday February 21, 2023 @02:05PM (#34885403)
It seems to me that current AI techniques are more about reducing programmer workload than actually doing something that isn't possible with traditional methods.
Re:Software 2.0 by islon on Tuesday February 21, 2023 @11:13AM (#34882776)
Our software has a 99% chance to calculate you taxes correctly! And only a 1% chance of committing tax fraud.
Re:Software 2.0 by kklisura on Tuesday February 21, 2023 @11:38AM (#34883172)
Not quite, let me rephrase it...

> Our software has a 99% chance to calculate your taxes correctly! And only a 1% chance of failure in which it's your fault and it's you that's committing tax fraud

Re:Software 2.0 by gtirloni on Tuesday February 21, 2023 @12:07PM (#34883595)
Considering ChatGPT spits out innacurate information all the time, I think "our software has a 99% chance of you going to jail for tax fraud" is more accurate.
Re:Software 2.0 by bryanrasmussen on Wednesday February 22, 2023 @05:31AM (#34893854)
the problem really is that ChatGPT writes things based on what is most likely given what it wrote before and what the input is, so what are the possible error scenarios:

1. making a mistake in this part is really common, ChatGPT makes common mistake.

2. you have uncommon situation affecting here, ChatGPT ignores and writes things that cause you to get in trouble, or it writes things that cause you to pay more than you should.

Also the longer is goes on writing things the more likely that things it writes does not hang together with the past things it wrote, when a human lies they try to make their lies at least follow a sensible pattern. ChatGPT would be likely to get you flagged for audits because you can't be sure that what it wrote on page 1 jibes with what it writes on page 3.

Re:Software 2.0 by alfor on Tuesday February 21, 2023 @02:00PM (#34885334)
Better than most accountants.

Family member got ripped by a government audit of what was supposed all fine by the person doing his company taxes.

Re:Software 2.0 by sebzim4500 on Tuesday February 21, 2023 @11:52AM (#34883391)
I wonder what accuracy existing tax calculators have.
Re:Software 2.0 by jpollock on Tuesday February 21, 2023 @12:41PM (#34884102)
If they were broken, they are deterministically broken, unless they are really poorly written the calculator won't randomize the answers to the same inputs.
Re:Software 2.0 by golergka on Saturday February 25, 2023 @03:51PM (#34940332)
Not if there are race conditions.
Re:Software 2.0 by goatlover on Tuesday February 21, 2023 @11:20AM (#34882877)
That doesn't sound like progress. Maybe for CRUD apps it will be okay. I have a hard time imagining it will be acceptable for financial or critical systems.
Re:Software 2.0 by ako on Tuesday February 21, 2023 @12:12PM (#34883661)
How about self driving cars?
Re:Software 2.0 by bee_rider on Tuesday February 21, 2023 @12:24PM (#34883859)
You’ll rent a self-driving car from a ride sharing app, they’ll make sure that the expected cost of fines and lawsuits will be significantly less than the expected revenue from providing rides. Although they can help push down the former value by making sure they operate from a favorable jurisdiction.
Re:Software 2.0 by fock on Tuesday February 21, 2023 @11:14AM (#34882789)
that doesn't look to bright if we look back towards Covid and vaccines. People are even bad at plain frequentist statistics!
Re:Software 2.0 by duderific on Tuesday February 21, 2023 @03:16PM (#34886457)
That assumes people even care what the statistics are. Many people just go with their emotional response based on a political outlook when deciding what course of action to take.
Re:Software 2.0 by fassssst on Tuesday February 21, 2023 @12:18PM (#34883749)
Yea, aka how engineers working on safety critical or high reliability stuff already have to think.

Assume your software has a probability to fail or have bugs or gets hit by bit flips or unreliable hardware. There’s a whole field for dealing with those kind of things that typical web devs haven’t had to worry about as much.

Re:Software 2.0 by belter on Tuesday February 21, 2023 @12:50PM (#34884238)
These are not those type of Engineers. Not the ones doing triple computing using three different processors with a summation and voting process, inclusive using different programming languages and compilers, because the compiler can also have bugs. These are the engineers running self driving beta neural nets on public roads...
Re:Software 2.0 by williamcotton on Tuesday February 21, 2023 @08:05PM (#34890107)
I use a process called sample-and-vote when having LLMs return executable solutions. I imagine we will see this kind of design a lot with probabilistic computing.
Re:Software 2.0 by belter on Wednesday February 22, 2023 @07:48AM (#34894692)
Sounds interesting. Any references?
Re:Software 2.0 by williamcotton on Thursday February 23, 2023 @12:45PM (#34913836)
Re:Software 2.0 by flangola7 on Tuesday February 21, 2023 @12:40PM (#34884085)
Engineer brains are just a type of neural network too, which also have a probability of putting out bad code. Space exploration budgets run into the hundreds of millions of dollars each and recruit the brightest people on the planet to design and program software, yet there is a long list of projects that failed due to code errors. Mars probes have failed to reach the planet, orbited too low and burned up, crashed into the surface, or landed successfully but later overwrote critical memory due to a flawed software update.

The AI doesn't have to be perfect, but only offer a lower error rate than humans.

Re:Software 2.0 by belter on Tuesday February 21, 2023 @01:04PM (#34884448)
Engineer brains are not a neural net. It's only our brain lack of knowledge of how the brain works that led us to anthropomorphize Matrices and Weighted Graphs :-) Reading a bit on the Brain will quickly help dismiss those analogies. I suggest these two as good starting points:

- Lange Clinical Neurology - 11th Edition

- Bradley's Neurology in Clinical Practice, 8th Edition

Re:Software 2.0 by hwayne on Tuesday February 21, 2023 @01:34PM (#34884876)
Brains are clocks, I mean machines, I mean computers, I mean neural nets.
Re:Software 2.0 by goatlover on Tuesday February 21, 2023 @04:57PM (#34888110)
There was an article a while back comparing the mind to a symphony, but it never caught on as a metaphor.
Re:Software 2.0 by Xeoncross on Tuesday February 21, 2023 @01:30PM (#34884813)
"We're 98.7% certain the user's payment go to the right account with this change"
Re:Software 2.0 by krab on Tuesday February 21, 2023 @05:41PM (#34888731)
More like we're 98.7 % certain that the screen layout looks ok for all device types and languages. The question is how hard is it to fix the problematic cases without turning the whole thing upside down when you find out the original solution is not enough.
Re:Software 2.0 by kabdib on Tuesday February 21, 2023 @02:29PM (#34885759)
"Good news, analysis of the anti-lock brake system failure shows that you're only sixteen percent dead."
Re:Software 2.0 by bryanrasmussen on Wednesday February 22, 2023 @05:32AM (#34893868)
From the neck up, then?
Re:Software 2.0 by ArchD on Tuesday February 21, 2023 @11:18AM (#34882855)
And someone will decide that a 0.0001% probability of an airplane crash caused by a bug is acceptable? Maybe 0.0000001% is more reasonable? In any case, how do you accurately determine the probability of a rare failure of a black box without doing many real experiments with real inputs?
Re:Software 2.0 by Redoubts on Tuesday February 21, 2023 @11:50AM (#34883356)
And what’s a postmortem going to look like?

“Don’t worry, we stuck the flight data recorder in the training set, and rebuilt the model. Should be good to go now”?

Re:Software 2.0 by hinkley on Tuesday February 21, 2023 @12:37PM (#34884043)
We already know what the post mortems look like. AI black boxes will look a lot like declarative programming black boxes. We don't really know how the code runs, we just ask it nicely to do what we want and then stare at the config files and the docs if it doesn't.

Low code and AI are going to have many of the same failure modes. Until someone combines them and then they'll have exactly the same failure modes.

Re:Software 2.0 by AlotOfReading on Tuesday February 21, 2023 @11:56AM (#34883429)
That's how safety critical devices are already built, so yes. We have standardized probabilities of failure (e.g. SIL [0]) from the unexpected, because mitigating 100% of risk is somewhere between impractical and impossible.

[0] https://en.wikipedia.org/wiki/Safety_integrity_level

Re:Software 2.0 by davedx on Tuesday February 21, 2023 @12:14PM (#34883685)
Indeed. Some of the commentators on this article should really examine their assumptions about how reliable and correct “Software 1.0” is.
Re:Software 2.0 by ArchD on Tuesday February 21, 2023 @01:11PM (#34884549)
From a quick reading of the wiki, the associated methodology seems rather limited:

"System complexity, particularly in software systems, making SIL estimation difficult to impossible"

"The requirements of these schemes can be met either by establishing a rigorous development process, or by establishing that the device has sufficient operating history to argue that it has been proven in use."

You could prove that normal code satisfies some specs, but you can't do that with neural nets unless the number of possible inputs is tiny. So, the only way to establish that the black box neural net meets some SIL target is through "sufficient operating history".

Re:Software 2.0 by AlotOfReading on Tuesday February 21, 2023 @01:36PM (#34884896)
To clarify, I wasn't offering SIL up as an example of how we should validate ML systems, but instead to demonstrate that "software 1.0" systems are already designed the way GP is questioning. Best practices for applying integrity level concepts to ML is still a topic of active debate right now.
Re:Software 2.0 by hinkley on Tuesday February 21, 2023 @12:35PM (#34884005)
Possible to test, but not likely.

What often divides the excellent engineers from the poor ones is how well they can think about corner cases, and tests are mostly about writing down the corner cases in a sustainable way (vs half-assedly writing down half of the corner cases and writing 0.5% of tests as asserting a bug.)

The main problem I saw with DevOps and QA automation was that if people don't write code all day, having them write code that gates release of software to production does not result in good outcomes. Sooner or later developers have to inject some engineering practices.

If the engineers are running AI generated code, nobody knows how to do that job, and you will get a long string of permanently damaged brand names in the aftermath.

Re:Software 2.0 by theptip on Tuesday February 21, 2023 @12:50PM (#34884245)
On the flip side, if the rest of the process becomes easy and in some sense standardized (the art/craft of code is replaced with back-prop), then maybe the complements like data cleaning, model bias/error measuring, and interpretability become “the work” that the high-paid scientists/engineers focus on?

I can particularly imagine a regulatory environment much more rigorous than software has got away with thus far, for example strict requirements around certifying that your model doesn’t exhibit X Y Z biases according to standard frameworks of evaluation.

Re:Software 2.0 by hinkley on Tuesday February 21, 2023 @01:46PM (#34885054)
Not if the ladder gets pulled up behind us. If there's nowhere to train people with 0 years of experience to do this work effectively, then new developer creation will drop by 10x which means five years in we'll be missing 40% of the workforce.
Re:Software 2.0 by emeril on Tuesday February 21, 2023 @03:14PM (#34886435)
so many companies have such terrible code quality to begin with, it's hard to see how brand names could be much worse in many (but not all) cases