4 ms·
I don't see why arbitrary pointer operations are necessary anymore for memory management and the other things. I think this is something left over from the days
by gloob 17y ago
I don't see why arbitrary pointer operations are necessary anymore for memory management and the other things. I think this is something left over from the days when we had to squeeze every iota of performance out of machines.
Squeezing out performance is pretty much the job description of system programmers. Can you give a compelling reason to change that?
Pretty soon, we'll be trying to figure out how to keep 8 cores busy on a typical desktop.
No, we won't. Software becomes twice as slow every two years. Things will stay pretty much the same as they've always been.
- stcredzero 17y agoSqueezing out performance is pretty much the job description of system programmers. Can you give a compelling reason to change that? Achieving a higher degree of abstraction, more straightforward availability of system resources to programmers, higher levels of code reuse. BeOS/Haiku already achieves this with C++. I think we can improve on this with something like Go.
- gloob 17y agoAchieving a higher degree of abstraction, more straightforward availability of system resources to programmers, higher levels of code reuse. Present-day system programmers seem to be able to build decent enough operating systems and the like at the level of abstraction C provides, and I suspect that most would consider straightforward management of system resources to be higher priority than straightforward availability of them. I will concede the possibility that some unambiguously-better system could be written in a higher-level language. However, until evidence demonstrates that it actually can be done, that remains just a possibility, and one with very real and significant costs. Those costs are not, in the view of many system programmers, worth it.
- stcredzero 17y agoI will concede the possibility that some unambiguously-better system could be written in a higher-level language. However, until evidence demonstrates that it actually can be done, that remains just a possibility Already happened: Symbolics Lisp Machines. (Modulo a few decades of programming practice not available to inform the Lisp Machines.) I suspect that Go could get us there. Interfaces would allow for a higher degree of abstraction. The language would offer much cleaner concurrency. All the memory management cruft would be gone. In such an environment, many things that are now esoteric would become the realm of ordinary programming. I think there is much to be gained.
- jrockway 17y agoCan you give a compelling reason to change that? Yeah, because correctness is better than speed. I am willing to wait 2 milliseconds longer for an image to show up if it means I can open untrusted images without having my machine taken over. (See recent libpng and vorbis buffer overflows in Firefox.) Remember, higher-level languages are almost as fast as C. For some languages, that "almost" is less than 2x slower. Software becomes twice as slow every two years. And it becomes 10x less correct. Less speed for less bugs is a reasonable tradeoff, considering computers double in speed every few years. You can buy speed at newegg for $100, but you can't buy correctness anywhere. No program I use today is particularly slow, but many are horribly incorrect. So it seems like optimizing for speed is a bad idea. Programs that get me the wrong answer quickly are worthless. Oh, but you don't write incorrect or unsafe C code... only other people do... I get it...