编程语言的哪些句法特征对盲人程序员来说是有问题的?
What syntactical features of programming languages are problematic for blind programmers?
当前语言的哪些句法特征对屏幕阅读器或盲文阅读器有问题?哪些符号和构造听起来或感觉起来很烦人?对于那里的盲人程序员,如果你要设计一种编程语言,让其他盲人更容易使用,它会是什么样的?
虽然这是一个很有趣的问题,但这是一个非常个人喜好的问题,所以我会像你亲自问我一样回答。
注意:我的工作系统是Windows,所以我会关注它。当然,我可以编写跨平台应用程序,但我是在 Windows 机器上做的。
缩进、空格
所有与缩进相关的事情都或多或少令人讨厌,特别是如果缩进是由多个空格而不是制表符组成的(是的,我知道它周围的整个“神圣 war”!)。 Python 确实教会了我正确地缩进代码,即使在不需要它的语言中也是如此,但是由于这些空格,它仍然伤害了我编写正确的 Python 。为什么这样?答案很简单:我的屏幕reader告诉我空格数,实际嵌套层数少了四倍。每个这样的操作(20 个空格,啊哈,除以 4,它是第五个嵌套级别)都会给我带来一些开销,并让我花费我内心的“CPU”资源,我可以将这些资源用于调试或其他花哨的东西。这是一件小事,你会说,你是对的,但这个开销是在我的(或其他人的!)代码的每一行上,我必须阅读或调试!数量不少。
选项卡要好得多:5 个选项卡,第五层嵌套,非常好。此处的盲文显示也是一个问题,因为您可能知道,盲文显示(尽管名称如此)是单行文本,通常有 14 到 40 个字符长。即,想象一个微型显示器,只有一行文本可以平移(即滚动),除此之外什么都没有。如果 20 个字符是空格,则代码只剩下 20 个字符。还有一点,如果你读的是二级盲文,但我不知道它是否适合编码,除了某些情况外,我主要使用语音。
更痛苦的是一些代码样式标准,您必须在其中对齐行中的代码。例如,moment.js 中的测试就是这种情况。那里的预期值和消息应该匹配它们的行位置,例如,开头引号将在每一行的第 55 列中(我承认,这很漂亮)。一个多星期以来,我一直无法让我的拉取请求被接受,直到我终于明白 Iskren(感谢他对我的耐心!),主要开发人员之一,试图告诉我什么。您可以猜到,这对于有视力的人来说是完全显而易见的。
块结局
与前一个问题相邻的一个问题:对我个人来说,当我知道一个特定的代码块结束时,这非常好。右括号(如在 C 中)或单词 end
(如在 Ruby 中)是好的,缩进级别更改(如在 Python 中)不是:仍然需要一些开销才能知道嵌套级别突然改变了。
IDE
很抱歉承认这一点,但实际上 并不舒适 IDE for the blind. The closest to such an IDE is Microsoft Visual Studio, especially the latest version (gods bless Jenny Lay-Flurrie!), Android Studio 似乎也在从版本 2 开始转向 wards 可访问性。但是,这些对于有视力的用户来说,它们的可用性、漂亮性和舒适性并不高。因此,例如,我使用文本编辑器和命令行工具来编写、编译和调试我的代码,我周围的许多盲人也是如此。
snake_case 的民谣,或另一个神圣 War
还有一件事要归咎于 Python 关于:camelCase is far more comfortable to deal with then snake_case or even PascalCase。通常屏幕 readers 以驼峰式书写的单独单词,就好像它们是用空格分隔的一样,所以我读 ThisPartOfSentence 时不会感到痛苦。
当你写代码的时候,你必须打开你的标点符号,否则你会错过一些非常微小和“不重要”的东西,比如引号、分号或括号。然后,如果你的标点符号打开,并且你阅读 my_very_cool_descriptive_variable_name
,你会听到以下内容:“我的下划线非常下划线很酷的下划线......下划线下划线下划线!!!” (脏话和发誓审查)。我什至尝试用声音替换下划线(是的,我的屏幕 reader 提供了这样的机会),但是由于我使用的语速较高,声音不能很好地同步。在处理像 __proto__
这样的方法和属性时,这是一场噩梦(啊哈,两边有两个下划线,不是一个,不是三个 - 好吧,我想是对的!),__repr__
等等等等。是的,你可能会说,我可以用像“un”这样非常短的东西来代替“下划线”这个词(这也是可能的),但是这里仍然存在一些开销,比如空格和代码嵌套。
PascalCase 要好得多,但它意味着更多的注意力,而且,因为我们需要记住把第一个大写字母(哦,我现在太挑剔了,让它成为 PascalCase,但不是那些......哦,好吧,你已经知道了)。这就是我放弃 Rust 的原因,顺便说一句。
正在搜索函数
正如我已经告诉过你的,IDE 对我们不利,所以文本编辑器是我们最好的朋友。然后,您需要搜索函数和方法,以及 类 和代码块。在某些语言中(这次不是 Python),没有可以启动函数的关键字(例如,参见 C 或 Java 代码)。在这些情况下搜索函数会变得非常痛苦,例如,如果您确实知道文件中第三或第四个函数的某处存在逻辑错误,但您不完全记得它的名称,或者您浏览了某人的代码......好吧,你知道,这样做有很多理由。在这个特定的上下文中,Python 是好的,C 不是。
多个重复和相似的字符
这本身不是问题,而是一种使调试复杂化的情况,例如,正则表达式或像 ((((a + ((b * c) - d) ** e) / f) + g) - h
这样的强嵌套操作。这个特定的例子确实是合成的,但你明白我的意思:嵌套的三元运算符(我喜欢,顺便说一句!),条件块,等等。还有正则表达式。
理想的语言
对我来说最接近理想盲人友好语言的是D language。它唯一的缺点是缺少 function
这个词,匿名函数除外。 PHP 和 Java 脚本也不错,但不幸的是,它们还有很多其他与盲人无关的缺点。
关于 Go 的更新
Go 语言的主要开发人员 Rob Pike 在他的一次演讲中说,没有人喜欢 Gofmt 实用程序强加的代码风格。可能,没有人——除了我!我喜欢它,我非常喜欢它,Go 中的每个文件都如此简洁易读,因此我对这门语言感到非常兴奋。对于盲人编码员来说,唯一有点烦人的事情是当一个函数在其定义中有几对括号时,就像它实际上是一个结构方法一样。 <-
频道操作员仍然让我有时间思考我在做什么、发送或接收什么,但我相信这是一个习惯问题。
关于 Visual Studio 代码的更新
信不信由你,当我写这个答案和第一次更新时,我并不是一名全职开发人员——现在我是。如此多的情况有利于可访问性,尤其是我! Slack, that virtually every business uses, became accessible, and so became Microsoft Visual Studio Code (again, gods bless Jenny and her team!). Now I use it as my primary code editor. Yes, it's not an IDE 本身,但足以满足我的需要。是的,我不得不重新阅读标点符号:现在我为许多标点符号使用了更短且通常是人为的名称。
因此,从 2021 年 1 月底开始,我绝对向盲人及其同事推荐 Visual Studio 代码作为 编码编辑器。更神奇的是,他们的结对编程服务【=23=】也可以使用了!是的,它确实有一些怪癖(目前,如果你是盲人,你无法分辨你的同事正在编辑文件中的哪一行),但对于ward 来说,这仍然是一个非常大的进步。
当前语言的哪些句法特征对屏幕阅读器或盲文阅读器有问题?哪些符号和构造听起来或感觉起来很烦人?对于那里的盲人程序员,如果你要设计一种编程语言,让其他盲人更容易使用,它会是什么样的?
虽然这是一个很有趣的问题,但这是一个非常个人喜好的问题,所以我会像你亲自问我一样回答。
注意:我的工作系统是Windows,所以我会关注它。当然,我可以编写跨平台应用程序,但我是在 Windows 机器上做的。
缩进、空格
所有与缩进相关的事情都或多或少令人讨厌,特别是如果缩进是由多个空格而不是制表符组成的(是的,我知道它周围的整个“神圣 war”!)。 Python 确实教会了我正确地缩进代码,即使在不需要它的语言中也是如此,但是由于这些空格,它仍然伤害了我编写正确的 Python 。为什么这样?答案很简单:我的屏幕reader告诉我空格数,实际嵌套层数少了四倍。每个这样的操作(20 个空格,啊哈,除以 4,它是第五个嵌套级别)都会给我带来一些开销,并让我花费我内心的“CPU”资源,我可以将这些资源用于调试或其他花哨的东西。这是一件小事,你会说,你是对的,但这个开销是在我的(或其他人的!)代码的每一行上,我必须阅读或调试!数量不少。
选项卡要好得多:5 个选项卡,第五层嵌套,非常好。此处的盲文显示也是一个问题,因为您可能知道,盲文显示(尽管名称如此)是单行文本,通常有 14 到 40 个字符长。即,想象一个微型显示器,只有一行文本可以平移(即滚动),除此之外什么都没有。如果 20 个字符是空格,则代码只剩下 20 个字符。还有一点,如果你读的是二级盲文,但我不知道它是否适合编码,除了某些情况外,我主要使用语音。
更痛苦的是一些代码样式标准,您必须在其中对齐行中的代码。例如,moment.js 中的测试就是这种情况。那里的预期值和消息应该匹配它们的行位置,例如,开头引号将在每一行的第 55 列中(我承认,这很漂亮)。一个多星期以来,我一直无法让我的拉取请求被接受,直到我终于明白 Iskren(感谢他对我的耐心!),主要开发人员之一,试图告诉我什么。您可以猜到,这对于有视力的人来说是完全显而易见的。
块结局
与前一个问题相邻的一个问题:对我个人来说,当我知道一个特定的代码块结束时,这非常好。右括号(如在 C 中)或单词 end
(如在 Ruby 中)是好的,缩进级别更改(如在 Python 中)不是:仍然需要一些开销才能知道嵌套级别突然改变了。
IDE
很抱歉承认这一点,但实际上 并不舒适 IDE for the blind. The closest to such an IDE is Microsoft Visual Studio, especially the latest version (gods bless Jenny Lay-Flurrie!), Android Studio 似乎也在从版本 2 开始转向 wards 可访问性。但是,这些对于有视力的用户来说,它们的可用性、漂亮性和舒适性并不高。因此,例如,我使用文本编辑器和命令行工具来编写、编译和调试我的代码,我周围的许多盲人也是如此。
snake_case 的民谣,或另一个神圣 War
还有一件事要归咎于 Python 关于:camelCase is far more comfortable to deal with then snake_case or even PascalCase。通常屏幕 readers 以驼峰式书写的单独单词,就好像它们是用空格分隔的一样,所以我读 ThisPartOfSentence 时不会感到痛苦。
当你写代码的时候,你必须打开你的标点符号,否则你会错过一些非常微小和“不重要”的东西,比如引号、分号或括号。然后,如果你的标点符号打开,并且你阅读 my_very_cool_descriptive_variable_name
,你会听到以下内容:“我的下划线非常下划线很酷的下划线......下划线下划线下划线!!!” (脏话和发誓审查)。我什至尝试用声音替换下划线(是的,我的屏幕 reader 提供了这样的机会),但是由于我使用的语速较高,声音不能很好地同步。在处理像 __proto__
这样的方法和属性时,这是一场噩梦(啊哈,两边有两个下划线,不是一个,不是三个 - 好吧,我想是对的!),__repr__
等等等等。是的,你可能会说,我可以用像“un”这样非常短的东西来代替“下划线”这个词(这也是可能的),但是这里仍然存在一些开销,比如空格和代码嵌套。
PascalCase 要好得多,但它意味着更多的注意力,而且,因为我们需要记住把第一个大写字母(哦,我现在太挑剔了,让它成为 PascalCase,但不是那些......哦,好吧,你已经知道了)。这就是我放弃 Rust 的原因,顺便说一句。
正在搜索函数
正如我已经告诉过你的,IDE 对我们不利,所以文本编辑器是我们最好的朋友。然后,您需要搜索函数和方法,以及 类 和代码块。在某些语言中(这次不是 Python),没有可以启动函数的关键字(例如,参见 C 或 Java 代码)。在这些情况下搜索函数会变得非常痛苦,例如,如果您确实知道文件中第三或第四个函数的某处存在逻辑错误,但您不完全记得它的名称,或者您浏览了某人的代码......好吧,你知道,这样做有很多理由。在这个特定的上下文中,Python 是好的,C 不是。
多个重复和相似的字符
这本身不是问题,而是一种使调试复杂化的情况,例如,正则表达式或像 ((((a + ((b * c) - d) ** e) / f) + g) - h
这样的强嵌套操作。这个特定的例子确实是合成的,但你明白我的意思:嵌套的三元运算符(我喜欢,顺便说一句!),条件块,等等。还有正则表达式。
理想的语言
对我来说最接近理想盲人友好语言的是D language。它唯一的缺点是缺少 function
这个词,匿名函数除外。 PHP 和 Java 脚本也不错,但不幸的是,它们还有很多其他与盲人无关的缺点。
关于 Go 的更新
Go 语言的主要开发人员 Rob Pike 在他的一次演讲中说,没有人喜欢 Gofmt 实用程序强加的代码风格。可能,没有人——除了我!我喜欢它,我非常喜欢它,Go 中的每个文件都如此简洁易读,因此我对这门语言感到非常兴奋。对于盲人编码员来说,唯一有点烦人的事情是当一个函数在其定义中有几对括号时,就像它实际上是一个结构方法一样。 <-
频道操作员仍然让我有时间思考我在做什么、发送或接收什么,但我相信这是一个习惯问题。
关于 Visual Studio 代码的更新
信不信由你,当我写这个答案和第一次更新时,我并不是一名全职开发人员——现在我是。如此多的情况有利于可访问性,尤其是我! Slack, that virtually every business uses, became accessible, and so became Microsoft Visual Studio Code (again, gods bless Jenny and her team!). Now I use it as my primary code editor. Yes, it's not an IDE 本身,但足以满足我的需要。是的,我不得不重新阅读标点符号:现在我为许多标点符号使用了更短且通常是人为的名称。
因此,从 2021 年 1 月底开始,我绝对向盲人及其同事推荐 Visual Studio 代码作为 编码编辑器。更神奇的是,他们的结对编程服务【=23=】也可以使用了!是的,它确实有一些怪癖(目前,如果你是盲人,你无法分辨你的同事正在编辑文件中的哪一行),但对于ward 来说,这仍然是一个非常大的进步。