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 <[email protected]> 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_prototype_chain
> > - 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
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/7RDIPZDPOZUU7AD5JFE2BNQH75OAAGS7/
Code of Conduct: http://python.org/psf/codeofconduct/