SlideShare une entreprise Scribd logo
1  sur  9
プログラミング言語の比較1
  表. 代表的な手続き型・オブジェクト指向プログラミング言語
     (*) C言語は関数ポインタを引数や戻り値として渡せる
言語                手続き型(P)    静的(S) /          クラス   引数の      戻り値      クロー
                  / 宣言型(D)   動的(D)型付け         と継承   関数       の関数      ジャー
Pascal            P          S                No    No       Yes      No
COBOL85           P          S                No    No       No       No
Fortan90          P          S                No    Yes      Yes      No
C99               P          S                No    Yes(*)   Yes(*)   No
C++11             P          S                Yes   Yes      Yes      Yes
C# 4.0            P          S                Yes   Yes      Yes      Yes
D 2.0             P          S                Yes   Yes      Yes      Yes
Objective-C 2.0   P          S                Yes   Yes      Yes      Yes
Java 7            P          S                Yes   No       No       No

      2012/12/3                  博士論文 予備公聴会                            1
プログラミング言語の比較2
                表. 代表的なスクリプト言語
(*) JavaScriptはプロトタイプを用いてクラスや継承を表現可能
言語             手続き型(P)    静的(S) /      クラス      引数の   戻り値   クロー
               / 宣言型(D)   動的(D)型付け     と継承      関数    の関数   ジャー
JavaScript     P          D            Yes(*)   Yes   Yes   Yes
CoffeeScript   P          D            Yes      Yes   Yes   Yes
TypeScript     P          S            Yes      Yes   Yes   Yes
Perl           P          D            Yes      Yes   Yes   Yes
PHP 5.3        P          D            Yes      Yes   Yes   Yes
Python         P          D            Yes      Yes   Yes   Yes
Ruby           P          D            Yes      Yes   Yes   Yes
Lua            P          D            No       Yes   Yes   Yes
Groovy         P          D            Yes      Yes   Yes   Yes

 2012/12/3                    博士論文 予備公聴会                          2
プログラミング言語の比較3
            表. 代表的な関数型・宣言型プログラミング言語
言語           手続き型(P)    静的(S) /     クラス   引数の   戻り値   クロー
             / 宣言型(D)   動的(D)型付け    と継承   関数    の関数   ジャー
Lisp         P          D           No    Yes   Yes   Yes
Scheme       P          D           No    Yes   Yes   Yes
ML           P          S           No    Yes   Yes   Yes
Scala        P          S           Yes   Yes   Yes   Yes
Kotlin       P          S           Yes   Yes   Yes   Yes
Nemerle      P          S           Yes   Yes   Yes   Yes
Haskell      D          S           No    Yes   Yes   Yes
SQL          D          S           No    No    No    No
Prolog       D          D           No    No    No    No


2012/12/3                   博士論文 予備公聴会                      3
他言語と連携可能な言語一覧1
 The Next Big
JVM Language         表. JVM上で動作する言語
          (*) Google Web Toolkitを用いて部分的にJavaScriptへ変換可能
          言語         JVM     .NET Framework   JavaScript   互換性の
                     上で動作    上で動作             への変換         高い言語
          Java       Yes     No               Yes(*)
          Scala      Yes     Yes              No
          Kotlin     Yes     Planned          Yes
          Xtend      Yes     No               No
          Ceylon     Yes     No               Yes
          Fantom     Yes     Yes              Yes
          Gosu       Yes     No               No
          Clojure    Yes     No               No           Lisp
          Jython     Yes     No               No           Python
          JRuby      Yes     No               No           Ruby

   2012/12/3                博士論文 予備公聴会                            4
他言語と連携可能な言語一覧2
               表. .NET Framework上で動作する言語
             (*) JSILやSharpKitを用いて部分的にJavaScriptへ変換可能
言語                  JVM      .NET Framework JavaScript 互換性の
                    上で動作 上で動作               への変換       高い言語
C#               No      Yes                Yes(*)
F#               No      Yes                No
Visual Basic     No      Yes                No
C++/CLI          No      Yes                No
Nemerle          No      Yes                Yes
IronPython       No      Yes                No       Python
IronRuby         No      Yes                No       Ruby
IronScheme       No      Yes                No       Scheme
プロデル             No      Yes                No
クロガネ             No      Yes                No

2012/12/3                      博士論文 予備公聴会                     5
他言語と連携可能な言語一覧3
                  表. JavaScriptに変換可能な言語
               *) HaxeはC++, PHP, C#など様々な言語へ変換可能
言語               JVM    .NET Framework     JavaScript   互換性の
                 上で動作   上で動作               への変換         高い言語
CoffeeScript     No     No                 Yes
TypeScript       No     No                 Yes
Dart             No     No                 Yes
Haxe(*)          Yes    Yes                Yes          ActionScript
JSX              No     No                 Yes


万が一間違いがあったら @exKAZUu
までご一報下さい m(__)m
 2012/12/3                    博士論文 予備公聴会                               6
テストカバレッジ測定ツールの比較
ツール            測定の         階層的   無償    命令     分岐    条件    分岐条件   対応言語
               仕組み         表示          網羅     網羅    網羅    網羅
Cobertura      Binary      Yes   Yes   Yes    Yes   No    No     Java
EMMA           Binary      Yes   Yes   Yes    Yes   No    No     Java
                                                                 Java,
JCover         Code        Yes   No    Yes    Yes   No    No
                                                                 Groovy
Clover         Code        Yes   No    Yes    Yes   No    No     Java
Agitar         Binary      Yes   No    Yes    Yes   No    No     Java
OpenCover      Processor   Yes   Yes   Yes    Yes   No    No     C#
NCover         Source      Yes   No    Yes    Yes   No    No     C#
dotCover       Binary      Yes   No    Yes    No    No    No     C#
gcov           Compiler    No    Yes   Yes    Yes   No    No     C++
COVTOOL        Code        No    Yes   Yes    No    No    No     C++
Bullseye       Code        Yes   No    Yes    Yes   Yes   Yes    C++

   2012/12/3                     博士論文 予備公聴会                             7
テストカバレッジ測定ツールの比較
ツール             測定の        階層的     無償   命令    分岐    条件    分岐    対応言語
                仕組み        表示           網羅    網羅    網羅    条件
                                                          網羅
Intel Code
                Compiler   Yes     No   Yes   No    No    No    Java
Coverage Tool
Squish Coco     Code       Yes     No   Yes   Yes   Yes   Yes   Java
                                                                C++,
TCAT            Code       Yes     No   No    Yes   No    No
                                                                Java
                                                                C++, C#
Parasoft Test   Code       Yes     No   Yes   Yes   Yes   Yes
                                                                Java
                                                                C++, C#
PurifyPlus      Binary     Yes     No   Yes   Yes   Yes   Yes
                                                                Java
Semantic                                                        C++, C#
                Code       Yes     No   Yes   Yes   No    No
Designs                                                         Java など
Coverage                                                        C++, C#
                Code       Yes     No   Yes   Yes   No    No
Validator                                                       Java など
   2012/12/3                     博士論文 予備公聴会                            8
テストカバレッジ測定ツールの比較
ツール                   測定の             階層的         無償      命令       分岐       条件      分岐       対応言語
                      仕組み             表示                  網羅       網羅       網羅      条件
                                                                                    網羅
ScriptCover           Code            No          Yes     Yes      No       No      No       JavaScript
Coverage.py           Processor       No          Yes     Yes      Yes      No      No       Python
rcov                  Processor       Yes         Yes     Yes      No       No      No       Ruby
SimpleCov             Processor       Yes         Yes     Yes      No       No      No       Ruby
Devel::Cover          Processor       Yes         Yes     Yes      Yes      Yes     No       Perl
xdebug                Code            Yes         Yes     Yes      No       No      No       PHP
LuaCov                Processor       No          Yes     Yes      No       No      No       Lua

     • ツール間に測定基準・対応言語の差異
     • メトリクス測定では測定基準の差異が問題に(*)
*) Rüdiger Lincke, Jonas Lundberg and Welf Löwe: “Comparing Software Metrics Tools,” ISSTA '08 Proceedings
of the 2008 international symposium on Software testing and analysis, pp. 131-142, 2008.

     2012/12/3                               博士論文 予備公聴会                                              9

Contenu connexe

Tendances

ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5啓 杉本
 
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱Yuya Rin
 
世界一わかりやすいClean Architecture release-preview
世界一わかりやすいClean Architecture release-preview世界一わかりやすいClean Architecture release-preview
世界一わかりやすいClean Architecture release-previewAtsushi Nakamura
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方Shigenori Sagawa
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計sairoutine
 
hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計Shinnosuke Tokuda
 
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)A AOKI
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説増田 亨
 
私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由増田 亨
 
UniRxでMV(R)Pパターン をやってみた
UniRxでMV(R)PパターンをやってみたUniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターン をやってみたtorisoup
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発慎一 古賀
 
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)真行 八田
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くかDDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くかKoichiro Matsuoka
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編infinite_loop
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方増田 亨
 
中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTipsKenjiro Kubota
 

Tendances (20)

ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5
 
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
 
世界一わかりやすいClean Architecture release-preview
世界一わかりやすいClean Architecture release-preview世界一わかりやすいClean Architecture release-preview
世界一わかりやすいClean Architecture release-preview
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計
 
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
「実践ドメイン駆動設計」 から理解するDDD (2018年11月)
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 
私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由
 
UniRxでMV(R)Pパターン をやってみた
UniRxでMV(R)PパターンをやってみたUniRxでMV(R)Pパターンをやってみた
UniRxでMV(R)Pパターン をやってみた
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
 
GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)GNU AGPLv3について(On GNU AGPLv3)
GNU AGPLv3について(On GNU AGPLv3)
 
PHPにおけるI/O多重化とyield
PHPにおけるI/O多重化とyieldPHPにおけるI/O多重化とyield
PHPにおけるI/O多重化とyield
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くかDDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
DDDはオブジェクト指向を利用してどのようにメンテナブルなコードを書くか
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
 
中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips中・大規模でLaravelを導入するTips
中・大規模でLaravelを導入するTips
 

Similaire à プログラミング言語の比較表

Scala Performance Tuning Tips
Scala Performance Tuning TipsScala Performance Tuning Tips
Scala Performance Tuning TipsKota Mizushima
 
Cプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧めCプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧めMITSUNARI Shigeo
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGUehara Junji
 
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)parrotstudio
 
Rのコードをキレイに見せたい
Rのコードをキレイに見せたいRのコードをキレイに見せたい
Rのコードをキレイに見せたいmangantempy
 
プログラミング言語Cyanの紹介
プログラミング言語Cyanの紹介プログラミング言語Cyanの紹介
プログラミング言語Cyanの紹介baban ba-n
 
普段Djangoを使っている人間がruby on railsを勉強してみた話
普段Djangoを使っている人間がruby on railsを勉強してみた話普段Djangoを使っている人間がruby on railsを勉強してみた話
普段Djangoを使っている人間がruby on railsを勉強してみた話ko ty
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化maruyama097
 
正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?kwatch
 
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話Kentarou Takeda
 
From Java To Clojure
From Java To ClojureFrom Java To Clojure
From Java To ClojureKent Ohashi
 
普通のプログラミング言語R
普通のプログラミング言語R普通のプログラミング言語R
普通のプログラミング言語RShuyo Nakatani
 
Phperがgoをさわってみた
PhperがgoをさわってみたPhperがgoをさわってみた
Phperがgoをさわってみたyasuo424
 
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)taskie
 
第一回社内 Scala 勉強会(一部抜粋)その 2
第一回社内 Scala 勉強会(一部抜粋)その 2第一回社内 Scala 勉強会(一部抜粋)その 2
第一回社内 Scala 勉強会(一部抜粋)その 2lyrical_logical
 
第一回社内 Scala 勉強会(一部抜粋)
第一回社内 Scala 勉強会(一部抜粋)第一回社内 Scala 勉強会(一部抜粋)
第一回社内 Scala 勉強会(一部抜粋)lyrical_logical
 
初心者向けGo言語勉強会
初心者向けGo言語勉強会初心者向けGo言語勉強会
初心者向けGo言語勉強会leverages_event
 
Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流Kazuhiko Kato
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるKoichi Sakata
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうKoichi Sakata
 

Similaire à プログラミング言語の比較表 (20)

Scala Performance Tuning Tips
Scala Performance Tuning TipsScala Performance Tuning Tips
Scala Performance Tuning Tips
 
Cプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧めCプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧め
 
Groovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUGGroovy Bootcamp 2015 by JGGUG
Groovy Bootcamp 2015 by JGGUG
 
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
プログラマになれないあなたのための言語戦略 (Gunma.web #7 2011/12/17)
 
Rのコードをキレイに見せたい
Rのコードをキレイに見せたいRのコードをキレイに見せたい
Rのコードをキレイに見せたい
 
プログラミング言語Cyanの紹介
プログラミング言語Cyanの紹介プログラミング言語Cyanの紹介
プログラミング言語Cyanの紹介
 
普段Djangoを使っている人間がruby on railsを勉強してみた話
普段Djangoを使っている人間がruby on railsを勉強してみた話普段Djangoを使っている人間がruby on railsを勉強してみた話
普段Djangoを使っている人間がruby on railsを勉強してみた話
 
Java scriptの進化
Java scriptの進化Java scriptの進化
Java scriptの進化
 
正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?正規表現リテラルは本当に必要なのか?
正規表現リテラルは本当に必要なのか?
 
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
バリデーション駆動開発(仮称)で プロジェクトメンバー全員を幸せにした話
 
From Java To Clojure
From Java To ClojureFrom Java To Clojure
From Java To Clojure
 
普通のプログラミング言語R
普通のプログラミング言語R普通のプログラミング言語R
普通のプログラミング言語R
 
Phperがgoをさわってみた
PhperがgoをさわってみたPhperがgoをさわってみた
Phperがgoをさわってみた
 
JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)JavaScript Tips 2015(PDF 版)
JavaScript Tips 2015(PDF 版)
 
第一回社内 Scala 勉強会(一部抜粋)その 2
第一回社内 Scala 勉強会(一部抜粋)その 2第一回社内 Scala 勉強会(一部抜粋)その 2
第一回社内 Scala 勉強会(一部抜粋)その 2
 
第一回社内 Scala 勉強会(一部抜粋)
第一回社内 Scala 勉強会(一部抜粋)第一回社内 Scala 勉強会(一部抜粋)
第一回社内 Scala 勉強会(一部抜粋)
 
初心者向けGo言語勉強会
初心者向けGo言語勉強会初心者向けGo言語勉強会
初心者向けGo言語勉強会
 
Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
 

Plus de Kazunori Sakamoto

AI Challenge @ CODE FESTIVAL 2018 Final Round
AI Challenge @ CODE FESTIVAL 2018 Final RoundAI Challenge @ CODE FESTIVAL 2018 Final Round
AI Challenge @ CODE FESTIVAL 2018 Final RoundKazunori Sakamoto
 
A.I. Challenge @ CODE FESTIVAL 2014 決勝戦
A.I. Challenge @ CODE FESTIVAL 2014 決勝戦A.I. Challenge @ CODE FESTIVAL 2014 決勝戦
A.I. Challenge @ CODE FESTIVAL 2014 決勝戦Kazunori Sakamoto
 
ハッカソン形式の実践的IT教育の実施報告
ハッカソン形式の実践的IT教育の実施報告ハッカソン形式の実践的IT教育の実施報告
ハッカソン形式の実践的IT教育の実施報告Kazunori Sakamoto
 
ACM-ICPC JavaChallenge 2014 Result
ACM-ICPC JavaChallenge 2014 ResultACM-ICPC JavaChallenge 2014 Result
ACM-ICPC JavaChallenge 2014 ResultKazunori Sakamoto
 
ICSE2014参加報告 (SE勉強会 6/12)
ICSE2014参加報告 (SE勉強会 6/12)ICSE2014参加報告 (SE勉強会 6/12)
ICSE2014参加報告 (SE勉強会 6/12)Kazunori Sakamoto
 
CEDEC CHALLENGE ゲームAI プログラミングコンテスト 2013 in CEDEC
CEDEC CHALLENGE ゲームAI プログラミングコンテスト 2013 in CEDECCEDEC CHALLENGE ゲームAI プログラミングコンテスト 2013 in CEDEC
CEDEC CHALLENGE ゲームAI プログラミングコンテスト 2013 in CEDECKazunori Sakamoto
 
POGen: A Test Code Generator Based on Template Variable Coverage in Gray-Box ...
POGen: A Test Code Generator Based on Template Variable Coverage in Gray-Box ...POGen: A Test Code Generator Based on Template Variable Coverage in Gray-Box ...
POGen: A Test Code Generator Based on Template Variable Coverage in Gray-Box ...Kazunori Sakamoto
 
OCCF: A Framework for Developing Test Coverage Measurement Tools Supporting M...
OCCF: A Framework for Developing Test Coverage Measurement Tools Supporting M...OCCF: A Framework for Developing Test Coverage Measurement Tools Supporting M...
OCCF: A Framework for Developing Test Coverage Measurement Tools Supporting M...Kazunori Sakamoto
 
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案Kazunori Sakamoto
 
JavaChallenge 2012 Special League
JavaChallenge 2012 Special LeagueJavaChallenge 2012 Special League
JavaChallenge 2012 Special LeagueKazunori Sakamoto
 
ガイオプライベートセミナー2012秋(坂本)
ガイオプライベートセミナー2012秋(坂本)ガイオプライベートセミナー2012秋(坂本)
ガイオプライベートセミナー2012秋(坂本)Kazunori Sakamoto
 

Plus de Kazunori Sakamoto (12)

AI Challenge @ CODE FESTIVAL 2018 Final Round
AI Challenge @ CODE FESTIVAL 2018 Final RoundAI Challenge @ CODE FESTIVAL 2018 Final Round
AI Challenge @ CODE FESTIVAL 2018 Final Round
 
A.I. Challenge @ CODE FESTIVAL 2014 決勝戦
A.I. Challenge @ CODE FESTIVAL 2014 決勝戦A.I. Challenge @ CODE FESTIVAL 2014 決勝戦
A.I. Challenge @ CODE FESTIVAL 2014 決勝戦
 
ハッカソン形式の実践的IT教育の実施報告
ハッカソン形式の実践的IT教育の実施報告ハッカソン形式の実践的IT教育の実施報告
ハッカソン形式の実践的IT教育の実施報告
 
ACM-ICPC JavaChallenge 2014 Result
ACM-ICPC JavaChallenge 2014 ResultACM-ICPC JavaChallenge 2014 Result
ACM-ICPC JavaChallenge 2014 Result
 
ICSE2014参加報告 (SE勉強会 6/12)
ICSE2014参加報告 (SE勉強会 6/12)ICSE2014参加報告 (SE勉強会 6/12)
ICSE2014参加報告 (SE勉強会 6/12)
 
CEDEC CHALLENGE ゲームAI プログラミングコンテスト 2013 in CEDEC
CEDEC CHALLENGE ゲームAI プログラミングコンテスト 2013 in CEDECCEDEC CHALLENGE ゲームAI プログラミングコンテスト 2013 in CEDEC
CEDEC CHALLENGE ゲームAI プログラミングコンテスト 2013 in CEDEC
 
POGen: A Test Code Generator Based on Template Variable Coverage in Gray-Box ...
POGen: A Test Code Generator Based on Template Variable Coverage in Gray-Box ...POGen: A Test Code Generator Based on Template Variable Coverage in Gray-Box ...
POGen: A Test Code Generator Based on Template Variable Coverage in Gray-Box ...
 
OCCF: A Framework for Developing Test Coverage Measurement Tools Supporting M...
OCCF: A Framework for Developing Test Coverage Measurement Tools Supporting M...OCCF: A Framework for Developing Test Coverage Measurement Tools Supporting M...
OCCF: A Framework for Developing Test Coverage Measurement Tools Supporting M...
 
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
Webアプリの動的部分に着目したグレーボックス統合テストとテンプレート変数カバレッジの提案
 
JavaChallenge 2012 Special League
JavaChallenge 2012 Special LeagueJavaChallenge 2012 Special League
JavaChallenge 2012 Special League
 
JavaChallenge 2012 Result
JavaChallenge 2012 ResultJavaChallenge 2012 Result
JavaChallenge 2012 Result
 
ガイオプライベートセミナー2012秋(坂本)
ガイオプライベートセミナー2012秋(坂本)ガイオプライベートセミナー2012秋(坂本)
ガイオプライベートセミナー2012秋(坂本)
 

プログラミング言語の比較表

  • 1. プログラミング言語の比較1 表. 代表的な手続き型・オブジェクト指向プログラミング言語 (*) C言語は関数ポインタを引数や戻り値として渡せる 言語 手続き型(P) 静的(S) / クラス 引数の 戻り値 クロー / 宣言型(D) 動的(D)型付け と継承 関数 の関数 ジャー Pascal P S No No Yes No COBOL85 P S No No No No Fortan90 P S No Yes Yes No C99 P S No Yes(*) Yes(*) No C++11 P S Yes Yes Yes Yes C# 4.0 P S Yes Yes Yes Yes D 2.0 P S Yes Yes Yes Yes Objective-C 2.0 P S Yes Yes Yes Yes Java 7 P S Yes No No No 2012/12/3 博士論文 予備公聴会 1
  • 2. プログラミング言語の比較2 表. 代表的なスクリプト言語 (*) JavaScriptはプロトタイプを用いてクラスや継承を表現可能 言語 手続き型(P) 静的(S) / クラス 引数の 戻り値 クロー / 宣言型(D) 動的(D)型付け と継承 関数 の関数 ジャー JavaScript P D Yes(*) Yes Yes Yes CoffeeScript P D Yes Yes Yes Yes TypeScript P S Yes Yes Yes Yes Perl P D Yes Yes Yes Yes PHP 5.3 P D Yes Yes Yes Yes Python P D Yes Yes Yes Yes Ruby P D Yes Yes Yes Yes Lua P D No Yes Yes Yes Groovy P D Yes Yes Yes Yes 2012/12/3 博士論文 予備公聴会 2
  • 3. プログラミング言語の比較3 表. 代表的な関数型・宣言型プログラミング言語 言語 手続き型(P) 静的(S) / クラス 引数の 戻り値 クロー / 宣言型(D) 動的(D)型付け と継承 関数 の関数 ジャー Lisp P D No Yes Yes Yes Scheme P D No Yes Yes Yes ML P S No Yes Yes Yes Scala P S Yes Yes Yes Yes Kotlin P S Yes Yes Yes Yes Nemerle P S Yes Yes Yes Yes Haskell D S No Yes Yes Yes SQL D S No No No No Prolog D D No No No No 2012/12/3 博士論文 予備公聴会 3
  • 4. 他言語と連携可能な言語一覧1 The Next Big JVM Language 表. JVM上で動作する言語 (*) Google Web Toolkitを用いて部分的にJavaScriptへ変換可能 言語 JVM .NET Framework JavaScript 互換性の 上で動作 上で動作 への変換 高い言語 Java Yes No Yes(*) Scala Yes Yes No Kotlin Yes Planned Yes Xtend Yes No No Ceylon Yes No Yes Fantom Yes Yes Yes Gosu Yes No No Clojure Yes No No Lisp Jython Yes No No Python JRuby Yes No No Ruby 2012/12/3 博士論文 予備公聴会 4
  • 5. 他言語と連携可能な言語一覧2 表. .NET Framework上で動作する言語 (*) JSILやSharpKitを用いて部分的にJavaScriptへ変換可能 言語 JVM .NET Framework JavaScript 互換性の 上で動作 上で動作 への変換 高い言語 C# No Yes Yes(*) F# No Yes No Visual Basic No Yes No C++/CLI No Yes No Nemerle No Yes Yes IronPython No Yes No Python IronRuby No Yes No Ruby IronScheme No Yes No Scheme プロデル No Yes No クロガネ No Yes No 2012/12/3 博士論文 予備公聴会 5
  • 6. 他言語と連携可能な言語一覧3 表. JavaScriptに変換可能な言語 *) HaxeはC++, PHP, C#など様々な言語へ変換可能 言語 JVM .NET Framework JavaScript 互換性の 上で動作 上で動作 への変換 高い言語 CoffeeScript No No Yes TypeScript No No Yes Dart No No Yes Haxe(*) Yes Yes Yes ActionScript JSX No No Yes 万が一間違いがあったら @exKAZUu までご一報下さい m(__)m 2012/12/3 博士論文 予備公聴会 6
  • 7. テストカバレッジ測定ツールの比較 ツール 測定の 階層的 無償 命令 分岐 条件 分岐条件 対応言語 仕組み 表示 網羅 網羅 網羅 網羅 Cobertura Binary Yes Yes Yes Yes No No Java EMMA Binary Yes Yes Yes Yes No No Java Java, JCover Code Yes No Yes Yes No No Groovy Clover Code Yes No Yes Yes No No Java Agitar Binary Yes No Yes Yes No No Java OpenCover Processor Yes Yes Yes Yes No No C# NCover Source Yes No Yes Yes No No C# dotCover Binary Yes No Yes No No No C# gcov Compiler No Yes Yes Yes No No C++ COVTOOL Code No Yes Yes No No No C++ Bullseye Code Yes No Yes Yes Yes Yes C++ 2012/12/3 博士論文 予備公聴会 7
  • 8. テストカバレッジ測定ツールの比較 ツール 測定の 階層的 無償 命令 分岐 条件 分岐 対応言語 仕組み 表示 網羅 網羅 網羅 条件 網羅 Intel Code Compiler Yes No Yes No No No Java Coverage Tool Squish Coco Code Yes No Yes Yes Yes Yes Java C++, TCAT Code Yes No No Yes No No Java C++, C# Parasoft Test Code Yes No Yes Yes Yes Yes Java C++, C# PurifyPlus Binary Yes No Yes Yes Yes Yes Java Semantic C++, C# Code Yes No Yes Yes No No Designs Java など Coverage C++, C# Code Yes No Yes Yes No No Validator Java など 2012/12/3 博士論文 予備公聴会 8
  • 9. テストカバレッジ測定ツールの比較 ツール 測定の 階層的 無償 命令 分岐 条件 分岐 対応言語 仕組み 表示 網羅 網羅 網羅 条件 網羅 ScriptCover Code No Yes Yes No No No JavaScript Coverage.py Processor No Yes Yes Yes No No Python rcov Processor Yes Yes Yes No No No Ruby SimpleCov Processor Yes Yes Yes No No No Ruby Devel::Cover Processor Yes Yes Yes Yes Yes No Perl xdebug Code Yes Yes Yes No No No PHP LuaCov Processor No Yes Yes No No No Lua • ツール間に測定基準・対応言語の差異 • メトリクス測定では測定基準の差異が問題に(*) *) Rüdiger Lincke, Jonas Lundberg and Welf Löwe: “Comparing Software Metrics Tools,” ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis, pp. 131-142, 2008. 2012/12/3 博士論文 予備公聴会 9