• 0 Posts
  • 8 Comments
Joined 2 years ago
cake
Cake day: July 1st, 2023

help-circle
  • A single underscore is just a naming convention, but double underscores triggers automatic name-mangling of the variable in question:

    $ cat test.py
    class foo:
            def __init__(self, x):
                    self.__x = x
    
    f = foo(1)
    f.__x
    $ python3 test.py
    Traceback (most recent call last):
      File "/mnt/d/test.py", line 6, in <module>
        f.__x
    AttributeError: 'foo' object has no attribute '__x'
    

    However, much like private/protected variables in java, this is pretty trivial to circumvent if you want.

    But I don’t believe that you can argue that access modifiers are required for OO not to be shoehorned into a language, not when influential OO languages like Smalltalk didn’t have this feature either. Java just happens to be closer to C++, where public/private/protected is much more rigidly enforced than either Java or Python



  • While there are legitimate grievances in this lawsuit, they do also complain that Valve doesn’t let developers generate as many Steam keys as they want, and then sell them on other stores at lower prices than on Steam (see p. 35, “Valve Distorts Competition Through The Steam Key Price Parity Provision”).

    Keeping in mind that Valve lets developers generate keys for their games for free, this amounts to Wolfire complaining that they cannot offload the costs of hosting/services to Valve, while at the same time minimizing how much Valve earns. And that just sounds ridiculously entitled to me.

    If Wolfire somehow were to win the right to undercut Valve in this manner, then I would not be surprised if Valve responded by charging developers for keys, or otherwise limited the ability of developers to generate keys. Which would have wide reaching consequences for PC gaming



  • Unix shell scripts are one of the few holdouts.

    I don’t know if this applies to other shells, but bash will not only execute your script line-by-line, it will also read it line-by-line. Which means that you can modify the behavior of a running script by editing lines that have not yet been executed*. It’s absolutely bonkers, and I’m sure that it has caused more than one system failure, during upgrades.

    * For example, if you run the following script

    echo "hello"
    sleep 5
    echo "goodbye"
    

    and then edit the third line before the 5 second sleep has elapsed, then the modified line will be executed.