Your comments suggest that you think that GC somehow imposes overheads that you otherwise don't pay in C++. But that's not true.
Memory allocation and deallocation in C++ imposes runtime costs qualitatively no different from costs that you incur if you allocate memory in the presence of a GC. Quantitatively, GC is actually often faster.
The main reason C++ doesn't have GC is because C++ has C pointer semantics and because many C++ programmers habitually make a lot of unportable assumptions about the runtime and memory layout. That makes adding a GC to C++ tricky and would break lots of programs, programs that are not legal C++ programs but that still work.
The best compromise for GC in C++ is to use a conservative GC (like Boehm's GC). Boehm's GC may break some valid programs, but on the whole it lives fairly well within the framework of C and C++ and does not change C++ semantics too much. But in most languages other than C++, one can do considerably better with GC.
I think the Jupiter-class Windows CE hardware could be pretty good for running Linux. The machines are generally more powerful than, say, the Pilot, and they have around 10h of battery life. Some CE machines come with MIPS processors. In fact, it's kind of amazing to me how poorly the Windows CE software runs on such powerful hardware.
A usable portable Linux system should fit into 20M of flash memory, but you can get around 150M now in Compact Flash cards, which should make a pretty good distribution (including a small X windows installation).
Of course, the Pilot-like CE hardware is pretty good, too. But for any Pilot-like device, Linux kind of lacks the applications.
Still, since nothing like that exists yet, I just bought an Omnibook 800. You may be able to still find one for around $700. They have 166MHz MMX Pentiums, weight 4 pounds, and are smaller than most notebooks. But the battery life is pretty limited.
In the long term, I'm actually more interested in handhelds and lightweight portables that run PersonalJava--if I'm going to write GUI apps for a portable, I'd like to do it in a language and environment that makes it easy, and Java is a good compromise between power and simplicity for GUI apps in my experience. And once I write to Java, it doesn't matter much to me whether there is Linux or some other OS underneath it.
Use switching hubs with remote control and possibly even some filtering capabilities.
That way, if a particular machine is causing trouble, you can turn it off. That's particularly effective in combination with network security scans.
Switching hubs also keep crackers from monitoring network traffic once a machine is compromised. If you have filtering, you may be able to enforce (well, strongly encourage) the use of particular network protocols and turn off others when there are specific problems.
You also get better performance with switching hubs, another reason to install them.
Memory allocation and deallocation in C++ imposes runtime costs qualitatively no different from costs that you incur if you allocate memory in the presence of a GC. Quantitatively, GC is actually often faster.
The main reason C++ doesn't have GC is because C++ has C pointer semantics and because many C++ programmers habitually make a lot of unportable assumptions about the runtime and memory layout. That makes adding a GC to C++ tricky and would break lots of programs, programs that are not legal C++ programs but that still work.
The best compromise for GC in C++ is to use a conservative GC (like Boehm's GC). Boehm's GC may break some valid programs, but on the whole it lives fairly well within the framework of C and C++ and does not change C++ semantics too much. But in most languages other than C++, one can do considerably better with GC.
A usable portable Linux system should fit into 20M of flash memory, but you can get around 150M now in Compact Flash cards, which should make a pretty good distribution (including a small X windows installation).
Of course, the Pilot-like CE hardware is pretty good, too. But for any Pilot-like device, Linux kind of lacks the applications.
Still, since nothing like that exists yet, I just bought an Omnibook 800. You may be able to still find one for around $700. They have 166MHz MMX Pentiums, weight 4 pounds, and are smaller than most notebooks. But the battery life is pretty limited.
In the long term, I'm actually more interested in handhelds and lightweight portables that run PersonalJava--if I'm going to write GUI apps for a portable, I'd like to do it in a language and environment that makes it easy, and Java is a good compromise between power and simplicity for GUI apps in my experience. And once I write to Java, it doesn't matter much to me whether there is Linux or some other OS underneath it.
And hard as it may be for Gates to understand, that is exactly why I strongly prefer UNIX and Linux to Windows.
That way, if a particular machine is causing trouble, you can turn it off. That's particularly effective in combination with network security scans.
Switching hubs also keep crackers from monitoring network traffic once a machine is compromised. If you have filtering, you may be able to enforce (well, strongly encourage) the use of particular network protocols and turn off others when there are specific problems.
You also get better performance with switching hubs, another reason to install them.