FOR i = 0 TO 9
0 to: 9 do: [
:x | Transcript show: x ]
That's right, the difference is syntax and you've picked a terrible example. A better example would be method invocation. The differences between calling a C function pointer, a C++ virtual function, a Java method or an Objective-C method are significant.
No it isn't. NaCl is a great proof of concept. It shows that you can sandbox x86 apps using some static analysis of the binaries and a few other constraints (it also showed that segmentation support on modern x86 chips is pretty poor and terrible on Atom). The problem is that it only works on x86 binaries. What proportion of Web use these days is (ARM-based) phones and tablets? 20%? If you make something that only works for 80% (and falling) of your customers, then that's a problem.
PNaCl is promising, but it's currently in early draft stage. It hard-codes some things into the ABI too early and misses other important things (e.g. no mechanism for exceptions, and they're very difficult to implement correctly in a PNaCl model). And, unlike NaCl, PNaCl relies on a complex compiler being bug free for security, and we all know how well that worked out for Java...
Don't tell me how hard you work. Tell me how much you get done. -- James J. Ling