Category Archives: Python

Playing with Python

I was playing with Python a bit more over the weekend. It is a serviceable language but I am persistently amused/irritated by a few things.

The python 2/3 breaking incompatibility split seems to be persistent, entrenched and troubling. It appears that the .NET and java ports (jython and iron python) have still not made the transition to python 3. The cython baseline and web site are now confidently stating that python 3 is the present and python 2 is the past, yet I’d expect that if that were really true, the other python implementations would at least support python 3 and ideally would have the same position with regards to python 2.

I was watching a video discussing some python features and they mocked the curly brace languages for having religious wars about where to put the braces. I have a general aversion to using white space (a very poorly conserved type of text) for block scoping as far too many tools consider spaces and tabs to be adjustable and interchangeable. The thing I find amusing here is that I’ve seen far more friction in the python community between use of spaces or tabs and how many spaces per indent level than I’ve ever seen around the placement of curly braces.

I do expect to replace perl with python for various places and the OpenCV support looks quite interesting. I think that in time the style issues will feel less foreign and I very much hope that the 2/3 split will be dealt with in the overall community as JVM and CLR versions of the engine that implement a non-obsolete version of the language would be very nice to have.

Native extensions to Python

I spent a little time last night looking at the coding requirements for creating native (C essentially) extensions to Python. This has come up previously in conversations as another way to make native code accessible functions available for scripting by folks who aren’t development engineers.

The facility appears similar in style to that provided for writing perl extensions or JNI. No surprise here. I’ll probably try playing with this a little bit sometime soon just to get a feel for the full series of steps. The process involved in getting the *.dll or *.so file into the right spot to be usable seems a little bit opaque, but perhaps it is just so automated that it isn’t much of an issue.

I’m not a huge fan of Python but it has a huge following and seems to be a useful intermediate step between shell scripting sorts of activity and full powered implementation languages (C++/C#/Java).

I wish python had not chosen such a poorly conserved item as white-space to represent block scoping (the tabs/spaces issues are not generally fixable without making the representation issues worse). They also seem to have created a permanent 2.x/3.x schism where quite a few years after the major version upgrade there is still a substantial amount of code on either side of the divide. Perl 5/6 had a similar issue, but perl 6 never seems to have taken off so the impact is much smaller.

Some links that seemed useful: