Skip to content

Python and modern software paradigms

Nick Coghlan has a nice perspective on where Python might be going and his ideas apply to a much broader software development community.

I used to consider it rather funny back in the IBM 360 days, that computers used four letter words. Eight bit characters and 32 bit words. Nowadays even PC’s are making the transition to 64 bit words. The world is also getting bigger and ASCII (r.i.p. EBCDIC) just doesn’t quite cut it. So the trend is towards Unicode. That’s back to four letter words, again, more or less. (See wikipedia on character encoding).

Anyway, Unicode was designed into Java from its beginnings but Nick indicates it is ‘in the works’ for Python. That not only illustrates the differing design philosophies but also that Unicode is still working its way into modern software design.

Another topic is that of development environments. This includes the tools needed to package and distribute an application as well as just build it. What he says about Windows indicates a migration in Microsoft’s attitude towards developers.

Windows is designed and built on the basis of a mindset that expects most end users to be good little consumers that buy software from developers rather than writing it themselves. Anyone writing software is thus assumed to be doing so for a living, and hence paying for professional development tools. Getting a decent development environment set up for free can be so tedious and painful that many developers (like me!) would rather just install and use Linux for development on our own time, even if we’re happy enough to use Windows as a consumer (again, like me – mostly for games in my case). The non-existent “BUNDLE ALL THE THINGS!” approach to dependency management and the lack of any kind of consistent software updating interface just makes this worse, as does the fact that any platform API handling almost always has to special-case Windows, since their libc implementation is one of the more practically useless things on the face of this Earth.

Way back in DOS days, it was the amateur who wrote most of the programs. As the software and its interface became more complex, especially with the introduction of a GUI, the compilers, editors, and linkers became more sophisticated. Microsoft development tools have kept pace but the environments for program development and implementation have become something a casual amateur has difficulty with. Nick says Python suffers a bit on Windows because of this.

Concurrency is another topic in the Python future directions discussion. Thinking about multiple parts of the program doing things simultaneously is a nontrivial exercise and it really helps of your development software doesn’t get in the way.

In looking at this list, I compare and contrast to Java. Java was designed with ‘corporate’ needs in mind. That means large projects with international scope running on many platforms in a networked environment with many asynchronous things happening at once. Python, on the other hand, had more local and personal goals. The future described by Nick is looking at trying to balance the broader needs with the personal ones.

Post a Comment

You must be logged in to post a comment.