On Mon, Feb 15, 2021 at 02:12:03AM +1100, Chris Angelico wrote:
On Sun, Feb 14, 2021 at 8:42 PM Steven D'Aprano
wrote: We should not choose the more confusing, error-prone solution out of fear of being different. Python is already different from Javascript in every regard:
Is it really?
Well, they're both Turing Complete, so I guess not different in *every* regard :-) By the way, I'm not judging the differences.
- the basic execution model is different; Don't know what you mean here, but I thought they were the same.
Python has a purely dynamic execution model; Javascript has a hybrid two-pass model that combines elements of static and dynamic execution, and which allows code like this to run: print(f(3)); function f(a) { return a*2; } (not in an interactive REPL of course). Although both Python and Javascript have dynamic typing, Python's type model is stronger (i.e. stricter) than Javascript's. 1 + '2' # an error in Python, 12 in Javascript. In Python, every thing is an object; in Javascript, some things are objects, and some things are primitive values.
- the object model is different; Same object model.
Absolutely not. Javascript is based on the prototype object model, and Python is based on the class object model. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_...
- the numeric model is different; Python has more data types, but that's not as fundamental a difference as you might think
Python has a numeric tower; Javascript has a single floating point type. It's hard to build a tower with a single brick :-)
-the truthy/falsey model is different; There are different rules about WHAT is truthy/falsy, but, again, the differences aren't fundamental
The differences are precisely my point.
- the syntax is different; - the list of keywords is different; - the standard library is different; - the list of operators is different; Well, of course. If these four were the same, they'd be the same language. These four differ between Py2 and Py3 too.
Yes, the fact that they are different languages is my point.
- even basic equality is different; Yes, although that's more historic than anything else - most people use "===" which has mostly the same semantics as Python's equality
"Mostly the same", apart from being completely different :-( Javascript's === tests for "same type and equal" for primitive values, and is equivalent to Python's `is` for objects. It cannot be overloaded.
- the culture of the community is different. TBH neither community has a single culture.
Of course neither group of people is a monoculture of identical clones. That would be the Haskell community *wink* But in general, the JS/Node.js community embraces practices which are rejected by the Python community, such as the use of micro-packages. Remember left-pad? This four-line package got nearly fifty million downloads last week: https://www.npmjs.com/package/isarray That's about 78 times per second. If I published that on PyPI, I would be amazed if I got 78 downloads in a year. -- Steve