12 ms·
One way you might arranging programming languages in a 2D space is with two axes: 1. How much should the language surprise you? 2. When the language does surp
by munificent 3y ago
One way you might arranging programming languages in a 2D space is with two axes:
1. How much should the language surprise you?
2. When the language does surprise you, should it delight you or horrify you?
surprising
^
|
|
|
delight <------+------> horrify
|
|
|
v
unsurprising
Only a sadist would deliberately design a language for the top right quadrant, but there are many esoteric languages in there. I think most people tacitly assume that all well-behaved languages belong on the bottom left: the language should rarely suprise you but in the rare case it does, hopefully it's a delight.
Raku seems to overtly aim for the mostly-unoccupied top left. It's like the designers and users (two sets with apparently very large overlap) all think, "Yes, it's weird. Isn't that grand!"
- actionfromafar 3y agoI'm very interested in bottom right langs.
- netr0ute 3y agoC++!
- Qworg 3y agoOnly old C++, new C++ creeps up the y axis.
- actionfromafar 3y agoInteresting perspective. It surprises you in exactly how, but not very in that it will. (Horrify you. But it also delights sometimes. We need more dimensions?)
- aldanor 3y agoTo put it differently, the new C++ is delightfully horrific at times.
- ModernMech 3y agoC++ occupies a region of the space rather than a singular point, since old C++ is part of new C++.
- baq 3y agoI’d say C++ fills the space. It can be as dumb or as clever as you want it. It’s horrifying in a third dimension.
- munificent 3y agoMaybe C?
- actionfromafar 3y agoYou can definitely get there with C but the language isn’t actively pushing you into horror.
- segfaultbuserr 3y agoIt's the "unsurprising" part in "unsurprising & horrifying" - if you manipulate raw pointers incorrectly, of course it will crash or be vulnerable, to the surprise of no one by design.
- actionfromafar 3y agoThis rings true the more I think about it. Any large code base gets there with size, but with C one gets there pretty reliably after a certain heft of code.
- segfaultbuserr 3y agoThat being said, while C's surprises are certainly fewer than other languages, it still does have a few surprising corner cases in contrary to its usual "portable assembly" character (without compiler optimization) - implicit type promotion in expressions with mixed data types, potential malloc() in printf(), possibility of Duff's device, and the likes. A Sun engineer Peter van der Linden has a book Expert C Programming, Deep C Secrets that explores these topics.
- munificent 3y agoIt doesn't actively push you there, which is why it's on the bottom half. There is a fairly coherent mental model for C and once you have it, the language rarely surprises you. But when it does surprise you, it's almost never anything good. Stuff like Duff's device, `3[someArray] = value`, etc. The surprises are always the language's raw machinery showing through in unpleasant ways, and never a delightful bonus feature the designers added for you.
- deleted 3y ago[deleted]
- zukzuk 3y agoAbsolutely JavaScript, in that it is easy to accidentally do horrifying things, but absolutely not surprising if you’ve spent any time working with it, as you quickly get used to how awful it is.
- baq 3y agoI’ve been in some sort of web development since 2005 and am to this day surprised by just how much awful is packed in there. Most is deprecated - thank God and any other deities - but it’s still there lurking for newbies and unaware developers coming from sane languages.
- giancarlostoro 3y agoHave you seen how people can write JavaScript within CSS yet? That's another fun one. :)
- jonathrg 3y agoLanguages where there has been significant modernization and progress, but where codebases and online resources lag behind: CMake, PHP, CSS
- actionfromafar 3y agoNothing can redeem CMake and CSS in my eyes. To me they fit perfectly in the bottom right, unsurprising horror. PHP is often just bland drudge, true horror in PHP land is unexpected when I encounter it.
- the_af 3y agoCOBOL?
- pravus 3y agoI think my vote goes to ColdFusion.
- grotorea 3y agoIt's just the languages everyone knows are bad.
- aidenn0 3y agoAssembly on load-store machines? (with perhaps the omission of MIPS where the lack of instruction interlocking can cause surprising things).
- orthoxerox 3y agoJava 4, Java 6, maybe even Java 8.
- eddd-ddde 3y agoI found about raku one time I had an assignment for college where I needed to create a parser. I found raku's grammar features really interesting and used it for my project, it felt almost like cheating since it did pretty much every thing for me (actually it was probably just cheating but it was still fun).
- db48x 3y agoThat’s exactly what you want in a language. It should always feel like cheating! Also debuggers. Give RR a try some time :)
- eddd-ddde 3y agoI imagine you are referring to https://rr-project.org/ https://rr-project.org/ ? Had never heard of it, looks pretty amazing, I might actually enjoy debugging now!
- fuzztester 3y agoLow contrast text site. I know there are workarounds, but we shouldn't need them.
- celrod 3y agoEvery time I try it, it doesn't seem to work right. Because I don't feel like debugging my debugger, I just go back to gdb. Yet I only hear other people speaking of it positively, so it seems they don't have that experience.
- toast0 3y agoThe problem is those are subjective axes. And things can both delight and horrify; I wrote some javascript once where I did document.write = function ... which is kind of delightful in that I was able to do what I needed as a result, but also pretty horrifying :) Other people I showed it to felt it was more on the horrifying side, but like I said, it's subjective.
- shagie 3y agoThen a 3d chart with "likelihood of" being a point or region in the space. The axises would then be "Surprise", "Delight", and "Horrify".
- dkarl 3y agoContext is critical. Unless you're a beginner with the language, surprise in a production codebase is horrifying. The Perl philosophy has never been compatible with lack of surprise. Perl wants to be like natural language, and natural language has limitless surprises. The problem with Perl (or, I assume, Raku) in production is that the responsible way to read it is like reading every single footnote in an annotated edition of Shakespeare. It sucks the joy out of it, and joy is the point. Production Perl is joyless and therefore pointless, unless you're some kind of prodigy who understands every obscure political reference and every 16th century pun without any help.
- Dylan16807 3y ago> Context is critical. Unless you're a beginner with the language, surprise in a production codebase is horrifying. Why? Are you assuming a very particular kind of surprise here? "Oh, I can replace these five lines with a single builtin." is a surprise, and so is seeing that someone else already did so.
- silisili 3y agoI was thinking axes of 'readability' and 'expressiveness' would make a nice chart for programming languages.
- flir 3y ago> You check set membership with ∈ Yeah, ok, I see what you mean. >> 0,2,4...10 > (0 2 4 6 8 10) >> 1,2,4...10 > (1 2 4 8) Wait... what? Is it looking the next number up in OEIS or something?
- anthk 3y agoDamn, that made me laugh.
- kragen 3y agoUnable to deduce arithmetic or geometric sequence from: 1,2,5 Did you really mean '..'?
- flir 3y ago> arithmetic or geometric See, that doesn't delight me. OEIS is what's needed here.
- hwayne 3y agoWelp now I know what "using it in anger" is gonna look like
- deleted 3y ago[deleted]
- nerdponx 3y agoMaybe there's some way to extend the compiler to use OEIS. Is there a "liboeis" that lets you download and interact with the OEIS database offline?
- anthk 3y agoThere's must be one or two for either Python or Perl. Well: https://github.com/sidneycadot/oeis https://github.com/sidneycadot/oeis
- 3y ago
- Kwpolska 3y agoIn my view, Raku was venturing further and further into the top-right corner with every subsequent paragraph.
- cogman10 3y agoI mean, it was "Perl 6" so is it really surprising that Perl devs wanted a language that looks nothing like any other language? Perl has it's own healthy share of "delightful surprises" and Raku was mostly designed to eliminate perl's horrifying surprises.
- throwanem 3y agoApparently by replacing them with new horrifying surprises, if this article is any indication. Good grief, I don't miss working in Perl.
- cogman10 3y agoOne person's unspeakable horror is another's creature comfort.
- fuzztester 3y agoDe gustibus ...
- fuzztester 3y ago>Good grief, I don't miss working in Perl. Good and grief in the same sentence about the same language ... Perl. Delighted and horrified? ;-)
- throwanem 3y agoDelighted that the screwing around I did in high school from a copy of the Camel Book my mom got me for my birthday gave me a skill I could parlay into a job that turned into a great career. Horrified once I finally got out into the industry proper and discovered all I'd been missing. It's not that I regret ever having worked in Perl. It's just that I'm glad to have moved on to bigger and better things.
- steelframe 3y ago
- deleted 3y ago[deleted]
- kbenson 3y agoThe issue I have with the language is that I went from the top left of that graph to fairly far on the right, vacillating between the top or bottom. That happened for me long before it became Raku. I clearly remember reading through the synopsis and exegesis documents around fifteen years ago and being excited for what was to come, but I also remember the first bits that gave me pause. Like unspace[1]. I also clearly remember when it started dawning on me that Perl 6 (as it was still called at the time) would never see any real adoption by people that were interested in other people working with them on things, whether that be some open source project or at a company with coworkers. It was when I was reading through the advent calendar exercises for some year and realized that while I couldn't recall half the features used to solve the problems, I had been exposed to them all multiple times before. The reason I couldn't remember them was because there were so many ways to solve the problems, that it felt like just keeping up with the features and syntax was overwhelming, and that unless you used a very strict subset of the language, it would be near impossible to limit the effort requires to understand what you read from others, or even yourself some time previously. To many detractors of Perl, this won't be an unfamiliar complaint, but I've always felt that while Perl (5) projects could easily devolve into a mess if some care wasn't taken, it wasn't that hard to exercise some restraint and still take advantage of the extra capabilities when more power was needed. Put another way, while there was definitely more than one way to do it, it didn't feel like there were tens of vastly different ways of doing it that might have been sourced from random inclusions anywhere in the codebase because of numerous ways to insert entry points into every block, leaving you scratching your head when you encountered odd behavior. Now, it's not a problem for a language to want to reside squarely in the "this is for screwing around and trying any feature you can imagine and how they interact together", but that's not necessarily great when you are trying to accomplish something with someone else and you need to have a shared base of understanding to work from. The real problem is that many, many people in the Perl6/Raku community obviously really hoped for it to take over for Perl 5 or at least be useful for projects which might have multiple people working on them, whether they be through github or for some commercial work entity with coworkers, so they could spread its use and have a reason to use it on a regular basis. I think once it became clear that it wouldn't serve that purpose as well, many people lost interest. I know that was the case for me. I was an avid lurker on the project for well over a decade, but eventually I just couldn't convince myself it was a good idea to use the language for anything other than small test programs to satisfy my own curiosity, and eventually not even there, since if I didn't already have it installed the overhead for a small test was quite high. In the end I guess Raku found its niche, and it's doing okay where it is (I assume, I've fallen so out of date I'm not sure), but it's sad that it seems they had to shed a lot of their original community (as someone who identifies as part of their original community) to do so, whether that's through any concerted effort on their own part or not. That is, I don't think Raku changed to be what it is, I think most people eventually realized what the bundle of features that was originally proposed really means in reality, and realized it didn't fit what they actually wanted. 1: https://design.raku.org/S02.html#Unspaces https://design.raku.org/S02.html#Unspaces
- Tao3300 3y agoI like to think Ruby is dead center, by virtue of the fact that sometimes I'm not sure if I'm delighted or horrified. https://codegolf.stackexchange.com/a/33217 https://codegolf.stackexchange.com/a/33217
- rendaw 3y agoWhy would you choose anything on the right, surprising or otherwise?
- penteract 3y agoWhen the consequences of trying to be accommodating in as many ways as possible force you into a horrifying conclusion that rarely appears in practice. Turing complete type systems are an example that could be seen this way.
- deleted 3y ago[deleted]
- EgregiousCube 3y agoHoon is occupying that top-left quandrant as well, as long as you you don't mistake your surprise for horror - https://developers.urbit.org/guides/core/hoon-school https://developers.urbit.org/guides/core/hoon-school . Surprisingly powerful.
- bonkler59 3y agoHoon is in the top right quadrant when you begin to understand the performance characteristics and what it would take to improve them. And the type system is pitiful.
- tazjin 3y agoIt's what you get when a programming language is designed to support a political philosophy, and not a technical one ;)
- zogrodea 3y agoThank you for your effort with the ASCII art. Must have taken some time.
- mochaki 3y ago[dead]
- DontchaKnowit 3y agoPedantry incoming- one of my greatest pet peeves is when some words in a list, or diagram, are in their adjectival form and some are in their verbal form. "Surprising" + "horrify" It really unnerves me. The worst is that nearly every company has this in some form in their promotional or educational materials. E.g. here at Genericorp, we prioritize the following valurs : integrity, kindness, honest, Etc You get my point. Drives me nuts this kind of thing constantly slips through the cracks.
- Joker_vD 3y agoWell, the axiis are orthogonal. One of them is for the thing's quality, another is for the thing's action, so you get adjectives along one axis, and verbs along the other.
- DontchaKnowit 3y agoYeah thats fair. Not a great example. Still irked me tho.
- ezrast 3y agoThe grammatical term for this is - perhaps surprisingly, for this crowd - "parallelism".
- Tao3300 3y agoIts impotent to halve clear valurs.
- giancarlostoro 3y agoIs this measurement on the entire language or specific features? Because if its on the entire thing, I can see the results not being good (all over the different quadrants). I do agree though, that if a language surprises me, it should be to the left quadrant in this case. If a language is not surprising me, it should be delight as well. I don't know if I call people who made / use Brainfuck sadists as much as I'd call them very geeky / nerdy.
- eternityforest 3y agoRaku looks very horrifying if you want to actually do anything practical. But that's some incredibly clever stuff! I wouldn't want to use it, for like, anything, but if there was a programming based game or code golf contest or something it would probably be a great choice. And the original article talks about math, and I have no real experience actually doing nontrivial math IRL, so perhaps it has some useful properties for people who do.
- melezhik 3y ago> Raku looks very horrifying if you want to actually do anything practical. Why so? Raku is practical, I have a solid experience of doing a lot of practical things with it. It has all battery included things - type checking, overloading, named/typed function parameters, oop, functional programming - what else you need? Python seems awkward for me in comparison with Raku with all that features ...