编程语言的哪些语法特征对盲人程序员来说是个问题?

Orb*_*rby 6 programming-languages accessibility blindness blind

当前语言的语法特征是什么,证明对于屏幕阅读器或盲文阅读器有问题?听到或感觉到什么符号和结构很烦人?对于盲人程序员来说,如果你要设计一种更容易让其他盲人使用的编程语言,它会是什么样的?

And*_*ine 12

虽然这是一个非常有趣的问题,但这很大程度上取决于个人喜好和喜好,所以我会回答,就像你亲自问我一样.
注意:我的工作系统是Windows,所以我会专注于它.当然,我可以编写跨平台应用程序,但我在Windows机器上执行此操作.

缩进,白色空间

所有与缩进相关的东西或多或少都很烦人,特别是如果缩进是用多个空格而不是制表符(是的,我知道围绕它的整个"圣战"!).Python确实教会我即使在不需要它的语言中也能正确地缩进代码,但是由于这些空间,编写适当的Python仍然会让我感到痛苦.为什么这样?答案很简单:我的屏幕阅读器告诉我空格的数量,实际的嵌套级别是四倍.每个这样的操作(20个空格,aha,除以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开始向可访问性方向发展.但是,它们并不像它们那样可用,漂亮和舒适适用于有视力的用户.因此,例如,我使用文本编辑器和命令行工具来编写,编译和调试我的代码,就像我周围的许多盲人一样.

蛇Bal之歌,或另一场圣战

还有一件事要归咎于Python:camelCase处理snake_case甚至PascalCase要舒服得多.通常屏幕阅读器将用camelCase编写的单词分开,好像它们是用空格分隔的,所以我没有痛苦的阅读这个问题.
当你编写代码时,你必须打开你的标点符号,否则你会错过一些非常小而且"不重要"的东西,比如引号,分号或括号.然后,如果您的标点符号已经打开,并且您已阅读my_very_cool_descriptive_variable_name,则会听到以下内容:"我的下划线非常强调下划线......下划线强调下划线!!!" (糟糕的语言和发誓审查).我甚至尝试用声音替换下划线(是的,我的屏幕阅读器提供了这样的机会),但由于我使用的语音速率较高,声音不能很好地同步.在处理类似的方法和属性时,这是一场噩梦__proto__(aha,双方都有两个下划线,不是一个,不是三个 - 好吧,我认为是正确的!),__repr__依此类推,等等.是的,你可能会说,我可以用"un"之类的东西替换"underline"这个词(这也是可能的),但是仍有一些开销,就像白色空格和代码嵌套一样.
PascalCase要好得多,但它意味着更多的注意力,因为我们需要记住第一个大写字母(哦,我现在太挑剔了,让它成为PascalCase,但不是那些......哦,好吧,你得到它了).这就是我放弃Rust的原因,顺便说一句.

搜索功能

正如我已经告诉过你的那样,IDE对我们不好,所以文本编辑器是我们最好的朋友.然后,您需要搜索函数和方法,以及类和代码块.在某些语言中(这次不是Python),没有可以启动函数的关键字(例如,参见C或Java代码).例如,如果您确实知道文件中的第三个或第四个函数中存在逻辑错误,但是您没有完全记住它的名称,或者浏览某人的代码,那么在这些条件下搜索函数会变得相当痛苦. ......嗯,你知道,有很多理由这样做.在这个特定的上下文中,Python是好的,C不是.

多个重复和相似的字符

这本身并不是问题,而是使调试复杂化的情况,例如正则表达式或强嵌套操作((((a + ((b * c) - d) ** e) / f) + g) - h.这个特殊的例子真的是合成的,但你明白我的意思:嵌套的三元运算符(我喜欢,顺便说一下!),条件块等等.还有正则表达式.

理想的语言

对我而言,最接近理想的盲目友好语言的是D语言.它唯一的缺点是function除了匿名函数之外没有这个词.PHP和Javascript也很好,但不幸的是,它们还有许多其他盲目无关的缺点.

关于Go的更新

在他的一次会谈中,Go语言的主要开发人员Rob Pike 说,没有人喜欢Gofmt实用程序强加的代码风格.可能没有人 - 除了我!我喜欢它,我非常喜欢它,Go中的每个文件都是如此简洁和易于阅读,因此我对语言感到非常兴奋.盲目编码器唯一有点烦人的事情是当一个函数在其定义中有几对括号时,就好像它实际上是一个struct方法.该<-频道运营商仍然给我时间来思考我在做什么,发送或接收,但我相信这是一个习惯问题.