TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: How should a programming language accommodate disabled programmers?

173 点作者 evincarofautumn超过 6 年前
I work on programming languages (as a career &amp; hobby) and I’d like to make sure that my main language project is designed with accessibility in mind. I need some guidance &amp; opinions from people with disabilities (e.g., blind or visually impaired people, or people with mobility issues) about your pain points with existing tools.<p>This doesn’t need to be just about the language itself, but the whole experience of developing with it, e.g., tooling, error messages, documentation, editor integration, &amp;c.; as simple as “Avoid making me press Shift” or as involved as specific problems with existing tools and what you wish they did better. I’d also welcome examples of tools that do things particularly well!<p>So far I’ve had&#x2F;implemented a few general ideas:<p>1. Making whitespace-sensitive syntax, like in Python &amp; Haskell, optional syntactic sugar for explicit brackets &amp; separators. It can also be turned off entirely, if e.g. you work with a screenreader and prefer it not need to speak all the indentation.<p>2. Striking a balance between concision and avoiding excessive punctuation-based syntax. I’ve also tried to make sure that visually similar characters have clearly distinct functions, so it’s less likely to mix them up—or if they are typo’d, at least the compiler should reliably detect this and produce a useful diagnostic.<p>3. Working on integration with existing editors (through the Language Server Protocol, an Emacs mode, &amp;c.), so ideally you can continue to use the editor you’re comfortable with that supports your setup.<p>4. Allowing the interactive mode (sort of a souped-up REPL) to be customised to support screenreaders, colour settings for colourblind people, adapting gracefully to large fonts, and so on.<p>I’m certain there are plenty of things I’m still missing, though! So I’d really appreciate any help, personal stories, or links to the work of similar initiatives (like Accessible Scala) that you can offer. Thank you!

41 条评论

informatimago超过 6 年前
Lisp:<p>- Avoids the use of gratuituous special characters: (a b c)<p>- use-dashes-in-symbol-names-instead-of-underline-so-its-easier-to-type (you can still use underlines or most any special character, but we like to keep it simple and easy).<p>- has a simple prefix syntax, that makes it easier to read and understand complex expressions: (loop (print (read (eval))) So no risk of confusing special characters or syntax: the meaning is clearly labelled by the first symbol of each expression!<p>- is not whitespace-sensitive, how can you see the size of whitespaces when you&#x27;re blind?<p>- includes a reader and a pretty printer, so the code can be processed and formated automatically easily for either sighted or blind programmers.<p>- time-sharing was invented for the lisp REPL by the authors of lisp!<p>- as a good integration with emacs, which itself has a good integration with various tools such as screen readers, vocal commands, etc, and it&#x27;s fully customizable.<p><a href="http:&#x2F;&#x2F;cliki.net&#x2F;" rel="nofollow">http:&#x2F;&#x2F;cliki.net&#x2F;</a> <a href="http:&#x2F;&#x2F;common-lisp.net&#x2F;" rel="nofollow">http:&#x2F;&#x2F;common-lisp.net&#x2F;</a> <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Common_Lisp" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Common_Lisp</a>
评论 #18416865 未加载
评论 #18415361 未加载
评论 #18416043 未加载
评论 #18416773 未加载
评论 #18421021 未加载
Teknoman117超过 6 年前
One of the software engineers where I work is completely blind. I&#x27;ve never had a chance to interact with him as he&#x27;s in a remote office unfortunately. He mainly writes in Python, bash, and C.<p>From what I understand, every project he works on has strict formatting requirements (can&#x27;t commit until the linter passes, etc.) and his screen reader is programming language aware.<p>Although, to be honest, I feel that the thing he relies on most is his rather amazing ability to remember most of the exact contents of whatever file he&#x27;s working on.
评论 #18415917 未加载
bdarnell超过 6 年前
T.V. Raman (author of Emacspeak) has said that &quot;S-Expressions are a major win&quot; for visually-impaired users because they give you a good way to navigate the code structurally (&quot;go to beginning of expression&quot; is more accessible than &quot;go up one line&quot;).<p><a href="https:&#x2F;&#x2F;tvraman.github.io&#x2F;emacspeak&#x2F;manual&#x2F;Emacspeak-And-Software-Development.html" rel="nofollow">https:&#x2F;&#x2F;tvraman.github.io&#x2F;emacspeak&#x2F;manual&#x2F;Emacspeak-And-Sof...</a>
blakewatson超过 6 年前
My struggle is typing. I use an onscreen keyboard (<a href="https:&#x2F;&#x2F;www.blakewatson.com&#x2F;journal&#x2F;writing-and-coding-with-the-accessibility-keyboard&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.blakewatson.com&#x2F;journal&#x2F;writing-and-coding-with-...</a>), which I have heavily customized for web development.<p>I would appreciate terseness. For example, I love how in JS, I can do this:<p>``` var cat = whichCat(); var catPosts = posts.filter(post =&gt; post.cat === cat); ```<p>Whereas in PHP, I have to do this:<p>``` $cat = whichCat(); $catPosts = array_filter($posts, function($post) use ($cat) { return $post-&gt;cat === $cat; }); ```<p>So much extra typing.<p>DISCLAIMER: didn’t test this code so chance of typo is 99%.
评论 #18415758 未加载
评论 #18415585 未加载
评论 #18415493 未加载
gostsamo超过 6 年前
Another blind developer here with his two pens. I like python because it has no braces. Sometimes the screen reader does not read them or if it does, it takes time to process the info and you still could be confused about the level of nesting. That&#x27;s why in university I reformated all of my lisp code to follow the indentation rules of python as it helped me keep track. Generally, if the language has no too much strange symbols with important meaning, they are all just text to be read. So, the language is not an issue for me, but the tools to read&#x2F;write&#x2F;compile&#x2F;debug. In that line of thought, if it works on the command line, it is good. Make it readable, make it verbose and avoid fancy syntax so that there is no ambiguity when reading.
评论 #18418517 未加载
newen超过 6 年前
Blind people already do programming. I know a blind guy who can code really fast, much faster than my colleagues, no idea how though.<p>Shouldn&#x27;t you be researching how they code now and then work from there? I actually feel like current way of coding using text works very well for blind people.
评论 #18419335 未加载
评论 #18415463 未加载
projectramo超过 6 年前
It is interesting that you&#x27;re getting a lot of suggestions from people that don&#x27;t claim to have disabilities. Perhaps few of them read hacker news?<p>It seems that their needs would vary. One thing you could do is try to an interface to test it yourself.<p>I tried to write and edit a document once using just voice commands. (Let&#x27;s say someone has carpal tunnel and needs to use voice commands). It was eye opening. I realized how much more frustrating it is to go back and try to delete or fix something than anything else. And if the software didn&#x27;t recognize an unusual word, it was really hard.<p>Dragon dictate -- the software I used -- had already learned a lot of this over the years, and there were many commands for changing that, or deleting up to a point. The hard part was moving the cursor to exactly one spot and then talking in a new word.<p>Anyway, if you tried something like that you would learn a lot.<p>Imagine if you are blind folded, and have to hear the program and then have to keep it all in memory. Well, that is a <i>lot</i> to keep in your working memory. I would want some kind of canonical &quot;view&quot; to always get to in order to find my way around.<p>I am glad you are working on this.
评论 #18416108 未加载
评论 #18416506 未加载
Sir_Cmpwn超过 6 年前
As an aside, I&#x27;ve been working on accessibility on the side, as part of my work on sway[0]. My current goal is, as a sighted person, to be able to comfortably and productively use my computer for all of my normal tasks without any displays plugged in.<p>To this end I&#x27;ve been making plugins for Vim and WeeChat, and a script for sway:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;SirCmpwn&#x2F;vimspeak" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;SirCmpwn&#x2F;vimspeak</a><p><a href="https:&#x2F;&#x2F;git.sr.ht&#x2F;~sircmpwn&#x2F;dotfiles&#x2F;tree&#x2F;master&#x2F;.weechat&#x2F;python&#x2F;talkative.py" rel="nofollow">https:&#x2F;&#x2F;git.sr.ht&#x2F;~sircmpwn&#x2F;dotfiles&#x2F;tree&#x2F;master&#x2F;.weechat&#x2F;py...</a><p><a href="https:&#x2F;&#x2F;git.sr.ht&#x2F;~sircmpwn&#x2F;dotfiles&#x2F;tree&#x2F;master&#x2F;bin&#x2F;swaytalk" rel="nofollow">https:&#x2F;&#x2F;git.sr.ht&#x2F;~sircmpwn&#x2F;dotfiles&#x2F;tree&#x2F;master&#x2F;bin&#x2F;swaytal...</a><p>If you or someone you know would find these useful, please reach out so I can learn more about your needs.<p>[0] <a href="https:&#x2F;&#x2F;swaywm.org" rel="nofollow">https:&#x2F;&#x2F;swaywm.org</a>
DoreenMichele超过 6 年前
I founded and co-own the google group Blind Dev Works. I have posted this Ask to it. It has at least a couple of blind developers on it and a stated purpose of improving programming tools for blind developers. You are welcome to join it.<p><a href="https:&#x2F;&#x2F;groups.google.com&#x2F;forum&#x2F;#!forum&#x2F;blind-dev-works" rel="nofollow">https:&#x2F;&#x2F;groups.google.com&#x2F;forum&#x2F;#!forum&#x2F;blind-dev-works</a><p>(I am seriously visually impaired, but not blind. I know a little HTML and CSS and I have a part-time position with the spiffy title of Webmaster, but I&#x27;m not really a programmer.)
评论 #18417477 未加载
geocar超过 6 年前
Moore indicated one of the motivating factors in choosing colour was to accommodate his failing eyesight[1]<p>I have previously attempted to program blind and reported some of my experiences[2].<p>[1]: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;ColorForth" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;ColorForth</a><p>[2]: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9284567" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9284567</a>
hood_syntax超过 6 年前
Just want to note that in Haskell, whitespace syntax _is_ syntactic sugar for brackets etc. I don&#x27;t recall that being the case for python. Interesting tidbit, some of the big names in the Haskell community have very idiosyncratic coding styles that use the bracket look.
评论 #18420494 未加载
评论 #18417102 未加载
TheSwordsman超过 6 年前
At GopherCon 2018 Julia Ferraioli gave a talk titled &quot;Writing Accessible Go&quot;. She&#x27;s challenged with some vision impairment, and shares some of her struggles in trying to be a programmer with those challenges. Of course it&#x27;s contextually about Go, but I think what she talks about applies to current languages and those to come in the future.<p>- <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=cVaDY0ChvOQ" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=cVaDY0ChvOQ</a>
AndrewSChapman超过 6 年前
I&#x27;ve seen some programmers code using voice. This is really handy for people without functiong hands or fingers. They tend to use voice recognition software like Dragon and various plugins.<p>I&#x27;d say from a programming language point of view, having keywords that are short (single word would be ideal) and phonetically distinct is really important.<p>One python programmer I watched on Youtube made his own vocabulary of strange sounds that he trained his software to recognise and translate to real keywords.
评论 #18415721 未加载
评论 #18418707 未加载
gus_massa超过 6 年前
&gt; <i>Making whitespace-sensitive syntax, like in Python &amp; Haskell, optional syntactic sugar for explicit brackets &amp; separators.</i><p>Interesting question. A few years ago, I worked with a blind mathematician. I was an undergraduate T.A. and he was the main T.A. of the course. He used the screen reader a lot. In particular, he has the list of exercise in LaTeX. We read aloud the grades of the students and he wrote them in the Excel form.<p>I don&#x27;t remember him using a programming language (excluding LaTeX). The indentation looks like a difficult problem, even if the language has explicit brackets. Does the screen reader say &quot;Tab Tab print ten semicolon&quot;? Does it ignore the indentation? Spaces vs tabs? ...<p>Do you have some group of blind programmers that you can ask about their current setup?
评论 #18414895 未加载
评论 #18414823 未加载
WalterBright超过 6 年前
Perhaps instead, adapt a screenreader that understood C syntax, and instead of reading punctuation would read it in a higher level form, such as:<p><pre><code> for (int i; i &lt; 10; ++i) &quot;for each int i from 0 to 10&quot; </code></pre> instead of:<p><pre><code> &quot;for left paren int i semicolon i lessthan 10 semicolon plusplus i right paren)&quot;</code></pre>
评论 #18420260 未加载
traverseda超过 6 年前
Have you looked into projectional-editing? The basic idea is that your code is stored not as text, but as data. The data is then projected into a textual format for editing.<p>That seems like the best way to support disabled programmers, as it gives them the flexibility to make whatever syntax works for them, as long as your core AST is simple enough.
评论 #18415094 未加载
dranov超过 6 年前
&gt; I’d really appreciate [...] links to the work of similar initiatives<p>Take a look at Quorum, a &quot;programming language which is designed to be accessible to individuals with disabilities and is widely used in schools for the blind&quot;.<p>[0] - <a href="https:&#x2F;&#x2F;quorumlanguage.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;quorumlanguage.com&#x2F;</a><p>[1] - <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=X29BuzGHlBs" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=X29BuzGHlBs</a>
评论 #18416468 未加载
genemachinery超过 6 年前
Working with handicapped programmers with vision and hand issues I feel programming tools like Mu Pyhton and Blender were invaluable in giving the programmmer graphical feedback. Both Mu and Blender allowed interfacing with hardware in new ways. He is now a biomedical engineer at Medtronics designing physics models for medical devices. He started using Maya, Blender, Logo, Scratch, Python. He was trained at the NM Supercomputer Challenge in 3 Day events at New Mexico Tech in Matlab, Jupyter Notebooks, R Studio, AI and machine learning. He also build Raspberry Pi, Arduino projects after taking algebra in 4th grade and electronics at community college in 5th grade. Computers have allowed him to excel in almost every academic STEM area. He has had internships in bioiformatics and medical device analytics. His programming&#x2F;electronics skills are not from the classroom but from multiple projects he developed.
dan-robertson超过 6 年前
One thing which I think might be useful for speaking code is to try to avoid needing a mental stack or going backwards as you go through code (at least for English speakers. Maybe other languages are different). For example consider reading aloud:<p><pre><code> x = some_function(something_else(y), z) </code></pre> You first need to keep in mind “x =”, then “some_function”, then think about what something_else(y) means, remember about some_function, think about z, then remember it all goes into x.<p>Now compare:<p><pre><code> something_else(y) -&gt; some_function(z) :&gt; x </code></pre> Read forwards as “do something_else(y), now take it and do some_function to it, modified as z; now put it into x.”
评论 #18418013 未加载
Shalomboy超过 6 年前
Just wanted to chime in to say thank you for your consideration of visually-impaired programmers with suggestion 1.
spmealin超过 6 年前
Blind programmer checking-in, here are a few thoughts sparked by the comments that I’ve read…<p>Disclaimer: these are my thoughts, and should not be generalized to all blind programmers.<p>First, let’s start with the supporting technologies, mainly screen readers. The most popular screen reader is Jaws for Windows (expensive product), followed by Non Visual Desktop Access (opensource product), distantly followed by VoiceOver (your only choice for Apple products). My main day-to-day driver is NVDA, but I also use Jaws for my job. I do not use a braille display. The IDEs that I use are Visual Studio (C# development) and Visual Studio Code (Python and Javascript development).<p>Indentation-sensitive languages such as Python really aren’t that difficult to use, once you figure out how to get your screen reader to announce indentation levels. Typically, the screen reader only announces indentation changes when there is a difference from the line that you are coming from. A sample Python function would read as follows as I press the down-arrow to read line-by-line (note that I’m purposely not putting in line breaks, since an audio-based screen reader is inherently serial):<p>“def foo left paren right paren colon, four spaces number say hello world, print left paren quote hello world quote right paren, zero spaces blank”<p>Interestingly, I find lisp one of the most difficult languages, since there are so many parentheses, and it’s difficult to keep track of what nesting you are in.<p>Screen readers are not programming language aware. It’s all text to them.<p>Using pitch to communicate information is more distracting than anything. Imagine that you were having a conversation with someone, and every few words, their voice completely changed. It makes understanding the meaning of what they are saying more difficult, since your brain is too busy going “hey, something changed!”<p>Some additional reading that I recommend is “An Exploratory Study of Blind Software Developers”, which can be found at <a href="https:&#x2F;&#x2F;ciigar.csc.ncsu.edu&#x2F;files&#x2F;bib&#x2F;&#x2F;Mealin2012-BlindDevelopers.pdf" rel="nofollow">https:&#x2F;&#x2F;ciigar.csc.ncsu.edu&#x2F;files&#x2F;bib&#x2F;&#x2F;Mealin2012-BlindDevel...</a>. That identifies some programming challenges that participants face, as well as some of the areas that blind programmers self-report as excelling in. Full disclosure, I was the primary researcher on that study.<p>Finally, a mini soapbox rant: something that I see quite often is people doing blindness “simulations” for a short period of time. They then write up their experience, which isn’t a bad thing, but then present their work as “I found this hard, so all blind people must find this hard.” Identifying when a task has a large learning curve is important, but also do keep in mind that people who are blind have significant experience in identifying ways to overcome potential accessibility problems.
Nomentatus超过 6 年前
This has already been alluded to, but please let me do everything I can via the mouse, especially when reviewing and reading code. I&#x27;m flat on my back with the monitor above me, it&#x27;s infuriating to grab the keyboard for a single character of input, unnecessarily, then go back to the mouse. I might also mention that those with sensory processing disorder (such as those on the Autism Spectrum) will want to change the background color. (word)
GuB-42超过 6 年前
Just a random thought. Is there a programming language for dyslexics?<p>Considering that dyslexia is a reading disorder, I suppose that the programming language can be really important.
评论 #18418456 未加载
AdmiralAsshat超过 6 年前
Slightly off-topic: how do blind programmers read code? Does the screen reader recite it aloud and just say &quot;int main left-paren void right-paren open-brace int i equals zero...&quot;, or does it use some other kind of auditory vocabulary to make it more meaningful to the listener?<p>I&#x27;ve been thinking about this alot lately because I&#x27;ve been wondering how I could get better at programming while driving on my daily commute.
评论 #18415112 未加载
评论 #18415345 未加载
评论 #18415187 未加载
评论 #18435074 未加载
mygo超过 6 年前
Sure this problem can be addressed at the language layer, but as you&#x27;ve alluded to, I think it would be more applicable to address this issue at the text-editor &#x2F; IDE layer or even the build tools.<p>There&#x27;s tons of IDEs that make developers better at coding, with things like automatic syntax checking, refactoring, inline debugging, autocomplete, etc. Would it make more sense to develop a developing environment that makes disabled developers better at coding, with whatever features would make their experience better?<p>It would probably be easier to get a disabled developer to use your editor than to get a disabled developer to use your language. From what I can gather, it&#x27;s hard enough to get employment as it is for them (maybe they can only work remote, or maybe they can be physically in the office but they&#x27;re blind). I&#x27;m not sure if they have the luxury of being able to choose what language they get to use. But I&#x27;m sure their employers would allow them to use the IDE &amp; tooling that works for them so long as they output code that fits the company stack.
cteague超过 6 年前
Thinking about disabilities that are not necessarily physical such as dyslexia, adhd, and other things that affect cognition--I would say an optimal programming language should be as easy to understand and read as possible. This would mean choosing the style of the language and the syntax so that it optimizes for readability. Also, removing the amount of the context someone needs to understand a piece of code. Perhaps this could be accomplished by strict enforcement of modularity and things like auto-generated or required documentation so that interfaces can be understood without diving into them if possible.<p>Obviously, inherent to programming is diving deep into chained function calls and managing all those levels in abstraction in one&#x27;s mind. However, for someone with a limited working memory for whatever reason--adhd, depression, chronic pain, anxiety, headaches and more--having this minimized as much as possible would be a lifesaver.
manch23超过 6 年前
Forgive me if I missed it, but I don’t believe I saw any mentions of ruby in this thread.<p>I feel like the English like syntax and use of keywords instead of symbols would be very beneficial for people with disabilities.<p>I guess python is in a similar vein, but ruby doesn’t rely on white space for its blocks, which I think is a real plus.
ndarilek超过 6 年前
Hey, kudos to you for thinking about this! Background: I&#x27;m totally blind, have programmed for nearly 3 decades, kind of do the in and out of half a dozen languages thing these days. Today&#x27;s favorites are Rust anywhere I can get away with it, Python because it runs in places where I need it (Home Assistant, Mycroft, etc.) and JavaScript because if I hold my nose and don&#x27;t think too much about the atrocities I&#x27;m committing, I can run the same or similar code in various form factors. I&#x27;ll try to give a few pointers. Note that these are specific to blindness, and specific to me. I don&#x27;t claim to speak for the disabled population as a whole, as we&#x27;re kind of a grab bag.<p>1. Indentation: Pretty much a solved problem at this point. If I were reading Python code line-by-line, my editor might speak something like (not sure if my newlines will make it, but imagine them where they should be): def hello(world): 4 spaces print(&quot;Hello, world.&quot;) 4 spaces 1 tab 4 spaces print(&quot;What was I thinking when I indented this line?&quot;)<p>So I wouldn&#x27;t worry too much about that. I&#x27;ve never had issues with an indentation-based language, and anyone blind who does likely just needs to change their tooling a bit. This is usually just a checkbox in the screen reader settings, so doesn&#x27;t even usually require an editor&#x2F;IDE change.<p>2. Avoid crazy symbols. Scala gave me some grief with this, with every library author having method names like %^&amp;@^$# because I assume that set of symbols looks like performHttpRequest(...) in some visual way. I exaggerate a bit. Only a bit. Note that operator overloading is fine, at least from an accessibility perspective. It&#x27;s when people decide that a series of connected punctuation symbols evokes the idea of making an HTTP request or opening an Option that I start to get annoyed.<p>3. Create good command line tooling. Rust has this nailed. I like how Rust&#x27;s own installer just uses rustup under the hood, or at least I think it does, and every blog post advertising a new component also includes the rustup incantations to grab it. I assume the editor interfaces are as nice or nearly so. I guess the takeaway is, package your language installation tooling in a library so you can invoke it from the CLI, editor plugins, etc.<p>4. Put error messages at the bottom of stacktraces rather than the top. Python does this right, and everyone else gets it wrong[1]. Say you&#x27;re running a compiler from your command line. You get an error, and your cursor lands on the input area, ready for a new command. As a screen reader user, you discover that error by entering your window&#x27;s review mode and moving up. With JavaScript, Rust, and just about everything else, I have to arrow through the callstack in reverse as I move up the screen to the line containing the error. Python puts this error last, near the input cursor, so all you&#x27;re doing is arrowing up a couple lines. It&#x27;s a few seconds per error, but can add up immensely over the course of a day. NPM, infuriatingly, shows the error, followed by disclaimer text that the error isn&#x27;t in NPM, then barfs up an NPM error just to confuse things. So any JS package I use that uses NPM for its scripting requires arrowing back through <i>2</i> stacktraces to find the original error. It&#x27;s enough to drive me to drink.<p>I can probably come up with more, but I haven&#x27;t finished my coffee yet. Perhaps that&#x27;s a good thing...<p>1. Right and wrong are of course subjective. This is just one blind dude&#x27;s opinion, take it for what it&#x27;s worth.
评论 #18416957 未加载
评论 #18417583 未加载
评论 #18415934 未加载
picometer超过 6 年前
A while back I was experimenting with something akin to &quot;syntax highlighting&quot; with sound instead of color. The idea is to play different tones&#x2F;noises depending on where your cursor is located in your code. Rough proof of concept that you can try out: <a href="http:&#x2F;&#x2F;marycourtland.github.io&#x2F;AuralJS&#x2F;" rel="nofollow">http:&#x2F;&#x2F;marycourtland.github.io&#x2F;AuralJS&#x2F;</a><p>This was just a fun experiment - I&#x27;m not blind or visually impaired - but I imagine that the concept could useful for programmers who depend on screen readers. It could be simplified as well; e.g., adjust the pitch or timbre of the voice depending on the nesting level of code.
mcphage超过 6 年前
I&#x27;ll be honest, I don&#x27;t have any answers for you—but this is a really interesting question, and I&#x27;m looking forward to reading what other HN readers suggest.
SilasX超过 6 年前
&gt;Making whitespace-sensitive syntax, like in Python &amp; Haskell, optional syntactic sugar for explicit brackets &amp; separators.<p>That shouldn&#x27;t matter with an IDE or plugin. If static analysis can identify the blocks -- and it has to! -- the screen reader can just read it as if it had your preferred block notation rather than noting the whitespace.
评论 #18415268 未加载
评论 #18415667 未加载
评论 #18415396 未加载
fnordfnordfnord超过 6 年前
I don&#x27;t have any specific advice here but I can share that I one worked with a physics professor who is quadrupelegic and he is one of the fastest most productive programmers I have ever seen. He worked in C and C±+ mostly, and typed with a stick which he held in his mouth. Don&#x27;t underestimate peoples&#x27; adaptability.
KevanM超过 6 年前
I do rough accessibility testing with JAWS on my company website, before we get people in to give it a thorough going over.<p>I would suggest you try it yourself, and download JAWS and write out some simple Hello World and figure out the challenges you face and then get in touch with disabled programmers and advocates.
eggxbox8超过 6 年前
Bootstrap is doing some work in this space: <a href="https:&#x2F;&#x2F;www.bootstrapworld.org&#x2F;blog&#x2F;accessibility&#x2F;User-Interface-REPL.shtml" rel="nofollow">https:&#x2F;&#x2F;www.bootstrapworld.org&#x2F;blog&#x2F;accessibility&#x2F;User-Inter...</a>
jdbdline超过 6 年前
i recently broke my two fingers on my right hand and could only code with the left hand (i am right handed) would have loved intellegint auto complete. And speach to text interface. That would be cool
stephenwithav超过 6 年前
#3 is a good start.<p>I can&#x27;t really think of anything that would greatly enhance my current Linux&#x2F;tmux&#x2F;emacs setup.
_nalply超过 6 年前
What about Deaf programmers like me? How are they going to survive interviewing?
reacweb超过 6 年前
Maybe we should train to code without screen: just a keyboard and a headset.
评论 #18417062 未加载
miki123211超过 6 年前
1. Do indentation right. One of the hardest things to do with a screen reader is indenting to a symbol. If we have a statement that doesn&#x27;t fit on a line, it&#x27;s much easier to increase the indentation by one level than to make the line start at the position where a symbol like ( is. The screen reader can tell you how many spaces of indentation you have, but figuring out where that symbol actually is and if it looks good is a real pain. This also applies to other situations where the exact number of whitespace matters like making struct declarations in c or go into a table, where one column is the name, one is the type and one is the comment, and spaces are used for alignment. If you really care about screen readers, I think tabs are a better idea for indentation, I feel they&#x27;re a bit easier to use, though that may just be my preference. One language that got this horribly wrong is python, four space indentation and a lot of starting the next line exactly below a particular character on the previous one. A language that really got this right is go. They use tab indentation and they have that amazing tool called go fmt that basically does all the work for you. It basically formats your code in the standard go way. Yes, go aligns structs with spaces but I don&#x27;t particularly care in that situation. I never use that convention in my code, I just run go fmt before committing and I&#x27;m sure everything looks right. In my opinion, alignment with spaces is the hardest thing to do when developing with a screen reader and it&#x27;s really hard to avoid when your code convention requires it and you don&#x27;t have a tool that does it for you. 2. Make error messages textual. A message like error at line 10(25), invalid syntax where 25 is the column is much easier to read than error at line 10, followed by the line with a ^ under the character in column 25. Another thing Python does wrong.<p>3. If you make a GUI framework, use native controls. Screen readers aren&#x27;t magical pieces of software that do their things using arcane spells, to read anything, they actually need to get the information to read. To do this, they use operating system APIs. When an application uses native controls, it exposes all the needed information through those APIs and a screen reader can get it easily. If an application has it&#x27;s own GUI toolkit, it&#x27;s own representation of controls that doesn&#x27;t correspond to the OS notions of a control and draws on the screen directly, the screen reader doesn&#x27;t know anything at all. This is the case with i.e. GTK on windows. For a long time, this was also the case with Flash, Java and QT. 4. screen reader users generally prefer words over symbols (controversial, some might disagree). Symbols are nice for sighted users because they take less space on the screen and are faster to read, but for screen reader users they are not. Lua&#x27;s &quot;if a less than 1 then print quote this is a test quote end&quot; reads much more naturally than go&#x27;s &quot;if a less than 1 left brace fmt dot print l n left paren quote this is a test quote right paren right brace&quot;. There&#x27;s a reason why blind programmers like lua and ruby. 5. Very hard to do right, but one of the most annoying thing for me is to deal with various messages in the console. If it&#x27;s a web table, you can do two columns, timestamp and message, and a blind user will know it&#x27;s a table and be able to navigate only in the second column. If it&#x27;s console output, you can separate them visually, sighted users will just glance over the timestamps but blind users actually need to hear them before hearing the message. Imagine you need to listen through &quot;two tousant eighteen colon eleven colon zero nine seven colon fourty five colon three comma 7520, &#x2F;cmd&#x2F;frontend&#x2F;main.go:19: server started&quot; before each message instead of just &quot;server started&quot;. That&#x27;s the sad reality for most blind people dealing with logs and messages that contain long paths etc. I don&#x27;t know if that can even be done right without hiding the info alltogether, as it&#x27;s not possible for a blind person to navigate a table in the console, but this is something that should be taken into consideration.
austincheney超过 6 年前
Accessibility is closely tied to portability. As a minimalist its not about what you can add but rather what you can take away and ensuring everybody understands reading the code with minimal effort everywhere.<p>A more accessible and portable language is one that eliminates overloading and redundancy. Everything in the syntax and expression is deliberate and its not open to various subjective forms of reasoning.<p>Eliminate white space as syntax. Beauty is subjective, but it isn&#x27;t necessarily accessible, and it certainly isn&#x27;t automatically simple. White space as syntax is common in nearly all languages. Even in Java there is white space to separate keywords. White space elimination allows any manner of visual expression and beautification of the language. It also prevents corruption of the code over the wire due to reformatting of corrupting user-agents and OSes that have different line endings. One form of corruption is when a token is shifted, due to different reasoning of line termination, onto a previous line terminated by a line comment.<p>Eliminate operator overloading. In JavaScript the plus character could mean addition, or string concatenation, or type coercion, or other weird things. The plus character could be a single character operator or the dreaded <i>++</i> which could mean post-increment or pre-increment. In JavaScript the forward slash could mean division or regular expression. For a blind person reading the code as characters or tokens this kind of overloading is unnecessarily confusing bullshit.<p>Conversely JavaScript has two different syntax forms for assignment. The common form of assigning is using a single equals character. In object literals a colon is used for assignment. This is stupid and looks completely different from the algebra on which equivalent logic is based. Make the colon character the character of all assignment. This leaves the single equals character free for comparisons. If the language imposes a strong&#x2F;static type system there will be no need for double or triple character comparison operators.<p>I would invoke a strong&#x2F;static type system. This allows error detection very early which reduces testing time and jumping between application environments.<p>I would design the language in such a way that it encourages code in structures. It is easier to follow code when it reads similar to its flow control at execution time. In this regard I would write the syntax such that it encourages containment, nesting, function as organizational models that can be nested, and design everything around primitive data structures.<p>I am not a fan of OOP programming where the application is easier to write&#x2F;expand than to debug or read. OOP constructs tend to be convention heavy, keyword heavy, and syntax heavy. Functional&#x2F;structured languages allow the deliberate organization of its pieces to do much of the heavy lifting as opposed to referenced or logical organizations.<p>Don&#x27;t worry about superficial tooling support. Solve the language design problems, the hard problems first. The helpful tooling bits will be easy if you have nailed the hard decisions and produced something with clarity, simplicity, and deliberation.
评论 #18417661 未加载
caymanjim超过 6 年前
Avoid Perl 6 and its horrifying Unicode keywords and operators.
评论 #18416737 未加载