Jon*_*rdy 9 c c++ language-agnostic speech blind
在看到这个问题后,我开始考虑盲人程序员面临的各种挑战,以及其中一些甚至适用于有视力的程序员.特别是,大声朗读源代码的问题让我停下来.我一生中大部分时间都在编程,而且我经常在编程方面辅导同学,最常见的是C++或Java.
它是唯一地加重来尝试传达口头一个C++表达式的基本语法.演讲者必须使用明确但缓慢的术语,例如"开括号","按位和"等等,给出英语的惯用翻译或者口头缩写的完整规范.这些解决方案都不是最佳的.
一方面,惯用翻译仅对程序员有用,后者可以将其转换回相关的编程代码 - 在辅导学生时通常不会这样.反过来,教育(或简单地让某人加快项目速度)是最常见的情况,其中大声朗读源,并且错误的余地非常小.
另一方面,文字规范加速缓慢.说"磅,包括,左尖括号,iostream,直角括号,换行符"要比简单输入要长得多#include <iostream>
.实际上,大多数有经验的C++程序员只会将其视为"包含iostream",但同样,缺乏经验的程序员比比皆是,有时需要字面规范.
所以我已经有了解决这个问题的潜在解决方案的想法.
在C++中,有一组有限的关键字 -63-和运算符 -54,折扣命名运算符和处理复合赋值运算符,前缀与后缀自动递增和递减为不同.只有几种类型的文字,相似数量的分组符号和分号.除非我完全错了,否则就是这样.
那么,简单地将一个简洁,独特的发音归结为这些不同的概念(包括一个用于空白,需要它的地方)并从那里开始是不是可行的呢?编程语言比自然语言更加规则,因此发音可以标准化.任何语言的发言者都能够口头传达C++代码,并且由于语言的规律性和固定性,可以优化语音到文本软件以高度准确地接受C++语音.
所以我的问题是双重的:首先,我的解决方案是可行的; 第二,还有其他人有其他潜在的解决方案吗?我打算从这里获取建议并使用它们来制作一份正式文件,其中包含我的解决方案的示例实现.
对于诸如“包含”之类的内容,您可以在大声说出它时简单地在其前面添加“关键字”,而不是创建新的“单词”来描述它们。您也可以使用众所周知的单词/短语来表达其他部分。与任何新程序员一样,无论如何你都必须逐字描述一切,所以我认为这不需要特别注意。我认为创造新词是更难的方法......
因此,例如:
#include <iostream>;
int main()
{
if (1 < 2)
return 1;
else
return 0;
}
Run Code Online (Sandbox Code Playgroud)
可以读作:
(关键字) include iostream new-line (关键字) int main 无参数 起始块 如果数字 1 (运算符) 小于数字 2 换行 (关键字) 返回数字 1 换行 (关键字) else 换行 (关键字) 返回编号 0 结束块
将 () 中的单词视为可选的描述性单词,最有可能在更复杂的代码中使用。如果您希望他们实际写出描述性单词,您可以使用“字面意思”一词。例如
(关键字)如果文字数字(运算符)小于文字关键字
变成
if (number < keyword)
Run Code Online (Sandbox Code Playgroud)
其他单词也可以被赋予定义的含义,例如当您希望它们在下一行继续时“分割行”,而不关闭任何当前打开的括号等。
我个人认为这种方法使用起来非常简单,并且易于教学。YMMV,一如既往。
当然,这并不能解决国际化问题,但最坏的情况是,会导致非英语语言中使用“新单词”,这并不比您提供的建议解决方案更糟糕。