< 1765672620 979981 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) > 1765673157 108151 PRIVMSG #esolangs :14[[07Semi-serious language list14]]4 10 02https://esolangs.org/w/index.php?diff=170595&oldid=170552 5* 03Ais523 5* (-4) 10redefine "original" a bit to prevent an obscure language + a number of trivial derivatives of it all being posted together (AFAICT, nobody is doing this maliciously, but it has occasionally happened by accident) > 1765673198 387196 PRIVMSG #esolangs :14[[07Semi-serious language list14]]4 10 02https://esolangs.org/w/index.php?diff=170596&oldid=170595 5* 03Ais523 5* (+1) 10clarify my previous edit slightly if a language and its derivatives are both on the list we should keep the original > 1765673830 527085 PRIVMSG #esolangs :14[[07Semi-serious language list14]]4 10 02https://esolangs.org/w/index.php?diff=170597&oldid=170596 5* 03Ais523 5* (-128) 10remove: Ambient Techno, Flooding Waterfall Model (derivatives of older languages on the list); efghij, High Rise, StackFlow (no implementation or external resource); Vague (not sufficiently well specified to confidently consider it Turing-complete) > 1765674278 180317 PRIVMSG #esolangs :14[[07Semi-serious language list14]]4 10 02https://esolangs.org/w/index.php?diff=170598&oldid=170597 5* 03Ais523 5* (+61) 10tone down the "derivatives" restriction slightly (and restore part of it that got deleted by mistake) this allows re-adding Flooding Waterfall Model and means that some of the existing derivatives can be kept; also reword the intro to be less boldface-instructi > 1765677411 146798 PRIVMSG #esolangs :14[[07User:Timm14]]4 10 02https://esolangs.org/w/index.php?diff=170599&oldid=170488 5* 03Timm 5* (+4) 10 > 1765680149 589372 PRIVMSG #esolangs :14[[07Talk:DTM14]]4 N10 02https://esolangs.org/w/index.php?oldid=170600 5* 03Ytebbit 5* (+466) 10/* Request to delete user and page */ > 1765680253 805901 PRIVMSG #esolangs :14[[07Esolang:Candidates for deletion14]]4 M10 02https://esolangs.org/w/index.php?diff=170601&oldid=170496 5* 03Corbin 5* (+34) 10/* Articles for deletion */ < 1765681502 95648 :op_4!~tslil@2a01:4f8:c0c:7952::1 QUIT :Remote host closed the connection < 1765681534 259805 :op_4!~tslil@user/op-4/x-9116473 JOIN #esolangs op_4 :op_4 < 1765682263 333697 :amby!~ambylastn@host-81-178-152-248.as13285.net QUIT :Remote host closed the connection < 1765682578 350154 :impomatic!~impomatic@host86-154-217-136.range86-154.btcentralplus.com JOIN #esolangs * :[https://web.libera.chat] impomatic < 1765684614 996699 :impomatic!~impomatic@host86-154-217-136.range86-154.btcentralplus.com QUIT :Quit: Client closed > 1765691596 932542 PRIVMSG #esolangs :14[[07Esolang talk:Categorization14]]4 10 02https://esolangs.org/w/index.php?diff=170602&oldid=170540 5* 03RainbowDash 5* (+354) 10/* Category:Branchless paradigm */ > 1765691765 595312 PRIVMSG #esolangs :14[[07Lacc14]]4 10 02https://esolangs.org/w/index.php?diff=170603&oldid=170582 5* 03Yayimhere2(school) 5* (+3) 10/* Command set */ > 1765691889 601191 PRIVMSG #esolangs :14[[07Mutt Machine14]]4 10 02https://esolangs.org/w/index.php?diff=170604&oldid=170535 5* 03RainbowDash 5* (+13) 10Console > 1765692226 942723 PRIVMSG #esolangs :14[[07UserEdited14]]4 10 02https://esolangs.org/w/index.php?diff=170605&oldid=170589 5* 03PrySigneToFry 5* (+1198) 10 < 1765694820 869839 :pool!~nathan@user/PoolloverNathan QUIT :Ping timeout: 256 seconds < 1765695124 461132 :pool!~nathan@user/PoolloverNathan JOIN #esolangs PoolloverNathan :nathan < 1765696877 714766 :chomwitt!~alex@2a02:85f:9a67:8b00:42b0:76ff:fe46:a5fd JOIN #esolangs chomwitt :realname < 1765699207 110788 :tromp!~textual@2001:1c00:3487:1b00:6cd5:9506:337d:4c75 JOIN #esolangs * :Textual User > 1765700098 501577 PRIVMSG #esolangs :14[[07UserEdited14]]4 10 02https://esolangs.org/w/index.php?diff=170606&oldid=170605 5* 03None1 5* (+153) 10/* Commands */ > 1765700162 181424 PRIVMSG #esolangs :14[[07UserEdited14]]4 M10 02https://esolangs.org/w/index.php?diff=170607&oldid=170606 5* 03None1 5* (+1) 10/* Commands */ > 1765700312 685067 PRIVMSG #esolangs :14[[0714]]4 M10 02https://esolangs.org/w/index.php?diff=170608&oldid=164359 5* 03None1 5* (+1) 10/* Type 78 */ > 1765700476 637228 PRIVMSG #esolangs :14[[0714]]4 10 02https://esolangs.org/w/index.php?diff=170609&oldid=170608 5* 03None1 5* (+41) 10/* Interpreters */ > 1765700500 954934 PRIVMSG #esolangs :14[[0714]]4 M10 02https://esolangs.org/w/index.php?diff=170610&oldid=170609 5* 03None1 5* (+0) 10/* Type 78 */ < 1765700626 50228 :tromp!~textual@2001:1c00:3487:1b00:6cd5:9506:337d:4c75 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1765700931 923940 :tromp!~textual@2001:1c00:3487:1b00:6cd5:9506:337d:4c75 JOIN #esolangs * :Textual User < 1765704473 528461 :tromp!~textual@2001:1c00:3487:1b00:6cd5:9506:337d:4c75 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1765706881 511456 :tromp!~textual@2001:1c00:3487:1b00:6cd5:9506:337d:4c75 JOIN #esolangs * :Textual User < 1765711362 4628 :APic!apic@apic.name PRIVMSG #esolangs :Hi > 1765713217 716158 PRIVMSG #esolangs :14[[07User:JHSHernandez-ZBH14]]4 10 02https://esolangs.org/w/index.php?diff=170611&oldid=154637 5* 03JHSHernandez-ZBH 5* (-70) 10 > 1765713390 9871 PRIVMSG #esolangs :14[[07Main Page14]]4 M10 02https://esolangs.org/w/index.php?diff=170612&oldid=170268 5* 03JHSHernandez-ZBH 5* (-4) 10a grammar correction, and two content shortenings (also why is this not protected) > 1765714124 53099 PRIVMSG #esolangs :14[[07Contains everything14]]4 10 02https://esolangs.org/w/index.php?diff=170613&oldid=169078 5* 03C++DSUCKER 5* (+284) 10 > 1765714424 469955 PRIVMSG #esolangs :14[[07!INTERNET14]]4 M10 02https://esolangs.org/w/index.php?diff=170614&oldid=162588 5* 03JHSHernandez-ZBH 5* (-41) 10/* Operators */ > 1765714439 917729 PRIVMSG #esolangs :14[[07!INTERNET14]]4 M10 02https://esolangs.org/w/index.php?diff=170615&oldid=170614 5* 03JHSHernandez-ZBH 5* (+4) 10/* Operators */ > 1765714506 324284 PRIVMSG #esolangs :14[[07!INTERNET14]]4 M10 02https://esolangs.org/w/index.php?diff=170616&oldid=170615 5* 03JHSHernandez-ZBH 5* (+22) 10 > 1765714523 388845 PRIVMSG #esolangs :14[[07!INTERNET14]]4 M10 02https://esolangs.org/w/index.php?diff=170617&oldid=170616 5* 03JHSHernandez-ZBH 5* (+0) 10/* Operators */ > 1765715142 835917 PRIVMSG #esolangs :14[[07Verbose14]]4 M10 02https://esolangs.org/w/index.php?diff=170618&oldid=75157 5* 03JHSHernandez-ZBH 5* (+399) 10i will make the remaining paragraphs verbose later > 1765715205 492105 PRIVMSG #esolangs :14[[07Verbose14]]4 M10 02https://esolangs.org/w/index.php?diff=170619&oldid=170618 5* 03JHSHernandez-ZBH 5* (+73) 10 < 1765715210 698258 :tromp!~textual@2001:1c00:3487:1b00:6cd5:9506:337d:4c75 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… > 1765715229 532183 PRIVMSG #esolangs :14[[07INTERCAL14]]4 10 02https://esolangs.org/w/index.php?diff=170620&oldid=162236 5* 03JHSHernandez-ZBH 5* (+4) 10 < 1765715473 652620 :Sgeo!~Sgeo@user/sgeo QUIT :Read error: Connection reset by peer < 1765718258 326478 :tromp!~textual@2001:1c00:3487:1b00:6cd5:9506:337d:4c75 JOIN #esolangs * :Textual User < 1765722559 350890 :impomatic!~impomatic@host86-154-217-136.range86-154.btcentralplus.com JOIN #esolangs * :[https://web.libera.chat] impomatic < 1765726559 323627 :jack7087!~jack7087@user/jack7087 JOIN #esolangs jack7087 :jack7087 > 1765727137 872584 PRIVMSG #esolangs :14[[07Language list14]]4 10 02https://esolangs.org/w/index.php?diff=170621&oldid=170591 5* 03Susam 5* (+18) 10/* C */ add < 1765728610 74072 :tromp!~textual@2001:1c00:3487:1b00:6cd5:9506:337d:4c75 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… > 1765728955 401710 PRIVMSG #esolangs :14[[07INTERCAL14]]4 10 02https://esolangs.org/w/index.php?diff=170622&oldid=170620 5* 03Ais523 5* (-4) 10Undo revision [[Special:Diff/170620|170620]] by [[Special:Contributions/JHSHernandez-ZBH|JHSHernandez-ZBH]] ([[User talk:JHSHernandez-ZBH|talk]]) it is an abbreviation according to the manual > 1765731228 71553 PRIVMSG #esolangs :14[[07Langton's ant14]]4 10 02https://esolangs.org/w/index.php?diff=170623&oldid=168768 5* 03Corbin 5* (+1946) 10References and theorems. < 1765731756 917127 :ais523!~ais523@user/ais523 QUIT :Quit: quit < 1765731838 39 :chomwitt!~alex@2a02:85f:9a67:8b00:42b0:76ff:fe46:a5fd QUIT :Remote host closed the connection < 1765731857 313159 :chomwitt!~alex@2a02:85f:9a67:8b00:42b0:76ff:fe46:a5fd JOIN #esolangs chomwitt :realname < 1765732144 41620 :ais523!~ais523@user/ais523 JOIN #esolangs ais523 :(this is obviously not my real name) > 1765732466 575955 PRIVMSG #esolangs :14[[07Esolang talk:Categorization14]]4 10 02https://esolangs.org/w/index.php?diff=170624&oldid=170602 5* 03RainbowDash 5* (+96) 10whatever i dont want to date this correctly i forgot to add this > 1765732495 731739 PRIVMSG #esolangs :14[[07Langton's ant14]]4 10 02https://esolangs.org/w/index.php?diff=170625&oldid=170623 5* 03Corbin 5* (+188) 10Many conventions for the non-technical parts. This is an FA candidate, right? > 1765733473 364870 PRIVMSG #esolangs :14[[07Esolang talk:Categorization14]]4 10 02https://esolangs.org/w/index.php?diff=170626&oldid=170624 5* 03Ais523 5* (+1410) 10/* Category:Branchless paradigm */ discussion about paradigmness and predication < 1765733569 982253 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the term "local cellular automaton" seems vaguely wrong to me < 1765733580 590527 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :in that in a 1D setting that would just be "Turing machine" < 1765733596 590227 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :you could just as easily describe Langton's Ant as a 2-dimensional Turing machine, but I don't think that's common terminology < 1765733682 553322 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :also the computational class section of that article is a mess < 1765733707 83718 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it cites the same paper four times and has results in "upper bounds" and "lower bounds" sections which are all actually lower bounds < 1765733708 996611 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: I'm very open to better terminology. The interesting part is the contrast with globally-applied rules like in Life. < 1765733725 480092 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: the interesting part to me is that this seems to be a terminology gap < 1765733742 471590 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it has exactly the same relationship to 2D cellular automata as Turing machines do to 1D cellular automata < 1765733754 518456 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :ais523: they didn't exist back when Turing-machines were invented, but we now have VCRs which use a 2-dimensional magnetic tape, so we can probably still call the two-dimensional ones Turing-machines. Now three-dimensional would be harder, at least if it has more than the two layers of a double-layer DVD. < 1765733756 767328 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Hey, it was a productive paper. I can treat them all as lower bounds, but I'm also a Church-Turing believer. < 1765733781 685297 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :nah, I guess even a floppy disk has a two-dimensional magnetic tape < 1765733787 516607 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :or a hard disk < 1765733802 217350 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :well, regardless of whether you believe in Church-Turing or not, it should be fairly obvious that Langton's Ant isn't uncomputable unless you cheat with the initial conditions < 1765733810 83062 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :if the initial conditions are computable, so is the language as a whole < 1765733895 83607 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: VCR tape is really interesting because it's storing a one-dimensional sequence of data, but in order to fit a long sequence onto a relatively short tape, it uses a short but wide tape and effectively writes the data in a space-filling curve (with discontinuities but that doesn't change the essential nature of it) < 1765733932 419024 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and this makes it non-obvious whether it counts as 1-dimensional or 2-dimensional < 1765733941 314815 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :That's a good point. GMG don't require that the initial lattice is computable. < 1765733976 528777 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :almost anything is uncomputable if you allow uncomputable initial conditions < 1765733999 431580 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :ais523: kind of, but I think there's some magic in there that I don't quite understand where it might synchronize the wraparound with the vertical sync of the video signal. I don't understand how that can work because there's only one VCR format and it can store both PAL and NTSC television. < 1765734034 615151 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :ok, admittedly there's more than one VCR formats, I think there's something like double speed, but that's not about PAL versus NTSC < 1765734037 122220 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: if you fast-forward a VCR that might help you understand better < 1765734057 717054 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the basic idea is that there's a discontinuity whenever the recorded track reaches the edge of the tape < 1765734070 305560 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the recorded track is shaped like ////// but with much steeper slashes < 1765734092 887433 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the 50Hz versus 60Hz just changes the angle of the slashes, which can be done by changing how fast the tape head moves < 1765734131 17395 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and if you time it correctly the discontinuity always happens during vblank, a time at which the screen is ignoring every signal sent to it < 1765734171 57488 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but, if you're fast-forwarding, you get the first half of one frame and second half of the next (or more if running at ×3 or ×4 speed) and you can see the discontinuity on screen when you do that, lots of garbage/random data at the point of the discontinuity < 1765734207 795675 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :oh, so they try to save a tiny bit of tape area by not including most of the vblank interval on the usable part of the tape? < 1765734227 174977 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right, the vblank happens while the tape head is off the edge of the tape < 1765734235 737695 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :which both saves area and covers the discontinuity < 1765734333 395625 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :but isn't that kind of synchronization a bad idea because it complicates the VCR a lot and makes it less forward compatible with new extensions to the television format such as teletext or that british text caption thingy? < 1765734368 977072 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it doesn't complicate the VCR because it needs to synchronise with vblank *anyway*, if it didn't the picture would gradually move up or down the screen < 1765734379 128325 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(something which frequently happens in practice on misconfigured old TVs) < 1765734420 797443 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :if you wanted to capture vblank metadata like teletext, you could include that poriton of vblank in the portion that's saved to the tape – I don't know how many VCRs actually bother with that in practice < 1765734429 189219 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :what, why? can't it just save the raw signal as is, and that raw signal contains the information that the television uses to vertically synchronize? < 1765734437 938981 :tromp!~textual@2001:1c00:3487:1b00:6cd5:9506:337d:4c75 JOIN #esolangs * :Textual User < 1765734438 588480 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it is hard to tell nowadays because VCRs are mostly obsolete and analog teletext signals aren't sent any more < 1765734509 392160 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :“analog teletext signals” hehe… I mean they're uncompressed digital teletext signals for uncompressed analog televison, so that makes sense, we don't even have any analog television broadcasts anymore, probably to save on EM frequency space < 1765734517 207661 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: I think maybe if you just want playback to work? but normally people want pause/fast forward/rewind to work too < 1765734558 13307 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :pause is done by repeating the same frame over and over again, but that requires one slash on the tape to contain exactly one frame, not a fraction or multiple of one < 1765734608 130905 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :I see! image while paused or fast forwarded. < 1765734661 865113 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :though I can imagine another reason, which is that the vblanks use extreme values of the signal and that value can't be recorded onto the tape to save on the *value* space < 1765734743 226988 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :which I just saw was a problem when dwangoac was trying to digitize old videotapes with a cheap software-defined radio card with only 8 bits depths of value and that apparently destroyed the vsync on the digitization side < 1765734834 717620 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :(it's possible that I misunderstood that and the problem with vsync was something else < 1765734897 921812 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :I guess this makes sense because by the time they made VCRs, televisions could synchronize to vblank well enough, that was a commonplace mass-produced technology that they could reuse > 1765735019 343793 PRIVMSG #esolangs :14[[07BF instruction minimalization14]]4 10 02https://esolangs.org/w/index.php?diff=170627&oldid=167405 5* 03Esolangist alt 5* (+662) 10Esolangist alt < 1765735211 346534 :RainbowDash!~RainbowDa@158.41.146.127 JOIN #esolangs * :[https://web.libera.chat] RainbowDash < 1765735232 378772 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :hello, i am here to talk about branchlessness < 1765735249 369321 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :it seems easier to chat on the IRC rather than on the wiki page < 1765735287 224744 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :now AI said that there is not a good definition of branchless. but i think predicated instructions are a very good way to explain it. < 1765735321 900846 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :maybe if it could be like "A branchless programming language is a programming language that does not use statements to control program flow but rather predicated instructions or operations that mimic predicated instructions." < 1765735339 401584 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i meant The branchless paradigm is a paradigm that* < 1765735561 599965 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so the gray area happens when you start predicating entire sections of instructions < 1765735607 956894 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i mean you do need some way to predicate stuff, just because you can predicate entire sections of instructions doesn't make it any less branchless. the predicated instructions will still run just not do anything < 1765735616 979754 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :imagine a program that goes «while(true) { A if x == 1; B if x == 1; C if X == 1; D if X == 2; E if X == 2; F if X == 2; G if X == 3; … }» < 1765735618 363326 :int-e!~noone@int-e.eu PRIVMSG #esolangs :(common in DSPs) < 1765735643 680346 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(assume case-insensitive because I accidentally switched case halfway through writing it, I'm tired) < 1765735661 934139 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :from one point of view, this is branchless because it is a loop full of predicated instructions < 1765735680 198689 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but from another point of view, this is a perfectly normal state machine where x is the instruction pointer, and is potentially very branchy < 1765735706 140694 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :because it's just another syntax for a switch/case/match in a loop < 1765735729 433119 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i think branchless should follow some sort of math, like how 10+5 is 15. in cyclic tag something being 0 and 1 is it's form of math. but thats hard to define objectvily. < 1765735740 118602 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :0 or 1* < 1765735747 141046 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there are some esolagns where actual programming in practice falls into that gray area, e.g. The Waterfall Model and Delta Relay < 1765735794 191105 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i mean can we agree that windmill, cyclic tag, i/d machine, and blindfolded arthmetic are branchless? < 1765735806 764231 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :yes < 1765735823 170146 :amby!~ambylastn@host-81-178-152-248.as13285.net JOIN #esolangs amby :realname < 1765735824 383374 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although, hmm < 1765735826 643098 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :if the branchless paradigm does get added should it applied to only turing complete languages < 1765735836 807654 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :what's interesting about those languages is that all obvious implementations are branchless or effectively so < 1765735867 839686 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and the gray area is formed of languages like Delta Relay which have both obvious branchless and obvious branchy implementations < 1765735888 180013 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :because their semantics are less suggestive of an implementation strategy than, say, Blindfolded Arithmetic's are < 1765735898 271340 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i think something should be counted as a branch if the logic of an instruction would not be ran in the hardware < 1765735923 949226 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but that's a property of the implementation, not the langauge < 1765735930 897056 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :true true < 1765735955 867798 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so languages are only clearly branchless if they strongly suggest a branchless implementation strategy < 1765736003 181974 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i mean the way you simulate branches in windmill is very close to what you said earlier. but the math still runs to check all the booleans and run everything < 1765736009 893856 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :the while(true) { A if x == 1; B if x == 1; C if X == 1; D if X == 2; E if X == 2; F if X == 2; G if X == 3; … } < 1765736028 419647 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :incidentally, the I/D machine seems to be "more branchless" than something like cyclic tag, because there are two obvious implementations and one of them is branchless in the instruction decoding in addition to at runtime < 1765736079 579301 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :variable = ((condition==1)*(value_if_true))+((condition!=1)*(value_if_false)) < 1765736080 81020 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :this is how an if statement is made in windmill which is equal to < 1765736080 579684 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :variable = condition ? value_if_true : value_if_false; < 1765736081 331492 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :fwiw, I don't think this ambiguity is a reason to not create the category, but it is a reason to think about exactly how we want to define it < 1765736124 399565 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i mean abusing branchless to create branches is exactly what you are supposed to is it not? < 1765736127 589547 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :one sign of branchlessness is that it "naturally" goes SWAR, but that is only helpful in languages that actually have wide data types < 1765736153 519341 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :right, this is why it's a paradigm, "what you're supposed to do" is the nature of those < 1765736179 610649 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :is it fine if i go into a more of a theortical aspect of this? i dont know if it will help the dissucsion but me and xylo agreed on it < 1765736190 607623 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :something like ELEMENTARY is branchless but the instructions effectively create loops < 1765736205 992884 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :RainbowDash: the theoretical aspects should be discussed somewhere, they're interesting < 1765736225 987097 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think there should probably be a wiki article called something like "branchless programming" that discusses the programming style and theoretical considerations / difficulties in defining it < 1765736226 176973 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :me and xylo agreed that nondetirmistic turing machines are branchless because they choose EVERY branch possible < 1765736240 563937 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :and they only end up picking one, which is what a branchless programming language basically does but with logic instead < 1765736254 834606 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i made https://esolangs.org/wiki/Branchless_Algorithms < 1765736255 336051 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :but it is messy but it has alot of info < 1765736260 79518 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think I'd also agree with that, although I think disagreeing is reasonable < 1765736272 802227 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(re: angelic nondeterminism) < 1765736302 329011 :int-e!~noone@int-e.eu PRIVMSG #esolangs :this also overlaps with reversible computing < 1765736323 130788 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :it overlaps with alot of stuff but i think it is most useful as a tag where something is obviously branchless < 1765736329 961900 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: are you thinking about bit buckets as the analogy for predication? < 1765736333 875411 :int-e!~noone@int-e.eu PRIVMSG #esolangs :(which can have branches but it's hard to enforce statically that you can undo merged control flows) < 1765736362 715316 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i don't know what angelic nondeterminism is, well atleast in terms of the arguement against that < 1765736376 292385 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :well, implementing nonreversible languages in reversible languages is normally done using a control-merge function/idiom < 1765736384 828801 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Sorry for dropping the conversation; I got distracted by finding some fascist's code on my system. I will change [[Langton's ant]] as discussed. < 1765736391 671387 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :RainbowDash: "angelic" = the program picks whatever course of action helps it terminate correctly < 1765736406 777208 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :oh so it's hypercomputic in nature < 1765736411 31623 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :wihch is how nondeterministic Turing machiens are normally defined < 1765736424 939151 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :well nondeterminstic turing machines are too i guess < 1765736428 879244 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it doesn't necessarily require hypercomputation, you can just run all the possibilities in parallel until you find the one that works < 1765736447 95962 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :give me a second to find what i said to xylo < 1765736455 590228 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I like to use the full "angelic nondeterminism" phrase nowadays because if you just say "nondeterminism" many people assume you mean randomness < 1765736494 130233 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :A = 0 # Could be any number < 1765736494 629943 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :B = 1 # Could be any number < 1765736495 129967 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :FOO = A==B < 1765736495 630367 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :PRINT (FOO*55) < 1765736496 139312 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :See here, A and B can be an infinite variations of numbers, but there are certain paths to printing 55. this is what i mean by "picking a single path" the two paths are 55 and 0 < 1765736530 797641 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :A==B is the decider of what to do out of an infinite amount of paths. if that makes sense < 1765736602 827467 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :it would be technically simulating all paths but the logic shows where to go. it might make sense if you programmed branchlessly more becuase that is how i think of it sometimes when i am programming. < 1765736663 200476 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think there are languages where you can literally write programs like that < 1765736679 321074 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I'm pretty sure it's possible in Prolog but I can't remember the syntax for the Boolean comparison < 1765736704 344089 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :like what? < 1765736717 531752 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :"write programs like that" like what? is what i mean to ask. < 1765736774 833489 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :also are rewriting languages branchless like thue and lambada caculus? < 1765736808 519322 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :one can argue that they are not because they follow paths that can branch into other paths and certain instructions won't ever be ran < 1765736834 457405 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :but one can argue against that saying that the same thing happens in cyclic tag when a zero is read. < 1765736850 112795 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: One issue with your logic is how CPUs work today. So, expanding on the hint from int-e, in a GPU or DSP, we "mask off" the predicated instructions when the predicate fails. This means that we still do the calculation, but we ignore the result. It's cheaper to do this because it's applied to lots of data all at once. This is what SIMD means by "multiple data". < 1765736854 982862 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :your example of a nondeterministic program < 1765736877 594128 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :OK, seems that Prolog doesn't actually have an arithmetic operation that compares two numbers and returns a boolean < 1765736885 998080 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :you can write like that in windmill < 1765736904 989941 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :This is also kind of how ALUs work. The ALU computes every operation at once, but the operations which aren't used are masked off by the decoder for the ALU. Exactly how much computation is wasted is implementation-specific, but the idea is that we don't have to literally rewire the ALU for each new instruction. < 1765736926 212099 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :yes branchless programming does alot of ignoring instructions being ran, that is how they achieve what they do < 1765736938 162628 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Well, I guess I'm saying: when is digital logic *not* branchless? < 1765736990 331867 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: so circuits normally have both data inputs and control inputs, but sometimes which is which is a matter of perspective – and being branchless is about having the control inputs follow a predictable pattern < 1765736998 298005 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(i.e. one that isn't data-dependent) < 1765737005 156180 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Solid-state mechanisms really mess with our idea of the machine *being* in a *state* since we are definitionally trying to keep them in exactly *one solid state* at all times. < 1765737013 757584 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but because it's subjective which inputs the control inputs are, that also makes it subjective whether the hardware is branchless < 1765737030 875878 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i mean i guess you can program branchlessly without having to ignore instructions. for example you can use purely mathamatic functions to achieve results. < 1765737037 179852 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :like interger programming is what i mean. < 1765737053 387210 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: that's not the usual definition of solid-state, at least < 1765737067 69864 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :if you wanted to run blindfolded arithmetic programs in practice then you'll make an interpreter that tries to decompile them, at least to the point where it can skip sequences of conditional instructions when the condition is false. this especially helps when the program is a state machine where most of the loop does nothing in each iteration. and once you do that, blindfolded arithmetic won't be < 1765737073 76197 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :branchless, it's not running in a fixed amount of time per loop. (of course fixed amount of time is only if you're running on hardware with a very long but fixed word size, like the originally intended machines that multiply a hundred decimal digits.) < 1765737097 258455 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it was originally used to distinguish circuits that are entirely made of solids (like copper and silicon) from those that contain vacuum tubes (and thus are partly based on gases) < 1765737105 220299 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: For sure! I don't want to ignore how you're thinking. I'm poking at the edges because one important question for a paradigm is whether it's something we use *inside* a language as a pattern, or something *outside* which defines the language by controlling what we're allowed to express. Like, object-oriented vs object-based. < 1765737137 719572 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :yeah it's just very hard to define something but i think this proccess is needed as there has not been any good defintions previously made before this discussion < 1765737139 772273 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: and "object-oriented" has caused a lot of trouble over the years < 1765737175 979770 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :partly because there's room for disagreement about how broadly or narrowly to define it, and partly because if you define it narrowly there is more than one plausible narrow definition < 1765737177 43888 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: TIL! In music it's anything that's based on digital logic as opposed to analog logic. And I think further back, to fluidics and mechanical linkages, which also moved. < 1765737210 457941 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :are angelic turing machines branchless can we agree or disagree? < 1765737255 677625 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :RainbowDash: I agree with you that they're branchless, *but* branchless is a property of the implementation and the angelic Turing machines are branchless only if you have an angelic implementation to run them on < 1765737270 661408 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I think "branch" is ill-defined. < 1765737271 330103 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I'm happy to imagine that I have one of those, even though it isn't obviously physically possible < 1765737295 389452 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but I don't expect everyone to agree < 1765737306 239557 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :"when is digital logic *not* branchless" => when the part that takes or does not take branches doesn't fit into the same nice digital model, like it powers down an entire region in the processor (or even an entire chip) to save power. < 1765737335 820346 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :maybe something like "The branchless paradigm removes the use of statements controlling program flow, forcing the programmer to come up with solutions that mimic branches or completely computes differently without ignoring instructions making every instruction useful." i mean it can be written better but do you get what im getting at < 1765737349 907829 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so one example I've been thinking about: imagine an adder but there's an AND in the carry circuit, which you can use to suppress the carries < 1765737356 137991 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and if you do that it becomes an XOR instead > 1765737371 190122 PRIVMSG #esolangs :14[[07Text Scratch14]]4 N10 02https://esolangs.org/w/index.php?oldid=170628 5* 03Esolangist alt 5* (+1257) 10Esolangist alt < 1765737372 768528 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :b_jonas: Hm. Because it's continuous? < 1765737382 560799 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(note: this probably isn't a sensible way to build an ALU in practice, but in theory there's nothing ruling it out) < 1765737384 570428 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :when we look back at while(true) { A if x == 1; B if x == 1; C if X == 1; D if X == 2; E if X == 2; F if X == 2; G if X == 3; … } < 1765737385 70239 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :we can see this is branchless, but it doesn't seem branchless, we know this is branchless because we can subsiute these expressions with mathmatical logic and be branchless. < 1765737405 922211 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: Out of curiosity, have you heard of constant-time algorithms? They're used in cryptography, for example. < 1765737409 608937 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :and if that isn't enough, you can rewrite the entire program to still act the same and still be branchless in some sort of way. < 1765737417 635463 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i don't think so korvo < 1765737422 40783 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :I thought "solid state" just means no moving parts, such as relays that aren't electromechanical but are built of semiconductor, or storage that doesn't have a rotating platter or moving tape but modern semiconductor magic < 1765737464 793563 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: so in practice those are nearly always branchless because it is hard to get a modern processor to take a constant amount of time if the program is brnaching < 1765737482 987804 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: They're algorithms which execute in predictable time regardless of their inputs. Like, adding two numbers without taking different amounts of time depending on what those numbers are. < 1765737484 723090 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i think it is fine for the state of the program to be inside of memory but not be in the actual instruction pointer. < 1765737485 223288 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :xylo said you can have a 1 rule 2 tape turing machine and change the state by having a single tape have the states in memory rather than it being in the hardware. < 1765737495 161556 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: the definition does seem to rule out relays, but no moving parts isn't sufficient < 1765737513 877335 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :korvo so what about them? < 1765737524 246944 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Exactly. To branch could be to have observable distinctions in time/space usage. And isn't that the point, in some sense? To take a branch to potentially save time as opposed to computing *all* intermediate values? < 1765737544 258627 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :ais523: oh, because you're saying no vacuum tubes either, right < 1765737571 938392 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: Like ais523 says, if the algorithm operates without examining the input values, then it can't possibly have branches which depend on those input values. < 1765737573 280473 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :yes, branching saves time by not computing everything. while branchless might not save time because it might have to ignore values it computed. < 1765737579 667643 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: branchlessness does not survive optimisation, but I think it's OK to sometimes discuss concepts like that < 1765737592 351459 :somefan!~somefan@208.58.192.69 JOIN #esolangs * :[https://web.libera.chat] somefan < 1765737602 864513 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :like when i say you don't need branches in some cases at all i mean something like < 1765737609 577129 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :for constant-time crypto, it has reached the point where some platforms are starting to create non-optimisations guarantees < 1765737628 734855 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :IF a > b: < 1765737629 235286 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :    max = a < 1765737629 735111 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :ELSE: < 1765737630 234908 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :    max = b < 1765737630 734825 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :can be replaced by < 1765737631 235125 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :diff = a - b < 1765737631 735110 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :mask = diff >> 31 < 1765737632 235567 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :max = a - (diff & mask) < 1765737632 735115 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :without the use of boolean logic < 1765737646 3782 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :e.g. I think ARM recently gave a non-optimisation guarantee for a range of common arithmetic instructions, guaranteeing that they will actually be executed if they would have been executed in program order < 1765737647 400859 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: I suspect that we merely need to teach optimizers how to *not* speculate on the values of certain inputs. < 1765737667 959144 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: On IRC, please use a pastebin to share more than one line of code. I like bpaste at bpa.st. < 1765737693 609543 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :okay sure, but why so? < 1765737707 279691 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :chat spam i suppose < 1765737709 424840 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that was actually an impressively fast paste, normally you get frozen for a minute or two if you try to paste that much < 1765737734 6274 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :either Libera are more lenient on that than Freenode used to be, or the IRC client knew exactly how fast a paste it could get away with < 1765737742 68766 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: '&' is a Boolean operator. I understand what you're saying, though; the language has a notion of *control flow*, and you're saying that control flow isn't conditionalized. < 1765737759 551131 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i know it is a boolean operator, but yeah boolean logic to mimic control flow is what i more specfically meant. > 1765737761 190203 PRIVMSG #esolangs :14[[0799 bottles of beer, but you drank it14]]4 N10 02https://esolangs.org/w/index.php?oldid=170629 5* 03Esolangist alt 5* (+428) 10Esolangist alt < 1765737761 767721 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :RainbowDash: right, there are limits to how frequently you can post messages and pastes normally end up hitting the rate limit and making it hard to hold a conversation because of all the penalty lag you get as a result < 1765737785 450403 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: IRC is a serialized protocol without any sort of channels or QoS. While pasting, you literally cannot do anything else. If your client is any good, it will allow you to interrupt a paste; if your client is great, it will either auto-pastebin it or prevent the paste. < 1765737823 313585 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :huh, intresting < 1765737874 154653 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: IF and ELSE *are* control-flow operators. There's nothing mimicked or fake about it. This is the difference between what's technically computable within the system (usually anything computable!) and how we simulate that system in physical hardware. Like, the CPU will *jump* from one section to another, interrupting the stream of instructions. < 1765737894 100322 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :ais523: and it's a compiler problem too, there are libraries that try to convince too smart compilers to not do optimizations that can make the compiled code data-dependent, or to make sure the compiled code overwrites some amount of memory to forget information even if the complier believes it can prove that the write can be optimized away < 1765737907 372639 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: there are conceptual problems even then < 1765737922 778020 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :suppose I have a conditional forwards jump, it gets predicted as not taken, but it's actually taken < 1765737927 117501 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :korvo im not saying the if and the else are the things mimicing it i mean the second part of the code < 1765737932 400913 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so the compiler speulatively runs a few commands after the jump < 1765737933 812159 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :the bitwise operations < 1765737938 87330 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :err, processor, not compiler < 1765737948 888863 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :say the command it reaches when it realises the jump is actually taken happens to be the command before the jump target < 1765737963 381024 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :So what do you guys suppose is wrong with the definition "The branchless paradigm removes the use of statements controlling program flow, forcing the programmer to come up with solutions that mimic branches or completely computes the same result differently without having to mimic branching." < 1765737974 557980 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :now, it's running the exact same sequence of commands on both sides of the branch, just resetting the values if the branch happens to be taken < 1765737982 368662 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: Oh, yes, for sure. I did fully agree with you on-wiki that there is a branchless paradigm. Like, we could have a page [[Branchless paradigm]] right now, I think. The main questions are about whether there should be a category, what it should be called, and what the criteria for inclusion are. < 1765737997 44226 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :this conceptually doesn't seem to be any different interpreting the conditional jump as a predication < 1765738012 257565 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Who knows what secrets lurk in the hearts of L2? The Spectre knows! *Vincent Price laugh* < 1765738024 386685 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i think it should have a category as alot of pages fall into it and its not as niche as one might think < 1765738025 116201 :int-e!~noone@int-e.eu PRIVMSG #esolangs :b_jonas: And ultimately a hardware problem :) What's really stopping a CPU from short-cutting a bitwise and operation (say) if one of the inputs is already known to be 0? < 1765738048 271662 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i think hardware can be ignored to a certain point as ai said < 1765738054 641714 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :int-e: yes, both CPU problem and compiler optimization problem. < 1765738055 183007 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: short-circuiting divisions is a real thing that happens on certain processors < 1765738055 319682 :int-e!~noone@int-e.eu PRIVMSG #esolangs :apart from "that would be crazy" which has, historically, never stopped anybody < 1765738059 107666 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :if it theortically would not branch then it would be branchless < 1765738061 820459 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(not divide by 0, other special cases like divide by 1) < 1765738090 32188 :int-e!~noone@int-e.eu PRIVMSG #esolangs :(it was fine when CPUs were thousands to millions of transistors) < 1765738096 620866 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: Honestly, that's a fairly good first sentence. I would want to see it followed up by citations saying who came up with it. Also an explanation clarifying some of the issues we've raised here, to help readers understand how this differs from other paradigms. < 1765738105 278912 :int-e!~noone@int-e.eu PRIVMSG #esolangs :ais523: yeah, makes sense, sadly < 1765738134 782774 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i came up with it, there is not alot of discussion on it because this is not a studied field too much. unless i am missing some grand author who writes alot about this. < 1765738139 650179 :int-e!~noone@int-e.eu PRIVMSG #esolangs :well. divisions kind of have always been variable time < 1765738141 196102 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :most of the arithmetic instructions are too fast already for fast-path optimisations to help < 1765738145 205108 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but division is still pretty slow < 1765738161 268178 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i guess i can cite myself < 1765738172 80969 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :branchless programming is well-known, you might have invented it independently but you weren't the first < 1765738182 48814 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i mean the WHOLE thing is branchless < 1765738187 83047 :tromp!~textual@2001:1c00:3487:1b00:6cd5:9506:337d:4c75 QUIT :Quit: My iMac has gone to sleep. ZZZzzz… < 1765738189 695191 :int-e!~noone@int-e.eu PRIVMSG #esolangs :We can do this for multiplications too though, and then it's suddenly relevant for cryptography. < 1765738190 979843 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: Offhand, it's a popular topic for GPU and DSP programmers, as well as cryptographers. < 1765738201 200224 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :branchless programming is used in snippets of code often but not the whole thing if i recall correctly < 1765738223 597586 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :that said I'm generally not a fan of citations when it comes to topics which are well-known and many people are likely to have come up with on their own < 1765738230 857758 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :I mean, the whole point of blindfolded arithmetic is to show how we can simulate branching programming on a branchless machine < 1765738262 27074 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i mean you can't really cite it to anyone because alot of things come similar to it like blindfolded arthmetic < 1765738275 38598 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :or even for more obscure topics with a single author – some papers I worked on used the Muller C-element, I looked up the history, and it turned out that a lot of authors had just been copying citations from each other about the history of that element without checking the original source < 1765738289 875193 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: I was literally hand-writing branchless GPU shaders over a decade ago for video rendering. Back then, concepts like swizzling and masking were standard for understanding both the GPU and also our programming models on top of it like GLSL. < 1765738303 838750 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :oh yes, branchless does happen alot on shaders < 1765738322 26146 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :So no, it's not new. I was able to cite John Backus for [[functional paradigm]] and Alan Kay for [[object-oriented paradigm]]; I'm sure *somebody* has talked about it before. < 1765738329 655299 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(something that I verified by borrowing a physical copy of the actual book that everyone was citing – it was fairly obscure, but librarians can be extremely good at their jobs – then chasing citations backwards from there) < 1765738333 116956 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :but it can be generallized to everything, it can simulate any turing complete program. not just shaders or math. < 1765738353 147380 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :IOCCC 1992/buzzard.1.hint points this out: if you preprocess the program then it gets less readable, because before preprocessing it's an ordinary branching program, but after preprocessing it's branchless code < 1765738359 121169 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I compared with SWAR; there's actually *two* separate schools of SWAR, with the other called "broadword", so if we had a page on SWAR then we'd have to cite both. < 1765738369 3227 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i mean i guess what i mean to say is i don't know who to cite because i did all this research myself essentially. < 1765738387 599963 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :the halt and i/o variable are things that i had to make up and other people used it. < 1765738393 188801 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: ELEMENTARY is probably an extreme version of SWAR-style programming (although the "R" doesn't quite apply at the point where you're using double exponentials) < 1765738402 437402 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :not saying it hasn't been done before im just saying that i brought it to attention for esolangers. < 1765738405 429727 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :today we do branchless programming because it lets us use SIMD better, or even GPUs < 1765738417 338925 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: or just to avoid the cost of branch mispredictions < 1765738447 692291 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :last time I checked a misprediction was around 30×-40× slower than a normal arithmetic instruction, that has probably changed since but is likely to still be in the right ballpark < 1765738447 848429 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :do i have the go ahead to make it a category? and it can be edited to be more precise later < 1765738448 97213 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :but unlike blindfolded arithmetic those give more readable programs because they have more built-in primitive operations to support branchless conditionals < 1765738457 487012 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i mean there is always going to be some argument over a defintion as defintions are. < 1765738489 125972 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :ais523: yes, that too, though the "30×-40× slower" thing really only applies if there isn't anything else slowing you down, such as cache misses < 1765738494 931550 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Yeah. One of the papers, don't remember which, has the beautiful vision of a future where we periodically recompile our 8-bit programs to be SWAR'd on ever-broader machine words. They imagined that the 32-to-64 transition would lead to a grand *doubling* of performance on tight code! < 1765738498 656310 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :when a misprediction is that expensive, compiling to branchless code is going to be good unless you can keep mispredictions down to a very small proportion < 1765738519 365522 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :also, should things with the branchless paradigm also have to be turing complete to fall in the catagorzation even though alot of total programs are branchless < 1765738540 129541 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: well, that really does help for some algorithms – it's just that they aren't used often < 1765738541 125680 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i mean i can think of one total programming language that you still program in the branchless paradigm however. < 1765738562 598283 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :SIMD going from 64 bits to 128 bits to 256 bits to 512 bits does actually give a near-doubling every time for certain programs < 1765738570 85223 :int-e!~noone@int-e.eu PRIVMSG #esolangs :How was I not aware of SWAR, a 1996 acronym. (The concept is familiar.) < 1765738581 157062 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although, many modern processors have to underclock themselves to do particularly wide SIMD < 1765738586 420489 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :so you don't get a true doubling < 1765738596 840044 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: You have the go-ahead to make [[Branchless paradigm]], at least. That's where we would put all of the references and explanations and nuances. I don't think that we have a definite list of like five articles which would fit the category, though. < 1765738617 175963 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: I think it should be [[Category:Branchless paradigm]] but [[Branchless programming]] < 1765738621 683383 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :we have a definite list of like five articles however < 1765738641 855858 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :we already agreed on a few < 1765738643 197510 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :because the mainspace article should be about *both* languages that enforce branchless programming, and branchless programming used as a technique in languages that support full-powered conditoinals < 1765738655 733814 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ais523: Okay! Let's bless it. < 1765738670 689808 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :alright ill start writing them and then you guys can edit it < 1765738673 431800 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Or maybe we just did? < 1765738697 527710 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :where do you talk about the nuances though < 1765738701 319844 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :in the paradigm or in the programming < 1765738711 314312 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :RainbowDash: in the mainspace article < 1765738714 560169 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :category description pages on Esolang should normally be very short < 1765738722 521454 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: Excellent! Thanks for chatting, BTW. I hope you continue to chat and contribute. < 1765738725 985001 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :in the category page you only talk about the definition of what the category applies to < 1765738734 45379 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :that's why i say where should we put the nuances because there is alot of them < 1765738749 463812 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :and just link to an article giving more information < 1765738750 468187 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :As an example, I moved nearly everything in [[category:functional paradigm]] to [[functional paradigm]] after IRC discussion. < 1765738753 806894 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :because it doesnt really fit in branchless programming but it cant go in the catagorey either < 1765738777 217180 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :because the catagorey is too short < 1765738783 999538 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i mean it should be a short page* < 1765738787 398069 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :this is a little nontrivial and I'm not quite sure how to handle it right now < 1765738792 72009 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Put it in [[branchless programming]]! If I were stubbing it, I'd put a section on GPUs, on DSPs, on SIMD, on cryptography. Go for it! < 1765738799 703633 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(and said as much on Esolang talk:Categorisation) < 1765738813 98253 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :Branchless programming only focuses on the techniques and not the paradigm < 1765738826 766151 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :and the issues arise from the paradigm < 1765738862 514302 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :what if i make a page called [[Catgorization:Branchless paradigm]] (typod ill fix that later) [[Branchless Paradigm]] and [[Branchless Programming]] with see more < 1765738879 913011 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :where the catagorization links to the branchless paradigm page to explain more > 1765738886 396724 PRIVMSG #esolangs :14[[07Blindfolded Arithmetic14]]4 10 02https://esolangs.org/w/index.php?diff=170630&oldid=155064 5* 03B jonas 5* (-8) 10hereby showing a rude gesture to the IOCCC webpage maintainers < 1765738887 641605 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :and the branchless paradigm links to the programming for the techniques < 1765738896 246152 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the capitalisation is wrong, should be [[Branchless programming]] with a lowercase p < 1765738899 548215 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :because it isn't a proper noun < 1765738917 826540 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :is paradigm captilized < 1765738925 941394 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :no < 1765738927 840950 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :okay < 1765738932 250421 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :what do you think of the 3 page solution < 1765738941 27432 :int-e!~noone@int-e.eu PRIVMSG #esolangs :(it should be [[branchless programming]] but Wikimedia has Ideas about Page titles) < 1765738951 215088 :int-e!~noone@int-e.eu PRIVMSG #esolangs :Or Mediawiki, rather. < 1765738961 808323 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I think it can fit in one article. [[ZISC]] and [[OISC]] have a similar burden, because it's ultimately something of a *perspective* whether a machine is one- or zero-instructioned, and it turns out that there's a natural way to move from one perspective to another. < 1765738982 941706 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :what about an articled called like [[Branchless]] < 1765738984 504039 :int-e!~noone@int-e.eu PRIVMSG #esolangs :RainbowDash: I'd prefer starting with a Branchless programming page < 1765738989 388289 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Defunctionalization (which we don't have a page on yet?) is another good example. < 1765738994 346495 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think maybe the paradigm article should be a section on the programming page rather than an article of its own < 1765739015 418904 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :ill start with the programming page then as we all agree it should exist < 1765739016 758086 :int-e!~noone@int-e.eu PRIVMSG #esolangs :We can split it later if there's enough for two separate pages. < 1765739049 684952 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :so [[Branchless programming]] or [[branchless programming]] < 1765739055 881766 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :int-e: lowercase titles are rare, there's something of a split between sentencecase and titlecase but normally people wouldn't spell a title entirely in lowercase unless it starts with a word which for some reason *can't* be capitalised < 1765739059 835622 :int-e!~noone@int-e.eu PRIVMSG #esolangs :RainbowDash: the former < 1765739081 676317 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :RainbowDash: in MediaWiki page titles, the first character is case-insensitive but the others are case-sensitive < 1765739116 391558 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :now I'm curious about how it handles Turkish İ and ı < 1765739172 268159 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :looks like Wikipedia calls the articles "İ" and "Dotless I" > 1765739381 179487 PRIVMSG #esolangs :14[[07Obfuscated Tiny C14]]4 10 02https://esolangs.org/w/index.php?diff=170631&oldid=63518 5* 03B jonas 5* (+195) 10IOCCC webpage broke all the links < 1765739395 481677 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :https://pastebin.com/v3x7Tm5T < 1765739395 931994 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :is this a good defintion < 1765739410 576398 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :oops there is reption let me fix it < 1765739455 605510 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :(at least that's the default; Mediawiki can be configured otherwise) < 1765739461 677820 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I think the definition is fine (although it's worth noting that it depends on what an instruction is, which is somewhat subjective) < 1765739482 683565 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :what do you suppose it should be then < 1765739485 867689 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :doesn't have to be noted in the introduction, it can be mentioned later < 1765739506 940774 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :although, now I'm thinking about conditional-skip instructions < 1765739519 517967 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :having a conditional skip *and* a goto clearly makes a language branchful < 1765739537 363222 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but having one of them without the other might not < 1765739647 876200 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i think the most stressful part of this page is the first sentence everything after that is fine < 1765739706 618387 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :hmm, what about "'''Branchless programming''' is a programming technique in which the program always runs the same commands in the same order." < 1765739744 194473 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: Correct! The first sentence of the article must clearly explain what the topic is, what it's called, how we should classify it, what it's compared to, and some other stuff. You'll get the hang of it eventually. < 1765739770 107722 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: "what it's compared to" can go in the second or third sentence sometimes < 1765739776 911322 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i've created many articles but none that must meet up to the high status quota. but i do know alot about this topic < 1765739784 249575 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :what it's compared to can you expand on that? < 1765739809 185447 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I suspect korvo's expansion will be different from mine < 1765739884 878577 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: Like, if there's a context. "X, also called X', is a Thing from Place. It is notable among Things for Shape and Color. X was first documented in 18xx by Somebody." < 1765739913 33194 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Many of us have done English WP before, and after a few hundred edits you get used to the conventions. < 1765739926 990167 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :what is branchless all used in < 1765739932 783310 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :you guys said like GPU programming but i want the list > 1765739964 427808 PRIVMSG #esolangs :14[[07Langton's ant14]]4 10 02https://esolangs.org/w/index.php?diff=170632&oldid=170625 5* 03Corbin 5* (+119) 10/* Computational class */ Light cleanups suggested by ais523 on IRC. This section still doesn't vibe with the rest of the article. > 1765739965 420776 PRIVMSG #esolangs :14[[07Binary lambda calculus14]]4 10 02https://esolangs.org/w/index.php?diff=170633&oldid=153916 5* 03B jonas 5* (+6) 10IOCCC webpage broke all the links < 1765739983 738804 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :(practical uses) code that needs to deal with unpredictable data, GPU programming, SIMD, constant-time code for cryptography; (esoteric uses) languages which are so bad at conditionals that branchless programming is easier < 1765740007 126355 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I'd mention GPUs, DSPs (like GPUs but for e.g. audio data), cryptography, -- ^^ what they said. > 1765740034 932042 PRIVMSG #esolangs :14[[07Unlambda14]]4 10 02https://esolangs.org/w/index.php?diff=170634&oldid=159723 5* 03B jonas 5* (+0) 10IOCCC webpage broke all the links < 1765740043 442296 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :korvo: I've only worked with DSPs once and I used branchy code for that < 1765740064 292613 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I can see how branchless code might be useful for that in some cases though < 1765740111 458470 :tromp!~textual@2001:1c00:3487:1b00:6cd5:9506:337d:4c75 JOIN #esolangs * :Textual User < 1765740125 45898 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :I haven't done a lot of it. At university I worked on the OSWALD, which remarkably is bluelinked: https://en.wikipedia.org/wiki/Oregon_State_Wireless_Active_Learning_Device < 1765740196 985771 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :The reason Java worked on that platform is because I slept in the lab for like 3wks and babysat BitBake, fixing build errors. Good times. > 1765740224 250802 PRIVMSG #esolangs :14[[07Print("Hello, World!")14]]4 M10 02https://esolangs.org/w/index.php?diff=170635&oldid=168791 5* 03Somefan 5* (+196) 10rephrasing and added c/c++ sample and see also < 1765740246 388355 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :there are some interesting cases, e.g. Fourier transforms are inherently branchless just because they're pure arithmetic, but for doing bignum multiplications you're normally doing Fourier transforms modulo a large number, and then it becomes branchful due to modulo being faster to implement with branches than branchlessly < 1765740298 106379 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :working on some code like that, there was a potential double-carry which was so unlikely (1 in 2³²) that trying to do it branchlessly would have been a waste, I can live with extremely rare mispredicts < 1765740302 129366 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: There's other sections that we'll add too. Like, SWAR/broadword will be its own article which I'll stub shortly. Processors like later x86 have cmov, and modern ARM can conditionalize any(?) instruction, and those should have their own section too. < 1765740316 34294 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :ACTION procrastinating on LangJam < 1765740331 601416 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :alright im just working on the barebones for the page right now < 1765740348 962962 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I'm suspicious of the whole idea of LangJam, I don't think a week is enough to make an interesting language *and* write a game in it < 1765740364 130108 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :Oh, never mind, [[wikipedia:SWAR]] is actually good now. We'll just do ''Main article:'' on it. < 1765740432 202578 :Sgeo!~Sgeo@user/sgeo JOIN #esolangs Sgeo :realname < 1765740505 254770 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :there's also a distinction in non-eso that we may have to think about. sometimes for cryptography or hard real time you want memory access to be perfectly predictable, i.e. not data-dependent, in addition to there being no branches, which matters on modern platforms where memory access can be non-constant time or can leak information to future memory accesses. that's a stronger requirement than < 1765740511 262735 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :branchless. < 1765740548 777975 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :RainbowDash: I need to take off for a bit, but one last note: Your proposed sentence is a run-on. It's okay to break it up by first giving a *short* version of your thesis, and then starting the *longer* version with "That is, branchless programming is ..." < 1765740607 968513 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :for real-time what matters is that you can make sure the code won't suddenly be too slow if it encounters lots of unusual memory addresses that aren't available from the cache; for cryptography what matters is that nothing is leaked through any side channel, even through the code running unusually *fast* < 1765740608 987258 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: that could also matter in esolangs, especially when programming weird machines < 1765740635 929076 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :The authors of [[formal grammar]] used this a lot, and it can be an obvious issue when repeated, but it's completely normal for a first paragraph to struggle to contain its topic. By necessity, you'll need to use the rest of the article to explain the concept anyway! < 1765740648 538417 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :speculative sidechannel attacks are effectively an esolang that practical code has to try very hard to not interpret < 1765740673 2585 :korvo!~korvo@2604:a880:4:1d0::4d6:d000 PRIVMSG #esolangs :b_jonas: I completely forgot that hard RT is a thing. Well said. < 1765740690 891106 :Lord_of_Life_!~Lord@user/lord-of-life/x-2819915 JOIN #esolangs Lord_of_Life :Lord < 1765740695 292438 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :it also comes up in homomorphic encryption code < 1765740732 750313 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :I have some interest in working out how to design a compiler that produces hard-realtime-safe output, but it seems like an exceedingly hard problem < 1765740763 509433 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :how could you possibly make sure that enough of the data that a codeblock is accessing is in cache already? < 1765740773 610992 :Lord_of_Life!~Lord@user/lord-of-life/x-2819915 QUIT :Ping timeout: 260 seconds < 1765740781 718113 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :ais523: yeah, but hard realtime can also be laxer, because it can have actual branching conditionals, as long as you can bound the time of both branches < 1765740806 412594 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: and of the mispredict < 1765740822 584421 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :yes < 1765740832 139474 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :the default hard-realtime assumptions probably have to be that every memory access misses cache and every branch is mispredicted < 1765740848 110200 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :but under those assumptions, programs run extremely slowly and it's hard to get useful time bounds < 1765740855 993644 :Lord_of_Life_!~Lord@user/lord-of-life/x-2819915 NICK :Lord_of_Life < 1765740867 993417 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :actually, "every memory access misses TLB" is even worse < 1765740934 218187 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :usually you want as little code as possible to be hard realtime, and make it communicate with the rest of the code that is only soft realtime or not realtime for any function that doesn't need to be hard realtime > 1765740960 825924 PRIVMSG #esolangs :14[[07Branchless programming14]]4 N10 02https://esolangs.org/w/index.php?oldid=170636 5* 03RainbowDash 5* (+2619) 10Created page with "'''Branchless programming''' is a programming technique in which the program always runs the same commands in the same order. Practical uses for branchless programming consists of : code that needs to deal with unpredictable data, GPU programming, SIM < 1765740967 120863 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :https://esolangs.org/wiki/Branchless_programming < 1765740967 620718 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i  created a page < 1765740975 565747 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :oh i guess you can see that in the irc oops heh < 1765740985 418383 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :yes, we have a bot reporting on that < 1765740986 856940 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :it is a start, it is not full or polished. < 1765740998 626244 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :in the dayjob company that I'm resigning from, controlling chemical plants, none of the stored program code is hard realtime, though there is a lot of soft realtime; hard realtime is implemented in hardware only < 1765741002 310501 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :i also dont like how the second part is organized < 1765741047 66568 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :it'll need some cleanup, but it's a wiki, creating an article means that anyone can clean it up if they want to < 1765741057 638338 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :when will we make the branchless paradigm catagory? < 1765741067 388298 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :b_jonas: that seems sensible < 1765741084 213831 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :do you have a new dayjob lined up? or is the current company bad enough to make you resign anyway? < 1765741110 441065 :b_jonas!~x@catv-80-98-84-202.catv.fixed.one.hu PRIVMSG #esolangs :no new job yet < 1765741162 820522 :ais523!~ais523@user/ais523 PRIVMSG #esolangs :RainbowDash: I'm might be better to wait until I'm more awake, in case admin help is needed, but I think there's been enough discussion for its creation to be allowed < 1765741187 11582 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :alright, you may create it then i can edit it if needed < 1765741395 303575 :APic!apic@apic.name PRIVMSG #esolangs :Nighty-Night * 😴 < 1765741410 803382 :impomatic!~impomatic@host86-154-217-136.range86-154.btcentralplus.com QUIT :Quit: Client closed < 1765741494 678496 :ais523!~ais523@user/ais523 QUIT :Quit: quit > 1765741658 375706 PRIVMSG #esolangs :14[[07Branchless programming14]]4 10 02https://esolangs.org/w/index.php?diff=170637&oldid=170636 5* 03RainbowDash 5* (+1031) 10tech < 1765741700 709860 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :That is all the work i think ill do today as i need to play with friends but you guys are welcome to edit it as you see fit. < 1765741705 403464 :RainbowDash!~RainbowDa@158.41.146.127 PRIVMSG #esolangs :It is a community after all :o) < 1765741709 843361 :RainbowDash!~RainbowDa@158.41.146.127 QUIT :Quit: Client closed > 1765743973 894487 PRIVMSG #esolangs :14[[07Lil14]]4 M10 02https://esolangs.org/w/index.php?diff=170638&oldid=131434 5* 03Orby 5* (-41) 10Changing command format a bit < 1765747460 979198 :somefan!~somefan@208.58.192.69 QUIT :Remote host closed the connection < 1765747575 302387 :chomwitt!~alex@2a02:85f:9a67:8b00:42b0:76ff:fe46:a5fd QUIT :Ping timeout: 244 seconds > 1765751026 45104 PRIVMSG #esolangs :14[[07Language list14]]4 M10 02https://esolangs.org/w/index.php?diff=170639&oldid=170621 5* 03Buckets 5* (+13) 10 > 1765751047 583081 PRIVMSG #esolangs :14[[07User:Buckets14]]4 M10 02https://esolangs.org/w/index.php?diff=170640&oldid=170592 5* 03Buckets 5* (+12) 10 > 1765751061 632819 PRIVMSG #esolangs :14[[07Ialist14]]4 N10 02https://esolangs.org/w/index.php?oldid=170641 5* 03Buckets 5* (+1619) 10Created page with "{{lowercase}} ialist is An Esoteric programming language created By [[User:Buckets]] in 2021. {| class="wikitable" |- ! Commands !! Instructions |- | || Push the X and Inject the Y Coordinates of The Space. |- | || Swap the Bottom And The top. |- | || Turn Rightwards < 1765754464 974215 :tromp!~textual@2001:1c00:3487:1b00:6cd5:9506:337d:4c75 QUIT :Quit: My iMac has gone to sleep. ZZZzzz…