programming-languages - 对于盲人程序员来说,编程语言的哪些句法特征是有问题的?

标签 programming-languages accessibility blind blindness

当前语言的哪些句法特征对屏幕阅读器或盲文阅读器有问题?哪些符号和结构令人讨厌听到或感觉到?对于那里的盲人程序员,如果您要设计一种其他盲人更容易使用的编程语言,那会是什么样子?

最佳答案

虽然这是一个很有趣的问题,但它很大程度上取决于个人喜好和喜好,所以我会像您亲自问我一样回答。
注意:我的工作系统是 Windows,所以我会专注于它。当然,我可以编写跨平台应用程序,但我是在 Windows 机器上编写的。
缩进,空格
所有与缩进相关的事情或多或少都令人讨厌,特别是如果缩进是由多个空格而不是制表符组成的(是的,我知道围绕它的整个“圣战”!)。即使在不需要它的语言中,Python 也确实教会了我正确缩进代码,但是由于这些空格,编写正确的 Python 仍然会伤害我。为什么这样?答案很简单:我的屏幕阅读器会告诉我空格的数量,而实际的嵌套级别却少了四倍。每个这样的操作(20 个空格,啊哈,除以 4,它是第五层嵌套)给我带来了一些开销,让我花费了我可以释放的内部“CPU”资源用于调试或其他花哨的东西。你会说,这是一件小事,你是对的,但是这个开销是我(或其他人!)代码的每一行,我必须阅读或调试!这是相当多的。
标签要好得多:5 个标签,第五层嵌套,很好。此处的盲文显示也是一个问题,因为您可能知道,盲文显示(尽管名称不同)是一行文本,通常长度为 14 到 40 个字符。即,想象一个带有一行文本的小型显示器,您可以平移(即滚动),除此之外什么也没有。如果 20 个字符是空格,则代码只剩下 20 个字符。再多一点,如果你读的是 2 年级盲文,但我不知道它是否适合编码,我主要使用语音,除了某些情况。
更痛苦的是一些代码样式标准,您必须在行中对齐代码。例如,moment.js 中的测试就是这种情况。 .那里的预期值和消息应该与它们的行位置相匹配,例如,开头引用将在每一行的第 55 列中(这很漂亮,我承认)。一个多星期以来,我一直无法接受我的拉取请求,直到我终于明白 Iskren(感谢他对我的耐心!),主要开发人员之一,试图告诉我什么。您可以猜到,这对于有视力的人来说是完全显而易见的。
块结局
与前一个问题相邻的一个问题:对我个人而言,当我知道特定代码块结束时,这是非常好的。右括号(如在 C 中)或单词 end (如在 Ruby 中)是好的,缩进级别更改(如在 Python 中)不是:仍然需要一些开销来了解嵌套级别已突然更改。
集成开发环境
很抱歉承认,但实际上没有舒适IDE对于盲人。最接近这种 IDE 的是 Microsoft Visual Studio ,尤其是最新版本(众神保佑Jenny Lay-Flurrie!),Android Studio从第 2 版开始,似乎也朝着可访问性迈进。但是,对于视力正常的用户来说,这些并不像它们那样可用、美观和舒适。因此,例如,我使用文本编辑器和命令行工具来编写、编译和调试我的代码,我周围的许多盲人也是如此。
蛇案之歌,或另一场圣战
另一件事要归咎于 Python:camelCase比snake_case 甚至PascalCase 更容易处理.通常屏幕阅读器将使用驼峰式大小写的单词分开,就好像它们用空格分隔一样,所以我阅读ThisPartOfSentence 时不会感到痛苦。
当你编写代码时,你必须打开标点符号,否则你会错过一些非常微小和“不重要”的东西,比如引号、分号或括号。然后,如果您的标点符号打开,并且您阅读 my_very_cool_descriptive_variable_name ,您会听到以下内容:“我的下划线非常下划线很酷的下划线……下划线下划线下划线!!!” (粗言秽语和咒骂被审查)。我什至尝试用声音替换下划线(是的,我的屏幕阅读器提供了这样的机会),但是由于我使用的语速较高,声音不能很好地同步。在处理诸如 __proto__ 之类的方法和属性时,这是一场噩梦。 (啊哈,两边有两个下划线,不是一个,不是三个——好吧,我想是对的!),__repr__等等等等。是的,您可能会说,我可以将“下划线”这个词替换为“un”之类的非常短的词(这也是可能的),但是这里仍然存在一些开销,例如空格和代码嵌套。
PascalCase 好得多,但它意味着更多的注意力,因为我们需要记住把第一个大写字母(哦,我现在太挑剔了,让它成为 PascalCase,但不是那些……哦,好吧,你已经收到了)。这就是我放弃 Rust 的原因,顺便说一句。
搜索函数
正如我已经告诉过你的那样,IDE 对我们不利,所以文本编辑器是我们最好的 friend 。然后,您需要搜索函数和方法,以及类和代码块。在某些语言(这次不是 Python)中,没有可以启动函数的关键字(例如,参见 C 或 Java 代码)。在这些情况下搜索函数会变得非常痛苦,例如,如果您确实知道文件中的第三个或第四个函数中某处存在逻辑错误,但您不完全记住它的名称,或者您浏览了某人的代码……好吧,你知道,这样做的理由有很多。在这个特定的上下文中,Python 是好的,C 不是。
多个重复和相似字符
这本身不是问题,而是使调试复杂化的情况,例如正则表达式或像 ((((a + ((b * c) - d) ** e) / f) + g) - h 这样的强嵌套操作。 .这个特殊的例子真的是合成的,但你明白我的意思:嵌套三元运算符(我喜欢,顺便说一句!),条件块,等等。和正则表达式,再次。
理想语言
对我来说,最接近理想的盲人友好语言是 D language .它唯一的缺点是没有 function 这个词。除了匿名函数。 PHP 和 Javascript 也不错,但不幸的是,它们还有许多其他与盲目无关的缺点。
关于 Go 的更新
在他的一次演讲中,Go 的主要开发者 Rob Pike语言说没有人喜欢 Gofmt 实用程序强加的代码风格。可能,没有人——除了我!我喜欢它,我非常喜欢它,Go 中的每个文件都如此简洁且易于阅读,因此我对这门语言感到非常兴奋。对于盲人编码员来说,唯一有点烦人的事情是当一个函数在其定义中有几对括号时,就像它实际上是一个结构方法一样。 <- channel 运营商仍然让我有时间思考我在做什么,发送或接收,但我相信这是一个习惯问题。
关于 Visual Studio Code 的更新
信不信由你,当我写这个答案和第一次更新时,我不是全职开发人员——现在我是。如此多的情况对可访问性尤其是我来说是有利的! Slack ,几乎每个企业都使用,变得可访问,因此成为 Microsoft Visual Studio Code (再次,上帝保佑Jenny和她的团队!)。现在我将它用作我的主要代码编辑器。是的,这不是 IDE本身,但它足以满足我的需要。是的,我不得不重新阅读标点符号:现在我有许多标点符号的较短且通常是人为的名称。
因此,从 2021 年 1 月下旬开始,我绝对推荐 Visual Studio Code 作为盲人及其同事的编码编辑器。更神奇的是LiveShare ,他们的结对编程服务也可以访问!是的,它确实有一些怪癖(现在,如果您是盲人,您将无法判断您的同事正在编辑文件中的哪一行),但它仍然是向前迈出的极其巨大的一步。

关于programming-languages - 对于盲人程序员来说,编程语言的哪些句法特征是有问题的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44832053/

相关文章:

windows - 创建脚本语言

c - 被告知我的 C 程序是 "hard coded",我不明白为什么

html - 在带有搜索表单元素的 HTML5 中语义使用 <nav>

java - 如果我是盲人,我如何在 Eclipse IDE for Java 中查看错误指示器

blind - 教盲人成年人编程基础的最佳语言?

python - 沙盒/逐行运行 python 代码

java - 与我的二十一点纸牌程序中的 NullPointerException 错误混淆

html - CSS chalice 与有序列

Java 类可访问性