Частота символов в языках программирования

Я ищу какую-то ссылку, которая показывает частоту символов популярных языков программирования. Я пытаюсь разработать оптимальную раскладку клавиатуры для программирования.

Если такой ссылки нет, я был бы не против создать простую утилиту, которая это понимает. Однако мне нужны предложения относительно того, какие файлы анализировать для каждого языка.

Я могу предвидеть одну из проблем: скажем, я получаю какой-то код на Objective-C, если это простая программа без объектов, то ключи [ и ] будут далеко реже, чем средний файл Objective-C. Итак, я бы сказал, что одним из рекомендаций является то, что пример кода должен быть репрезентативным для среднего файла и использовать наиболее часто используемые функции языка.

Первоначально я думал, что должен получить один и тот же код, написанный на разных языках, но я не уверен, что это хорошая идея, поскольку некоторые языки используются не так, как другие.


person Senseful    schedule 06.08.2010    source источник
comment
Вы разрабатываете раскладку клавиатуры для ноутбука или полноразмерной клавиатуры? (Моя догадка заключается в том, что вы хотите попытаться избежать нажатия пользователями нескольких клавиш, похожих на Shift, для получения символов программирования, но на маленьких клавиатурах этого не избежать…)   -  person Donal Fellows    schedule 06.08.2010
comment
Звучит интересно - я всегда отмечал, что репетиторы по набору текста «Мэвис Бэкон» и т. Д. На самом деле не ориентированы на кодеров. Но сам никогда не думал менять клавиатуру ;)   -  person StuartLC    schedule 06.08.2010


Ответы (6)


Чтобы получить большие образцы кода для статистического анализа, попробуйте просмотреть популярные проекты с открытым исходным кодом или выполнить поиск на Koders по язык.

Несколько лет назад я внес несколько простых изменений в раскладку QWERTY и с тех пор использую ее в качестве раскладки общего назначения:

  • Поменяйте местами цифры на соответствующие им символы сдвига.
  • Поменяйте местами _ и -: имена с символами подчеркивания распространены, и теперь - и + требуют Shift.
  • Поменяйте местами [] и {}: блоки встречаются чаще, чем индексы.

Плюс два дополнительных изменения, по вкусу:

  • Поменяйте местами ` и ~: деструкторы являются общими.
  • Поменяйте местами ' и ": строки встречаются чаще, чем символы.

Последнее — единственное, что обычно мешает набирать обычный английский текст. Макет прекрасно работает для C++, Perl и всего, что я использовал за последние два или три года. Заметное увеличение скорости связано с резким сокращением необходимости нажимать клавишу Shift. Я считаю, что использование Shift для чисел не имеет большого значения, поскольку цифровая клавиатура в любом случае работает быстрее.

person Jon Purdy    schedule 12.08.2010
comment
Я использую AutoHotKey для выполнения этой задачи и сделал примерно то же, что и вы. За исключением того, что я добавил гораздо больше других изменений, таких как изменение Capslock на Alt, а затем с помощью комбинаций Alt и j, k, l, i я имитирую клавиши со стрелками, чтобы предотвратить движение пальцев во время программирования. - person Samuel; 13.07.2018

Книга Новый стандарт C: экономический и культурный комментарий содержит множество измерений использования исходного кода C. . Данные об использовании и таблицы доступны в виде отдельного файла в формате pdf.

person Derek Jones    schedule 23.02.2011
comment
Частота символов указана на странице 30 документа с рисунками. - person Tristan Havelick; 07.07.2020

Это версия доступной раскладки клавиатуры Dvorak, оптимизированная для программистов.

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

Если вам случится использовать Ubuntu, она уже есть в вашей системе.

person André    schedule 06.08.2010
comment
Да, это именно та клавиатура, которую я настраиваю. Мне не нравится, как трудно добраться до знака равенства. - person Senseful; 06.08.2010
comment
Действительно? просто вытяните указательный палец. Работает на меня ;) - person André; 06.08.2010

Вам нужен хороший корпус языков программирования. Хотя при беглом поиске в Google ничего сразу не появилось, мы надеемся, что следующие ссылки могут оказаться полезными, если вы создадите свой собственный инструмент.

Новая структура для обнаружения плагиата исходного кода

Корпус Калгари

Создание корпуса НЛП из исходного кода Java< /а>

Компьютерный текстовый корпус/Поисковая система X-Tec и ее приложения

Извлечение поисковых тем из журнала использования поисковой системы

person Sedate Alien    schedule 07.10.2010

Существует обширная коллекция программного обеспечения с открытым исходным кодом, которое вы можете измерить, чтобы получить хорошие данные о частоте символов. Sourceforge и github были бы местами для поиска.

Разработчики не просто пишут код, они также пишут проектную документацию, электронные письма и ответы на вопросы о переполнении стека. Возможно, лучшим способом будет установка кейлоггера на нескольких компьютерах разработчиков, давших согласие.

person Daniel    schedule 12.08.2010

@Derek Jones процитировал Новый стандарт C: экономический и культурный комментарий, в котором есть информация, но здесь частоты, содержащиеся в нем для быстрого ознакомления:

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
person Tristan Havelick    schedule 06.07.2020