プログラミング言語の拡張子とGitHubにおける言語認識

今回は拡張子からのプログラミング言語の判定とGitHubで拡張子がどのように認識されるかについてご紹介いたします。



プログラミング言語の拡張子とGitHubにおける言語認識

詳しいアルゴリズムはわかりませんが、GitHubでは拡張子でプログラミング言語を判定しているようです。

プログラミング言語とその拡張子、GitHubでその拡張子が認識されるかについて表形式として以下にまとめました。

調査時点は2019年7月です。
抜けや漏れ、または新しいプログラミング言語の台頭により古くなってしまうかもしれません。

やり方としてはプログラミング言語の拡張子をネットで調べ、実際にファイルを用意してGitHubに片っ端からコミットして行きました。
実際にコミットしたファイルは「ここはコメントです。」という文字列が100行で構成されたファイルです。

 
プログラミング言語 拡張子 GitHubにおける認識
ABAP .abp ×
ActionScript .as ×
AngelScript .as
Assembly .s
Ballerina .bal
C .c
C .h
C++ .cc
C++ .cp
C++ .cpp
C++ .cxx
C# .cs ×
COBOL .cobol
CoffeeScript .coffee
CSS .css
Clojure .clj
D .d ×
Makefile .d
Dart .dart
Erlang .erl
Forth .forth
Forth .f
Forth .for
Fortran .f95
Fortran .f90
Fortran .f03
Fortran .f03
Go .go
Groovy .groovy
Haskell .hs
Haskell .lhs
Haxe .hx
HTML .html
HTML .htm
XHTML .xhtml
Java .java
JavaScript .js
JavaScript .jsx
JSX .jsx ×
Kotlin .kt
Lisp .lisp ×
CommonLisp .lisp
LSL .lsl
Lua .lua
MATLAB .mat
SQL .sql ×
Objective-C .m
OCaml .ml
Pascal .pas
Perl .pl
PHP .php
HACK .php
Prolog .pro
Prolog .swi ×
Python .py
R .r
Ruby .rb
Rust .rs
Scala .scala
Scheme .scm
Shell .sh
Smalltalk .cs
Swift .swift
TypeScript .ts
Visual Basic .vbs
Verilog .v ×
Coq .v
XML .xml ×
XQuery .xquery

終わりに

今回はプログラミング言語とその拡張子、GitHubでその拡張子が認識されるかについて表形式としてまとめてみました。

やってみて分かりましたが、GitHubによる言語認識は謎が多いです。
同じ拡張子でも、二パターン判定が別れていたりします。(.phpではPHPとHACKのにパターン認識が分かれている)
判定方法として拡張子のみを見るのではなく、実際にファイルの中身も見て判定しているのかもしれません。

もしかしたら拡張子がつくファイルを片っ端からコミットしてブラックボックス的にやるのではなく、GitHubの言語認識のアルゴリズム自体を解析した方がよかったのかもしれません。

何かありましたらコメント等で教えていただけると幸いです。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いいたします。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。






GitHub

Posted by ちこ