On Thu, Jul 4, 2013 at 1:27 PM, Steven D'Aprano <steve+comp.lang.pyt...@pearwood.info> wrote: > With respect to the Huffman coding of declarations, Javascript gets it > backwards. Locals ought to be more common, but they require more typing. > Locals are safer, better, more desirable than globals, and so it should > be easier to use locals than globals, not the other way around. Having to > declare "give me the safe kind of variable", while getting the harmful[1] > kind of variable for free, strikes me as arse-backwards. Lazy, naive or > careless coders get globals[2] by default or accident. That's bad.
I agree that Javascript has it wrong, but not quite for the reason you say. The advantage of declaring locals is a flexibility: you can have multiple unique variables with the same name in the same function. Python lets you do that across but not within functions. But Javascript/ECMAScript/whatever doesn't give you that. A var declaration makes it function-local, no matter where the declaration is. That's pointless. C++, on the other hand, lets you do this: void somefunc() { for (int i=0;i<10;++i) { // do something with outer i for (int i=0;i<4;++i) { // do something with inner i } // outer i is visible again } // neither i is visible } Also, C++ overlays the "this is local" declaration with the "this contains this type" declaration, which neither Python nor Javascript bothers with; that makes the declaration feel less redundant. Granted, this flexibility is mostly of value when writing huge functions with complex nesting, but it is something that I find convenient. In terms of Huffman coding, every C++ variable must be declared, somewhere. It's not a matter of declaring globals or declaring locals - you just declare variables. If you declare them at file scope, they're globals; if at function scope, they're locals. There's really no difference. Everything's visible at its own level and those further in, and not those further out. I do see the convenience of the Python system, and I do like it; but someone needs to speak up for the foolish and pathetic :) ChrisA -- http://mail.python.org/mailman/listinfo/python-list