Just as an exercise, you could use brainfuck with genetic algorithms and evolve the program that you want, then try to play with the fitness function to squeeze down whatever you don't want (code size, instruction set, etc...).
Then you could try to superoptimize yourself a solution and compare how close the evolved program was to the superoptimized program.
Could also be interesting with other esoteric languages like befunge or malbolge.
There is actually a pretty good blog post series that creates a hello world in brainfuck with genetic algorithms: https://www.primaryobjects.com/2013/03/04/pushing-the-limits...