Sunday, April 6, 2008

Progress is in the Language

(If Python is in the Language)

This posting is short and about capital P Progress. Mixed into the equation of progress is always the issue of technology. For technology to mix well within the larger discussion of Progress, it needs to follow these meta properties:

  1. Ubiquitous, or becoming ubiquitous. This prevalence should be built on a populist distribution model. Profit is not a sin, but reliance on continuation of a single company or entity for support thoroughly disqualifies from "Progress".
  2. As genetically ambivalent as possible. Can be used by many types of people.
  3. Technologies exist by support from other technologies. The technology hierarchy needs to hold the "Progressive" properties already listed.
  4. Where the technology hierarchy has gaps of inclusion, the newer technology has effects on society or the tech hierarchy that reduces those gaps.

With this list I've shown myself in league with the millions of open source software proponents that dominate the blogosphere. I'm a stereotype. To commit myself to the stereotype even more, I'll let you in on what this post was supposed to be about: The Python Programming Language. But that in itself shows how open source proponents think, when they see a freely available C compiler or powerful free scripting language they see something like the "Progress" hierarchy previously listed.

Anyway, in the last month I've started learning Python. It is the coolest and prettiest language I've seen. If it runs on Windows, OS X, and Linux with roughly similar power then it denies most of the operating system battlespace. Still, Linux is free so it is the de facto winner in the "Progress" qualification. But my Number 4 in the list is a complex, non-linear process. The route to Progress, the progress of Progress, is not a route of perfect righteousness. By empowering Windows with a program that runs equally well on Linux or Apple, dependence on Microsoft diminishes. Microsoft is not evil; rather, absolute dependence on Microsoft, or any single entity, is.

Geeky examples (copied from here)

There are a number of modules for accessing the internet and processing internet protocols. Two of the simplest are urllib2 for retrieving data from urls and smtplib for sending mail:

>>> import urllib2
>>> for line in urllib2.urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl'):
...     if 'EST' in line or 'EDT' in line:  # look for Eastern Time
...         print line
    
<BR>Nov. 25, 09:43:32 PM EST

>>> import smtplib
>>> server = smtplib.SMTP('localhost')
>>> server.sendmail('soothsayer@example.org', 'jcaesar@example.org',
"""To: jcaesar@example.org
From: soothsayer@example.org

Beware the Ides of March.
""")
>>> server.quit()

1 comment:

Unknown said...

To me, writing python feels like being able to execute pseudocode. It's like getting inside my own OODA loop and coding faster than I am prepared to react.

Imagine if you can, the startling contrast when I started a CS bachelor's degree progam in the Fall and saw textbooks trying to pass off broken Java as pseudocode!

Some students, not knowing any better, adopt this habit and much time is wasted debating the logic of Java's C-style "for" loops and googling the Java API instead of learning actual algorithms.