Lenguage

Lenguage is a language based on brainfuck, although its syntax is very different. It was invented by User:Pietu1998 in 2014 and inspired by this challenge.

Syntax
In a Lenguage program, the length of the program is the only thing that matters. The contents can be anything the programmer wants it to be.

First, the length of the program (in implementation-dependent characters) is calculated. Then, said length is converted to binary, left-padded by zeroes to a multiple of 3, and then evaluated like Binaryfuck.

Larger programs may will result in programs a little too large to be practical (see Hello World below).

Hello world
17498005810995570277424757300680353162371620393379153004301136096632219477184361459647073663110750484 of any characters.

That is about 1.75 * 1076 yottabytes in ASCII.

Reference implementation
This reference implementation is written in Python.

import sys class _Getch: """Gets a single character from standard input. Does not echo to the screen.""" def __init__(self): try: self.impl = _GetchWindows except ImportError: self.impl = _GetchUnix def __call__(self): return self.impl class _GetchUnix: def __init__(self): import tty, sys def __call__(self): import sys, tty, termios fd = sys.stdin.fileno old_settings = termios.tcgetattr(fd) try: tty.setraw(sys.stdin.fileno) ch = sys.stdin.read(1) finally: termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) return ch class _GetchWindows: def __init__(self): import msvcrt def __call__(self): import msvcrt return msvcrt.getch getch = _Getch if len(sys.argv) < 2: print("Usage: python lenguage.py ") sys.exit(1) filename = sys.argv[1] try: file = open(filename, "r") row = -1 total = 0 while row != "": row = file.readline total += len(row) file.close except: print("Failed to read file") sys.exit(1) binary = bin(total)[2:] while len(binary) % 3 != 0: binary = '0' + binary data = [0] * 65536 pointer = 0 sourceptr = 0 while sourceptr <= len(binary) / 3: source = binary[3 * sourceptr : 3 * sourceptr + 3] if source == '000': data[pointer] += 1 if data[pointer] > 255: data[pointer] = 0 elif source == '001': data[pointer] -= 1 if data[pointer] < 0: data[pointer] = 255 elif source == '010': pointer -= 1 if pointer < 0: pointer = len(data) - 1 elif source == '011': pointer += 1 if pointer >= len(data): pointer = 0 elif source == '100': print(chr(data[pointer]), end='') elif source == '101': data[pointer] = min(ord(getch), 255) elif source == '110': if data[pointer] == 0: loop = 1 while loop > 0: sourceptr += 1 source = binary[3 * sourceptr : 3 * sourceptr + 3] if source == '110': loop += 1 elif source == '111': loop -= 1 elif source == '111': loop = 1 while loop > 0: sourceptr -= 1 source = binary[3 * sourceptr : 3 * sourceptr + 3] if source == '110': loop -= 1 elif source == '111': loop += 1 sourceptr -= 1 sourceptr += 1
 * 1) From http://code.activestate.com/recipes/134892/
 * 2) "getch-like unbuffered character reading from stdin
 * 3) on both Windows and Unix (Python recipe)"