Re: global, globals(), _global ?



robert <no-spam@xxxxxxxxxxxxxxxxxxx> wrote:
...
Ruby does ($ means global), but, what other languages? Perl, C, C++,
Java (taking a class's statics as Java's equivalent of other languages'
...
I though first of Ruby.

Good C++ code uses m_ , g_ for members, globals, ... e.g. the

_Some_ C++ code uses such guidelines, but I think you're assuming way
too much by implying that (all) good C++ code does that.

For example, the Google style guide (and I assure you we have a *LOT* of
C++ code, and it *IS* pretty good indeed) uses a different convention
(not a prefix) for instance variables, and no 'stropping' distinction
between locals and globals (even though I'm more into the Python side of
things, than the C++ side, I do work regularly at Google in both
languages, I passed my "readability certification" for C++ as well as
Python, proving I know and apply the Google style rules very well, and
I'm very aware of the long exhaustive debates on which each language's
style guide is based and by which it keeps getting tweaked when needed).

Remember, for example, that part of what defines "good" C++ style (in a
firm developing lots of software in both C++ and Python) is the ease of
using SWIG (or other tool of choice, but Google prefers SWIG) to wrap
the C++ code so Python can use it too.

Anyway, guess we should move this particular discussion to a C++ forum,
and similarly for the Java one, the Perl one, and so forth. Let's leave
it at this: Ruby's the only language that mandates stropping for globals
(in any language you may choose to adopt such _conventions_, just like
you could choose, e.g., Hungarian notation -- silly, but possible;-).

Microsoft MFC code ( you have to declare the vars anyway - and it is

I've worked FAR too much with Microsoft's MFC (back when I was a Windows
and C++ guru, in the '90s) to accept their being claimed as an example
of "good C++ code" as anything but not-thinly-veiled sarcasm!

MS itself doesn't like the MFC any more, indeed they first tried
replacing it with the WTL before (essentially) giving up on C++ (the
main designer of C# was the same guy who earlier designed WTL;-) and
opensourcing WTL (IMHO still the best way to do Windows GUI in C++, if
you're condemned to such a worse-than-death task;-).

compiler checked unlike in dict-languages ), :: for global namespace.

"Per-module-global", though, is the unnamed namespace (used to be
'static', but that's deprecated at global scope nowadays)

I think its good to leave the default global binding (that is probably
whats Guido doesn't want to give up for good reason)

Then, on the principle that there should be preferably only one obvious
way to do something, we'll never have an _global object as you propose
(even by any other and much better name;-), because it systematically
produces TWO equally obvious or unobvious way to access globals.

Yet frames could expose their top-dict anyway as a virtual inspection
object (__l/__l_<funcname> or __f_stack[-2]) . Or at least writing to
locals() could be defined as writing to the top-frame-locals.
Sub-Frames could write free there (its a rare & conscious task anyway)
and the Frame itself could read either way.

Not sure I entirely understand what you're proposing, but locals access
must remain compile-time-optimized for crucial practical reasons, so
"writing to locals()" just will not work right.

Another ugly possibilties maybe by enriching variable assignment.

Maybe '=' can be enriched like .= ..= := =: ::= =:: xxx-set ... etc.
in order to be an expression with result value and to allow to writing
to certain namspaces.

Ugly enough that Guido has never wanted to entertain such possibilities
each of the many, many times they've been proposed on python-dev over
the years. python-dev is archived and easily searchable -- maybe you
can research the last few years of discussion there, assuming you're at
all interested in seeing your proposals implemented in Python.


Alex
.



Relevant Pages

  • Re: Basic inheritance question
    ... used 'this' in C++ and Java. ... but in Python it doesn't. ... language, they would write a lot of ten liners that is changed a LOT ... Add three levels of inheritence and a couple globals and you'll find out ...
    (comp.lang.python)
  • Re: Basic inheritance question
    ... this in VB and Java. ... Python doesn't "enforce" explicit name of classes - IIRC, ... No it exists in any language, the way to avoid it is by good class ... Add three levels of inheritence and a couple globals and you'll find out ...
    (comp.lang.python)
  • Re: Google and Python
    ... Also, at Google I'm specifically "Uber Tech Lead, Production ... to various software projects that are part of our "deep infrastructure", ... and our general philosophy there is "Python where we can, ... I meant the choice of scripting language was ...
    (comp.lang.python)
  • Re: Favorite non-python language trick?
    ... And -- why isn't it in Python? ... structuring the syntax after what's used for globals, ... def bar(): ... in the existing language, if frame objects could carry a modifiable ...
    (comp.lang.python)
  • Re: Ruby is exploding onto the scene as Java did at the end
    ... Python does the job, it does it rather well and they have no interest ... in adding a fourth language to their three--language codebase (Java, ... I've heard rumors that the Google satellite ... If I had to guess where Ruby will ...
    (comp.lang.ruby)