Monday, August 31, 2015

A Refresher Course

I'm reviewing a shop talk here, one used in IT.  You'll remember .NET (pronounced "dot net") which pioneers the idea of a common low level language to which higher level ones compile.  C# ("C-sharp") and Visual Basic would both compile to the same CLR (Common Language Runtime), which is like assembler language but not right on the chip.

The "chip" here is virtual i.e. there is no actual hardware that talks this language -- but could there be?  To run .NET on different physical chips means getting under the hardware abstraction layer.  .NET is well-established and does business every day.  The Open Source version is known as Mono (or "monkey") with support from Novell.

Anyway, picture .NET as a Great Pyramid (Mono in its shadow) and then add another one nearby:  the JVM or Java Virtual Machine.

Same idea:  multiple languages target the same pile of code, thereby availing of the million hours of labor going into them, we can debate whether to call it "slave" given wages were in the picture.  The JVM was pioneered by another giant of the Silicon Age:  Sun Microsystems.  The Sun ecosystem, including Java and Jython, was not so long ago acquired by Oracle.

So you might compare Microsoft and Oracle as chief sponsors of the two Great Pyramids out there on today's cyber-desert.

Lets look at the JVM more closely and talk about what it means to share a common lower level language.  Java, the main driver of the JVM project, is the computer language most native to this platform, but then consider Clojure, or Scala, or Jython.

These general purpose languages target the same JVM which brings with it the possibility of interoperability, a buzzword that tends to get all manner of coder geek excited, PyLadies included.  Something running in Jython might have applicability in some Clojure namespace.  I've been tracking developments along those lines.

Lets back up and talk about Jython again.  That's a version of the Python language that targets the JVM.

In contrast, Iron Python is a project targeting the .NET pyramid.

Two more VMs define Python:
  • it's home base in a C-language version, and 
  • PyPy, a Python written in a slimmed down version of itself.  
That's a lot going on and not every language enjoys such a complicated evolution.

Python's story is worth weaving in here though, as it helps us refine our understanding of the relationship between a high level language, such as Python, and the engines on which it might run, which are numerous, each pregnant with different if overlapping possibilities.

Where does Clojure fit in, mentioned earlier?
  • One, it targets the JVM (think of Oracle) and 
  • Two, it's in the LISP family ...
... a proud (and rightly so) branch in the family tree, which likewise includes Scheme, and Racket, and even the more obscure Hy, a recasting of Python into a LISPish syntax.

Think of caravans converging from faraway places, on some Oasis near some Pyramids.  That will give you a placid vista in which to think about how all these lineages and traditions come together and trade memes.

Even without turning into a Clojure programmer, a Pythonista may learn from the LISPers.

The stories told in the shadows of these Great Pyramids are informing today's IT.  Lets hope you feel somewhat refreshed about these concepts, relevant to computing today.

Faculty Lounge