this
Paradigm(s) | imperative |
---|---|
Designed by | Alluseri |
Appeared in | 2021 |
Type system | Queue-based |
Memory system | Cell-based |
Dimensions | one-dimensional |
Computational class | Unknown |
Major implementations | Thislang |
Influenced by | Celsee |
File extension(s) | .this |
- Note that this is typically lowercased, in the same manner as the
this
keyword.
this(alternatively, Fareen) is an esoteric programming language made by Alluseri, following the idea of Celsee about only using numbers.
Details
Current implementation allows up to 1024 memory cells for usage, with each memory cell being represented by a 32-bit integer.
Execution starts at index 0.
Commands
Command | Description |
---|---|
0 | No operation. Useful for visual padding. |
1 | Move to the next memory cell |
2 | Move to the previous memory cell |
3 | Add 1 to the current memory cell |
4 | Subtract 1 from the current memory cell |
5NE | Jump to execution index at E with a length of N |
6NBEI | If current memory cell equals to E with a length of N, jump to execution index at I with a length of B |
7NBEI | If current memory cell is not equal to E with a length of N, jump to execution index at I with a length of B |
8 | Print character with code equal to the current memory cell value to console |
9 | Write console input into the current memory cell |
Examples
Hello, world
The Basic
33333333333333333333333333333333333333333333333333333333333333333333333381333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338133333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333381333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333813333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338133333333333333333333333333333333333333333333813333333333333333333333333333333381333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338133333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333381333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333813333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338133333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333338133333333333333333333333333333333381
This is the most basic implementation of a Hello world program. Only 3 commands are used here: 1, 3, and 8. This principle of this approach is really simple: Add 1 to cells until they get to their desired values(which would be the charcodes of every character in the "Hello, world!" sequence, respectively).
The Effective
3333333333333333333333333333333333333333333333333333333333333333333333338333333333333333333333333333338333333388333844444444444444444444444444444444444444444444444444444444444444444448444444444444833333333333333333333333333333333333333333333333333333333333333333333333333333333333333384444444483338444444844444444844444444444444444444444444444444444444444444444444444444444444444448
This is a bit more space-effective implementation of a Hello world program. It uses 3 commands: 3, 4 and 8. This approach only utilizes one cell and takes advantage of the decrementation command.
The Advanced
37217208137311019813732108198137321083081373211141813722445281372232628137321197281373211183813732114948137331081058137331001178137233312981
This is an advanced implementation of a Hello world program, only using loops. It uses 4 commands: 1, 3, 7 and 8. This approach is not "effective", as it utilizes n
memory cells(where n = length of character sequence) instead of just one. Cells reach their desired values using loops.
The Advanced & Effective
37217208373110188373210817883732111288472244388472232478373211956847321116683732114768473210886847321009684723331068
This is an advanced AND effective implementation of a Hello world program, only using loops as well. It uses 4 commands: 3, 4, 7 and 8. This approach utilizes one cell and takes advantage of the decrementation command in loops.
The Shortest
372172083731101883333333883338472244308472232398373211948844444444833384444448444444448472233878
This is the shortest and, thus, the most effective implementation of a Hello world program for this. It still only uses 4 commands, which is no difference from other Advanced implementations: 3, 4, 7, and 8. This approach utilizes one cell and combines the best of the best: the Effective and the Advanced & Effective implementations, making use of both loops and simple increments/decrements.
Try and make an implementation that is shorter than this one! Only one rule: Don't use the opcode 9
:)
A simple while loop
3721420
This code will add 1 to the cell 0 until it equals to 42.
Breakdown
3
- Add 1 to cell 0721420
- Jump to index 0 if value of cell 0 is not equal to 42(loop)
Output Cell Layout
Cell 0: 42
Comparator
91925212414261202916120432518161204913352991352991333
Only supports positive numbers and 0!
Breakdown
Main section:
9192
- Write values to cell 0 & 1 and return to cell 05212
- Jump over the first decrement in case a value is already 04142
- Decrement both cells612029
- If cell 0 == 0, jump to 29(return 0 == 0 section)1
- Move to cell 1612043
- If cell 1 == 0, jump to 43(return 1 == 0 section)2
- Move back to cell 0518
- Jump back to decrement
Return 0 == 0 section:
1
- Move to cell 1612049
- If cell 1 == 0, jump to 49(return 0 == 1 section)1
- Move to cell 233
- Push 2 to result5299
- Return
Return 1 == 0 section:
1
- Move to cell 23
- Push 1 to result5299
- Return
Return 0 == 1 section:
1
- Move to cell 2333
- Push 3 to result
Output Cell Layout
Cell 0: Value 1 after processing
Cell 1: Value 2 after processing
Cell 2: Result(1 for v1 > v2, 2 for v1 < v2, 3 for v1 == v2)