编程语言中符号的频率

时间:2010-08-06 06:40:55

标签: keyboard-layout

我正在寻找某种参考,它显示了流行编程语言的符号频率。我正在尝试为编程设计最佳的键盘布局。

如果没有这样的参考,我不介意创建一个简单的实用工具来解决这个问题。但是,我需要就每种语言分析哪些文件提出建议。

我可以预见的一个问题是我得到一些Objective-c代码,如果它是一个没有对象的简单程序,那么 [] 键将远远低于普通的objective-c文件。所以,我想说的一个指导原则是示例代码应该代表一个普通文件,并使用该语言最常用的功能。

最初我认为我应该使用不同的语言编写相同的代码,但我不确定这是不是一个好主意,因为某些语言的用途与其他语言不同。

6 个答案:

答案 0 :(得分:5)

对于用于统计分析的大型代码示例,您可以尝试浏览常用的开源项目或按语言搜索Koders

几年前我对QWERTY布局进行了一些简单的更改,从那时起我一直在使用它作为我的通用布局:

  • 交换相应移位符号的数字。
  • 交换_-:带有下划线的名称很常见,现在-+都需要Shift。
  • 交换[]{}:块比下标更常见。

另外还有两个可选的改动:

  • 交换`~:析构函数很常见。
  • 交换'":字符串比字符更常见。

最后一个是唯一一个通常会干扰输入普通英文文本的人。对于C ++,Perl以及我在过去两三年中使用的其他任何内容,该布局都非常有效。显着的速度增加来自于按下Shift键的急剧减少。我发现使用Shift作为数字并不是什么大问题,因为无论如何数字键盘通常都会更快。

答案 1 :(得分:2)

书籍The New C Standard: An economic and cultural commentary包含大量C源使用量的测量值。使用数据和表格可作为独立的pdf

获得

答案 2 :(得分:1)

它们是可用的Dvorak键盘布局版本,针对程序员进行了优化。

http://www.kaufmann.no/roland/dvorak/

如果您碰巧使用Ubuntu,它已经在您的系统上。

答案 3 :(得分:1)

您正在寻找的是一种优秀的corpus编程语言。虽然在粗略的谷歌搜索中没有立即出现,但如果您创建自己的工具,以下链接可能会被证明是有用的。

A novel framework to detect source code plagiarism

Calgary Corpus

Generating an NLP Corpus from Java Source Code

A Computer Science Text Corpus/Search Engine X-Tec and Its Applications

Mining search topics from a code search engine usage log

答案 4 :(得分:0)

您可以测量大量的开源软件,以获得有关角色频率的一些好数据。 Sourceforge和github将是值得关注的地方。

开发人员不仅编写代码,还编写设计文档,电子邮件和堆栈溢出问题的答案。也许在几个同意的开发者计算机上安装一个密钥记录器是最好的方法。

答案 5 :(得分:0)

@Derek Jones引用了The New C Standard: An economic and cultural commentary,其中包含相关信息,但此处包含的频率可供快速参考:

space 15.083
! 0.102
" 0.376
# 0.175
$ 0.005
% 0.105
# 0.175
& 0.237
' 0.101
( 1.372
) 1.373
* 1.769
+ 0.182
, 1.565
- 1.176
. 1.512
/ 0.718
: 0.192
; 1.276
< 0.118
= 1.039
> 0.587
? 0.022
@ 0.009
[ 0.163
\ 0.97
] 0.163
^ 0.003
_ 2.550
{ 0.303
| 0.098
} 0.210
~ 0.002

以下是按频率排序的相同内容:

space 15.083
_ 2.550
* 1.769
, 1.565
. 1.512
) 1.373
( 1.372
; 1.276
- 1.176
= 1.039
/ 0.718
> 0.587
" 0.376
{ 0.303
& 0.237
} 0.210
: 0.192
+ 0.182
# 0.175
# 0.175
] 0.163
[ 0.163
< 0.118
% 0.105
! 0.102
' 0.101
| 0.098
? 0.022
@ 0.009
$ 0.005
^ 0.003
~ 0.002