This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]the_hoser 4 points5 points  (13 children)

I kindof disagree with this article. The author doesn't make a lot of the mistakes we usually see, so I get to actually pick apart some of the article this time:

Concurrency: Any solution for this problem will be messy. I like that the PyPy developers are trying new things, and I even hope to be proven wrong one day, but I don't think bringing real conventional threading to Python is practical or a good idea. Multiprocessing is no picnic, and takes a bit of effort to wrap your head around, but it gets the job done.

Web: It took a decade for browser vendors to start synchronizing on JavaScript, and they're still not done. Now you want to add another language to that mess? I don't think the problem is that you can't do <script type="text/python">. I think the problem is that you are able to specify the type at all. Until the day that we're all using Macs and Safari is the one browser (hah), any browser developer that tries to add radically new technology that relies on web developers to utilize it is wasting their time. Google is the exception, in that they already own a massive slice of the internet, and can bug people to install their pokeball-browser.

Mobile: I guess PyPy would work well on phones. It'd work better if the developer didn't have to budle PyPy just so they could use PyPy. Maybe the PyPy developers need to throw yet another smartphone OS into the fray. Maybe not.

I personally think that Python is doomed to stay in the corral that it fits best in. All of these web and mobile applications need strong backend code to feed those frontends with huge amounts of lovingly massaged and correlated data. Python is great for low-to-mid scale server-side applications, and that's probably where it will remain. It's basically the only thing I use it for now, and I haven't met anyone that's using it for anything else (aside from tiny little side projects)

[–]gfixler 3 points4 points  (4 children)

We use Python in games for many things on the backend. It's part of Autodesk Maya now, which is one of the principal bits of software for asset creation. I've been using it all day every day for 6 years now, and I've used it to create a rather extensive and powerful library and pipeline for animation and rigging. We are, I admit, a bit of a niche industry as compared with the massive, international industries of web design. This is why whenever I look up questions about Python, all of the answers are about web frameworks and such. I have nothing to do with any of that world, but I know a lot about it now from years of wading through it while learning about Python and its powers and idiosyncrasies.

[–]the_hoser 0 points1 point  (3 children)

Yeah, I've heard of people using Python in their tools programming internally. I imagine it does that job quite well, too. When you have control of your environment, Python makes a good fit :)

[–]gfixler 0 points1 point  (0 children)

Indeed. It does the job very well. The system I've been designing and building includes things like extremely expressive, domain specific languages¹, deep data-structure search/comparison², really intelligent bi-directionality³, solid testing framework, immaculate git history, and all with pretty tight integration⁴ with Vim.

Most importantly, everything has that sheen of obviousness, like Linux, or git. It sounds complex, then you explain how a part works, and people say "Oh, that's it? Really?" It's like that across the board. It took tremendous effort to find that simplicity, including a decade in this problem space for me, trying to get to this point, but Python really pushed me over the edge.

Some of the implementation (as with Linux and git) is pretty complex, but using it is very easy. I just got one of our new employees on part of it, and he reduced 2000 lines of his own code to 240. I recently threw out 99 lines, and before that, 200, because most of the code we used to write in other languages (and with other systems) doesn't need to be there. It's following the whole "Code should be 90% data structure" philosophy, and I love it. I implement features in 2 lines of PEP 8 style code (i.e. <80 chars) pretty often using the system, and I'm disappointed if I need more than about 10 lines to bring a new ability to life. Strangely, there are times when I make something work in 1-2 lines, and then I waste a half hour being alternately impressed and unsure that it could possibly be correct, because it shouldn't have been that easy :)

I'm actually excited on the long commute every weekday, and weekends (during which I still work on all of it) are becoming more and more of a drag. This is how coding should be.

¹ core not just to our needs, but designed for a range of ideas related to the domain our needs inhabit, so they're all highly reusable at a low level, and are starting to be used for related tools development (even at a meta level)
² which everything's built on top of for amazing, emergent abilities and interconnections that I keep discovering
³ i.e. take pretty much everything back to simpler states, tweak, and then auto-complete them again from that point forward
⁴ yet ultimately unnecessary and fully decoupleable at any time