On Thu, Jun 23, 2011 at 07:37, Johan Lundberg <joe...@gmail.com> wrote: I have a novel idea concerning all manner of "helpful" memory management, like Garbage collection (GC) and Reference counting: Drop it, bury it, forget it.
> Manual memory management is really not difficult. All you need to know can be summarized on one sheet of paper. Make a few mistakes and in a couple of days you will have figured it out. Your programs will be fast and predictable.
> Automatic GC starts up randomly, which is a huge problem in time critical applications, such as in the financial markets. Someone at Oracle told me that 98 percent of all JVM optimization investments concerns the garbage collector. This, and the fact that automatic GC makes programmers lazy and unaware, is a very high price for the miniscule convenience of not having to release memory. Reference counting is slightly better in that it is predictable but it is very confusing to many programmers. Unless you have a very powerful development and simulation environment it is therefore more prone to memory leaks than manual memory management.
The same arguments can be made for programming using just
NAND gates, which can be summarized on just a post-it note.
It turns out that, compared to writing programs using NAND gates,
when I write programs in Go, I can write the program in less time,
the program is more likely to be correct, and the program is easier
to debug and fix if not. It is true that the program is slower and
less predictable than if I'd written it using just NAND gates, and
not having to think about NAND gates probably does make me
lazy and unaware at some level. For the programs I am writing,
the advantages of using Go outweigh the disadvantages of not
using NAND gates.
Of course, programmers and programming environments differ,
so if you find that NAND gates are a better fit for your work,
no one here is going to force you to use Go.
Russ
Name:
Anonymous2011-06-26 19:59
>>30 Nearly every statement in LUA causes several L2 cache misses and branch mispredictions,
DERP EVERY STATEMENT MUST BE OPTIMIZED WAT IS A BOTTLENECK?
>Not even JIT can get around this problem with LUA
um, is not LuaJIT the fastest interpreted language implementation of the day?
Nobody is claiming that you write your physics engine in Lua, just that you use it instead of XML or some other POS data serialization standard for configuration and non-real-time logic like menus and some aspects of game logic and AI.
Also, most C++ game developers I know have this really retarded idea that ALL functionality MUST HAPPEN THIS FRAME. Because they don't understand things like continuations/coroutines, they can't conceive of an algorithm that you can just pause and come back to. Like, they think the idea of a separate routine of computation is inherently tied to multithreading rather than seeing multithreading as an optimization technique only.