• RNA - An esoteric language
    25 replies, posted
While sitting in biology class, I had an idea. Messenger RNA has a specific sequence base pairs, A, C, G, and U. This sequence of bases is broken up into groups of three, called codons. Each codon is an instruction for what proteins are to be created. Every good programmer knows about BrainFuck, a language based on 8 characters. In RNA, there are 64 possible codons. So I thought, why not make a language based on these codons? Now, BrainnFuck has very simple commands, and very to boot. But [b]64[/b] operations - this is not something I can complete alone. I am asking for your assistance in writing the specifications for a very flexible and powerful esoteric language. This could have many uses; ranging from useless programs like counting down from 100, to implementing them in genetic algorithms to generate programs (not that they would do much). Bases: AAA - AAC - AAG - AAU - ACA - ACC - ACG - ACU - AGA - AGC - AGG - AGU - AUA - AUC - AUG - Start AUU - -------------------- CAA - CAC - CAG - CAU - CCA - CCC - CCG - CCU - CGA - CGC - CGG - CGU - CUA - CUC - CUG - CUU - -------------------- GAA - GAC - GAG - GAU - GCA - GCC - GCG - GCU - GGA - GGC - GGG - GGU - GUA - GUC - GUG - GUU - -------------------- UAA - break out of a loop UAC - UAG - closes a loop, if, or whatever UAU - UCA - UCC - UCG - UCU - UGA - Stop UGC - UGG - UGU - UUA - UUC - UUG - UUU - (should I use [code] tags for that?) Programs are set up just like sequences of RNA: [code]AUGUCGCACGGUUGA[/code] Or, split by codons: [code]AUG UGC CAC GGU UGA[/code] And a possible translation: [code]Start; print "Hell"; print "o W"; print "orld!"; Stop[/code] So, what this language can and will be able to do is up to the community. I have no idea how it will work, but I know it will be confusing. Post what bases should do what, because there's enough for everyone. (If it involves more than one codon, try to keep them close together)
-snip-
Could you explain that a little more?
-snip-
Can't tell if that's programming or the sounds someone makes as they attempt to swallow a large phallus.
I'm guessing your start and end condons specifiy the start and end of the protein? if so, why not just have a end condom?
Well, I wanted to keep it true to the real thing, but to tell the truth, in the interpreter I wrote I don't even have them do anything. They might be useful for something.
[QUOTE=ZenX2;27663726]Well, I wanted to keep it true to the real thing, but to tell the truth, in the interpreter I wrote I don't even have them do anything. They might be useful for something.[/QUOTE] You could have different proteins act as different threads You could also have proteins be operations instead of condons
I was learning RNA like a week ago and thought heavily of programming when they were talking about Start and Stop codons. It would be pretty awesome if you actually did make a RNA programming language.
[url]http://en.wikipedia.org/wiki/Rule_110[/url]
I'm doing biology next semester (finals right now :frown:). Lucky bastards.
why not make AAA start and UUU stop? it would make more sense. Maybe UUG could be the equivalent of the semicolon? You may be able to have basic data types and store their values as codons, where the values represent bits. A is 0, U is 1, C and G are ignored or symbolize something else. There's quite a bit of things you can do with this setup...
[QUOTE=robmaister12;27665218]why not make AAA start and UUU stop? it would make more sense. Maybe UUG could be the equivalent of the semicolon? You may be able to have basic data types and store their values as codons, where the values represent bits. A is 0, U is 1, C and G are ignored or symbolize something else. There's quite a bit of things you can do with this setup...[/QUOTE] There are three codons that are stop codons. So why not mimic pascal with end closing if, else and loops. So: UGA - Stop program UAA - Stops the definition of data types UAC - Starts the definition of data types UAG - Closes loop or whatever
This is very interesting please continue with this :)
This sounds like it could be made into an assembler. I'd suggest it, since it could be relatively simple - just look at 8-bit assembly language and you'll see what I mean. It'll also run quite fast.
Make sure you include the wobble hypothesis! Then it will be a self-obfuscating programming language.
I'm a Biology & Computer Science (dual honours, so 50% of each) so this is [b]right[/b] up my alley! In fact in my first Fundamentals of Computing lecture our lecturer said the first real computational device could be thought of as the cell, because it acts depending on a certain set of instruction (your DNA). There are a lot of codons that code for the same amino acid I think (haven't checked in a while) so you could use that to your advantage. Gah, this sounds awesome. This is literally the most awesome thing ever. I'm exaggerating but I'm going to reread this thread again later when I'm not bust, I'm just babbling right now. I've thought about something like this but not for programming - a string of codons would define a characters traits in a game or something, and then there'd be a chance of mutations and shit like that if you got near carcinogens.
[img]http://library.thinkquest.org/C0123260/basic%20knowledge/images/basic%20knowledge/RNA/genetic%20code.jpg[/img] Every amino acid a command? That'd be funny, because two different commands (for example, UUG and UUA) could mean the same thing.
I don't think he'd actually have the codons code for amino acids, I think he's saying a certain codon could start an if statement and things like that. Computers aren't made of protein.
Allocate two condons to binary 1 and 0, and include a way of specifying a block, that'd be the best way to implement arithmetic. [editline]26th January 2011[/editline] And strings, for that matter.
[QUOTE=^-^;27666582]And strings, for that matter.[/QUOTE] Not enough [del]opcodes[/del] codons to have special string instructions.
Just having 64 generic operations that happen to be named after rna codons isn't interesting. Having their function defined dynamically by their makeup and sequence might be though. The whole point of using codons I presume was to explore translating how they code proteins/whatever to computer programming. At least in a conceptual sort of way.
Why not investigate the various chemical reactions between proteins? The VM could read the RNA code and simulate some of the chemical reactions. Assuming RNA is used as a scripting language, the host language could take the output and use it for whatever purpose. Example (note: this is just an example): AAA AGC UGA Translates to: Push Lysine Push Serine Combine (Which forms ????)
I don't think the purpose of this is to combine proteins... Also, it's at least semi-esoteric, so it's not necessarily suited for everything. [editline]26th January 2011[/editline] I think an array of ints like in BF would be useful. As well as an array of strings you can write to. Then you could add a codon that directly ran what was in the cell as RNA. Self writing is a good idea, right? Then using genetic algorithm with a fitness based on if the code has an error or not?
I reckon you should make 12 of the genes/gene bases into numeric values 0-11, which would be raw byte values (so can print characters if you know their ASCII values... in base12), combine that with a print function and you can write out whatever you want - CAA to CUU could be 0-11, you've easily got base-12 numbers then. that would make it even more esoteric, as you're not dealing with base-10, binary, hex or oct, but base12 which doesn't get used much (well it does, but not so much in programming?)
This is not interesting. You should have one object, that accepts an string of RNA that has undefined lenght, and that RNA modifies propreties of that object. Let's say you have one simple geometric shape, and when you run RNA through it, it modifies it/mutates it according to what RNA says, and now geometric shape have very different shape, size, color, etc. And that object should be able to accept any RNA commands. So, lets say, you have a object "tree", which might look simple but is in fact, VERY complex. Every leaf, branches, size of branches, number of leafs, shape of that and that, is defined with RNA.
Sorry, you need to Log In to post a reply to this thread.