« first day (1284 days earlier)      last day (2022 days later) » 

11:00 AM
@MartinBüttner @cjfaure can you explain the rules of the language to me?
 
@overactor i'm not exactly sure of them myself 2.2
 
@overactor it's just a very vague idea... you've got inputs falling in from the top, and outputs falling out at the bottom... so the values themselves determine the control flow by falling through the grid
then you've got symbols to deflect those values and portals to bring them back up (for loops)
that's all we have so far
 
are those binary values?
 
nah probably not
(rep cap at 11am, I think that's a new record for me)
 
so you can have a six falling in the top?
 
11:02 AM
yep
 
what happens if values collide?
 
@overactor i say they just go through each other ^^;
 
Can a falling value switch a control symbol so that subsequent values are deflected differently?
 
@githubphagocyte yeah I think that's necessary
 
How do you do incrementation?
 
11:03 AM
Switching the direction of a deflector or switching a portal on or off elsewhere?
 
@githubphagocyte yes, but that would be a functionality of the symbol
 
@overactor by falling through an incrementor
 
ah ok
 
@overactor the maximum survives
(I have no idea)
either you could realise an operation with that, or they could pass through each other
 
11:04 AM
can you define a function and then put that function in a grid?
 
but the latter is dangerous because you might not be able to separate them any more
@overactor I thought about that as well
that will be hard for multi-variate functions, because they'd need to span more than one grid cell
 
i'm thinking there shouldn't be functions
 
but why not
(simplicity... yeah...)
 
i think this kind of setup would work better in a typeless environment
each value would be a single byte
 
that was my first thought, too... but programming in brainfuck and friends is so tedious :D
then again this concept would be hard enough without types
 
11:06 AM
yeah, what's the point of a pretty language if there's no pretty code in it :P
 
can values be deflected upwards?
 
@overactor no (trampolines? :) )
no
 
with portals, they can be transported back to the top
 
yeah only that
but if you had something like trampolines, you'd need to determine when they start falling back down, or you get Befunge :D
 
let's call them "gotos" ;3
 
11:08 AM
I like portals
 
to what degree can the be deflected sideways?
should deflectors not just all be replaced by portals?
they*
 
i'm thinking they only fall down, they can only change column
portals can change both row and column ofc
 
I thought you could deflect them by one column using / or \
 
yeah ^
 
what about a sushi conveyor belt?
 
11:09 AM
Is the grid a cilinder?
 
@overactor why not
 
i.e. does it wrap around?
 
i think that'd be useful, yeah
the top of the grid is stdin, the bottom is stdout
 
@githubphagocyte you mean where it lands and then is transported several columns to the right or left? sounds fun but unnecessary
 
yes totally unnecessary :)
 
11:10 AM
@cjfaure do bytes all fall in through the same cell? or multiple cells?
 
@MartinBüttner the same, the top left
anything that falls out the bottom is placed on stdout, if multiple fall at the same time they're sorted left-to-right
 
how is it determined where the values of stdin fall in?
 
(the next step will be the pinball language, which has actual simulated physics and all the funny buttons and triggers are the commands...)
 
@MartinBüttner so then you program an ai for the paddles
 
11:12 AM
@cjfaure one byte at each time step, or is there a pause? or can you even decide the frequency for yourself in the code?
 
IDEA: Don't just write a language for that, build a processor for it
@MartinBüttner the first
 
@cjfaure well not really an AI... the code is just a list of commands with a time when each pad should flip
 
shouldn't everything fall in at the same time?
 
@overactor then you can't have arbitrarily large inputs
 
@overactor then you need to make your plane arbitrarily wide
no thanks
 
11:13 AM
Good point
 
Now
 
They all fall in at the same spot then?
 
one very important thing
how do programs terminate?
@overactor yeah
I think they should drop out a null byte
 
I still keep picturing a cube, so that there can be streams of values at right angles intersecting as they descend diagonally
 
or perhaps a "terminate" operator?
 
11:14 AM
terminate operator seems like the better solution
 
@MartinBüttner That's like combining the Pauli matrices with the Kronecker delta. en.wikipedia.org/wiki/Pauli_matrices
 
this language works well, you can have a "file" operator as well and drop in a location, then a mode and it'll either drop out bytes or you can drop some in
we need gates
 
wait
 
that you can attach to an output stream to stop it temporarily
so you can put a gate on the top left and open it when you want input
 
nvm
 
11:16 AM
@cjfaure I'd say, when all values have left the grid. you can add a trash bin to get rid of unwanted values
 
@MartinBüttner makes sense
 
@luserdroog yeah, the idea is similar ^^
 
@MartinBüttner how would value literals look?
 
@cjfaure what do you need them for?
constants?
 
@MartinBüttner if you don't have value literals, then the program will terminate on the first time step.
 
11:17 AM
that already start in the grid?
 
@MartinBüttner mhm
 
@cjfaure no, in the first step you get the first byte falling in through your input
but I think if we use two-character cells, then any cell starting with [A-F\d] (followed by another such character) is a value literal
 
@MartinBüttner but then it's useless for golfing because it requires input from the console
 
I just saw that Kronecker delta thing yesterday. So now I'm seeing it everywhere.
 
@MartinBüttner cool ;D
@luserdroog frequency illusion
 
11:18 AM
@luserdroog the kronecker delta is lovely
have you come across the Levi-Civita symbol yet? that's the next step up ;)
 
Will you need an operator that holds a value for a certain amount of ticks?
 
some sort of delay? ... would probably be convenient
 
No. I found the Kronecker delta described in some Ken Iverson papers. Then I saw it actually used with the Pauli matrices
 
i'm thinking a way to disable a portal temporarily
and then enable it again later
 
@cjfaure what happens when it's disabled?
 
11:21 AM
@MartinBüttner values fall past it
 
How do you associate a portal entrance with a portal exit?
 
Can a portal exit in the same column higher up, to give a timer?
 
@overactor similar identifiers; p1 and p1 link to each other, p2 and p2, etc
if you have more than 2 per group, a random one is chosen
 
what cj said
 
yay, now the language is non-deterministic ;D
 
11:22 AM
@cjfaure or maybe just a syntax error? :D
 
@MartinBüttner but then how do you choose a random value?
 
then again it would provide a neat way to add a PRNG
 
yeah
 
portals are just a way of implementing a randdom number
random*
 
and also looping
wait
 
11:23 AM
@githubphagocyte sure
 
wooow
I think,
there should be 3 kinds of portals
 
entry, exit, either
 
what for?
 
@MartinBüttner write a loop that randomly chooses a body, I dare you
xD
without the distinction between receiving and sending portals, it's near impossible
 
11:24 AM
no it's not
 
the portals at the bottom of the loop need to be the same class as the one back at the top, right?
so then what's stopping it from just choosing another exit and falling out?
 
p1 p1 p1
........
\      /
   p1
 
you can use deflecting though
 
aaaand i was thinking of it upside down.
xD
 
@MartinBüttner what about 2x2 cells in stead of 2x1?
 
11:26 AM
it gets a bit harder though, if you have complex nested loops and stuff
 
more room for info and more square-ish
 
@overactor I actually find 2x1 more squarish in ASCII art
 
depends on the font
 
so why not add the distinction like p1 for both, P1 for being an exit, and e1 for being an entry?
 
yeah but it's the case for most mono-spaced ones
 
11:27 AM
You need a custom font
 
heeeey @Doorknob
 
@cjfaure Hello!
 
@cjfaure in that case, could a p transport you to itself?
 
@MartinBüttner no, that's hardcoded to be disallowed
 
you could make functions work by the way
 
11:28 AM
@overactor with portals
o:
 
yup
 
what about synchronisers in addition to delays?
 
@MartinBüttner fanceh!
 
I wa sthinking the same
 
like two or more trays that don't release whatever they catch until they are all filled
 
11:29 AM
can be arbitrarily wide
 
gets a bunch of rep, changes avatar, changes name, flees country
 
well they don't even have to be adjacent
 
ah right, just associate them
 
just use them like portals with S1, S2 and group them by numbers
 
yeeeessss
that's awesome :D
 
11:30 AM
when values enter a function, that function get resolved immediately, right?
 
@overactor IF we add functions, yes
 
eh?
Hm.
 
okay, how about the only binary operation is addition modulo 256 (modelled by collision, either during the fall or in a snychroniser or delay)
 
I think we need a way to group values into a single cell
 
@cjfaure why? (and how would you separate them)
 
11:32 AM
@MartinBüttner I like it
 
@MartinBüttner exploders would take in groups and drop them all out in sequence, and for more convenient passing through portals
and i just used a php term, yay
 
that way, when values intersect, they immediately form a group
 
What about an operator, that makes a value turn into a given operator after a given amount of ticks?
 
I'd call them multiplexers :D
 
11:34 AM
okay ;D
@overactor i think the board should be static
 
@overactor a value into an operator? o.O how would that work?
self-modifying boards... that would be... not manageable :D (but intriguing)
 
@Martin Reflective programming
 
static boards are 1) optimizable 2) compressible 3) you can generate them from another language
 
@cjfaure good point
 
i think a rule we should follow here is we should be able to translate c code into this language using only deterministic logic
easier to implement, easier to write ;3
 
11:36 AM
is it an interpreted language?
 
@overactor not necessarily
interpreting it would definitely be easier
though in theory it's compilable
 
Debugging a program in this language would be grand
 
I'm looking forward to debuggers
ninja'd
 
that wouldn't be too hard to do with the right infrastructure
also, imagine an IDE for this
it'd be like GIMP xD
 
testing a program could be awesome
you can add a value in any cell at every cell
 
11:39 AM
;o
 
@MartinBüttner Just so you know, you can flag standard loophole exploiting answers as NAA too (there's one in the queue which you commented on, but never flagged).
 
@Doorknob I delete voted in the review queue
I was looking for the NAA delete vote reason, but forgot that that's only for flags
 
Ah, right, there's no flag button in review. Meh. There should be
 
@Doorknob There is a userscript for that: github.com/Undo1/FlagFromReview
 
@MartinBüttner Should I write a theme song for this?
y'know like they did with chuck
 
11:44 AM
no I don't
 
no headphones
 
@MartinBüttner it's hilarious
 
So is there any chance this language actually going to happen?
 
some day...
if I didn't have so many PPCG challenges planned which I don't get around to bring to life I might actually start working on this.
 
11:50 AM
o;
 
Can you make arrays work?
 
@overactor that would be multiplexing
 
aha, yes
 
i have this weird fixation with PLAs :P
 
what for... you've basically got generators :D
 
11:52 AM
are there operators that shift the order of a multiplex?
 
@overactor they're orderless
...right?
 
They could be ordered
and you could operate on the front element only
 
vv
\/
what order would that be? :P
wait, what would actually happen there?! xD
 
that way you could iterate through a multiplex nicely
they switch lanes I suppose?
 
@overactor yeah
We need a pop operator
to split a multiplex into the one on the top and the rest
 
11:55 AM
Could you produce output from the side instead of the bottom?
 
I'd say we should just ditch the multiplexers
 
and have the bottom wrap back to the top?
 
they complicate things unnecessarily
 
@overactor I read through some of the transcript and it looks quite interesting! Perhaps you could make a Github repo to work on it together
 
They also enable you to write simple programs in less than a million cells though
 
11:56 AM
@MartinBüttner kk
xD
 
can't you simulate them with a couple of switches and synchronisers?
btw we definitely need a way to toggle a deflector each time it's used
 
@Doorknob I'm not knowledgable enough, besides it's @cjfaure's idea
@MartinBüttner Yes
 
Github repo? Don't you mean organization? ;3
 
with that a multiplexer becomes trivial
 
yeah, you can set up a makeshift gate system with synchronizers
i love it :DD
should we start throwing some documentation together in a google doc?
 
11:59 AM
hm I can think of a few more ways I'd like to trigger toggling a deflector... maybe we need a more general concept for that
@cjfaure or in a github repo as a markdown :P
 
@cjfaure Why not start that organization?
 

« first day (1284 days earlier)      last day (2022 days later) »