5 ms·
for those who think brainfuck is too pedestrian, have a browse through the esolang wiki: https://esolangs.org/wiki/Language_list https://esolangs.org/wiki/Lang
by __del__ 10mo ago
for those who think brainfuck is too pedestrian, have a browse through the esolang wiki:
https://esolangs.org/wiki/Language_list https://esolangs.org/wiki/Language_list
- tombert 10mo agoI have no idea how I'd be able to pitch this to a university (or even who I could pitch it to), but I would absolutely love to teach a computability course using Brainfuck as the language, just to really show students how low-level logic can be. I would probably need to find a similar language with a different name though.
- jachee 10mo agoHow about Assembly?
- tombert 10mo agoAssembly is higher level logic than brainfuck, especially on modern chips. You have built in instructions for arithmetic and conditionals/branches and you can allocate memory and point to it. You don’t really get any of that with brainfuck. You have a theoretical tape and counters and that’s basically it.
- eru 10mo agoSKI calculus is pretty neat, too. You get no tape, no counters. (But it's not quite as bad to program in as brainfuck, because you can built more ergonomic contraptions to help you along.)
- somat 10mo agoUnlambda solves that problem. "What if we had the lambda calculus without the lambda forms?" asked no one. http://www.madore.org/~david/programs/unlambda/ http://www.madore.org/~david/programs/unlambda/
- arethuza 10mo agoSKI can, of course, be de-optimised a bit further by replacing I with SKK. You are right though that it is relatively simply to go from something that looks like a normal program languages to a pile of S and K combinators. Not the most efficient way to compute though!
- brightly-salty 10mo agoYou might find mlatu-6[0] interesting- it’s convertible to SKI calculus but concatenative (like Forth) rather than applicative. It’s actually a subset of Mlatu, a language I created for similar reasons to explore “how low can you go.” [0]: https://esolangs.org/wiki/Mlatu-6 https://esolangs.org/wiki/Mlatu-6
- OkGoDoIt 10mo agoWhen I was an undergrad at Georgia Tech, one of my intro computer science classes had us implement something in brainfuck. Turns out college kids are quite comfortable with swear words.
- josh-gree 10mo agoOf course they are ... It's college administration that are uncomfortable
- optimalsolver 10mo agoStupidStackLanguage is by far my favorite: https://esolangs.org/wiki/StupidStackLanguage https://esolangs.org/wiki/StupidStackLanguage
- Izkata 10mo agoPiet is mine - the programs are 2D images: https://esolangs.org/wiki/Piet https://esolangs.org/wiki/Piet Primarily because of the note on the "calculating pi" example program: > Richard Mitton supplies this amazing program which calculates an approximation of pi... literally by dividing a circular area by the radius twice. > Naturally, a more accurate value can be obtained by using a bigger program. https://www.dangermouse.net/esoteric/piet/samples.html https://www.dangermouse.net/esoteric/piet/samples.html
- somat 10mo agoOne of my favorite calculations of pi is to pick random coordinates in a unit square and count how many of them are in a circle. it's so stupid and so clever at the same time. This was recreated from memory. I think it is close but I may have a bounding bug. import random def pi(count): inside = 0 for i in range(count): test_x = random.random() test_y = random.random() if test_x ** 2 + test_y ** 2 < 1: inside += 1 return inside / count * 4 #above is a quarter circle print(pi(2 ** 30) )
- oneeyedpigeon 10mo agoI'm not sure about a bounding bug, but there's definitely an indent error on the return line (good old Python!)
- hanemile 10mo agoWith the metatopic of this thread being obscure languages, I had some fun squeezing this into some list comprehensions (maybe someone's got an idea of how to keep track of the state within the list): ``` $ cat << EOF > pi.py state = [0, 0, 2*8, 2*12]; _ = [print(f'\rRun {state.__setitem__(0, state[0] + 1) or state[0]}/{state[3]} | Last \u03c0: {current_pi:.6f} | *Average \u03c0: {(state.__setitem__(1, state[1] + current_pi) or state[1]) / state[0]:.6f}*', end='', flush=True) for current_pi in [(4 * sum([1 for _ in range(state[2]) if __import__("random").random()*2 + __import__("random").random()*2 < 1]) / state[2]) for _ in range(state[3])]]; print() EOF $ time python3 pi.py Run 4096/4096 | Last π: 3.140625 | *Average π: 3.143051* python3 pi.py 0.41s user 0.01s system 99% cpu 0.429 total ``` Play around with the `2*8` and `2*10` values in the state, they control the amount of rounds and the range in which the random values get generated respectively.
- d_silin 10mo agoDear Lord.
- willrshansen 10mo agoI remain utterly baffled how they made a lisp compiler with malbolge
- golem14 10mo agoOh my god, that list lacks DATAFlex!