Show HN: Zyme – An Evolvable Programming Language

6 days ago (zyme.dev)

Zyme is an esoteric language for genetic programming: creating computer programs by means of natural selection.

Interesting. I haven't seen much in this space since Lee Spector's "push" more than 20 years ago (http://faculty.hampshire.edu/lspector/push.html). I did see a mention of Push in the FAQ but it would be very interesting to compare this in detail. If I get it correctly Zyme programs are evolved on the bytecode level whereas Push's stack architecture is designed to be evolvable directly at the syntactic level? A head-to-head comparison / benchmark would be super interesting.

15 or so years ago now - before I worked professionally really - I worked with Common Lisp to create a little toy tool to build, essentially, ASTs and evolve them to achieve a given fitness function. It was a heavily studied topic in the 1995-2005 timeframe at my alma mater. I just uploaded it ( https://github.com/pnathan/z-system ) as an amusing bit.

I'd be curious if the OP has looked at the literature on evolutionary programs (not evo algos, but programs).

  • Ha, can I ask who the involved prof/s was/were?

    I spent some time at your Uni in the early 90s. From what I remember there wasn't a whiff of Lisp on the curriculum.

    • Heckendorn and Soule were the key profs in the research in the area. One other maybe?. Soule in particular. In 04 I was doing some undergrad research around training neural networks with particle swarms.

        I wandered off to do this Lisp on my own, inspired by the code-is-data concept of Lisp. This work is strictly toy, to self demonstrate the possibility. Wouldn't mind revisiting it sometime to bring in the top of the academic art. But I am not affiliated with a U, so publishing would be a challenge.

I love this idea, it's thought provoking and I want to play

Is there a repository of examples or experiments built with Zyme? Curious to see what has been explored so far

I think it could be fun to focus on visual experiments; shader-like programs as a way to easily explore different outputs

  • Thanks! Since the language is still in its early stages of being able to evolve programs, I don't have many examples to share yet. I didn’t realize when I began but developing the language itself was just the beginning - I hadn't anticipated how much work would still be needed on tuning, development tools, and implementing the genetic programming framework before getting concrete results.

Is source available for zyme? I don't see anything on that page about how one might download and install their compiler.

"While I've observed bloat in Zyme, I don’t think this is driving the increase in mutation resistance and survival rate" This is evident in the human genome.

Completely unrelated (and apologies to the OP), Zyme is also a name of a winery near Verona in Italy that makes really unusual, complex and very tasty reds. Beautiful facilities as well. If you are ever in the region, give it a visit - https://www.zyme.it/en/

Is it named after the drug in Deus Ex

Adding a toggle between bytecode and (dis)assembly would make help with visualizing what kind of effect mutation has.

  • You're right - a disassembler would be incredibly valuable; and while I haven’t gotten around to implementing one yet, it’s definitely on my radar. But even the idea of even having an assembler is exciting because it suggests the output programs could be interpretable, enabling us to identify the underlying algorithms that (hopefully) emerge through evolution.

Doing => to set variables seems like extra work from just equals. Hopefully it’s kind of optional like it is in R.