The sea should be marked as C considering that’s what you’ll discover when you get deep into it.
https://en.m.wikipedia.org/wiki/PyPy
Their greatest mistake was not naming it Ouroboros.
The reason C becomes relevant to Python users isn’t typically because the interpreter is written in C, but because so many important libraries (especially numpy) are implemented in C.
Extension modules are implemented in C because the interpreter is written in C. If it were written in another language, folks would write extension modules for that language instead. Also, it would be less relevant if people used portable C bindings like cffi, which are portable to PyPy and other interpreters… but they don’t.
For all of those, Lisp is the more logical choice. Plus, whitespace as syntax is the worst possible design decision.
Ok, but what if an entire programming language is made of whitespace?
https://en.wikipedia.org/wiki/Whitespace_(programming_language)
…is it truly that bad? npm is the reason I don’t even install software based on node on my machines… python doesn’t seem nearly as bad by comparison? (I run it, just don’t like to write it) Maybe it’s worse than I realize
Lisp is the more logical choice.
Relevant XKCD. Python has replaced Perl, but things have otherwise changed quite little.
I’m kinda jealous. I don’t miss maintaining production Perl code, but Perl was more fun to code in.
Perl is the only language that looks just as incomprehensible before and after a rot13 transformation.
Python on the other hand is the only language that will cause your application to stop working because you mixed up tabs and spaces, even though it looks perfectly fine on your scr.
And lisp is hard to say if you have one.
Edit: aa -> after a
You say that, then use a language that allows you to do this (it’s not lisp)
if (foo);
{
bar();
}
You can make embarrassing mistakes in virtually any programming language that’s not too esoteric.
When I still used Python for prototyping (today, I usually use Go for that), it happened much too often that I did this:
if foo:
bar()
foobar() # syntax error
In Lisp, however, both errors are much harder to make (not even considering GNU Emacs’s superb auto-indentation - which is what most Lispers use these days, as far as I know):
(when foo) ;; <- obvious!
(bar))
(when foo
(bar)
(foobar) ;; <- still valid
(quux)) ;; <- also still valid
A hammer is beginner friendly, but learning to use a hammer doesn’t necessarily mean you’re ready to build a house with it.
The mistake was choosing a language, and afterwards searching for a use to the language you just learned.
Among all of them at least python is the choice generically people learn when they don’t want to learn programming, just want to program stuff as a helper tool to manage data. For those, python is just fine and the learning material around is tailored to for that.
That’s how you trick people into programming. You then see people making scripts that take days to run, but it’s fine, they’re only going to use it twice and are busy enough to be able to wait
Dynamic typing, special and unique syntax for every language feature, interpreter intrinsics
I think the problems there are exacerbated a lot by over-eager type coercion and other crappy design decisions inherited from almost 30 years ago
Yep lua and lisp/scheme are also unityped and not even close to as broken. All are remarkably similar languages, theory-wise.
…also something something Guido not getting tail call elimination and people sending him copies of the wizard book. It’s been a while.
(And, yes, lua does proper tail calls).
Operator overloads are excellent for readable code when used well - I object to their inclusion on this list.