tag:blogger.com,1999:blog-6421990566053383182.post870003870077091714..comments2024-03-29T03:16:29.671-04:00Comments on The Big Mud Puddle: Programming Languages Suck at UXJon Purdyhttp://www.blogger.com/profile/08893015329760742645noreply@blogger.comBlogger16125tag:blogger.com,1999:blog-6421990566053383182.post-81601289086217256532023-09-22T02:32:53.261-04:002023-09-22T02:32:53.261-04:00Yes, I must share this article post with my good f...Yes, I must share this article post with my good friends. You done really nice work. Hope in future you share more good blog like this. Now it's time to avail <a href="https://www.airportcarnlimo.com/get-the-best-car-service-west-palm-beach-for-lana-del-rey/" rel="nofollow">Limo’s limo service West Palm Beach</a> for more information. <br /><br />John Hardyhttps://www.blogger.com/profile/03729566172548029089noreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-7449209832073782252021-02-17T12:19:49.545-05:002021-02-17T12:19:49.545-05:00One pro for the restriction to using ASCII is that...One pro for the restriction to using ASCII is that ASCII symbols (!@#$%^&*()?.,:<>) form an alphabet; therefore if someone sees <= then they know how to type it on any device, and they know how to say it aloud to someone else: "greater than, equals". \forall has this benefit, whereas the logographic "∀" is opaque: if you've never learned the symbol, you cannot pronounce it, and I dare say find it harder to remember.Christopher Donehttps://www.blogger.com/profile/11058249597696527532noreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-29448757852523802962021-02-16T20:10:27.717-05:002021-02-16T20:10:27.717-05:00You can easily set up a compose key for Windows wi...You can easily set up a compose key for Windows with WinCompose (https://github.com/SamHocevar/wincompose). I used it all the time when I was writing proofs for my CS degree but didn't want to bother with LaTeX.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-89446489529611923432012-02-13T19:10:07.555-05:002012-02-13T19:10:07.555-05:00"In one of the object-oriented languages of w..."In one of the object-oriented languages of which everyone seems to be so fond, this could be as simple as keeping track of the current object “under discussion” and allowing it to be assumed where an object would otherwise be expected."<br /><br />You mean like how 'this' can be omitted in C++/C#/Java when it is not ambiguous to do so? Or the 'with' statement in Visual Basic?<br /><br />"You express ideas every day in your native tongue that have no analogue in any programming language in existence."<br /><br />Humans are great at inferring context and dealing with ambiguities - computers not so much.<br /><br />"Naturalistic programming languages will never be pretty. They are not minimal, or elegant, or simple, but despite all that, they are intuitive and useful."<br /><br />You called Perl a naturalistic programming language, yet I find it to be far from intuitive.<br /><br />"where X is an undeclared type, the compiler should not do what GCC does, which is to write the following"<br /><br />clang greatly improves error messages like these.<br /><br />*Should “<=” really mean “≤” when it actually looks like “⇐”?*<br /><br />FWIW, I can easily type a number of mathematical symbols on my keyboard layout: ∩∪∘→↦∴∵⇒⇔π±≠∑∏÷∞Ø≝∀∈∉×Δ⊆⊂⊃⊃⊇ℕℤℙℚℝℂℍ Yes, its not standard, but I find it most useful to be able to use them in documentation without having to look up unicode tables or anything like that.<br /><br />"because with “=” there is no visual indication of the direction of assignment, nor of the fact that mutating assignment is not the same as mathematical equality."<br /><br />I've started to favour using 'x <- y' to assign y to x and 'x = y' to compare x and y in my toy language designs.<br /><br />"There’s a wealth of time-tested typographical convention in both mathematics and prose"<br /><br />Thats a very good point actually. Besides your examples I cannot think of any uses for it yet, but then I haven't thought about it really, so I'm sure I'll warm up to it more as I do! Now, how to we get programmers to use keyboard layouts like mine where I can actually type some of these symbols? Sadly, until all this stuff is easy to type, people will avoid your language because it uses weird symbols that are hard or awkward to type. APL used a nice set of symbols, but few people own an APL keyboard anymore...<br /><br />"but our editors and input methods lag so far behind that it’s still infeasible to comfortably enter many non-ASCII characters without dedicated editor support."<br /><br />Exactly.<br /><br />"but on Windows I’m stuck with Alt codes or Character Map."<br /><br />I mapped them to Alt Gr + Shift + letter. This is easy for me to type since Alt Gr is easy to hit with my right thumb. I use unshifted Alt Gr for symblos that I use A LOT but are annoying to type, like ( and ).<br /><br />"whitespace sensitivity of Python"<br /><br />Until recently, I was unsure if I liked this for my own language designs. It never bothered me in Python, but I didn't know if I wanted it in a language I designed. Now I love this idea and try to use it where it makes sense. IMHO, it is because of the whitespace sensitivity that Python often looks a bit like psudocode. Sure, stuff like 'for x in y' helps, but the whitespace is what I think has the largest impact on readability. Unfortunately, I still hear people complain about it the same way people complain about the parentheses in Lisp.<br /><br />"It’s no wonder people stick so tenaciously to a single language or language family. Their expectations were violated time and again when they were learning how to program, so they assume that learning a new language is always like that"<br /><br />Completely agree.Danhttps://www.blogger.com/profile/05263012610126385679noreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-41321227418941960922011-11-04T16:30:09.873-04:002011-11-04T16:30:09.873-04:00"Agreement in type is analogous to grammatica..."Agreement in type is analogous to grammatical agreement in number or gender, which is very common in human language."<br /><br />Common, sure, but desirable? I've tried to learn many languages, and the ones with junk like number and gender are *by far* the hardest to learn.<br /><br />Arbitrary inconsistent spelling is common in human languages, too, but that doesn't mean it's a good thing. It just means that historical precedent is an extremely strong force with human language: we make schoolchildren suffer through years of memorizing these things rather than simply fix them to be more consistent.<br /><br />If I had a dollar for every time a non-native English speaker has asked me to explain the difference between "a"/"the"/"some"/...Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-71793867728043517942011-11-04T15:05:13.341-04:002011-11-04T15:05:13.341-04:00Any thoughts about HyperTalk?
(A lot of people w...Any thoughts about HyperTalk? <br /><br />(A lot of people who were new to programming adapted to it quickly, but I never used it.) <br /><br />Alan Kay was not happy about using the term, "programming language". I never found out what direction he was thinking in. I consider programming languages text-based user interfaces. The service, iwantsandy, is an example of what I mean: <a href="http://lifehacker.com/321644/sandys-your-personal-assistant-via-email" rel="nofollow">http://lifehacker.com/321644/sandys-your-personal-assistant-via-email</a><br /><br />(Twitter bought it and shut it down. Many people were sad about that. Same with HyperCard.)diego.ahttps://www.blogger.com/profile/12400541545619526022noreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-4471425652444187082011-11-04T12:50:30.793-04:002011-11-04T12:50:30.793-04:00@Anonymous:
I’m not a big Ruby user. It is a nice...@Anonymous:<br /><br />I’m not a big Ruby user. It is a nice language, though.Jon Purdyhttps://www.blogger.com/profile/08893015329760742645noreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-46838676362771035892011-11-04T12:44:52.931-04:002011-11-04T12:44:52.931-04:00How is there zero mention of Ruby in the article w...How is there zero mention of Ruby in the article when this is exactly the problem Matz was trying to solve when he created Ruby??Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-42265186975242312672011-11-04T12:40:41.297-04:002011-11-04T12:40:41.297-04:00On "Erroneous Errors": check this out! h...On "Erroneous Errors": check this out! http://clang.llvm.org/diagnostics.htmlsep332https://www.blogger.com/profile/15089674288837329342noreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-39909256860644365522011-11-04T12:40:11.240-04:002011-11-04T12:40:11.240-04:00@Corbin Simpson:
I don’t think programming is str...@Corbin Simpson:<br /><br />I don’t think programming is strictly mathematics, because it includes a number of similarities to prose. I would say that legalese has bad UX, yes, mainly because it’s a misguided attempt to use natural language itself for formal specification.<br /><br />Unfortunately I don’t seem to be able to change the font in my comment box, owing to the iframe that Blogger uses.Jon Purdyhttps://www.blogger.com/profile/08893015329760742645noreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-83298443898419431502011-11-04T12:37:08.403-04:002011-11-04T12:37:08.403-04:00I used to also think that perl's human-linguis...I used to also think that perl's human-linguistic design was positive, but have been convinced otherwise. Anecdotally, if I don't write perl every day, I find it hardest to go back and read it weeks or months later than any other language. <br /><br />There is now also research on this point; a recent paper compared learning and retention between perl, a language with "randomly" generated syntax, and a research language designed for learnability. Perl performed no better than the random language. <br /><br />You may find Rich Hickey's "Simple vs Easy" talk provides some insight on these issues.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-86309482312433202082011-11-04T12:28:20.196-04:002011-11-04T12:28:20.196-04:00Programming *is* math. I find it strange that you ...Programming *is* math. I find it strange that you can say this while also mentioning Haskell.<br /><br />Would you also say that legalese sucks at UX?<br /><br />Have you considered switching your comment box to use a variable-width font?Corbin Simpsonhttps://www.blogger.com/profile/04637041273744009562noreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-31924517097362476822011-11-04T12:04:29.128-04:002011-11-04T12:04:29.128-04:00@YHVH:
Okay. You can always email me or comment a...@YHVH:<br /><br />Okay. You can always email me or comment another time. I’ve been aware of Fortress since the first announcement about it. At the time I disagreed with their Unicode-heavy syntax, but in retrospect I think they did make a few good choices when it comes to separating code content from presentation.Jon Purdyhttps://www.blogger.com/profile/08893015329760742645noreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-5937140387154574732011-11-04T11:53:16.295-04:002011-11-04T11:53:16.295-04:00I disagree with many of the points you've made...I disagree with many of the points you've made but don't have the time to fully answer them. I will however point you towards the <a href="http://java.net/projects/projectfortress/pages/CodeExamples" rel="nofollow">fortress</a> programming language which you seem to have ignored.YHVHhttps://www.blogger.com/profile/14215885528038343253noreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-71615723686545814402011-11-04T11:47:27.042-04:002011-11-04T11:47:27.042-04:00@Barry Kelly:
Your thinking about encoding is stu...@Barry Kelly:<br /><br />Your thinking about encoding is stuck in the past. We should use a modern encoding and update existing tools to handle it. There is no excuse for an editor not to support Unicode nowadays, full stop.<br /><br />I’m not saying we should arbitrarily increase the number of concepts in a language—and I’m not saying implicit arguments are necessarily a good idea. I like concatenative languages a lot, and mostly because they’re pointfree, so I’m the last person who needs to be told the benefits of function composition.<br /><br />I mention Perl favourably (kind of) because it’s got a few good ideas behind it. Obviously there are plenty of bad things about it as well, but I didn’t mention them because they weren’t relevant.<br /><br />I was unclear in my use of the word “term”. What I meant is that every lexeme has only one form, the lemma—programming languages generally have little notion of agreement (except abstractly, in type systems) nor of tense, so there is generally no inflection or derivation.Jon Purdyhttps://www.blogger.com/profile/08893015329760742645noreply@blogger.comtag:blogger.com,1999:blog-6421990566053383182.post-39155432270858911542011-11-04T11:34:46.068-04:002011-11-04T11:34:46.068-04:00People who don't know about typography would h...People who don't know about typography would have difficulty noticing the difference between an en-dash, an em-dash, a hyphen and a minus sign. It would be a *really* bad idea to introduce those distinctions into a language, which may be copied and pasted through dozens of different transmission media, through some mix of Windows 1252, UTF-8, ISO-8859-1; if your code isn't 7-bit clean ASCII, you're asking for problems.<br /><br />The problem there isn't input (though that's also a problem - contra Compose, the fewer modifier keys we have and need to use, the better), it's heterogeneity of communication media.<br /><br />On other points, you're just wrong. We try to reduce the number of concepts in languages, not arbitrarily increase them; if you want to apply multiple operations to a single thing without repeating the thing explicitly, the tool you should reach for is function composition, not implicit (global!) arguments. Mentioning Perl in a favourable light is an excellent way to discredit your argument.<br /><br />But more generally, the function abstraction is how we elide repetition.<br /><br />And in *all* programming languages, we "apply productive rules to derive new terms" - how exactly do you think a language grammar made up out of productions and non-terminals works? Or are you really sold on the idea of intra-identifier syntax, where you lose even greppability?Barry Kellyhttps://www.blogger.com/profile/10559947643606684495noreply@blogger.com