Hacker Newsnew | past | comments | ask | show | jobs | submit | lelele's commentslogin

But does such longevity equate to an strong, energetic life? Considering how protein intake relates to muscle and bone mass, wouldn't one rather live a little less, yet strong and kicking, rather than longer, yet thin and frail?


But if so, then where is the secret prompt sauce for getting those results, please? It's not like we complainers don't read and put in practice all we can about how to refine a spec prompt after prompt, yet our results are still disappointing. To me, that's no wonder at all, as we haven't reached AGI yet; hence, no matter how impressive and productive these tools are, I totally don't expect them to actually know what they are doing.

To be clear: LLMs write about 99% of my code, but with constant steering.


A lot of this is just talking past each other. AI being good enough to write 99% of your code but then you still complain about it sucking. Glass half full vs half empty.


This.


> If you never use "naked pointers" and always use std::unique_ptr and std::shared_ptr, will it not reduce nearly all memory related bugs?

It will, as long as the code uses them correctly all the time, including when refactoring. In the end, that's still manual memory management.


Sure, but how confident can they be that it doesn't also do things they don't want?

Tests can't be exhaustive, whereas even a mediocre developer is likely to possess enough background knowledge to notice risks that a non-developer would not think to test.

Some people keep forgetting that we haven't reached AGI yet. These tools can still make serious and sometimes obvious mistakes. Not long ago, vibe-coded software could embed credentials directly. That particular blunder seems to have been addressed, but there is still no reliable way to tell an LLM to avoid every class of obvious blunder.


The un-hidden secret is that QA and real testing doesn't exist much anymore. People aren't surprised when things break, they just want it fixed quickly, and AI can do that.


Mmm... People may overlook a glitch here and there, but judging by reviews on app stores, it seems to me that people get very annoyed when things break, especially when it happens at the worst possible time.

As for AI fixing things... Sure, at least for a while. But in my experience, AI can hit a wall and start going in circles. It doesn't happen often, but it can happen. And when it does, what recourse will you have for fixing the tangled mess that vibe coding tends to produce?


P.S. Again, it all boils down to AGI not being with us yet. I guesstimate that AI writes at least 95% of my code, but given how often LLMs come up with inefficient or ineffective solutions, I'd never entrust my reputation to a vibe-coded app. Startups may have little to lose vs much to gain from a shorter time to market, but an established company?


>much to gain from shorter time to market

Is that true anymore when anyone can vibe code? Seems to me that quality, correctness, and performance will be huge differentiators in a see of vibe coded slop.


I definitely hope so!


I hear you, but when their choices are “flawed solution that exists” vs “perfect one that doesn’t” they will pick the former most of the time.


Sure, but the original comment was more like “flawed solution that exists” vs “decent solution that exists”, wasn't it? That is: vibe-coding can't replace developers yet, not even mediocre ones.


Joel On Software: Rewriting software is the single worst strategic mistake that any software company can make. [1]

Microsoft: Take that, Joel!

;)

---

[1] https://www.joelonsoftware.com/2000/04/06/things-you-should-...


To be fair, this wasn't just rewriting the software, it was translating logic in JS largely one-to-one into Go.


Indeed. I'm trying to develop a similar style. The phrasing in the quoted passage is really tight.


> y'know you can check if an operator has been overloaded

And there lies the problem with C++: to be sure, you have to check. C++ code can't be taken at face value -- the most innocuous-looking code could be a ticking bomb.


Just like any C function without looking into the translation unit, don't say you blindly believe on the function name.


Not really. C++ is on another level altogether: the code could be calling implicit conversion operators, the compiler could have instantiated some template code in an unforeseen way, and so on.

Years ago, I was really proficient in C++, but after a year of programming in C#, I realized that not once had the behavior of my code caught me off guard. In the following years, I only ran into quirky behavior a couple of times. I could finally program without the constant mental overhead of watching out for C++ pitfalls.


I suppose you're aware C# also has implicit conversion operators, operator overloading, reflection, aspect oriented programming, compiler plugins, interceptors.

Seems strange to talk down C++ while praising C#, which incidentally has been getting features to increase its use where Microsoft previously might have used C++ instead.

You catch pitfalls in any language the same way, using static analysis, which C authors introduced right in 1979, acknowledging the issues with language, which they decided to outsource to another tool, instead of improving the language.

A long tradition in computing.


Yes, C# is becoming more and more complex, but IMO C++ is still in a class of its own. Just compare how many different, sometimes competing ways there are to initialize variables in C++, each with its own subtleties.

I guess we'll have to agree to disagree here. And of course, even if C++'s user base seems to be shrinking, it still works well for some categories of programmers.


Even if it is shrinking, people leaving C++ aren't racing to go back to C, rather to languages with similar expressive type systems.

Swift, C#, Kotlin, Scala, Rust, Typescript, Python...


In D, we've introduced editions so that obsolete, problematic, or redundant features can be removed.


Finally happened! Thanks for the heads up.

Yeah C# is getting a bit unwidely.


My favorite was the regex engine that was implemented using C++ operator overloading. The author was very proud of it, but you could not tell what code was regex code and what code was math code.

I went to some lengths with D to discourage such abusive operating overloading practice.


Thank you. I don't even use D, but appreciate all efforts to socialize sane programming practices.


Thank you for the kind words! I recently did a presentation at Yale where I felt free to ridicule some insane practices, and how to do a better job.

Slides:

https://walterbright.com/ElegantD.pdf


But isn't this a problem with all code? Looking at a Rust function signature how can you be sure that it does what it says it does? Or python?


To the extent that one doesn't try to suppress compiler warnings & errors / actively break the language, you get what the compiler confirms is true about a function signature.

For Python, it's very little (nothing?). For Rust, you get more than most; lifetimes tell you whether it holds onto a pointer you give it.


See my reply to a similar objection: https://news.ycombinator.com/item?id=48520416


> C++ code can't be taken at face value -- the most innocuous-looking code could be a ticking bomb.

You can't take C code at face value either. The name of a method or type doesn't tell you what it does. It could longjmp for all you know.


See my reply to a similar objection: https://news.ycombinator.com/item?id=48520416


In my experience, yes. AFAICS, LLMs never think out of the box, and are heavily influenced by the way you ask questions.


So, Greenspun's Tenth Rule seems to have come full circle: now, "Any sufficiently complicated Coalton program contains an ad hoc, slow implementation of half of OCaml." ;)

I've left out "informally specified, bug-ridden" because I guess that's not the case for Coalton, but kept "slow" for when Coalton is used on a slower CL implementation.


There's also Armstrong's Corollary: "All sufficiently complicated distributed systems contain ad hoc, informally-specified, bug-ridden, slow implementation of half of Erlang".

It remains to be seen how Coalton fares there :)


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: