5 ms·
It’s awe-inspiring to see a K program where the comments are in another APL variant (I can’t pretend to know which): {d:~1=':s:^x / s‿e←1⊸»⊸(>⋈<)
by pavlov 4y ago
It’s awe-inspiring to see a K program where the comments are in another APL variant (I can’t pretend to know which):
{d:~1=':s:^x / s‿e←1⊸»⊸(>⋈<)' '=𝕩
c:^"aeiou"?_x@&d&~s / c←¬(s/𝕩)∊"aeiou"
x,:,/$`pig`dog c / ins←⥊c⊏["pig","dog"]
x@<(+\d),{3}#c+2*!#c} / ((+`s+e)∾3/c+2×↕≠c) ⍋⊸⊏ 𝕩∾ins
This program implements a Pigdog Latin translator, bien sûr.
- warent 4y agothis looks like some compiled program's binary viewed as unicode WTF
- qsort 4y agoI... just can't. I work a lot with data, so it sounds like it should be a good fit for what I do, but I find that writing the damn code in a normal language is much more productive. Maybe it's my brain that's wired wrong, but I fail to see how the entire construction is supposed to help.
- mandevil 4y agoA friend worked on a project in 2005 that had lots of K code in production. They had a contract with Kx Systems and Arthur Whitney in particular because, in my friend's opinion, only Whitney could really understand K code well enough to debug it. Friend's description was it took my friend two days just to comment the code into something grokkable by a normal developer, whereas AW didn't need to do that. Of course, it took Whitney those same two days of staring at the code before he said "Oh, of course, how silly of me." and found the bug and all resolved. Part of those two days of commenting was that since K is interpreted all of the developers would hand-obfuscate all of the code so that the variables were a, b, c, etc. so that they would be slightly faster to parse than a multi-character string. This sort of thing is done all the time now, with JS to make it load faster, but his team at least didn't have any scripts to automatically turn developer-friendly code into interpreter-friendly code, they worked with the interpreter-friendly code version.
- twoodfin 4y agoIn my experience this practice isn’t obfuscation or for performance. The whole point of array processing languages is to amortize any fixed operation cost over the span of the array. The notation-as-a-tool-of-thought camp prefers short identifiers on the principle that the more concise the expression, the easier it is to comprehend in total. This is not at all dissimilar from the general practices of mathematics.
- tluyben2 4y agoOnce you get used to it, it's just faster and stop noticing the 'oh line noise' thing. But like learning a natural language, you need to get to the point where you stop translating in your head and you think in the operators. Once you reach that, it is very hard to go back.
- therein 4y agoAnd Whitney is into being able to see the whole code at a single glance as far as I know.
- chongli 4y agoI think the main use for K and the other APL family languages is programmer lock-in. If you can get your employer to buy in and write the entire codebase in one of these languages, you can establish yourself as essentially irreplaceable and then demand large raises to retain you.
- Avshalom 4y agowhat was your first programming language? mine was matlab. thinking of everything as an array, especially things that aren't arrays, was the first pattern I ever learned. I've never used APL in anger but for the most part it comes very easily to me. Maybe not the code golfing and/or idiomatic APL style that people like to post but, like, using the primitives to create increasingly elaborate arrays before discarding anything I don't want, that part has always felt very straight forward.
- userbinator 4y agoChinese is a "normal language" to over a billion people.
- tluyben2 4y agoHow long did you try? And what languages do you use?
- semi-extrinsic 4y agoIsn't the original APL the only lang that uses actual Unicode symbols for operators?
- pavlov 4y agoThere’s also at least BQN, which I suspect is the language used in those comments: https://mlochbaum.github.io/BQN/ https://mlochbaum.github.io/BQN/
- chrispsn 4y agoYep, the comments are the BQN version.
- ksherlock 4y agoThere are esoteric code golf languages that use unicode. MPW (shell, assembler) used extended characters (MacRoman, not unicode but then again, APL also predates unicode) for some operations. eg, instead of "echo yo >> file" you would "echo yo ≥ file"
- messe 4y agoJulia has support for Unicode operators. Most editor plugins for Julia allow you to enter the characters using (La)Tex syntax, so it’s quite common to see.
- sli 4y agoUnicode support doesn't really seem that uncommon, in the grand scheme. Rosetta Code's wiki has a page for languages that support Unicode variable names[0] and some of them were surprising to me (e.g. AppleScript). Of course, supporting Unicode variable names doesn't mean a language supports Unicode anywhere, but it's a starting point for historical research at least. [0]: https://rosettacode.org/wiki/Unicode_variable_names https://rosettacode.org/wiki/Unicode_variable_names
- remexre 4y ago
- tempaway45722 4y ago[flagged]
- krick 4y agoAmazingly, APL is more readable. Actually, it's even pretty intuitive. Which proves again, that restricting code to ASCII when every competent programmer (and PC-user in general) can enter almost any unicode symbols just fine is simply stupid.
- scrawl 4y agoi don't think it's stupid. i also find k more readable. 2 reasons why: - k has much fewer primitives. it's easier to remember a smaller set of operations. - k is statically parsable. APL is not. we know the program structure simply by reading the code. this is completely subjective. because you find APL more intuitive doesn't prove anything. to each their own.
- habitue 4y agoYou can enter any symbol but not quickly unless you set up some hotkeys or something. There is a key on the keyboard for e. Whatever you have to do for a unicode set symbol, it's going to be harder than hitting the e key. And with regards to hotkeys, let's say you do Ctrl+alt+shift+esc+e to insert a unicode symbol, is that really better than just having a programming language where the common hotkeys are spelled out with a few ASCII characters?
- magicalhippo 4y ago> There is a key on the keyboard for e. Whatever you have to do for a unicode set symbol, it's going to be harder than hitting the e key. Seems https://fluxkeyboard.com/ https://fluxkeyboard.com/ might be a great fit for programming in APL and similar.
- Avshalom 4y agoI have the apl keyboard set to super so ∊ is exactly as hard as E.
- habitue 4y agoThat's the reason the apl keyboard is good!
- adregan 4y agoThat’s BQN: https://mlochbaum.github.io/BQN/ https://mlochbaum.github.io/BQN/