{"data":{"items":[{"id":"7c2a7b27-b58f-4217-a5f4-eec24ea6bae0","excerpt":" — Sure.  I&#x27;m less of a language purist and more of an app &#x2F; infrastructure developer. [*]  I manage projects where I have to plan for how many engineers I will need to staff projects 1, 2, 5 and 10 years in the future.  I tend to work in a mature industries (with the exception where I worked for Mozilla and ","url":"https://news.ycombinator.com/item?id=46154135","role":"pain","weight":1.1218001,"occurredAt":"2025-12-04T22:36:23.000Z","sourceKey":"hackernews","sourceName":"Hacker News","credibility":0.7,"venue":"news","intent":"problem_report","painScore":0.42,"sentiment":-0.25,"confidence":0.79,"matchedPatterns":["i_need","missing_feature","still_cannot"],"statement":"You get a new, incompatible version of Python every year (yes, 3.X is MUCH, MUCH better than 2.X, but there&#x27;s still no guarantee there won&#x27;t be breaking changes.) You only get security updates for three (?) versions back.","title":null,"body":"Sure.  I&#x27;m less of a language purist and more of an app &#x2F; infrastructure developer. [*]  I manage projects where I have to plan for how many engineers I will need to staff projects 1, 2, 5 and 10 years in the future.  I tend to work in a mature industries (with the exception where I worked for Mozilla and Linden Lab.)  We have a vested interest in not throwing away our investment in the technical process.  For better or worse, that often means maintaining code-bases for more than a couple of decades.<p>If I compare the historical stability of C++ with Rust, I find Rust lacking.  As I mentioned before, I like the language, but I can&#x27;t recommend using it because of churn.  Python has the same problem.  There are features of the Python language I appreciate, but it doesn&#x27;t matter because, like Rust, I&#x27;m going to wait for a decade to see if there are breaking changes to the language.  If not, I&#x27;ll consider it.<p>I am not saying your baby is ugly.  I&#x27;m saying your baby is growing but I need a fully-grown thing right now.<p>Edit: I may have been less obvious about why using a language whose definition changes every several months is bad for code-bases that want a multi-decade lifetime.  Consider Python.  You get a new, incompatible version of Python every year (yes, 3.X is MUCH, MUCH better than 2.X, but there&#x27;s still no guarantee there won&#x27;t be breaking changes.)  You only get security updates for three (?) versions back.  3.9, which released in 2020 is currently unsupported.  Python purists will point out you can run Python 3.9 apps in a properly configured venv, but that&#x27;s not the point.  The point is I would like to use my application in an environment that is supported.  Not only supported by the &quot;official&quot; project, but also by third parties.  I unfortunately inherited a project where someone decided to stuff some Python 3.6 code in an AWS Lambda.  Had I not worked evenings and weekends to update the then-unsupported open-source software to 3.9, it would have broken when Amazon removed support for 3.6.<p>And yes, I understand I am describing a problem with a Python project and not a Rust project.  That&#x27;s because I haven&#x27;t used Rust for mission-critical projects because after dealing with the hassle of updating Python code every year, I don&#x27;t want to have to update the Rust code myself or try to find people skilled enough to understand that the version of Rust they learned is not the current version of Rust.<p>Go for a decade without breaking changes and then we&#x27;ll talk.<p>[*] Not exactly true, my inner pedant comes out when people talk about Lisp.","offTopic":true},{"id":"f5485381-3fb8-4df8-b1d9-d7b830e7eb5b","excerpt":" — &gt; Do you have concrete examples of large scale Java programs that are significantly more performant than comparable programs in native languages like C++?<p>Yes. I was working in a place that made large sensor-fusion applications, air-traffic control applications, and logistical planning, each in the 2-8MLOC rang","url":"https://news.ycombinator.com/item?id=48384437","role":"pain","weight":1.0597231,"occurredAt":"2026-06-03T14:16:03.000Z","sourceKey":"hackernews","sourceName":"Hacker News","credibility":0.7,"venue":"news","intent":"feature_request","painScore":0.57384616,"sentiment":-0.3846154,"confidence":0.67333335,"matchedPatterns":["frustrating","missing_feature"],"statement":"Lack of memory safety has, without a doubt, been one of the things that made low-level languages less palatable to ordinary applications, but it was far from the only one.","title":null,"body":"&gt; Do you have concrete examples of large scale Java programs that are significantly more performant than comparable programs in native languages like C++?<p>Yes. I was working in a place that made large sensor-fusion applications, air-traffic control applications, and logistical planning, each in the 2-8MLOC range. Over time, we ported all of them from C++ to Java because C++&#x27;s performance overheads were too annoying to work around.<p>Of course, in principle it&#x27;s always possible to match and perhaps even exceed Java&#x27;s performance in a low-level language, but in practice it becomes ever more difficult as the program grows (and the cost remains with maintenance forever). The reason is that as programs grow, patterns become less regular (e.g. the variance in object lifetimes grows), the need for concurrency grows (and so the need for sharing objects among threads and for lock free data structures), and more general constructs are used (e.g. more dynamic dispatch). Improvements in modern allocators, as well as LTO and PGO have helped, but not enough to match the extent of optimisations you can do once you&#x27;re free of the design constraints of low-level control and the focus on the worst case.<p>Java&#x27;s thesis (not initially, but from very early on) was to rely on optimisations that can&#x27;t be effectively employed by low-level languages because of their constraints, such as efficient memory management that benefits from being able to move most pointers in a program, and highly aggressive speculative optimisations (that are nondeterministic and can fail, resulting in deoptimisation). These optimisations tend to be global, and so they don&#x27;t restrict program structure much, keeping maintenance costs lower, but they do help the average case at the cost of harming the worst case, which is a tradeoff that programs written in low-level languages don&#x27;t want, and of course, it doesn&#x27;t give the low-level control that&#x27;s the entire point of low-level languages. Proving that thesis took a while, and longer in some aspects than others (moving collectors that don&#x27;t pause were first released to a wide audience three years ago).<p>Of course, the differences aren&#x27;t huge because the hot paths are typically small enough that they can be improved without adding too much cost (and hot paths require some manual optimisation in all languages), but gaining some performance as a side effect of significantly lowering costs is nice.<p>&gt; There are of course plenty of optimizations the JVM does that aren&#x27;t possible AOT, but that that doesn&#x27;t imply an automatic win at large scales, as Rust demonstrates.<p>I don&#x27;t know what it is that Rust demonstrates given how few large scale projects have chosen it, but I&#x27;ve seen nothing to indicate that it doesn&#x27;t suffer from the same performance issues as C++ compared to Java. In fact, someone I know who works at one of the world&#x27;s largest tech companies told me that his team lead really wanted to do something in Rust, so they ported a small-to-medium service from Java to Rust. The result was such a huge performance drop that it wouldn&#x27;t meet their minimum requirements. They were then forced to spend an additional 6 to 12 months carefully hand-optimising their Rust code until it matches Java&#x27;s performance, but the result is such that all future maintenance will be more expensive. This is the exact same pattern I&#x27;ve seen with C++.<p>It&#x27;s interesting that 20 years ago the people who said Java can&#x27;t beat C++ on performance were experienced low-level programmers who had little or no experience with Java (and they were also right on several axes at the time). Today the people who say that are those with little experience with low-level languages (and are under the impression that low level languages are universally fast), but they will eventually learn about their fundamental performance issues just as we did decades ago.<p>I think that Rust in particular has made people without much experience in low-level programming (among which Rust has made much more inroads than among those with a lot of experience in low-level programming) believe a certain story, namely that <i>the</i> problem with low level languages was memory safety and that that was the reason so many large programs switched to Java despite the performance sacrifices they had to make. Now that Rust fixes that problem, they can have their cake and eat it too! In reality, memory safety was indeed <i>one</i> of the several significant problems with low level languages that Java sought to fix, but another was the performance issues low level languages suffer from as they get large (making good performance ever more costly). The tradeoff isn&#x27;t performance (in large programs there might even be a performance gain) but low-level control, as <i>that</i> is what low-level languages are about. That was what they offered back then, and it&#x27;s still what they offer now. Rust was first designed twenty years ago, back when things still looked a certain way (which is why, IMO, it repeated most of C++&#x27;s design mistakes), but these days I think that a better, more modern design of low-level languages is more focused on control, leaving large programs to high-level languages. Lack of memory safety has, without a doubt, been one of the things that made low-level languages less palatable to &quot;ordinary&quot; applications, but it was far from the only one.<p>Anyway, I&#x27;m sure the debate of which is faster, C++ (&#x2F;Rust&#x2F;Zig) or Java, will continue, and frankly, due to the nature of modern hardware, compiler, and runtime optimisations these days (when the question of the cost of some individual operation is all but meaningless and out ability to extrapolate from the performance of one program to another is close to nil), it largely comes down to empirical questions such as which program patterns are more or less common in the field and in which domains, as there are code and workload patterns that could give an advantage to either one.","offTopic":false},{"id":"fd61622c-dd43-44b7-85db-4243c122f7ae","excerpt":" — &gt; I&#x27;d argue that the value of Rust is that it makes low-level viable for a lot of stuff that would otherwise require a lack of memory safety; a lot of it is stuff that might be written in a higher level language, but that&#x27;s just because relatively few programs are impossible to write in higher level lan","url":"https://news.ycombinator.com/item?id=49088793","role":"pain","weight":1.0426667,"occurredAt":"2026-07-28T19:32:50.000Z","sourceKey":"hackernews","sourceName":"Hacker News","credibility":0.7,"venue":"news","intent":"feature_request","painScore":0.7,"sentiment":-1,"confidence":0.61333334,"matchedPatterns":["wish","missing_feature"],"statement":"I&#x27;d argue that the value of Rust is that it makes low-level viable for a lot of stuff that would otherwise require a lack of memory safety; a lot of it is stuff that might be written in a higher level language, but that&#x27;s just be…","title":null,"body":"&gt; I&#x27;d argue that the value of Rust is that it makes low-level viable for a lot of stuff that would otherwise require a lack of memory safety; a lot of it is stuff that might be written in a higher level language, but that&#x27;s just because relatively few programs are impossible to write in higher level languages.<p>Maybe, but I don&#x27;t see making a low language viable for something it&#x27;s not needed as offering much value. Low-level languages are primarily designed to give you direct, low-level control over interaction with the hardware, they sacrifice other things for that goal (including performance [1]), and so if I don&#x27;t need that control I don&#x27;t use a low-level language. When I do need that control, I find that Rust requires reaching for unsafe too frequently while still paying the full price for the safety of things I don&#x27;t use (even Rust&#x27;s memory management of strings doesn&#x27;t give me the control I want; I have to work pretty hard for it).<p>&gt; The cost for memory safety in Java is performance overhead though,<p>It&#x27;s not performance (you often gain performance, especially in large programs). It&#x27;s warmup and footprint.<p>&gt; But that doesn&#x27;t change the fact that some languages objectively require you to opt into which parts are memory unsafe, and others don&#x27;t.<p>Like I said, C also fits in the category, so it&#x27;s not a meaningful distinction. The difference is in what you can do in the safe subset. Zig lets you do more things in a safe way than C (where the safe subset is effectively empty), Rust lets you do more safe things than Zig, and Java lets you do more safe things than Rust.<p>&gt; You mentioned finding the fact that they actually produce real world software that in practice do not suffer from the class of bugs that C&#x2F;C++ suffers from uninteresting<p>I didn&#x27;t say that that&#x27;s uninteresting; in fact Zig also eliminates spatial unsafety as well as Rust, and I think that&#x27;s good. I said that merely looking at broad statistics is uninteresting if you don&#x27;t consider the kinds of programs being written. I.e. Rust gives me safety mostly when I write code with the same level of low-level control as I have in Java, then that&#x27;s the part I find interesting.<p>&gt; You seem to be arguing that unless you can eliminate literally the most bugs of any language in existence, then eliminating any bugs by picking a language that eliminates some of them is a useless endeavor.<p>That&#x27;s the very thing I&#x27;m arguing <i>against</i>. I&#x27;m saying that different languages eliminate different bugs <i>at a cost</i> (again, Zig eliminates many memory safety bugs you&#x27;d find in C or even C++, arguably the most dangerous ones). What I&#x27;m saying is that what you get and whether the price is worth it depends both on the program you&#x27;re writing and on your personal preferences. Just to be clear, &quot;preferences&quot; doesn&#x27;t mean I care more or less about correctness, but which approaches to correctness I find more or less effective, something on which there is no consensus.<p>&gt; To me, the reasonable thing would be to choose a place to draw the line and say &quot;anything beyond this is too risky, but I&#x27;ll tolerate anything that&#x27;s at least this safe&quot;, and memory safety is in practice the place I think it makes sense to do.<p>I think it also depends on the kinds of programs you write, because for many programs I write (and for which I pick Java) Rust&#x27;s level of memory safety is too low, and for the programs I pick a low-level language I <i>wish</i> I could have some cheap memory safety, but it&#x27;s not offered to me. So in those cases I would prefer Zig&#x27;s spatial memory safety, as it&#x27;s no worse than Rust, and not pay the high price for Rust&#x27;s while getting little in return. Anyway, I&#x27;m saying that it&#x27;s both a matter of which approach you believe leads to better correctness <i>and</i> the kinds of programs you write in the language.<p>[1]: For example, the fact that in Java, references are not required to be stable machine pointers opens the door to some powerful optimisations that are not available to languages where pointers are required to be machine pointers (or something close enough to them). Or the fact that low-level languages require that the machine instructions executed are those present in the compiled image (or close enough), or, if you want, caring about worst-case performance at the expense of average case performance (although both C++ and Rust specifically don&#x27;t always make that easy) precludes some other very powerful optimisations. People like me who&#x27;ve spent years on huge C++ programs know that the low-level control offered by low-level languages (regardless of the question of safety) sometimes helps performance and sometimes harms it.","offTopic":false},{"id":"0d07513d-d781-4b7b-baba-e5241df0a323","excerpt":"An Introduction to Rust: What It Is, Why It Exists, and Why Developers Are Learning It — If you've spent most of your time with JavaScript, Python, Java or C#, Rust can feel like you've suddenly dropped down a level closer to the computer.\n\nThat's intentional.\n\nRust is a systems programming language designed around thr","url":"https://www.reddit.com/r/DaemonCore_Apps/comments/1vv2gwp/an_introduction_to_rust_what_it_is_why_it_exists/","role":"demand","weight":1.221632,"occurredAt":"2026-08-22T04:29:39.000Z","sourceKey":"reddit","sourceName":"Reddit","credibility":0.62,"venue":"DaemonCore_Apps","intent":"feature_request","painScore":0.5088889,"sentiment":-0.42222223,"confidence":0.8096236,"matchedPatterns":["wish","doesnt_work","switching_from"],"statement":"Ownership has moved from to .","title":"An Introduction to Rust: What It Is, Why It Exists, and Why Developers Are Learning It","body":"If you've spent most of your time with JavaScript, Python, Java or C#, Rust can feel like you've suddenly dropped down a level closer to the computer.\n\nThat's intentional.\n\nRust is a systems programming language designed around three things that don't always coexist nicely:\n\n**Performance, reliability and memory safety.**\n\nIt gives developers low-level control comparable to languages like C and C++, while trying to prevent many of the memory-related bugs that have historically made low-level programming dangerous.\n\nSo if you're wondering whether you should learn Rust, here's the introduction I wish more people received before jumping straight into ownership and the borrow checker.\n\n# What Is Rust?\n\nRust is a compiled, statically typed programming language.\n\nUnlike JavaScript or Python, Rust catches a huge number of problems during compilation before your program ever runs.\n\nYour basic Rust program looks like this:\n\n    fn main() {\n        println!(\"Hello from DaemonCore!\");\n    }\n    \n\nNothing scary yet.\n\nVariables are also straightforward:\n\n    fn main() {\n        let name = \"Thor\";\n        let years_coding = 16;\n    \n        println!(\"{} has been coding for {} years.\", name, years_coding);\n    }\n    \n\nOne thing you'll notice quickly is that variables are **immutable by default**.\n\nThis won't work:\n\n    let count = 1;\n    count = 2;\n    \n\nYou explicitly make something mutable:\n\n    let mut count = 1;\n    count = 2;\n    \n\nThat might seem like a tiny detail, but it tells you something important about Rust's philosophy.\n\nRust wants you to be explicit about what your program is allowed to do.\n\n# Rust Has Types — And Takes Them Seriously\n\nHere's a simple function:\n\n    fn add(a: i32, b: i32) -> i32 {\n        a + b\n    }\n    \n    fn main() {\n        let result = add(10, 20);\n    \n        println!(\"{}\", result);\n    }\n    \n\n`i32` means a signed 32-bit integer.\n\nThe `-> i32` tells Rust that the function returns an `i32`.\n\nAlso notice this:\n\n    a + b\n    \n\nThere's no semicolon.\n\nIn Rust, the final expression of a function can become its return value.\n\nYou could explicitly write:\n\n    return a + b;\n    \n\nBut the expression style is extremely common in Rust.\n\n# Strings Get More Interesting\n\nRust has both `&str` and `String`, and understanding the difference eventually becomes important.\n\nFor now, think of this:\n\n    let name = \"DaemonCore\";\n    \n\nas a string slice.\n\nAnd this:\n\n    let name = String::from(\"DaemonCore\");\n    \n\nas an owned, growable string.\n\nWe can modify the second one:\n\n    let mut name = String::from(\"Daemon\");\n    \n    name.push_str(\"Core\");\n    \n    println!(\"{}\", name);\n    \n\nAnd this is where we're approaching the concept that makes Rust famous.\n\n# Ownership\n\nRust doesn't use a traditional garbage collector to manage memory.\n\nInstead, it has an **ownership system** enforced by the compiler.\n\nConsider:\n\n    let company = String::from(\"DaemonCore\");\n    \n    let another = company;\n    \n\nYou might assume both variables now independently contain the same `String`.\n\nThey don't.\n\nOwnership has moved from `company` to `another`.\n\nTrying to use `company` afterward causes a compiler error.\n\nWhy?\n\nBecause Rust is keeping track of who owns the underlying resource.\n\nIf you actually want independent data, you can explicitly clone it:\n\n    let company = String::from(\"DaemonCore\");\n    \n    let another = company.clone();\n    \n    println!(\"{}\", company);\n    println!(\"{}\", another);\n    \n\nBut cloning isn't something you should blindly use every time the compiler complains.\n\nRust is trying to teach you something about how your data moves through the application.\n\n# Borrowing\n\nSometimes a function doesn't need to own your data.\n\nIt just needs to look at it.\n\nThat's where references come in:\n\n    fn print_company(company: &String) {\n        println!(\"{}\", company);\n    }\n    \n    fn main() {\n        let company = String::from(\"DaemonCore\");\n    \n        print_company(&company);\n    \n        println!(\"{}\", company);\n    }\n    \n\nWe're **borrowing** the value rather than transferring ownership.\n\nThat `&` becomes extremely important in Rust.\n\nYou'll eventually deal with shared references, mutable references and lifetimes.\n\nThat's also when you'll meet Rust's infamous **borrow checker**.\n\n# Structs\n\nRust also lets us create our own data structures.\n\n    struct Project {\n        name: String,\n        active: bool,\n    }\n    \n    fn main() {\n        let project = Project {\n            name: String::from(\"DaemonCore\"),\n            active: true,\n        };\n    \n        println!(\"{}\", project.name);\n    }\n    \n\nIf you're coming from TypeScript, C#, Java or Kotlin, the basic idea should feel familiar.\n\nRust also has `impl` blocks for attaching functionality:\n\n    struct Project {\n        name: String,\n    }\n    \n    impl Project {\n        fn describe(&self) {\n            println!(\"Project: {}\", self.name);\n        }\n    }\n    \n    fn main() {\n        let project = Project {\n            name: String::from(\"DaemonCore\"),\n        };\n    \n        project.describe();\n    }\n    \n\nNow we're starting to build actual software instead of playing with variables.\n\n# Rust's Error Handling Is Worth Learning\n\nRust doesn't encourage you to casually throw exceptions everywhere.\n\nYou'll constantly encounter types such as:\n\n    Option<T>\n    \n\nand:\n\n    Result<T, E>\n    \n\n`Option` represents something that may or may not exist.\n\nFor example:\n\n    fn find_user(id: u32) -> Option<String> {\n        if id == 1 {\n            Some(String::from(\"Thor\"))\n        } else {\n            None\n        }\n    }\n    \n\nNow the possibility of \"no user exists\" is represented directly in the type system.\n\n`Result` represents success or failure:\n\n    fn connect() -> Result<String, String> {\n        Ok(String::from(\"Connected\"))\n    }\n    \n\nThis forces you to think about failure as part of your program's design instead of pretending everything will work and dealing with the explosion afterward.\n\n# What Do People Actually Build With Rust?\n\nRust makes the most sense when **performance, safety, concurrency or resource efficiency** matter.\n\nIt's particularly attractive for systems software, networking tools, command-line applications, infrastructure, high-performance backend services, embedded software and other performance-sensitive applications.\n\nYou *can* build web applications with Rust.\n\nYou *can* create APIs with Rust.\n\nYou can even compile Rust to WebAssembly.\n\nBut that doesn't mean you should replace JavaScript with Rust every time you need a contact form.\n\nUse the right tool for the job.\n\n# Rust vs C++\n\nThis is where Rust becomes especially interesting.\n\nC++ gives developers enormous control and performance, but that freedom also makes certain categories of memory mistakes possible.\n\nRust attempts to retain much of that performance and control while moving many safety checks into the compiler.\n\nThe tradeoff?\n\n**The compiler becomes extremely demanding.**\n\nYou'll write code that looks perfectly reasonable.\n\nRust will reject it.\n\nYou'll change it.\n\nRust will reject that too.\n\nYou'll spend 30 minutes reading about borrowing.\n\nThen suddenly you'll realize:\n\n\"Oh. The compiler is right.\"\n\nThat's basically the Rust initiation ceremony.\n\n# Should a Beginner Learn Rust?\n\nYes — **but understand why you're learning it.**\n\nIf your immediate goal is getting into frontend web development, I'd probably learn JavaScript/TypeScript first.\n\nIf you want AI and data science, Python probably gives you a faster path.\n\nIf you're interested in systems programming, performance, memory management, networking, infrastructure or simply understanding computers at a deeper level, Rust becomes extremely interesting.\n\nAnd if you already know another programming language?\n\nI'd absolutely recommend spending some time with Rust.\n\nNot necessarily because Rust will replace everything else you use.\n\nIt's because Rust forces you to confront concepts that other languages often hide from you.\n\nDon't approach Rust thinking:\n\n**\"How quickly can I memorize the syntax?\"**\n\nApproach it thinking:\n\n**\"I want to understand why the compiler is stopping me.\"**\n\nOnce ownership, borrowing and lifetimes start clicking, Rust stops looking like an unnecessarily difficult language.\n\nYou start realizing that the compiler is forcing you to answer questions your other languages were often answering for you.\n\nThat's when Rust gets really interesting.\n\n— **Thor Ochsen**  \n**DaemonCore**\n\n[**https://DaemonCore.app**](https://DaemonCore.app)\n\n","offTopic":true},{"id":"c361e3d8-632e-418f-a12e-380ed3bedfc8","excerpt":" — &gt; Cost is a useful metric because it reflects a number of relevant things: Time to develop, effort to maintain - yes, but also people turnover, required expertise levels, satisfaction, and so on. Whether or not you like it, you have to care about cost if you want to make rational decisions. I&#x27;m not talking a","url":"https://news.ycombinator.com/item?id=45539843","role":"request","weight":0.94633335,"occurredAt":"2025-10-10T15:00:47.000Z","sourceKey":"hackernews","sourceName":"Hacker News","credibility":0.7,"venue":"news","intent":"feature_request","painScore":0.36,"sentiment":0.4025974,"confidence":0.6958333,"matchedPatterns":["missing_feature","urgent"],"statement":"You are missing the cost to switch and that&#x27;s a massive one and the one that I think most parties are using to decide whether or not to stick with what they know or to try something that is new to them.","title":null,"body":"&gt; Cost is a useful metric because it reflects a number of relevant things: Time to develop, effort to maintain - yes, but also people turnover, required expertise levels, satisfaction, and so on. Whether or not you like it, you have to care about cost if you want to make rational decisions. I&#x27;m not talking about assigning a Euro&#x2F;Dollar&#x2F;Yuan value to each hour spent on a project, but you need a rough idea about the size of the time and energy investment you are making when starting a project.<p>You are missing the cost to switch and that&#x27;s a massive one and the one that I think most parties are using to decide whether or not to stick with what they know or to try something that is new to them. If you have a team of 50 embedded C++ developers and a deadline &#x27;let&#x27;s use rust&#x27; is a gamble very few managers will make.<p>&gt; Things have changed for three important reasons: (1) C&#x2F;C++ compilers have evolved, and UB is significantly more catastrophic than it was in the 90s and early 00s.<p>That depends on what industry you are looking at. For instance, in aviation the cost of undefined behavior, crashing software or wrong calculations was always that high. The difference is that in that industry (and a handful of others) there is enough budget to do it right resulting in far fewer in production issues than what we have come to accept in the &#x27;always online, auto-update&#x27; world. That whole attitude is as much or more to blame for this than any particular language.<p>&gt; (2) As societies digitize, the stakes are higher than even - leaking personal data has huge legal and moral consequences, and system outages can have business-killing financial consequences.<p>Show me the names of the businesses that have died because of data leaks or UB. See, the problem is that for those businesses it usually is just a speedbump. They don&#x27;t care and no matter what the size of the breach the consequences are usually minor.<p>The employee sticking a USB drive found on the street into their laptop causing a cryptolocker incident is a much more concrete problem.<p>&gt; (3) There are actual, viable alternatives - GC is no longer a requirement for memory safety.<p>GC is a convenience, and if you&#x27;re going to switch languages you might as well pick one that is is more convenient. Java for instance is suitable now for 90% or so of the use cases where C or C++ would be your only option 15 years ago.<p>&gt; Perhaps you didn&#x27;t mean to say so, but Rust is not a managed language (that&#x27;s a .NET term referring to C#, F#, etc.).<p>I know, but Java, Lisp and so on <i>are</i> managed languages, and they offer both safety <i>and</i> convenience. Rust only offers safety, other than that it is only marginally more convenient than C and some would argue less so.<p>&gt; Me and other Rust users are obviously trying to convince even more people to use the language, and that&#x27;s because we are having a great time over here.<p>Show, don&#x27;t tell.<p>&gt; It&#x27;s a very pleasant language with a pleasant community and a high level of technical expertise, and it allows me to get significantly closer to living up to my own ideals.<p>Yes, but those are <i>your</i> ideals, which don&#x27;t necessarily overlap with mine. I don&#x27;t particularly care about one programming language or another, I&#x27;ve learned enough of them by now to know that <i>all</i> of them have their limitations, their warts, their good bits and their bad bits. I also know that the size of the eco-system is a large function in whether or not I&#x27;ll be able to get through the day in a productive way.<p>&gt; I&#x27;m not making a moral argument here, trying to say that you or anyone is a bad person for not using Rust, but I am making a moral argument saying that denying the huge cost and risk associated with developing software in C and C++ is bullshit.<p>See, your use of the word &#x27;bullshit&#x27; triggers me in a way that you probably do not intend, but it is exactly that attitude that turns me off the language that you would like me to switch to. I don&#x27;t particularly see that huge cost and risk as applied to myself because I&#x27;m not currently writing code that is going to be part of some network service. If I see an embedded shop doing their work in Rust then I&#x27;m happy because I can ignore at least one small aspect of the source of bugs in such software. But there are plenty remaining and Rust - no matter what you think - is not a silver bullet for all of the things that can go wrong with low level software. There are other, better alternatives for most of those applications, I&#x27;d be more inclined to use Java or Erlang if those are available, and Go if they are not. The speed at which I can develop software is a massive factor in that whole &#x27;cost&#x27; evaluation for me.<p>&gt; The point here is that, until Rust came along, you had the choice between wildly risky (but fast) C and C++ code, or completely safe (but slow) garbage collected languages with heavy runtimes and significant deployment challenges.<p>That just isn&#x27;t true. There are more languages besides Rust that allow for low level and fast work. Go for instance is an excellent contender. And for long running processes Java is excellent, it is approaching C levels of throughput and excels at networked services.<p>&gt; C is certainly not &quot;the enemy&quot; - I never said that, and I wouldn&#x27;t. But that old world is gone.<p>Sorry, but this is not a realistic stance. That old world is not gone, and it is likely here to stay for many more decades. There is so much inertia here in terms of invested capital that you can&#x27;t just make declarations like these and expect to be taken serious.<p>&gt; The excuse of picking risky, problem-riddled languages that we know are associated with extreme costs for reasons of performance no longer has any technical merit. There can be other reasons, but this isn&#x27;t it.<p>Do you realize that this is just your opinion and not a statement of fact?<p>&gt; It&#x27;s insane to me that anyone would limit themselves to a single language.<p>&#x27;Insane&#x27; is another very loaded word. Is this really the kind of language you want to be using while advocating for Rust? There are many programmers that learn one eco system well enough to carve out a career for themselves, and I&#x27;m not going to be the one to judge them for that. I&#x27;m not one of them, but I can see how it happens and I would definitely not label everybody that&#x27;s not a polyglot as not entirely right in the head.<p>&gt; Every competent programmer I know knows at least a handful.<p>I know some <i>very</i> competent programmers that only know one. But they know that one better than I know any of the ones that I&#x27;m familiar with. For instance, I know a guy that decided early on that if nobody wants to work on COBOL projects that that is exactly what he&#x27;s going to do: become a world class expert in COBOL to help maintain all that old stuff. At a price. He&#x27;s making very good money with that, far more than he&#x27;d have ever made by going with something more popular. I know plenty of Java only programmers and a couple that have decided that python is all they need. That&#x27;s <i>their right</i> and it isn&#x27;t up to me to look down on them or call them incompetent because they can do something that I apparently can&#x27;t: focus, and get really good at one thing.<p>&gt; Why are we worried about this? I&#x27;m a decent C programmer, and a very good C++ programmer - better at both because I&#x27;m also fairly good at Rust.<p>I would not label myself as &#x27;very good&#x27; in any language, I always hope to get better and in spite of doing this for 4+ decades I have never felt that I was &#x27;good enough&#x27;.<p>&gt; &quot;P[sic]obody&#x27;s nerfect.&quot; I&#x27;m sorry, I really dislike this attitude.<p>Again, why the antagonism. We have many different classes of issues, and depending on the context some of them may not be a problem at all. I&#x27;ve built stuff in <i>JavaScript</i> because it was the most suitable for the job. But I stay the hell away from node and anything associated with it because I don&#x27;t consider myself qualified to audit all of the code that could be pulled in through a dependency. And that&#x27;s a good chunk of this: just know your limitations, and realize that not just &#x27;nobody&#x27;s perfect&#x27; but also that <i>you yourself</i> are not perfect and more than likely to mess up when you go into territory that is unfamiliar to you.<p>&gt; We can&#x27;t let the fact that security is hard, or that perfection is unattainable, be an excuse to deliver more crap.<p>Ok. So now you are labeling what other people produce as &#x27;crap&#x27;. This isn&#x27;t helping.<p>&gt; Again, that&#x27;s not my argument. My argument is that you should be honest about what the actual costs, or alternatively the actual quality.<p>So I&#x27;m not honest. If you are wondering what I meant when I wrote earlier that it is the attitude of some of the Rust advocates that turns me off then here in this thread you have a very nice example of that. All of this pontification and emotionally laden language serves nobody, least of all Rust.<p>If you want to win people over try the following:<p>- refrain from insulting your target audience<p>- respect the fact that your opinions are just that<p>- understand that there may be factors outside of your view that are part of the decision making process<p>- understand that you may not have a complete understanding of the problem domain or the restrictions involved (is a variation on the previous one)<p>- try to not use emotional language to make your point<p>- showing beats telling any day of the week","offTopic":true},{"id":"ad8a9688-c874-4637-af16-1d7c3a6962d6","excerpt":" — &gt; It&#x27;s not performance (you often gain performance, especially in large programs). It&#x27;s warmup and footprint.<p>To me, those are also performance characteristics. Maybe my view on what constitutes &quot;performance&quot; is broader than average here.<p>&gt; When I do need that control, I find that Rust ","url":"https://news.ycombinator.com/item?id=49089299","role":"pain","weight":0.87413335,"occurredAt":"2026-07-28T20:13:25.000Z","sourceKey":"hackernews","sourceName":"Hacker News","credibility":0.7,"venue":"news","intent":"feature_request","painScore":0.76,"sentiment":-1,"confidence":0.49666667,"matchedPatterns":["missing_feature"],"statement":"I don&#x27;t know of a way to turn off undefined behavior by default in C and only opt into it in discrete segements of the code, but maybe I&#x27;m missing something.","title":null,"body":"&gt; It&#x27;s not performance (you often gain performance, especially in large programs). It&#x27;s warmup and footprint.<p>To me, those are also performance characteristics. Maybe my view on what constitutes &quot;performance&quot; is broader than average here.<p>&gt; When I do need that control, I find that Rust requires reaching for unsafe too frequently while still paying the full price for the safety of things I don&#x27;t use (even Rust&#x27;s memory management of strings doesn&#x27;t give me the control I want; I have to work pretty hard for it).<p>Fair enough, I can&#x27;t tell you that you don&#x27;t have that experience when writing Rust. It&#x27;s pretty different from mine though, and the experience of the large number of former C&#x2F;C++ devs I&#x27;ve worked with after they learned Rust; the only people I&#x27;ve talked to with that experience didn&#x27;t really try to learn Rust and went in hoping that it wouldn&#x27;t work for them, which informs my perception here, but I recognize that individual experiences won&#x27;t always fit into larger trends.<p>&gt; Like I said, C also fits in the category, so it&#x27;s not a meaningful distinction. The difference is in what you can do in the safe subset. Zig lets you do more things in a safe way than C (where the safe subset is effectively empty), Rust lets you do more safe things than Zig, and Java lets you do more safe things than Rust.<p>I don&#x27;t think I understand what you&#x27;re saying here. I don&#x27;t know of a way to turn off undefined behavior by default in C and only opt into it in discrete segements of the code, but maybe I&#x27;m missing something.<p>&gt; That&#x27;s the very thing I&#x27;m arguing against. I&#x27;m saying that different languages eliminate different bugs at a cost (again, Zig eliminates many memory safety bugs you&#x27;d find in C or even C++, arguably the most dangerous ones). What I&#x27;m saying is that what you get and whether the price is worth it depends both on the program you&#x27;re writing and on your personal preferences. Just to be clear, &quot;preferences&quot; doesn&#x27;t mean I care more or less about correctness, but which approaches to correctness I find more or less effective, something on which there is no consensus.<p>It seems like you&#x27;re arguing against the idea of memory safety as a category at all then. To me, &quot;I can&#x27;t write code that&#x27;s memory unsafe without explicitly opting into it&quot; seems like an objective statement, and it&#x27;s objectively different than &quot;I can&#x27;t write certain types of memory safety bugs in a given language&quot;. I don&#x27;t really understand what&#x27;s useful about being able to write memory unsafe code without having to opt in when in practice the number of bugs from mistaken memory safety are overwhelmingly more common than the cases when you&#x27;re forced to opt into unsafe because Rust forced you to work around the constraints, and even in low-level programs, the actual number of truly unsafe operations you need to do tend to be fairly low in my experience. I guess I can&#x27;t say for certain that you don&#x27;t truly need to do things that you&#x27;re forced to write unsafe for too often, but to me, it seems like you&#x27;re refusing to pay a pretty small price for mostly ideological purity rather than pragmatism.<p>&gt; I think it also depends on the kinds of programs you write, because for many programs I write (and for which I pick Java) Rust&#x27;s level of memory safety is too low<p>&gt; [1]: For example, the fact that in Java, references are not required to be stable machine pointers opens the door to some powerful optimisations that are not available to languages where pointers are required to be machine pointers (or something close enough to them). Or the fact that low-level languages require that the machine instructions executed are those present in the compiled image (or close enough), or, if you want, caring about worst-case performance at the expense of average case performance (although both C++ and Rust specifically don&#x27;t always make that easy) precludes some other very powerful optimisations.<p>I&#x27;m struggling to imagine what the circumstances are where these are genuine concerns rather than theoretical or premature optimizations. What are some examples of programs where you&#x27;d get better characteristics running them if they were written in Java rather than Rust due to the lack of enough &quot;memory safety&quot; in Rust?","offTopic":true},{"id":"a650692c-1b3a-4042-bf0c-4e4c8c5f0c16","excerpt":" — Well, what&#x27;s the alternative?<p>It is basic knowledge that memory safety bugs are a <i>significant</i> source of vulnerabilities, and by now it well-established that the first developer who can avoid C without introducing memory safety bugs hasn&#x27;t been born yet. In other words: if you care about security <","url":"https://news.ycombinator.com/item?id=46048917","role":"pain","weight":0.8608091,"occurredAt":"2025-11-25T18:24:43.000Z","sourceKey":"hackernews","sourceName":"Hacker News","credibility":0.7,"venue":"news","intent":"problem_report","painScore":0.54636365,"sentiment":-0.09090909,"confidence":0.5566667,"matchedPatterns":["terrible"],"statement":"The main argument isn&#x27;t Rust is good , but C is terrible .","title":null,"body":"Well, what&#x27;s the alternative?<p>It is basic knowledge that memory safety bugs are a <i>significant</i> source of vulnerabilities, and by now it well-established that the first developer who can avoid C without introducing memory safety bugs hasn&#x27;t been born yet. In other words: if you care about security <i>at all</i>, continuing with the status quo isn&#x27;t an option.<p>The C ecosystem has tried to solve the problem with a variety of additional tooling. This has helped a bit, but didn&#x27;t solve the underlying problem. The C community has demonstrated that it is both unwilling and unable to evolve C into a memory-safe language. This means that writing additional C code is a Really Bad Idea.<p>Software has to be maintained. Decade-old battle-tested codebases aren&#x27;t <i>static</i>: they will inevitably require changes, and making changes means writing additional code. This means that your battle-tested C codebase will inevitably see changes, which means it will inevitably see the introduction of new memory safety bugs.<p>Google&#x27;s position is that we should simply stop writing new code in C: you avoid the high cost and real risk of a rewrite, and you also stop the neverending flow memory safety bugs. This approach works well for large and modular projects, but doing the same in coreutils is a completely different story.<p>Replacing battle-tested code with fresh code has genuine risks, there&#x27;s no way around that. The real question is: are we willing to accept those short-term risks for long-term benefits?<p>And mind you, <i>none</i> of this is Rust-specific. If your application doesn&#x27;t <i>need</i> the benefits of C, rewriting it in Python or Typescript or C# might make even more sense than rewriting it in Rust. The main argument isn&#x27;t &quot;Rust is good&quot;, but &quot;C is terrible&quot;.","offTopic":false},{"id":"f0977b06-3482-4c5e-9b00-0795d886efa3","excerpt":" — &gt; Should Curl have a slower startup time? Probably not.<p>Of course, but I don&#x27;t think anyone would consider curl to be of little consequence. There are many small programs that are very important, but <i>in general</i> more value is in larger programs, and I don&#x27;t think it&#x27;s hard to see that. A la","url":"https://news.ycombinator.com/item?id=47973901","role":"pain","weight":0.85716665,"occurredAt":"2026-05-01T12:13:58.000Z","sourceKey":"hackernews","sourceName":"Hacker News","credibility":0.7,"venue":"news","intent":"problem_report","painScore":0.48,"sentiment":0.09677419,"confidence":0.57916665,"matchedPatterns":["frustrating"],"statement":"It&#x27;s not surprising people are growing frustrated.","title":null,"body":"&gt; Should Curl have a slower startup time? Probably not.<p>Of course, but I don&#x27;t think anyone would consider curl to be of little consequence. There are many small programs that are very important, but <i>in general</i> more value is in larger programs, and I don&#x27;t think it&#x27;s hard to see that. A large program costs tens of millions of dollars per year. Companies don&#x27;t pay that unless the software more than pays for itself. When it comes to small programs, because they&#x27;re small, competition is also easier. Five different people may identify the same small problem to solve with five different programs. One may end up being consequential, and the rest won&#x27;t be.<p>&gt; One key detail of desktop apps is every performance compromise is multiplied across all your users. It doesn&#x27;t make much business sense to spend hundreds of dev hours to spare your server 4gb of RAM. But it has a much bigger impact across a growing number of users.<p>Yes, and I don&#x27;t want to appear as if I claim that, say, Electron isn&#x27;t a problem. It&#x27;s just that I&#x27;m not <i>sure</i> it&#x27;s a problem, and I&#x27;m trying to say that things are more complicated. <i>If</i> there is a problem, of course it affects many people, but I&#x27;m not sure there actually is one. My point about RAM isn&#x27;t that it&#x27;s no big deal if you waste it, but that using a lot of it might not be waste at all (in other words, that the RAM you&#x27;re using is effectively free, as it cannot be used for anything else).  So if an Electron program uses 6GB of RAM, and 4 of them are a waste - even if 2 of them are a waste - that&#x27;s a problem. But even if you can write such a program that only uses 1GB, that doesn&#x27;t mean that the other 5 are a waste at all. Using less RAM isn&#x27;t necessarily more efficient if the RAM you saved can&#x27;t be put to good use.<p>I&#x27;m also making a separate claim that even if some of that RAM is a waste, it could be offset by a lower cost of development, but these are two different claim.<p>In short, what I&#x27;m saying is that it&#x27;s complicated.<p>&gt; The problem is when everyone does that. If the expectation becomes &quot;everyone has a lot of RAM so just use Electron&quot;, then where does that end? Now we need more RAM, even as it gets more expensive, to run apps that are not particularly novel.<p>It&#x27;s not so simple! First, we need more RAM because we have more compute. To some degree it&#x27;s like ink and paper. You can&#x27;t enjoy more ink unless you also have more paper. Second, because <i>some</i> RAM can be converted to CPU (through moving collectors or arenas) the overall cost of running some computation can be lower if you buy more RAM. Third, once you already have that RAM, how much of a problem is it if some silly program uses a lot of it? The Electron apps I&#x27;ve seen have little problem being paged out to SSD, and they page in fast (paging in even 5GB takes about 2s, and you usually don&#x27;t need to page in so much at once).<p>&gt; It&#x27;s not surprising people are growing frustrated. Dev Velocity is not a vanity metric, but it&#x27;s not inherently moralistic either. Sure, a company could &quot;scale&quot; faster replacing all of their support staff with an AI chatbot, but that doesn&#x27;t mean I have to like it.<p>Who is growing frustrated? Hackers on HN? If there&#x27;s actual demand, and if the economics really support the claim that it could and should be done, then alternative products will have a competitive advantage. I&#x27;m always dubious when people make claims that seem to me to run counter to how the market behaves. That doesn&#x27;t necessarily mean they&#x27;re wrong, but it is a significant point against the claim. If a lot of people think they&#x27;re paying to much for what they&#x27;re getting and it&#x27;s possible to pay less, such a product offering would be a huge success.<p>&gt; I use it for Work, and they develop a lot of stuff we simply don&#x27;t use.<p>Serious question: What would you be using the RAM Slack consumes for while at work?<p>If you could use that RAM for something more productive or if it meant your work machine could be significantly cheaper, then that&#x27;s a very good argument. But if it&#x27;s just about not liking to see a large number of something your boss has already paid for when a smaller number could do, even though they don&#x27;t really make smaller hardware, then that could explain why there isn&#x27;t a real pressure to do things differently.<p>&gt; I literally just need it to send text.<p>Let&#x27;s say the job could be done in 500KB and that Slack uses 5GB. But you already paid for 8 or 16 GB of RAM. Unless you could use that 5GB for something better while you&#x27;re sending the text, why do you care that the number goes up? It doesn&#x27;t cost you anything.<p>&gt; In the case of VSCode, from what I understand, they have to spend a lot of dev time anyway to make Electron work for them. I don&#x27;t think the value add is as cut and dry when your product needs to run fast.<p>I have no idea why VSCode chose Electron and whether it&#x27;s a good or bad decision (I don&#x27;t know how much it played a role, but I think that the ability to write plugins in JS&#x2F;TS helps them, as there are so many JS&#x2F;TS developers), but it doesn&#x27;t bother me because the performance is good enough and it doesn&#x27;t seem to hinder my use of my machine for anything else I run. If at some point it starts bothering me, I&#x27;ll look for leaner alternatives.","offTopic":true},{"id":"42157cc9-ed31-46df-9f0b-240a55d861a8","excerpt":" — &gt; I propose that we start taking the appropriate amount of professional responsibility.<p>I agree. For me that means: software <i>engineering</i> should start taking the same attitude to writing software that structural engineers bring to the table when they talk about bridges, buildings and other structures that","url":"https://news.ycombinator.com/item?id=45538112","role":"demand","weight":0.73554164,"occurredAt":"2025-10-10T12:18:09.000Z","sourceKey":"hackernews","sourceName":"Hacker News","credibility":0.7,"venue":"news","intent":"alternative_search","painScore":0.27,"sentiment":0.125,"confidence":0.57916665,"matchedPatterns":["alternative_to"],"statement":"And then I really couldn&#x27;t care what language was picked, in the rust world that translates into &#x27;anything but C&#x27; because that is perceived to be the enemy somehow, which is strange because there are many alternatives to rus…","title":null,"body":"&gt; I propose that we start taking the appropriate amount of professional responsibility.<p>I agree. For me that means: software <i>engineering</i> should start taking the same attitude to writing software that structural engineers bring to the table when they talk about bridges, buildings and other structures that will have people&#x27;s lives depending on them. I&#x27;m not sure how we&#x27;re going to make rings out of bits but we need to realize - continuously - that the price of failure is often paid in blood, or in the best case with financial loss and usually not by us. And in turn we should be enabled to impose that same ethic on management, because more often than not that&#x27;s the root cause of the problem.<p>&gt; That includes being honest about the actual costs of software when you don’t YOLO the details.<p>Does that include development cost?<p>Maintenance costs?<p>Or just secondary costs?<p>Why the focus on costs?<p>&gt; Zero UB is table stakes now - it didn’t use to be, but we don’t live in that world anymore.<p>This is because &#x27;Rust and C# exist&#x27;? Or is it because Java, Erlang, Visual Basic, Lisp etc exist?<p>&gt; It’s totally fine to use C or whatever language for it, but you are absolutely kidding yourself if you think the cost is less than at least an order of magnitude higher than the equivalent code written in Rust, C#, or any other language that helps you avoid these bugs.<p>We were talking about responsibility first, and that goes well beyond just measuring &#x27;cost&#x27;. The mistake in bringing cost into it is that cost is a business concept that is used to justify picking a particular technology over another. And just like security is an expense that doesn&#x27;t show anything on the balance sheet if it works besides that it cost money the same goes for picking a programming language eco-system.<p>So I think focusing on cost is a mistake. That just allows the bookkeeper to make the call and that call will often be the wrong one.<p>&gt; Rust even lets you get there at zero performance cost, so we’re down to petty squabbles about syntax or culture - not serious.<p>The debate goes a lot further than that. You have millions of people that are writing software every day that are not familiar with Rust. To get them to pick a managed language over what they are used to is going to take a lot of convincing.<p>It starts of with ethics, and I don&#x27;t think it should start off with picking a favorite language. You educate, show by example and you deliver at or below the same cost that those other eco-systems do and then you slowly eat the world because your projects are delivered on-time, with provably lower real world defects and hopefully at a lower cost.<p>And then I really couldn&#x27;t care what language was picked, in the rust world that translates into &#x27;anything but C&#x27; because that is perceived to be the enemy somehow, which is strange because there are many alternatives to rust that are perfectly suitable, have much higher mind share already.<p>C is - even today - at 10x the popularity that rust is, it will take a massive amount of resources to switch those people over, and likely it will take more than one generation. In the meantime all of the C code in the world will have to be maintained, which means there is massive job security for people learning C. For people learning rust to the exclusion of learning C that situation is far worse. This needs to be solved.<p>These are not &#x27;petty squabbles&#x27; about syntax or culture. They are the harsh reality of the software development world at large, which has seen massive projects deployed at scale developed with those really bad languages full of undefined behavior (well, that&#x27;s at least one thing that Assembly Language has going for it, as long as the CPU does what it says in the book undefined behavior doesn&#x27;t exist). People are going to point at that and say &#x27;good enough&#x27;. And they see all those memory overflows, CVEs etc as a given, and they realize that in spite of all of those the main vector for security issues is people, and configuration mistakes not so much the software itself.<p>This is not ideal, obviously, but C, like any bad habit, is very hard to dislodge if your main argument is &#x27;you should drop this tool because mine is better&#x27;. Then you need to <i>show</i> that your tool is better, so much better that it negates the cost to switch. And that&#x27;s a very tall order, for any programming language, much more so for one that is struggling for adoption in the first place.","offTopic":true},{"id":"067612b0-ac4e-4866-a790-26a30b6b59ba","excerpt":" — I feel like this has been a great discussion but all the good technical talk is tapering off. There&#x27;s more rhetorical semantics now than anything. But I appreciate you teaching me. I&#x27;m a bit tired in this reply.\nI wish I could find you a few reports from people on here basically renouncing Java because the","url":"https://news.ycombinator.com/item?id=47953521","role":"request","weight":0.71816665,"occurredAt":"2026-04-29T19:48:17.000Z","sourceKey":"hackernews","sourceName":"Hacker News","credibility":0.7,"venue":"news","intent":"feature_request","painScore":0.24,"sentiment":0.25,"confidence":0.57916665,"matchedPatterns":["wish"],"statement":"I wish I could find you a few reports from people on here basically renouncing Java because they could not optimize it any further after 20 years programming in it, and moving to Rust.","title":null,"body":"I feel like this has been a great discussion but all the good technical talk is tapering off. There&#x27;s more rhetorical semantics now than anything. But I appreciate you teaching me. I&#x27;m a bit tired in this reply.\nI wish I could find you a few reports from people on here basically renouncing Java because they could not optimize it any further after 20 years programming in it, and moving to Rust. I&#x27;d be curious what you&#x27;d think.<p>&gt; You say &quot;dev experience&quot; as if it&#x27;s some quality-of-life thing. They traded off a cheap resource, RAM, for an eternal maintenance and evolution cost that would only grow higher as the program grows\nNo, I say dev experience because I brought it up earlier, and staked my claim on it. Because it&#x27;s an umbrella term that covers nice-to-haves and how ergonomic the language and ecosystem are. The antithesis would be lots of repetitive plumbing that slows down feature release. It&#x27;s one part of the triangle. They now are shipping way behind but wound up with a product that is just as fast and uses less RAM.<p>... and will cost much more to evolve, costs will never drop and may well rise. These costs are higher than the RAM they saved, which was free anyway, because it couldn&#x27;t be used for anything else.<p>&gt; That kind of decision can matter to other projects. Smaller projects likely wouldn&#x27;t have such a slow turnaround.\nAgain, we&#x27;re not advocating for everyone to do rewrites. Threads like this are people begging app developers to stop using stuff not appropriate for desktop apps.<p>The people begging are sometimes right and sometimes really wrong. They are sensitive to certain things but don&#x27;t consider the full picture.<p>&gt; I said that low-level languages can offer good performance in small programs, but many desktop apps aren&#x27;t small. Claude Code&#x27;s CLI is over<p>&gt; Couldn&#x27;t tell you why that tool needs to use that much, but most desktop apps don&#x27;t. They are built on vendor code and keep the actual app code small, and that makes them excellent candidates for what we&#x27;re talking about.<p>VS Code is something like 5MLOC. Slack is probably around a million. Every desktop app (that isn&#x27;t bundled with the OS) that I or people I know use are roughly that size or bigger.<p>&gt; What you&#x27;re describing is an extremely narrow class of software that most people will never touch. But I think it sounds cool.<p>First of all, this is the class of software that most people rely on the most by far. It certainly contributes more economic value than other software. You use that software every time you tap your bank card; every time you place or receive a call or send or receive a text message; every time a package arrives at your doorstep; every time you watch any video on any platform; every time you receive medical treatment or stay at a hotel. Clearly, it&#x27;s the class of software that contributes the majority of value that software delivers. I don&#x27;t know exactly how many people work on such software. I think around 50% of developers at least, but even if I&#x27;m wrong, we&#x27;re talking at least a few million developers.<p>&gt; but at least they measure something, and it&#x27;s public and reproducible.<p>There is zero value to a measurement that is not relevant to you, and negative value to making you think it&#x27;s relevant (&quot;well, it&#x27;s not the number I need but it&#x27;s some number I have so I&#x27;ll go by that&quot;) when it&#x27;s not.<p>&gt; Anecdotes are vague stories that are impossible to evaluate.<p>You can evaluate them at least as well as you can benchmarks - by asking questions that will allow you to know if the information is relevant to your use case - only they at least have a chance of being relevant, while benchmarks really rarely are. I will just say that if you don&#x27;t know how exactly a memory allocator is implemented (e.g. whether and how it degrades with time), it is absolutely impossible for you to evaluate a benchmark that purports to measure memory management. There is <i>nothing</i> you can learn from it because you don&#x27;t really know what it is that&#x27;s been measured.<p>&gt; I had an anecdote of someone saying they can&#x27;t use Java anymore because, even with 20 years of experience, they cannot optimize Java any further for what they need. They rewrote it in Rust. It works much better now, and it&#x27;s not even close. What am I to make of that?<p>You are to make of it that, in the past 20 years at least, we have no ability to extrapolate from one program to another. Given that languages like C++, Rust, Java, Zig, and C# are all at the topmost performance category, it makes a lot of sense that in some situations X will be faster than Y and in others Y will be faster than X.<p>&gt; There are absolutely apps that run 8gb of RAM. And pageswaps are not good, even with an SSD. They&#x27;re a real problem.<p>I&#x27;ve not seen that in quite a few years now. Right now I have Chrome open on four streaming platforms. Just over 500MB. I have over 100 tabs open in Safari. About 1.2GB. I&#x27;m sure there are some apps that use 8GB of RAM, but these aren&#x27;t apps that grandma uses or wants to use.<p>&gt; That&#x27;s a cool realization. But I think it&#x27;s slippery. Only in extreme scenarios will your CPU actually block RAM. The 100% usage scenario makes sense.<p>No. This scales. Again, every CPU cycle you consume takes a cycle away from some other program and reduces its ability to use RAM (as that requires the cycle).<p>&gt; But most of the time, your CPU is going to be underutilized and capable of letting every app use RAM freely.<p>No. Using RAM means using CPU. I you&#x27;re idle, then you&#x27;re not using RAM. Might as well be paged to SSD. You get zero points for keeping RAM significantly more plentiful than free RAM. You save $0.<p>&gt; How? If you&#x27;re forced to use work software, you have no competition to go to. Same for your music app, your social network, your team&#x27;s chat tool. The &quot;competitive edge&quot; argument requires users to actually have a choice, and for most desktop software they don&#x27;t they use what their employer, school, or social network has standardized on. Where users do have free choice, they gravitate toward leaner options constantly. Sublime kept paying customers against free Electron alternatives. Mobile platforms enforce resource discipline and have no Electron equivalent. The competitive edge for leanness exists; it just can&#x27;t express itself when ecosystem effects lock users in.<p>The competitive edge does not require users to have a choice. It requires a real edge. If some software really makes you more productive, then your employer would be foolish not to buy it. If some software allows the school to significantly save on hardware - the same. The reason these products don&#x27;t catch on is because they&#x27;re written by hackers with certain sensitivities who do not understand the economics of their users&#x27; hardware and software.<p>&gt; So I still feel strongly there are cases where you could make sufficiently small programs in Rust that wouldn&#x27;t devolve into spaghetti. That would give you great performance and ram usage.<p>Sure. Like I said, low-level programs are fast and efficient for small programs. But even then, you need to look at the full picture to know how much, if any, money you&#x27;re saving.","offTopic":false},{"id":"4343dd8a-f4e7-4b0e-9258-5bd9c14d0971","excerpt":" — I feel like this has been a great discussion but all the good technical talk is tapering off. There&#x27;s more rhetorical semantics now than anything. But I appreciate you teaching me. I&#x27;m a bit tired in this reply.<p>I wish I could find you a few reports from people on here basically renouncing Java because t","url":"https://news.ycombinator.com/item?id=47931985","role":"request","weight":0.61586666,"occurredAt":"2026-04-28T08:54:11.000Z","sourceKey":"hackernews","sourceName":"Hacker News","credibility":0.7,"venue":"news","intent":"feature_request","painScore":0.24,"sentiment":0.4117647,"confidence":0.49666667,"matchedPatterns":["wish","product:claude"],"statement":"I wish I could find you a few reports from people on here basically renouncing Java because they could not optimize it any further after 20 years programming in it, and moving to Rust.","title":null,"body":"I feel like this has been a great discussion but all the good technical talk is tapering off. There&#x27;s more rhetorical semantics now than anything. But I appreciate you teaching me. I&#x27;m a bit tired in this reply.<p>I wish I could find you a few reports from people on here basically renouncing Java because they could not optimize it any further after 20 years programming in it, and moving to Rust. I&#x27;d be curious what you&#x27;d think.<p>&gt; You say &quot;dev experience&quot; as if it&#x27;s some quality-of-life thing. They traded off a cheap resource, RAM, for an eternal maintenance and evolution cost that would only grow higher as the program grows<p>No, I say dev experience because I brought it up earlier, and staked my claim on it.  Because it&#x27;s an umbrella term that covers nice-to-haves and how ergonomic the language and ecosystem are. The antithesis would be lots of repetitive plumbing that slows down feature release. It&#x27;s one part of the triangle. They now are shipping way behind but wound up with a product that is just as fast and uses less RAM. That kind of decision can matter to other projects. Smaller projects likely wouldn&#x27;t have such a slow turnaround.<p>Again, we&#x27;re not advocating for everyone to do rewrites. Threads like this are people begging app developers to stop using stuff not appropriate for desktop apps.<p>&gt; I said that low-level languages can offer good performance in small programs, but many desktop apps aren&#x27;t small. Claude Code&#x27;s CLI is over<p>Err, Claude Code is very special, yes. Couldn&#x27;t tell you why that tool needs to use that much, but most desktop apps don&#x27;t. They are built on vendor code and keep the actual app code small, and that makes them excellent candidates for what we&#x27;re talking about.<p>&gt; 3MLOC is quite typical. People who work on smaller software are overrepresented in Silicon Valley and, I&#x27;m guessing, among HN readers, but they&#x27;re the outliers<p>I don&#x27;t agree, unless you have some stats I don&#x27;t know about. I mean I&#x27;m really jealous that you even know someone that worked on an app of that size. Most people are coding for one of the millions of mid sized businesses dotted all over the country. They are on 20 year old code bases that make great revenue. Everyone there is nice and meets with you weekly. The devs answer to the clients directly. They don&#x27;t really need to grow their business endlessly, but there&#x27;s lots of maintenance to do. I&#x27;ve worked with Healthcare companies, they were certainly not 3M lines of code. What you&#x27;re describing is an extremely narrow class of software that most people will never touch. But I think it sounds cool.<p>&gt; If anything, benchmarks are much more anecdotal<p>Not really. I concede they only measure what they do, and it might not be much, but at least they measure something, and it&#x27;s public and reproducible. Anecdotes are vague stories that are impossible to evaluate. I had an anecdote of someone saying they can&#x27;t use Java anymore because, even with 20 years of experience, they cannot optimize Java any further for what they need. They rewrote it in Rust. It works much better now, and it&#x27;s not even close. What am I to make of that?<p>&gt; Her computer is slow not because shes using a program that eats up a lot of RAM, but because she&#x27;s inadvertently running a lot of stuff in the background that shouldn&#x27;t be running at all<p>There are absolutely apps that run 8gb of RAM. And pageswaps are not good, even with an SSD. They&#x27;re a real problem.<p>I just find it lame to tell people this when we could ship leaner apps and it wouldn&#x27;t even be that hard. It&#x27;s 2026 and people should be able to have whatever open windows they want. Even 8gb of Ram is a lot, we&#x27;ve just forgotten about it. Shit, my web browser uses 4GB ram idle.<p>&gt; So even though it is true that different programs may have different CPU&#x2F;RAM usage patterns, you have to think about the ratio rather than CPU and RAM in isolation, and try to achieve some approximate balance. To put it simply, if a program uses a lot of CPU it doesn&#x27;t make sense for it to use little RAM, because by using a lot of CPU it is effectively depriving other programs of their ability to use RAM (as that requires CPU). There are some exceptions, such as large caches, but the tradeoffs there are very different and too complicated to go into here (I did cover that in my talk).<p>That&#x27;s a cool realization. But I think it&#x27;s slippery. Only in extreme scenarios will your CPU actually block RAM. The 100% usage scenario makes sense. But most of the time, your CPU is going to be underutilized and capable of letting every app use RAM freely. Obviously the more direct problem would be someone&#x27;s RAM was sucked up by different apps.<p>&gt; It&#x27;s not that the software industry has decided to waste users&#x27; money. If it did, there would be a competitive edge to programs that use less RAM, but we don&#x27;t see that competitive edge. What we do see is a few people on HN saying how they simply can&#x27;t live with VS Code&#x27;s 50ms keystroke latency and how amazing is some other editor with only 20ms latency that&#x27;s likely to go out of business soon<p>How? If you&#x27;re forced to use work software, you have no competition to go to. Same for your music app, your social network, your team&#x27;s chat tool. The &quot;competitive edge&quot; argument requires users to actually have a choice, and for most desktop software they don&#x27;t they use what their employer, school, or social network has standardized on. Where users do have free choice, they gravitate toward leaner options constantly. Sublime kept paying customers against free Electron alternatives. Mobile platforms enforce resource discipline and have no Electron equivalent. The competitive edge for leanness exists; it just can&#x27;t express itself when ecosystem effects lock users in.<p>So I still feel strongly there are cases where you could make sufficiently small programs in Rust that wouldn&#x27;t devolve into spaghetti. That would give you great performance and ram usage. I still want to find the example of my anecdote, but I&#x27;m tired.","offTopic":false}],"breakdown":[{"sourceKey":"hackernews","sourceName":"Hacker News","count":10},{"sourceKey":"reddit","sourceName":"Reddit","count":1}],"total":11}}