11 ms·
Why did it not catch on, though? Python was already well known as a "scripting" and server-side web development language in the early 2000s, but it's commonly
by protomikron 5y ago
Why did it not catch on, though?
Python was already well known as a "scripting" and server-side web development language in the early 2000s, but it's commonly mentioned that it really exploded in the 2010s, where it was the implementation language for several scientific packages, most notably the machine learning eco system.
It seems that the language really found a local optimum that adheres to many different people across disciplines.
- kragen 5y agoLush's heyday was the 01990s, and it's pretty much only useful for "scientific computing", which has a big overlap with "machine learning". Also, it's a Lisp. Python has more readable syntax and was used for all sorts of things even before Numpy existed.
- thewakalix 5y ago> 01900s Preparing for Y10K? That's exceptionally long-termist.
- MonkeyClub 5y agoCan't even make an octal joke with that 9 in there...
- kragen 5y agoHey, 9 is an octal digit in K&R C!
- stewbrew 5y agoI think we have to distinguish between languages that use s-expressions and lisps. Almost all languages have some sort of preprocessor that make it look like lisp but that doesn't turn it into lisp. From what I vaguely remember, lush lacked some of the defining qualities of a lisp.
- webreac 5y agoIn my lessons about scheme (given by the french translator of TAOCP), I have the following essential characteristics: - static binding - closures (true) - tail recursion - garbage collector s-expression or typing is a matter of choice, but, IMHO, if you lack one of the four previous items, it is not really a lisp.
- alpaca128 5y agoEmacs Lisp doesn't have tail call optimization, just like the Lisp it was inspired by. I'm definitely not an expert in that area, but this list seems kind of arbitrary to me. Especially with s-expressions being optional, which are probably the widest-known feature of the language. According to that definition, Haskell is a "true" Lisp but at least 2 Lisps are not. That makes no sense to me.
- webreac 5y agoThe last sentence was from me. The four items are from the SICP (not TAOCP, my mistake). They all are mandated by IEEE scheme standard. I have encountered many functionnal languages when I was student (caml-light (the ancestor of ocaml), lelisp, gofer (a cousin of haskell), miranda, graal, FP systems, yafool). The typing may be dynamic or static. The evaluation may be strict or lazy. They may have homoiconicity or a more suggared syntax. All theses choices are valid. These languages have in common the list of fundamental properties. IMHO, this list of 4 items encompass many aspects of SICP. When I evaluate a language, this list helps me understand the qualities and limitations of a language. For example, Perl5 does not have a true garbage collector. javascript does not have tail recursion. Knowing these limitations, I will not code the same way. In Perl5, I will take care of breaking unused circular data. In javascript, I will reorganise highly recursive algorithms.
- nicoburns 5y agoJavaScript does have tail recursion in the spec, and JSC (Safari) implements it. Other runtimes have thus far refused to because it can impact on debugging I believe.
- taeric 5y agoMy vote is it is due to python being included in most base distributions. Combined with a ridiculously loose concept of dependency management, it is trivial to tell people how to get started with many python projects. This doesn't really scale well, but momentum has a way of making things scale. Especially when most of the popular libs of python are pseudo ports of other language libraries.
- hiptobecubic 5y agoHard disagree. Python is a nightmare to get started with from a dependency management perspective. Its use in exploratory programming and for writing quick hacks to solve immediate problems is so popular because you rarely care about backwards compatibility or future proofing the deployment. I think it caught on because the syntax is clear, the execution model has relatively few pieces of foot gun trivia to memorize, a really nice repl, and most importantly, almost no one doing exploratory work needs anything faster.
- taeric 5y agoAs a software developer, I fully agree with you. Having watched many science teams embrace python due to not having to install the base system, though? That is, your complaint is what I meant about it not scaling. It is terrible. But the momentum behind it is keeping it going, despite being laughably bad in that area.
- tdsamardzhiev 5y agoI believe Python won because of its popularity in academia.
- deleted 5y ago[deleted]
- dragonwriter 5y ago> Python was already well known as a "scripting" and server-side web development language in the early 2000s, but it's commonly mentioned that it really exploded in the 2010s, where it was the implementation language for several scientific packages, most notably the machine learning eco system. That's...somewhat misleading. Python was well known for its scientific stack as well as server-side web development and scripting from the early 2000s (or earlier; NumPy, under its original name of Numeric, was released in 1996, BioPython in 2000, matplotlib on 2003, etc.). In the 2010s, it became known for its machine learning stack, which was built on top of the existing, already solidly established, scientific stack.
- nonameiguess 5y agoPython makes it pretty trivial to load compiled modules as third-party packages, and given the core language itself is already implemented in a similar way, at least for CPython, creating numerical packages as thin wrappers around pre-existing BLAS implementations was probably easier in Python than in Lisp. It might seem stupid, but operator overloading and metaprogramming features make it fairly simple to emulate the syntax of other languages scientific users would have already been familiar with. Specifically, NumPy, SciPy, and matplotlib quite obviously tried to look almost exactly like MATLAB, and later pandas very closely emulated R. It's a lot easier to target users coming out of university programs in statistics and applied math who have been using R and MATLAB and teach them equivalent Python libraries. Trying to teach people who aren't primarily programmers to use Lisp is going to have a much steeper learning curve. It really didn't explode in the 2010s, either. You're thinking of Facebook with pytorch and Google with TensorFlow making it dominant in deep learning, but the core scientific computing stack goes back way further than that. As for why Google and Facebook chose Python rather than Lisp, I think it was just already one of their officially supported languages they allowed internal product teams to use. Lisp was not. Maybe that's a mistake, maybe it isn't, but it's a decision both companies made before they even got into deep learning.