Birdie
Paradigm(s) | imperative,functional |
---|---|
Designed by | Zackbuildit |
Appeared in | 2022 |
Memory system | deque-based |
Dimensions | one-dimensional |
Computational class | Turing complete |
Reference implementation | Unimplemented |
File extension(s) | {{{files}}} |
(note: this article is incomplete and a work-in-progress)
Birdie is a rotqueue-based, mostly concatenative, and approximately low-level Esoteric programming language designed by the Sakito System (under the username and account of @zackbuildit on Discord, and zackbuildit777 on the esolangs wiki) designed predominantly by a single numeric operation referred to as the "g gate", with features including subroutines, a rotatable queue data structure, full keyboard input, and strictly terminal output format.
All data in the language is in the form of 2bit unsigned integers, with series of data items stored in the rotatable queue being used to convey ASCII text and values >3. It is Turing complete, though with sub-optimal time complexity for many activities due to data only being able to directly alter up to 2 bits at a time without removing said altered data in the process. The name derives from an alternate name for a shuttlecock, which is the "ball" in the sport of badminton.
While Birdie is designed to be used in program golfing, rather than attempting to allow minimal bytes for programs, its intent was to "make codegolfing a fun and interesting challenge!" by simultaneously necessitating the use of optimization for the majority of programs, while also attempting to make methods of optimizing compatible with Birdie especially obvious to the programmer.
language overview
Birdie operates on two manipulable data structures, being the arithmetic stack (henceforth abbreviated as the arith stack) and the output-handling data queue (henceforth referred to as the outqueue), with the outqueue being the only directly poppable way to store and/or interact with unbounded data. Birdie has only one multi-argument numeric operation, referred to as the g gate, which is defined by first summing all inputs to the gate (if 0 inputs assume sum=0) modulo 4, then mapping this value according to 0->2, 1->0, 2->3, 3->1.