
I Am Worried About The Future Of Python - Floopsy
http://www.ironfroggy.com/software/i-am-worried-about-the-future-of-python
======
dmbaggett
My startup has built our entire system around Python and I have found it a
lovely language to code in but a challenging language to deploy in practice,
mainly for these reasons:

1) Python 3's backward incompatibility has made a mess of library support and
has trapped us on Python 2.7.

2) memory usage is a problem on mobile for nontrivial Python programs; iOS
isn't even a formally supported target.

3) Pythonic programs can't use multiple cores.

Now before you jump down my throat and tell me how bad a programmer I must be,
etc, etc, let me provide some anticipatory clarifying comments:

1) Most libraries do now work in Python 3.3; we are waiting on gevent, pyasn1,
and tlslite, and, of course, all our own stuff.

2) There's at least one fork of Python 3 on bitbucket with a bunch of
promising memory-reducing changes (can't find it now).

3) Yes, I know about (multi)processing and that real threads are hard to work
with.

Literally every few weeks we are confronted with a new problem caused by one
of the above. The latest one: there is no WinRT port of Python yet, and the
one Martin Loewis is working on is for Python 3.3. (Of course: Python 2.7 is
barred from noncritical patches.) So we need to either make 2.7 work on WinRT
or not ship a WinRT version. Windows 8 launches Oct 26; Python is frankly just
not ready, and no one but Martin L and a few others seem to care (or even
notice). (And yes, I know Win32 stuff still runs under Windows 8... but not on
the ARM devices, and not in the UI-formerly-known-as-Metro.)

I wouldn't say I regret having chosen Python as the basis of a 250k-line
system, because in retrospect it was still the best of the dynamic language
choices. But I definitely feel like Python qua programming language has become
a missed opportunity in many ways.

Nowadays if someone were to ask me what they should write a nontrivial new
system in, I would probably recommend coding everything in JavaScript or
C++11. This makes me sad, because Python's syntax and sensibility are
unparalleled; I have never been as productive a coder as I have been coding in
Python these last few years. And I've been coding in C dialects since,
seriously, 1979 (on a Heathkit H89 with 64K of RAM!)

~~~
HorizonXP
I would just like to make people aware that there is one mobile platform that
does ship with Python support: BlackBerry 10 and the BlackBerry PlayBook.

It ships with Python 3.2 on device, and it can be used to develop actual apps
with. Games are possible too, I know someone working on one right now.

You should check out our project's site at <http://blackberry-
py.microcode.ca/>. I'm one of the lead contributors, and the project is still
very much in its infancy.

I'm actually in San Jose right now for the BlackBerry Jam Americas conference
if you'd like to meet up and discuss more.

~~~
phren0logy
Tell the other two people there we said hi.

OK, that's mean, but seriously the installed base of BlackBerry doesn't really
inspire confidence.

~~~
HorizonXP
80 million subscribers isn't confidence inspiring? And that's on shitty legacy
BBOS.

~~~
cma
Which doesn't have python.

~~~
HorizonXP
Hah that's fair.

------
lloeki
> We see more major titles written in Flash and ActionScript than we see
> written in Python.

People want to write games in Python (myself included). They really do. The
problem is, try to get pyopengl/pyglew/pygame/pyogre/pysdl or whatever running
on your development machine. Now try to make it work on five different
machines, across Windows/OSX/Linux. Then try to create a reliable distribution
scheme for it.

I've tried it. Even the first step is painful, often requiring intimate
knowledge of C, autoconf/make/whatever build systems and the system you're
targeting, jus tto get you going. It's such a pain I just end up writing stuff
in C, and only maybe plug in the python stuff later on, if at all.

Really, the lowest levels like PyOpenGL should have been part of the official
Python distribution, just like tkinter, even if they are thin ctypes-like
wrappers.

~~~
devinj
I can't speak for the rest, but pygame is trivial to get running on multiple
systems, so I don't know what you're talking about in that regard.

I've heard pretty bad things about pyogre though.

~~~
mtinkerhess
As a counter example, I once had a hard time getting pygame running on OS X. I
don't remember exactly what the issue was, it may have had something to do
with multiple versions of python installed on my machine, but it was enough of
a pain that after a couple of hours trying to figure it out I decided I didn't
care enough about checking out pygame to work it out. This might have been the
kind of thing that someone more experienced in python would have known how to
solve immediately, but for me at the time it was too much.

On the other hand, on other machines it was a breeze to set up.

~~~
kroger
Just a tip: it's useful to use virtualenv [1] to deal with multiple versions.

[1] <http://www.virtualenv.org/en/latest/index.html>

------
jayflux
"Python behind the webserver is a powerful tool and one that has enabled a lot
of great sites and products and services. Unfortunately, once the content hits
the wire, the Python stops."

Not sure if im being ignorant here but surely this is a problem for most
server side languages? PHP, Ruby, Go, Perl would all suffer the same problems.
Browser vendors only want to have JS client side for obvious reasons, this
doesn't just affect python.

Js is clearly doing a fine job at client side programming, should we not be
happy with that?

Why are people obsessed about creating a "jack of all trades" language instead
of letting languages do what they do best?

Taken from the comments... "I suspect javascript will become like assembly and
all languages targeting the browser platform will need to be compiled to
javascript."

That sounds like hell to a front-end developer. Its bad enough learning
coffeescript or other dialects if a company uses them, but other languages
too?

~~~
Smerity
That's the issue with this -- if this is actually a problem for Python, then
it's a problem for EVERY programming language.

Let's first see what satisfies these problem areas:

Mobile = [ObjectiveC, Java, C (native client)] (and maybe Javascript+HTML if
you look at the "compile down"/"webview" solutions)

Browsers = [Javascript] (and _maybe_ C if you say Emscripten is actually a
sane solution to problems but I'd argue it fits only a minority of cases)

Games = [ObjectiveC (iPhone games), Java, Lua (scripting/plugins),
Flash/ActionScript, C, C++]

No single language fits across all of these (dare I call them) niches. Every
single language other than Javascript fails the "Browser" test.

I'd argue that focusing on many of these niches is the wrong way to go. Trying
to fight for a spot on the mobile front will be a losing battle as Python will
always be a second class citizen or flat out denied. The game development
front seems like a confusing goal -- how many devs picked up Lua from the
plugin system? Additionally, Python isn't fast enough to be the base nor
faster than Lua for the plugin system.

The metric that he says he's optimising for is "adoption". I just feel like
he's working backwards and optimising for tiny use cases instead of the
general case. Many Java classes at university are being replaced with Python
for example, and I'd say that's more important for adoption than any of these
areas (other than web).

~~~
zanny
Don't forget C# from Unity under games.

The take away here is that since client side web programming can _only_ be
javascript, it pigeonholes a large chunk of development effort into a forced
language. I can't wait for the day web browsers can leverage multiple DOM
aware scripting languages. The fact the JS JIT is already tightly coupled with
an html / css parser is already bad enough.

~~~
toyg
Fat chance. It's already hellish to properly secure _one_ JIT, a multiple-JIT
browser would quickly look like Swiss cheese.

Face it: unless something miraculous happens (like Microsoft, Mozilla, Google
and Opera _all_ agreeing on a brand new language), javascript will likely
remain the only choice for "in-browser" UI development. Unless the browser
gets replaced wholesale, we're screwed like that.

~~~
rdtsc
Once Chrome gains enough users, they can choose to include Dartium (their Dart
VM) in Chrome and choose to support that.

As a language Dart is not exciting. It doesn't tout fancy monads or functional
data structures and so on, but it looks basic, simple and average. Kind of
like what Java would be if it was made for the web.

So there is at least on contender out there to replace JS.

Mozilla is working on Rust. A very exciting language that actually has many
fancy features, some borrowed from Erlang. Not sure if that will ever make
into an in-browser language, but who knows.

------
wladimir
I really think PyPy is the future of Python. A faster python with better
support for paralellism by leveraging STM. This makes Python suitable to a lot
of use-cases where it's currently too slow. What is lacking at this moment is
compatibility with a lot of the libraries in the ecosystem (see
<https://bitbucket.org/pypy/compatibility/wiki/Home>), due to limited C-API
compatibility (which is non-trivial to say at least due to different memory
management and locking semantics). This is serious because a big part of what
makes Python so cool is the wide library support.

~~~
ldng
Yet it only really address part of the problem. AFAIK, right now pypy is a
memory ogre that would not fit on a mobile. If someone with Pypy knowledge
would enlighten us about if it will ever be possible to run it on a 1 GB
mobile phone or a tablet ?

~~~
wladimir
Right now memory usage is pretty bad. But mind that tablets and phones will
have more and more memory in the future, while at the same time, very smart
people are working at improving PyPy. I'm pretty optimistic in that regard.

After all: If it's possible to get JS JITs to fly on mobile devices, which it
is, why not Python? I really see no structural problems.

~~~
ldng
I tend to agree with you, it will happens. But Python is loosing mindshare
right now, won't it be too late if we wait to get to the point where both Pypy
consume less memory and device have enough memory ? I think that's the point
of the article is what can be done now to not be late on the bandwagon and
surf on latest trends. We are somewhat talking about platform marketing here,
I think.

~~~
cookiecaper
Where is Python's mindshare going?

~~~
ldng
IMHO, more or less as stated in the article, webdev went to Golang and
Node.js, gamedev to lua and python mobile hardly existed in the first place.

------
dazzawazza
Regarding games: I chose lua over python because:

* smaller runtime foot print.

* faster runtime.

* simpler to embed

* the fewer batteries that are included are simpler to embed in your runtime. Python's libraries are often very tricky to embed.

I prefer python to lua, although they are both expressive and powerful
languages, however the convenience of python isn't enough to trump the
flexibility and speed of lua.

(edit formatting)

~~~
protomyth
There is also a lot more experience in the mobile space of using Lua than
Python. That means a lot more blog posts and documentation.

~~~
dazzawazza
Ah yes, thanks for reminding me. This is also very important.

------
cmwelsh
Lua, a programming language I think might appeal to Pythonistas, is in a solid
position to profit from the compile-to-JavaScript fad. I did some tests with
mherkender's lua.js[1] a while back and Lua translated to JavaScript was only
taking around 40% more time (I forget the exact numbers) to run the horrible
benchmarks I wrote. There's still low hanging fruit to improve those numbers.
Lua is a beautiful language. In addition, it's the language with the best
chance at making it into a browser engine. It's lightweight - the compiled
binary is around 120KB.

[1] <https://github.com/mherkender/lua.js>

~~~
JasonFruit
I'm not sure that Lua is going to appeal so strongly to Python programmers.
It's wordy and its design makes opposite choices from Python's; _vide_ global
vs. local, for example. I think the brevity and safe assumptions of Python are
a lot of what people value in it.

~~~
ufo
Thats if you only focus on syntactic issues like that. If you see how the
languages work they are actually much more similar (both have generators,
operator overloading, lexical scope, etc...)

~~~
JasonFruit
Using any syntax, "local unless you specify global" and "global unless you
specify local" are different in an important way. And syntax _is_ important to
most programmers; there are dozens of languages that provided the semantic
equivalent of Python before it existed, but haven't matched its popularity.
Python's practical syntax is much of the reason.

------
ippisl
Shedskin might be one solution. From the shedskin forum[1]: " I've built and
run shedskin apps for the iPhone - it works great actually.

It required commenting a few things out, and swapping in the boehm gc for iOS
port.

Of course, no native ui widgets available - but I used phonegap to do the ui
in html5 and it called shedskin c++ for all the actual app logic. Phonegap
supports connecting html5 -> native c++ via a plugin architecture. Works
wonderfully.

High powered, efficient apps on the iPhone via python is a bit of paradise
compared to apples own obj-c, I must say. Huge potential for shedskin adoption
there if someone packaged things up this way for the general public..."

[1] [http://groups.google.com/group/shedskin-
discuss/browse_threa...](http://groups.google.com/group/shedskin-
discuss/browse_thread/thread/1c49df0b22795d68/c2b996ad9fb5f502?lnk=gst&q=iphone+html5#c2b996ad9fb5f502)

------
b0rsuk
_I recognize that most of the response I'll probably get from this post
amounts to, "You're complaining about silly things. Python doesn't do that, it
isn't meant to. Stop putting a round peg in a square hole and complaining when
it doesn't work."_

If you agree with the above quote, you are committing a Texas Sharpshooter
Fallacy. We're not using Python for that, because the interpreter has a
significant startup time, because Python performance is not stellar, etc. But
it could be different.

I'm a novice programmer without commercial experience, but the statements in
bold ring true to me: \- Python is Expensive On Mobile \- Python is Without a
Door On Browsers \- Python has Failed for Game Development

------
modernerd
As a PHP developer slithering away from PHP at great speed on the back of
Python, I am excited about its future.

Yes, I would love to be able to use Python for games and mobile development
too, but I do not _expect_ to be able to use it for these things, just as I do
not expect to be able to build web apps with Objective-C (even though some
do).

For me, the power, elegance, philosophy, and community that sustain Python are
enough to make it a worthwhile choice in a finite but important number of
domains.

~~~
bduerst
Same. I cut my teeth on PHP but have recently started working in Python and
like it.

PHP is nice because you can throw it on any LAMP stack and it's interpreted,
but Python runs much smoother for heavy data lifting.

------
skrebbel
This is like writing an article in 2003 saying "I'm worried about the future
of PHP". Even if you're right and Python is doomed, so what? You'll have
another good reason to broaden your resume and become a generalist engineer.

~~~
Tloewald
In 2003 PHP was already the most popular web dev language and web dev was
where the action was and the transition to PHP4 from PHP3 was pretty smooth.
This article points out that he's got code stuck on Python 2.x, Python is not
doing well on the current hotmess (mobile) and it's not now and never has been
as popular as PHP. How is this similar?

~~~
skrebbel
You're taking things too literally. I took PHP as a language that was very
popular for web apps in the past, and much less so nowadays. PHP's popularity
for the web in 2003 is not dissimilar to Python's popularity for the web in
2012.

Anyone predicting in 2003 that PHP would become less popular and/or suitable
for the web would've turned out to be right. Yet, I bet anybody who might've
made such a prediction just learned a new language (maybe even Python) and is
still enjoying creating great software just like back then.

------
tocomment
He forgets about concurrency. That's a major point of weakness for the future
of Python (even though no one will admit it).

~~~
cmwelsh
Have you tried using PyPy and gevent? In a well-designed benchmark[1], it
outperforms Node.js. That means it's at least competitive when it comes to
concurrency... right? The GIL is not a big deal because shared state
concurrency is a fundamentally broken model.

[1] <http://mrjoes.github.com/2011/12/15/sockjs-bench.html>

~~~
jedbrown
_The GIL is not a big deal because shared state concurrency is a fundamentally
broken model._

This depends on the problem domain. A lot of the code I write is limited by
memory bandwidth. The number of outstanding memory requests is limited by
hardware, so saturating the memory bandwidth, especially when many active
memory streams are needed, requires several cores to participate. A
particularly useful approach now is for threads running on those cores sharing
a particular cache level/prefetch unit to perform software "buddy prefetch"
while working together on a traversal. The threads are weakly synchronized by
memory dependencies, sharing both cache and bandwidth.

If you remove shared state, the threads each need their own ghost region and
cannot share cache and bandwidth. I avoid shared state, especially shared
mutable state, whenever possible, but there are still plenty of cases where it
makes sense, especially at cache and NUMA domain granularity.

~~~
qznc
If your code is limited by memory bandwidth: Why don't you use a language,
which gives you more control about memory? Why do you even parallelize?

~~~
jedbrown
1\. I don't use Python for this task, but libraries like numpy give you ready
access to unboxed arrays. It's becoming common in scientific codes to glue
together "dumb" numeric components (written in C or Fortran) using Python.
Threading granularity is limited in this case due to the GIL, to the point
where either "smarter" code must be pushed into the compiled language. To keep
the "smart" code in Python, many projects end up using only MPI for
parallelism. This was fine until recently, but with modern memory hierarchies
and proliferation of cores within a node, it gives up enough performance to be
an issue.

2\. As I said above, you need to use multiple cores per memory bus to utilize
the hardware bandwidth because there is a limited number of outstanding memory
requests per core (or hardware thread). Remember that the max bandwidth
realized by your application is bounded above by

    
    
      num_pending_requests * payload_per_request / latency
    

independent of the theoretical bandwidth of the link. Additionally, when you
use more hardware threads, you get access to more level 1 caches. On machines
with non-inclusive L2/L3, this also means you can fit more in cache.

------
RBerenguel
Most of the problems look like Lisp problems 20 years ago. Maybe Python is not
the best for mobile or for games, but... so what? It's great for some things,
and if it excels in those, why does it need to be perfect for everything?

~~~
batista
Because else you end like this Lisp of "20 years ago" ended up: used in some
niches, largely forgotten in the main.

For languages, number of programmers translates to: higher quality and number
of libs, better tested, more work on the efficiency, compiler, more companies
built around the ecosystem, more tools, more books, more tutorials, more open
source projects in and with it, more bugfixes, new APIs with support for the
language, new bindings etc.

It doesn't have to be "perfect for everything", but it has to be good in the
kind of things that interest the most people people now. Scientific computing
ain't it.

Much better to use a bad language with 100,000 programmers than a good one
with 1,000, as people reluctant of JS in the past have found out.

~~~
singold
I feel this is kind of what happens with php, it isn't the best language, but
for someone new in server-side webdev there is plenty of info around the web
to solve most problems

------
mpdehaan2
So I can't say I'm worried much.

Python strikes a very good balance between rapid development prototyping and
something that is sustainable, and has an excellent level of readability that
makes it outstanding for gathering patches from even non-professional
programmers.

Most of the interesting parts of computing now cluster around web applications
and web services, where the action happens on the server and Python is still
reasonably well suited -- and in the servers behind them, where it's _quite_
critical in Linux distributions. I write a ton of software for systems
administrators and can't really see using anything else if I wanted the same
contributor rate.

Sure, it doesn't run in the browser, but I can't see myself pining for the
return of Java applets either. It all comes down to what types of applications
you are writing.

If I was doing HFT, I'd clearly want something statically typed, fast, and
functional. Those same properties are things I don't want in other
applications. It's pretty much a screwdriver vs carburetor type of problem.

Yes, I'd love to see more investment in the runtime -- but I'm also reasonably
fine with where it's at.

------
ghettoCoder
This is a good post and the comments are equally good. Here's the deal. Python
nation isn't doing anything new here. Other languages have caused the same
soul searching, think of C, Java or Delphi (of bad example). The point is that
once a language grows up, and yes it can take takes ten years, it's a natural
progression.

I've only been using Python for a few years and now I don't know how I managed
to get anything done before. Python as a solid base and excels at certain
things. Move on. Use the tool that fits.

As for the mobile hardware being low on power and battery life. Give it time.
My computer 12 years ago had a difficult time doing anything when converting
video. Now, I can play games while I convert a video and it uses less
power/puts out less heat.

Patience.

------
ehutch79
So, what should we be using instead NOW? It's sort of frustrating reading
these types of articles. I mean should I not be using python for my web apps
anymore? Since we shouldn't be using python anymore, what should i use in the
mean time? no suggestion? guess i'll sit here twiddling my thumbs until the
next big thing hits hacker news.

------
manojlds
Ironic that one of the things that got me hooked into programming and python
was PyS60. I could write programs on my phone and run them. That was awesome.
This was about 8 years ago on Nokia symbian phones.

~~~
eric_bullington
Take a look at Kivy. Write code in Python and run it on Android and iOS.
Building the dev environments for those platforms is still a pain, but once
those are set it, it's a snap. Also, there's an online build server available
for Android at no cost.

Main drawback is a slow _first-time_ start-up time as the package files are
unpacked. Subsequent start-ups are fine in my experience. Once a kivy program
is started, it runs like a charm on modern hardware.

I'm building a scaffolding for productivity apps in Kivy here:
<https://github.com/esbullington/vite-vite>

You can try out the (very alpha quality) Android app build with the
scaffolding here: [https://github.com/esbullington/vite-
vite/vitevite-0.1-debug...](https://github.com/esbullington/vite-
vite/vitevite-0.1-debug.apk/qr_code)

I should have some more time to work on this next week, at which point I'll be
cleaning up the code, adding more documentation, and adding a few features.
Suggestions and pull requests are welcome.

------
lmm
We see some games written in Flash and ActionScript, but not AAA titles like
Eve and Civ 4. How many general-purpose languages get used to write such
titles? I can only think of C, C++... yep, that's it.

Is the author's point that we're moving away from "big" games and towards less
complex, "casual" games like are popular on mobile, and the latter aren't
using python?

~~~
hythloday
Every game that uses Scaleform (that's a lot of them) uses Actionscript.

Here's a list of games--many of them AAA titles--using Lua:
[http://en.wikipedia.org/wiki/Category:Lua-
scripted_video_gam...](http://en.wikipedia.org/wiki/Category:Lua-
scripted_video_games)

~~~
RandallBrown
Scaleform is just for the menus and stuff though isn't it? That's not quite
the same as game logic.

------
pcote
Python does not typically end up in a video game's main code base. However, to
say it failed is to have a pretty limited view of game development. Art asset
creation often requires customized tools within software packages like Blender
or Maya. Python is doing just fine within it's part of the development
pipeline.

------
protomyth
I'm a little confused by the first point. How is Objective-C not a dynamic
language? Is he talking about something other than dynamic dispatch? Is there
some reason other than time that prevents an implementation of Python to
mirror what was done with Objective-C?

~~~
scott_s
Python is interpreted, but Objective-C is compiled. That is, a Python program
is executed through the Python interpreter, yet an Objective-C program runs
natively.

Although he may indeed be confused about "dynamic," since dynamic dispatch has
nothing to do with the above, and is supported by all OO languages.

~~~
protomyth
This is where I'm really not clear. What makes Python harder to compile than
Smalltalk (which had some native compilers - Smalltalk/X) or Objective-C?

~~~
maxerickson
The corners of the language make it difficult to benefit from compilation. Per
the language, things like the internals of an instance of a class can be
manipulated at runtime, so the compiled output ends up needing to support the
entire dynamic runtime.

Cython and Nuitka (among others) do this to varying degrees.

~~~
randomdata
Didn't Smalltalk basically invent the idea of being able to open up objects at
runtime? Even Objective-C, with its strong Smalltalk ties, allows for runtime
modification.

~~~
scott_s
Any language with eval is probably going to, by default, be interpreted. You
can compile a language with eval, but it means you'll need to stick the
compiler into every binary with a program that calls eval.

------
manuscreationis
And here I was hoping for some kind of thesis on the woeful state of affairs
surrounding the fact they've had 2 major versions competing for developers
attention, the with "older" fork being the more the widely supported one.

~~~
j2labs
Every language deals with this until about x.3 of the newer version.

~~~
debacle
Not every language has such a broad chasm between two versions of the
language. In fact, I can't really name one. Maybe ActionScript?

~~~
dalke
Perl6 v. Perl5. Visual Basic .NET vs. VB6. ANSI C vs. K&R C.

Looking now, "Appendix A of the Fortran 77 standard lists 24 things that are
not backward compatible in moving from f66 and f77."

Please tell me how the chasm between Python 2.7 and Python 3.3 is
significantly broader than the chasm between the aforementioned languages.

~~~
manuscreationis
I would go so far as to say VB.NET vs VB6 is the same as comparing any flavor
of C++ to C#. It doesn't really make a lot of sense, even though they share
the same pedigree.

VB.NET is effectively a different language entirely. It's programming .NET
with VB-like syntax, not the VB language running on .NET (in my mind, anyways)

~~~
dalke
Ahh, but the goal is to find another language with "such a broad chasm between
two versions of the language." It seems I can't win if people decided that my
examples are so far apart that they are no longer two versions of the same
language. ;)

What about Old S v.s New S? S v.s S4? S vs. R?

What about D1 and D2 of the D programming language?

Classic awk vs. nawk?

Honestly, I could go on. I think the person I'm responding to really doesn't
know much about programming language histories.

------
kamaal
Don't worry about the future of a tool. They just come and go. As a developer
worry about the problems, quality problems you would like to solve. Think
about 'whats in it for you'.

The inevitable nature of changing requirements in programming mean, there is
always going to be demands for new changes and new features in a programming
language. Changes in Syntax and excess syntactical sugar many times come only
at the expense of breaking backwards compatibility. What you are seeing now is
a saturation with Python. Python is good, but people now want more. I bet you
unless Python is ready for major backwards incompatible changes in another 5-6
years they are going to lose this battle against other languages. NodeJS, Go
they are all going to eat Python's lunch. What you will see now is cool stuff
getting built in some language like Go and will go viral every 15 days. People
who had originally no interest will learn just because its getting famous.
Architects who just want to sound different and distinct will use it, Slowly
but sooner or later there will be job demands for Go. This is inevitable and
going to happen. Suddenly people will find every reason under the sun to hate
python and love go.

Python will increasingly find itself in the same situation Perl was some years
back. And its fans will have to face the same trolling.

Its just your usual technology cycles. By the way I guess its time to start
learning Go.

------
nandoflorestan
Hmm. I still see many people griping about Python 3 incompatibility, so here
is my comment.

If you have some code that you would like to have working under Python 3,
check out a little library called "six". With it, it is simple to maintain a
single codebase that works with both Python versions (no translations
necessary, forget the 2to3 tool).

For example, the Pyramid web framework (and many related libraries) have been
successfully using this approach. This way one can support Python 2.6, 2.7 and
3.2+.

Together with "from future" imports (for Python 2.6 and 2.7), this is easy to
understand, though "upgrading" the code may still take time.

At the top of every module of mine I have this:

from __future__ import (absolute_import, division, print_function,
unicode_literals)

~~~
just_testing
Link to syx library: <http://packages.python.org/six/>

------
yason
This is just an old rant that has been heard before from many language people,
Lisp community included, and the author seems to know it but also refuses to
get along with that and is upset because that square peg really, really can't
be banged into a round hole.

Python has been in decline for years, maybe 5-6 years now. Python3 definitely
cemented a lot the current downward angle. Python isn't out and possibly never
will be, but its design has gradually shifted away from the hacker community.
And that means the momentum will consequently shift into other languages and
environments. And that's fine. Each language will gather the following it
deserves, in the ever-changing environment.

------
pjmlp
One should not focus in a single programming language, as such the article
looks like a developer's cry to use his favorite language everywhere.

Just make use of the best tool for the job. In some cases that tool is not
Python, as simple as that.

------
LBarret
I also built my first startup in python. It was a technical success (and a
financial failure) but using it imply a few things :

* good coders. ( bad coders can do much more damage. )

* you need to use cython (and maybe numpy).

* memory profiling is hard

* you need to search pypi alot, there is likely something there to help you.

* windows builds of extensions can be tricky.

I am also concerned about its future, the community seems in a "I know better
than you" attitude and I don't see anything major coming, except pypy.

------
vxxzy
There are some innovative ideas that may help "ease" over to python-on-
mobile... One of them being pyBead:
<http://sourceforge.net/projects/pybead/?source=directory> Another would be
Muntjac...

------
vorg
The article didn't mention Python's availability in China. Their website
download page (<http://www.python.org/download>) has been blocked by the
Firewall since late 2009.

~~~
olivier1664
After loking for an explanation:

"<http://www.python.org/ftp> could bypass GFW to download it. Because of
version 2.6.4, the sensitive number 'June 4' to government, so the GFW block
the download page."

according to wpopenid on [http://posted-stuff.blogspot.hk/2010/07/downloading-
python-f...](http://posted-stuff.blogspot.hk/2010/07/downloading-python-from-
china-or-not.html)

~~~
vorg
Thanks, that "June 4" reference could be the reason, but I'd think too many
webpages would be blocked if it were. (Of course, I had to look at the .in
version of that blogspot page as HK's version, like many others, is blocked in
the mainland.)

The FTP site works for me. I visit Hong Kong often enough so not having access
to the latest internet stuff isn't usually a problem for very long.

------
INTPenis
Don't you worry about the future of Python, let me worry about blank! - Guido

~~~
shawabawa3
Incase someone doesn't get this:
<http://www.imdb.com/title/tt0584440/quotes?qt=qt0361067>

------
TwoBit
I never took Python very seriously because of its shitty documentation.

------
willvarfar
I want a Python environment running in Chrome NaCL.

~~~
7952
Agreed! The constant focus on browser security means that this kind of thing
is avoided out of hand even when security is not an issue (for internal
deployments for example).

~~~
willvarfar
I blogged about that:
[http://williamedwardscoder.tumblr.com/post/14127327004/googl...](http://williamedwardscoder.tumblr.com/post/14127327004/google-
native-client-to-be-app-store-for-windows)

~~~
7952
I am really arguing the opposite point. There are lots of situations,
particularly in business where you want to be able to interact with the file
system and OS. Currently your options are very limited if you want to use a
browser as a UI. How do you add a "send as attachment using outlook" button in
a web page? Native client does not help with this due to the sandboxing.

------
nacker
In spite of the Elop shenanigans at Nokia, Qt is very healthy, and Qt5 has
even been demoed on the Raspberry Pi. Pyside is now totally integrated and
mature. Please take a look.

[http://qt-project.org/wiki/PySide-Tutorials-by-Experience-Le...](http://qt-
project.org/wiki/PySide-Tutorials-by-Experience-Level)

<http://doc.qt.digia.com/4.7-snapshot/gettingstartedqml.html>

<http://qt-project.org/wiki/PySide-and-QML-Playground>

------
nacker
There is a Door on Browsers for Python right here:

<http://pyjs.org/examples/>

<https://github.com/pyjs/pyjs/wiki/GettingStarted>

Needs more developers... (Hint)

------
wilfra
For web dev (not game dev) what is Python in danger of losing to? Rails?

~~~
nikcub
IMO the largest competitor for new developers would be Node.js, and for
existing developers would be Go

~~~
bti
Haven't really been following Go at all. Are there any companies (besides
Google) that are using Go on the web?

~~~
ehutch79
I don't know about companies using it, but here's the django equivilent...
totally confident it's a production ready replacement for django, RoR, etc.

<http://www.getwebgo.com/tutorial>

~~~
dalke
Given that it has no template language and (seemingly) no database mapper,
much less support for caching, user account, etc., I'm confident that it's not
in the same space as Django or RoR. For example, how do I get it to talk with
a Postgres database, and do LDAP authentication?

~~~
genbattle
> Given that it has no template language

Ahem...

<http://golang.org/pkg/html/template/>

It doesn't have its own equivalent of RoR or Django yet because most of the
batteries needed for web development are built-in.

~~~
dalke
My knowledge of this comes from the linked-to tutorial: "Web.go doesn't
include a templating library. However, there are several good ones available,
such as mustache.go. The template package in Go is not recommended for web.go
because it doesn't allow templates to be embedded within each other, which
causes a lot of duplicated text."

It seems that the web.go authors thinks that Go's template language batteries
are of the wrong size.

~~~
cmccabe
Web.go is sort of the Golang equivalent of Sinatra or Camping, not really of
Ruby on Rails.

What you're looking for is Revel. <http://robfig.github.com/revel/>

~~~
dalke
To be honest, I'm not looking. I'm only commenting that the original statement
- that webgo is something like RoR - is incorrect. Thanks for the
confirmation.

------
lutusp
For myself, I'm worried about the future of writing -- you need a spell
checker. An automated spell checker would have caught the majority of the
misspellings in your article.

~~~
Terretta
Spell check would be a good soltuion.

