Show HN: Zyme – An Evolvable Programming Language
zyme.devZyme is an esoteric language for genetic programming: creating computer programs by means of natural selection.
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.
Hampshire represent! I'm also quite interested in this space.
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 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
Sadly not. When I was developing Zyme, I was thinking a lot about the molecular components of a cell and how one might translate them into a virtual machine. I was particularly inspired by enZYMEs.
I just realized that that's what the oeigin of the deus ex drug must be as well lol
Zyme is an ancient Greek word that means leaven, a lot of organizations and companies use it
I thought maybe it was related to Gabriel Syme. Like how similarly sounding letters are changed to make words look more kool.
That was my first thought too, hahah.
[dead]
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.
This is really, really cool.
Cue the replicators.
interesting idea to say the least.
wow this is so creative!
Doing => to set variables seems like extra work from just equals. Hopefully it’s kind of optional like it is in R.