Live data from Hacker News

Python becomes a platform. Thoughts on the release of clojure-py.

khinsen.wordpress.com

1–10 of 33 posts

Re: Python becomes a platform. Thoughts on the release of clojure-py.

#2
I'm curious, can PyPy JIT-compile Python bytecode by itself, or does it require the source to be in Python? Because it would be really cool if you could target the Python "platform" and get a free JIT as well.

Edit: Nevermind, just read the project readme[1] where they explicitly mention targeting PyPy as a goal.

[1] https://github.com/halgari/clojure-py

Re: Python becomes a platform. Thoughts on the release of clojure-py.

#3
The idea of a python implementation becoming host to other languages is somewhat interesting. Python has had a good interop story with the vibrant ecosystem of C libraries and is pretty good at being cross-platform as well.

However, I'm not sure Clojure is going to impress Python developers for the reasons the author states. Python has metaprogramming and it has an immutable type (the tuple). However, Python has rejected functional purity for pragmatism so I'm not sure there will be a great many Python developers suddenly switching to clojure. It's generally not the implementation that impresses Python developers the most AFAIK -- it seems that most Pyhtonista's like the language more than anything.

That being said I'd be interesting to see how far clojure-py goes. Pypy is the ideal implementation for this sort of project as they're aiming to be a JVM-like platform for dynamic languages.

Re: Python becomes a platform. Thoughts on the release of clojure-py.

#4

The idea of a python implementation becoming host to other languages is somewhat interesting. Python has had a good interop story with the vibrant ecosystem of C libraries and is pretty good at being cross-platform as well. However, I'm not sure Clojure is going to impress Python developers for the reasons the author states. Python has metaprogramming and it has an immutable type (the tuple). However, Python has reje…

Clojure is not a purely functional language either. You can have side-effects anywhere, it's just that Clojure emphasizes immutable, persistent data structures.

Re: Python becomes a platform. Thoughts on the release of clojure-py.

#5

The idea of a python implementation becoming host to other languages is somewhat interesting. Python has had a good interop story with the vibrant ecosystem of C libraries and is pretty good at being cross-platform as well. However, I'm not sure Clojure is going to impress Python developers for the reasons the author states. Python has metaprogramming and it has an immutable type (the tuple). However, Python has reje…

Users of a host platform are almost never the target of a port such as this. ``Pythonistas'' are not the audience here, it's Clojure programmers who wish to sneak Clojure in a Python environment or use its libraries in lieu of Java's.

Also, I must add that I really dislike the use of the word ``pragmatism'' in the context of a programming language. It almost always is used to justify either sloppiness, misunderstanding or just plain (and save for the word, valid) aesthetic preference.

Re: Python becomes a platform. Thoughts on the release of clojure-py.

#6
post #2

I'm curious, can PyPy JIT-compile Python bytecode by itself, or does it require the source to be in Python? Because it would be really cool if you could target the Python "platform" and get a free JIT as well. Edit: Nevermind, just read the project readme[1] where they explicitly mention targeting PyPy as a goal. [1] https://github.com/halgari/clojure-py

> I'm curious, can PyPy JIT-compile Python bytecode by itself, or does it require the source to be in Python?

Considering you can run bytecode-only Python, it would be weird if Pypy's JIT only worked from source.

Beyond that, they're apparently implementing Clojure on top of (in) Python, so they won't get the JIT for free (the interpreter code will be JITed, but the Clojure code won't be unless their runtime compiles to Python bytecode which does not seem to be the case). They'd get it for free if they implemented a Clojure in RPython as well, but would leave the Python ecosystem behind.

Re: Python becomes a platform. Thoughts on the release of clojure-py.

#7

The idea of a python implementation becoming host to other languages is somewhat interesting. Python has had a good interop story with the vibrant ecosystem of C libraries and is pretty good at being cross-platform as well. However, I'm not sure Clojure is going to impress Python developers for the reasons the author states. Python has metaprogramming and it has an immutable type (the tuple). However, Python has reje…

As a Python programmer, I agree with most of your assessment. Most Pythonistas I know have chosen Haskell as their primary functional language (and Haskell is the PL I'm constantly working on mastering).

But this clojure-py project is very interesting to me. I've heard so many positive things about Clojure and Lisp in general. I've been wanting to explore Clojure, but I've been holding off because I knew I would need to become more familiar with the Java infrastructure to learn Clojure well, and learning the JVM is one challenge I just don't feel like tackling at this point in my life.

On the other hand, I love PyPy, and I've been fascinated by the progress in performance the PyPy team has been making. I'm even hoping to eventually implement a version of CoffeeScript on PyPy. Given my Python background and interest in PyPy, Clojure now seems much more approachable thanks to this implementation. I'll probably wait until it's a little more mature, but I look forward to trying clojure-py out!

Re: Python becomes a platform. Thoughts on the release of clojure-py.

#8

The idea of a python implementation becoming host to other languages is somewhat interesting. Python has had a good interop story with the vibrant ecosystem of C libraries and is pretty good at being cross-platform as well. However, I'm not sure Clojure is going to impress Python developers for the reasons the author states. Python has metaprogramming and it has an immutable type (the tuple). However, Python has reje…

Users of a host platform are almost never the target of a port such as this. ``Pythonistas'' are not the audience here, it's Clojure programmers who wish to sneak Clojure in a Python environment or use its libraries in lieu of Java's. Also, I must add that I really dislike the use of the word ``pragmatism'' in the context of a programming language. It almost always is used to justify either sloppiness, misunderstandi…

Fair point about "pragmatism" but the contrary "elegance" often comes across as dogmatic or even elitist. Most languages strive for both pragmatism and elegance, but tend to favor one a little over the other.

And yes, this is relevant since Python and Clojure embody exactly this kind of tension.

Re: Python becomes a platform. Thoughts on the release of clojure-py.

#9
post #6
post #2

I'm curious, can PyPy JIT-compile Python bytecode by itself, or does it require the source to be in Python? Because it would be really cool if you could target the Python "platform" and get a free JIT as well. Edit: Nevermind, just read the project readme[1] where they explicitly mention targeting PyPy as a goal. [1] https://github.com/halgari/clojure-py

> I'm curious, can PyPy JIT-compile Python bytecode by itself, or does it require the source to be in Python? Considering you can run bytecode-only Python, it would be weird if Pypy's JIT only worked from source. Beyond that, they're apparently implementing Clojure on top of (in) Python, so they won't get the JIT for free (the interpreter code will be JITed, but the Clojure code won't be unless their runtime compiles…

From the article

> clojure-py is an implementation of the Clojure language in Python, compiling Clojure code to bytecode for Python’s virtual machine

Which means both the compiler (mostly an AST walk from the look of clojure/lang/compiler.py) and the Python bytecode it produces should benefit from PyPy's JIT.

Re: Python becomes a platform. Thoughts on the release of clojure-py.

#10

Earlier quoted context omitted.

Users of a host platform are almost never the target of a port such as this. ``Pythonistas'' are not the audience here, it's Clojure programmers who wish to sneak Clojure in a Python environment or use its libraries in lieu of Java's. Also, I must add that I really dislike the use of the word ``pragmatism'' in the context of a programming language. It almost always is used to justify either sloppiness, misunderstandi…

Fair point about "pragmatism" but the contrary "elegance" often comes across as dogmatic or even elitist. Most languages strive for both pragmatism and elegance, but tend to favor one a little over the other. And yes, this is relevant since Python and Clojure embody exactly this kind of tension.

I guess one could pinpoint it to the clashing of the traditions of pure mathematics and engineering which one finds in Computer Science.

Elegance is an often trotted epithet in mathematical writing, and sure, it has some sort of established connotation (minimalism, what we call orthogonality, etc.), but in the end it's almost always something like "it has sugar, and marmalade, and skittles and ketchup! All my favorite ingredients! I'm very glad they didn't put that icky caramel stuff in it".

Anyhow, Clojure sports a fair bit of ``pragmatism'' with its own, very leaky sequence abstraction, as you sometimes feed a vector to a function and you get a linked list and next thing you know, your head has been put in your ass (when you conj/cons an element to a sequence).

Lisp has also always leaned to a sort of messiness in its use, even if the language's features and libraries are held to a higher standard. Thus you see phrases like ``ball of mud'' used in a subtly positive way.

Post reply on HN