5 ms·
First, let me preface by saying that I use Python and JavaScript in my day to day work. There is a personal side to this issue, that is, his mastery of Python,
by ludwigvan 13y ago
First, let me preface by saying that I use Python and JavaScript in my day to day work. There is a personal side to this issue, that is, his mastery of Python, but I believe the issue is more related to Python.
Python as a language is uninteresting. It has no novel or exciting ideas other than its readability. Python 3 has shown nothing of importance to upgrade as the rate of adoption shows.
It lacks the flexibility of Ruby, general appeal of JS, philosophy of Clojure.
Maybe its boringness might be of value to some, as it has reached steady state, but I believe that if you are going to be where the puck is going to be, you need to consider languages other than Python. I am betting on JS and Clojure.
- maheart 13y ago> It lacks the flexibility of Ruby, general appeal of JS, philosophy of Clojure. This feels like a cheap shot. What flexibility, general appeal, or philosophy? Flexibility: Python is very flexible (I'll say dynamic), but not at the expense of clarity. This is a (IMO, correct) decision made by the Python community. General appeal: What does this even mean? The only reason JS has a general appeal is that it ships with every modern browser. Philosophy: What philosophy? Purity? Simplicity? Python is a pragmatic language ("get stuff done") while keeping simplicity in mind (although I definitely wouldn't argue that Python is as "simple" as some languages, it's simple enough)
- ludwigvan 13y ago> This feels like a cheap shot. What flexibility, general appeal, or philosophy? Right, somewhat a cheap shot, that was partly a rant, as I don't have the motivation to explain it fully in a comment. > Flexibility: Python is very flexible (I'll say dynamic), but not at the expense of clarity. This is a (IMO, correct) decision made by the Python community. I would argue that it is not as flexible as Ruby or Clojure for building DSLs. I believe this is not only a decision, but the result of constraints of the language, like significant whitespace or lack of macros. > General appeal: What does this even mean? The only reason JS has a general appeal is that it ships with every modern browser. Exactly, but also due to significance of web, it is drawing lots of talent and there is a cambrian explosion in JS. There is so much energy and experimentation going on right now in JS world. > Philosophy: What philosophy? Purity? Simplicity? Python is a pragmatic language ("get stuff done") while keeping simplicity in mind (although I definitely wouldn't argue that Python is as "simple" as some languages, it's simple enough) Exactly, purity and simplicity. Lack of functional programming ideas in Python, broken lambdas, mutable state etc. Clojure tackles one of the major source of complexity, state, head on, while maintaining pragmatism. Python is pragmatic too, I concur, but it is not a language that transforms the way one thinks about programming, it gets the job done, without giving you that much leverage.
- EdwardDiego 13y ago> I would argue that it is not as flexible as Ruby or Clojure for building DSLs. I've never met a DSL that was better than a well designed API. They all start leaking at some point.
- iopq 13y agoI'm quite fond of SQL, it's a pretty nice database language
- EdwardDiego 13y agoHaha, fair call.
- draegtun 13y agoWhat most programmers today call a DSL are in fact just an API anyway!
- kamaal 13y ago>>Python is very flexible As a design goal Python aims to be as little flexible as possible to enforce its design goal of making code readable at any and every cost. In fact its so brittle merely small time changes to a print statement has caused nearly a 8 year backward incompatible ecosystem which is still catching up. I can't image what would happen when some new ideas have to bought in the language to keep pace. Keep going through migration cycle every 6-7 years to handle backward incompatible changes. The story till now was some how okayish. Basically Python was playing a catch up game with Perl to get the popular features Perl has. It still hasn't succeeded completely, and yet has a heavily fragmented ecosystem between 2.x and 3.x dev branches. I don't see anything new going into Python any time sooner. Python is as little flexible as it gets.
- acdha 13y ago> In fact its so brittle merely small time changes to a print statement has caused nearly a 8 year backward incompatible ecosystem which is still catching up. Something which can be automatically ported with full backwards-compatibility for the last couple releases of the 2.x branch isn't a good example. You'd do better discussing the bytes / unicode growing pains since that may require a human to think about the problem.
- pekk 13y agoPython 3 migration is a social problem, not a technical one. You can't draw any conclusions about Python itself from the social problems around it
- maheart 13y ago>> As a design goal Python aims to be as little flexible as possible to enforce its design goal of making code readable at any and every cost. I think that's a very narrow way of defining flexibility. By your definition of flexibility, C++ must be really flexible because its template system is Turing Complete and you can do whatever you like! By the same definition, Scheme must be a pretty inflexible language because its syntax is extremely limited (simple). Python is flexible in that: - it can be used in many different fields (because libraries exist for science, web -- you can find a library in Python for pretty much any task you can imagine). - there a number of different implementations of the language to suit your needs (CPython, Pypy for speed, now Micropython for embedded). It is (somewhat) easily ported to other platforms (e.g. ARM, JVM, .NET). - the language still allows you to do imperative, OO and to some degree functional programming. I don't think allowing Python to do everything under the Sun makes it "flexible". - Python's dynamism (look at something like the library "sh"), ducktyping, keyword arguments make it flexible. -- Final point: I think using Python 3's print statement as an example of Python being inflexible is dishonest. Python 3 had major internal changes made to it. The backward incompatible jump between 2 and 3 (AFAIK) was more a choice and a requirement. Guido has recently (just last year) said that he will never do anything like Python 2 -> Python 3 transition again.
- Aloisius 13y agoMaybe its boringness might be of value to some, as it has reached steady state, but I believe that if you are going to be where the puck is going to be, you need to consider languages other than Python. I am betting on JS and Clojure. I remember reading the announcements on Usenet for early versions of Python over two decades ago. I wasn't excited about it then because I was so tied up in learning The Next Big Thing and Python, even when it was brand spanking new, never screamed sexy. At some point though, I stopped chasing The Next Big Thing because I needed to actually get stuff done in such a way that didn't involve me or another senior engineer maintaining it forever. Nearly 15 years after I read the first announcement of Python, I actually started to use it in earnest and I liked it. At some point in one's programming career, one starts to become practical and Python, if anything, is a practical language. I sometimes think the reason Python doesn't have the zealotry in its community like other languages is because it attracts such practical people that when faced with a problem that would be easier solved in another language, will simply use the other language.
- lelandbatey 13y agoA vibe I'm getting in this that Python is bland, and that "settling" for whether to use Python is good/bad. It's existed for so long that it is a hugely high-functional tool, and many/most of it's hard edges have been filed off (either in the stdlib or in user-made packages). Something I feel in using Python is that it's blandness/utility is itself beautiful, or at the very least, elegant. Like a well made tool, it doesn't get in your way, it works well for what it's designed for, making creation without thought easy. That is one of the greatest joys of Python for me.
- Pacabel 13y agoMost of the action around JavaScript isn't particularly innovative. Much of the library development we see is solely due to JavaScript lacking a useful default standard library, for example. Many of the recent and proposed language changes are just fixing basic functionality that was really broken to being with, if not completely missing. It's very similar for Clojure. It's based on ideas that go back many decades now. Its main selling point is that it's somewhat more practical than previous Lisp or Lisp-like language implementations. Other than that, there's nothing particularly innovative about it. Python never really suffered from those kinds of problems. It has had a very sensible set of language features since its inception. It has had a very practical standard library since its inception. Due to a general lack of past mistakes or omissions, there just isn't the need for significant and ongoing repairs that can be misinterpreted as "innovation". This is part of why Python 3's adoption hasn't been that rapid. There really wasn't much to fix, and the problems that did exist were generally quite minor and easy to work around.
- swift 13y agoI think you're selling Clojure short. Its emphasis on purity, STM, and persistent data structures is quite different from most other Lisp-like languages, and indeed most other languages period. Those ideas have certain been tried elsewhere (Haskell, for example) but it's a path which is definitely not as well-trodden as you make it sound.
- nl 13y agoMaybe its boringness might be of value to some, as it has reached steady state, but I believe that if you are going to be where the puck is going to be, you need to consider languages other than Python. I have a philosophy: Innovate in either what you are building OR what you are using to build it, not both at once. So if I'm working on a CRUD website, I'll happily push the boundaries on what tools I use. I can afford to burn some time because I know what I need to do. If I'm working on something which no one is quite sure is possible, then I want boring, safe tools wherever possible. There are exceptions, where you what you are doing is so innovative you need new tools to build it. Exceptions are exceptional (and often interesting...) Of course, for some personal project I ignore my own advice. But then I know I'll be fighting my tools as well as what I'm trying to do, so that's my choice to be stupid.
- penguindev 13y agoThat's a neat aphorism. It's the software equivalent of Intel's tick/tock process. It also explains why I see far too many shiny web 'frameworks'. People just must attempt doing something "cleverly" especially if the end goal is boring. I'm in the opposite case right now, I have way too much complexity to want tricky dev or ops tools.
- sdegutis 13y ago> It lacks the flexibility of Ruby In this case, I would argue that's a feature, not a bug.
- mkesper 13y agoYes, making breaking changes in "stable" versions is no fun at all.
- beagle3 13y ago> Python as a language is uninteresting. It has no novel or exciting ideas other than its readability. Python as a language is 23 years old -- older than quite a few people who program it. And while it has changed through the years (adding things like generators, comprehensions, dropping explicit member access control, etc.) it is still mostly the same language. The fact you find nothing novel in it is mostly a reflection of your history, not Python's history; if I had to sum up Python's history, its novelty lies with distilling concepts into more limited but easily understandable, practical constructs - e.g., list comprehensions, generators, significant whitespace.
- jarpineh 13y agoFor me thinking about system design and coding is remarkably similar than actually coding it in Python. Language and its ecosystem has no quirks, libraries are stable, there is good documentation everywhere you look. Databases and services tend to have first rate Python bindings. Even web framework wars have quieted down with great winners. I started with Python in 1998, over 15 years ago. These days practicality and blandness is a virtue to me, not a shortcoming. I wouldn't say Python is not going where other languages are to be heading. It might do so with little fanfare and less heated discussions, but it still gets there. Or perhaps it has arrived "there" already, with a zen like presence. Only place of pain is the web browser. It is the most interesting platform, but with a language with greatly annoying warts. I'm glad that Ian has chosen to work at Mozilla to help create a better web. Perhaps he can do things for JavaScript ecosystem like he did so well for Python with virtualenv and pip.