5 ms·
But you're using a different definition of high and low level than I do, and are thus missing my point. I define a high-level language as one that trades off co
by pron 2y ago
But you're using a different definition of high and low level than I do, and are thus missing my point. I define a high-level language as one that trades off control over memory resources in exchange for higher abstraction (by relying on automatic memory management, AKA garbage collection -- be it based on a refcounting or a tracing algorithm -- as the primary means of memory management), while a low-level language makes the opposite tradeoff. By this definition, C++ is just as low-level as C, regardless of the use of raw vs. managed pointer.
The question I'm interested in here is not which features a low-level language should add to make it more attractive for low-level programming, but should it add features that are primarily intended to make more attractive for application programming. The declining share of low-level languages (by my definition) for application programming over the last 30 year, leads me to answer this question in the negative. This is a big difference between the approach taken by low-level languages like C++ and Rust, which try to appeal to application programming, so far unsuccessfully, and low-level languages like Zig, which don't. So far, neither Rust nor Zig have been able to gain a significant market share of low-level programming, let alone application programming, which makes judging the success of their approach hard, but C++ has clearly failed to gain significant ground in the application space despite achieving great success in the low-level space.
The reason I'm focusing on this question is that this article specifically calls out an attempt by the June language to appeal to application programmers, and I claim that C++/Rust's "zero cost abstraction" approach does the same -- it attempts to give the illusion of high abstraction (something that I believe isn't useful for low-level programmers, who make the low-abstraction tradeoff with their eyes open) without actually providing it (clients are still susceptible to internal changes in implementation).
- pjmlp 2y agoGiven the uptake in GUI frameworks by C++ during the 1990's and game engines, CUDA, and the whole RIIR wave in Web tooling, I would state that even by your definition of high level, they are being both pretty much succesful. Likewise Rust being adopted by Linux kernel, Microsoft (now the official language for Azure infrastructure, with C and C++ requiring clearance for new projects), Google on Android and Chrome/V8, it is also quite successful for low level coding, alongside the whole GCC/LLVM infrastructure, written in C++. For example, if I deploy to Vercel or Netfly and don't want to pay for additional infrastructure for webservers, while caring for performance, my options are nodejs addons/serverless in C++/Rust, or eventually Go (which I rather not).
- pron 2y ago> I would state that even by your definition of high level, they are being both pretty much succesful. C++ certainly had a high market share in the application space in the early nineties, which it has since lost. The market share of low level languages in the application space overall has dropped by a lot since then and is showing not even a hint in reversal of the trend. > Likewise Rust being adopted by Linux kernel, Microsoft (now the official language for Azure infrastructure, with C and C++ requiring clearance for new projects), Google on Android and Chrome/V8, it is also quite successful for low level coding, alongside the whole GCC/LLVM infrastructure, written in C++. I am not doubting that a language that follows C++'s design philosophy may ultimately take a large market share from C++ or from C (although if Rust is the language to do that, its rate of adoption is alarmingly low, but that's beside the point). My point is that, despite trying, all such languages combined have not shown any success in taking a significant market share from high-level languages in the application space. Surely if the problem wasn't the philosophy but the execution, and if Rust is the language that successfully cracked the code for low-level/application convergence, we should have seen some significant change in trend over the past decade, but it's just not there. At some point, hypotheses regarding utility and value need to become very visible in the market -- which cannot be completely irrational given economic pressure and competition -- and you can try to find a trend in noisy volatility only for so long. If C++'s 40 years and Rust's 10 have failed to to prove the hypothesis that low level languages can grab a large share of the application space, maybe we can wait another 20 years and see. But I'm saying that right now there doesn't seem to be any market movement supporting that hypothesis even though I think we're long overdue to see some if the hypothesis held, and so speculation on the future success of the approach is not justified by what we see in the market. My hypothesis for the preponderance of such speculation in forums such as HN is that commenters in such forums (as well as people writing OSes at Google) are not sufficiently aware of the software landscape overall (which is mostly growing in the "low skill" area, let's call it), of which they're making up a dropping proportion. There are 50 new Python developers for every new C++/Rust developer, and if you think you can convert a large portion of them then you haven't met them. That's why I think that low level languages that try to accommodate application programming are misguided if they think this will help convert a significant portion of application programmers in a market that's overall becoming less skilled, not more (I think this approach harms their adoption rather than helps it). I believe that the low-level/application convergence a lost cause, but even if it isn't, then Rust certainly isn't the language to have cracked this problem. I would say that the only hope for "high skill" languages to increase their share is if the "low skill" segment is reduced by AI, which may well happen, but that's a very speculative bet.