@ASCII-only I was just listening to the radio talking about "The Greens", an Australian political party, so "I haven't finished removing the greens yet" sounded a bit macabre.
Greetings. I'm looking for a programming language that maximizes the number of valid (that doesn't produce any compilation or execution errors) programs for a given number of bytes -- so as many distinct outputs as possible as as many successful compilation/executes as possible. It's for experimenting with genetic/self-modifying programs. It seems golfing languages could be good candidates. Any ideas?
@Real hmm. there are programs which minimise the number of errors that can occur, however, i'm not sure how distinct they are, since some of the commands simply won't do anything instead of erroring
@Real you could try making your own programming language
CMC: language-design: design a language that uses all 256 bytes and never throws errors (excluding things like memory limits or forcing sigints, etc). all commands must do something but no real specifications on that (thus why CMC and not real challenge)
Compile Quarterstaff to BF
The title is rather descriptive, except that it doesn't describe what Quarterstaff and BF are. For this challenge, i have created two languages: Quarterstaff, and a dialect of BF that probably already existed in it's exact form, but i wanted to be certain, especially w...
@DestructibleLemon Good point most possible programs is not necessarily what I want. The problem is that if most changes to code produce no changes in result, this will slow down finding anything useful. On the other hand, if any tiny change completely modifies the program behavior, that could make it difficult to progress incrementally towards the goal.
@DestructibleLemon In any case minimizing the number of compilation errors (by design) and generally having small sets of symbols seems good, indeed. The halting problem isn't much relevant because I can just cut off candidates that are taking too long to execute.
@DestructibleLemon I'm exploring alternative paradigms for machine learning. Say playing atari games, recognizing patterns in text and sound, etc. This approach interests me because Neural Networks (which are the main approach now) can have hundreds of millions of parameters, and be very large. Perhaps a small program could more efficiently accomplish the same.
@Real that said, i think there are programming languages based around neural systems or some such, which might be best to use (note these are distinct from neural networks: neural networks aren't tc, they just transform inputs into outputs through a few layers)
@DestructibleLemon Well, the DNA is more like a program than a Neural Network, so there's that :) Also, neural networks are awkward to deal with memory (see the mentioned Neural Turing machine and LSTMs), and are very large. While it may not beat NNs in say image recognition, there may be niches where small size or speed is particularly important.
@DestructibleLemon a few hundreds of billions of generations perhaps? Not that much if our clock cycle is 1billion generations/second :) A bigger problem is that DNA is terabytes in size I believe
@Real well that's mostly for the soft attention varieties, which need to have the memory access tractable for gradient descent. pretty sure there are hard attention ones that read one cell directly from the tape but you train them unsupervised
anyways I think your main trouble is finding a dense representation for your "programs"
(haven't read the transcript yet so don't know what you've discusses)
@Real I definitely think you'd want to consider more than just possible programs, and erroring, because for example, bf (if it was modified such that looping would not break it when unmatching (I think i saw a derivative that did this)) would be wildly unsuitable, since moving one cell to the right would have such a major impact on the program, for example
@DestructibleLemon @quartata Anyway I have quite a few ideas to address your concerns. For example, I wonder if I could evolve (or code myself) a small "programmer" program that avoids spurious changes to the code, to increase the efficiency.
And this is extensible to "meta-learning" -- in which you, for example, get a good "programmer" as mentioned earlier, and this helps with future modifications of the programmer itself (you evaluate the programmer with how much it helps to evolve given tasks). Once you build a library of tasks, you can try optimizing the programmer for this library.
This optimization of course is done with the help of earlier "programmers" :)
@moonheart The first programmer can be found through genetic algorithms -- it should be some simple heuristics saying "don't try that change because it likely yields errors" or "try that because it usually leads to better programs" at first (as measured by slightly improving the time to solve a task)
is there anything resembling c or python but with drastically reduced symbols and functions? (those are the languages I'm familiar with, unfortunately :P)
@Real oh also IMO that would work best in conjunction with AI-scale neural networks (idk how to describe it) - basically the neural network would be the programmer, which would write programs to (somehow) replace parts of the network
@Real Also: I think the language you're looking for would have every token as one character, and a small set of keywords key-token-things to minimize useless changes to code?
My time will not appear and when ever I delete demo = Scoreboard() or mainloop() it will give me attribute errors, pls help
import sys
import time
if sys.version_info < (3, 0):
from Tkinter import *
else:
from tkinter import *
class Scoreboard:
def __init__(self):
self.roo...
CMC: Design a language such that the language is decidable under the halting problem. Make it as generally usable as possible. (I might bounty an impressive answer!)
@ATaco a-ta.co/generator is completely broken and unusable, for whatever reason when I copy-paste into the text box it pastes twice and then pressing keys just makes it spam the copied text everywhere
@ConorO'Brien maybe a dual language that unites a severely memory-constrained turing-complete part with a decidable part, and limit communications between the two parts such that you can't just use the decidable part as a memory (you'd use it to calculate functions?). Now idea on the details.
ok so, idea i have: {...} is the control flow, and each character resides on a cell of infinite size, and you can't access any cells outside of the current scope
0/10 went onto quora and saw question from the math contest/exam that I wrote yesterday that specifically said "do not discuss online for 48 hours" (just over 24 hours passed)
Quebec is officially bilingual with a French majority and some provinces are officially bilingual with an English majority (Ontario, Maritimes, etc), and most Western provinces are officially monolingual English
@Pavel They're basically right next to each other and yeah I definitely see a lot of similarities. I've only been to Seattle and Vancouver for like 2-3 days each so I don't really know much about either
definitely NB. the other maritimes are still anglo majority