プログラミング言語の拡張子と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の言語認識のアルゴリズム自体を解析した方がよかったのかもしれません。
何かありましたらコメント等で教えていただけると幸いです。







ディスカッション
コメント一覧
まだ、コメントがありません