C#とPythonを比較

    「C#」と「Python」の概要

    「C#」と「Python」は、主要なプログラミング言語です。

    ■「C#」とは

    C#とは、Microsoftが開発した「.NET Framework」向けマルチパラダイムプログラミング言語です。「.NET Framework」の中核的言語として位置づけられており、タイプセーフなオブジェクト指向型言語です。

    汎用オブジェクト指向プログラミング言語で、開発者が行いたいことを可能な限りそのまま書けるように設計されています。

    「C言語」「C++」「Java」などの影響を受けており、共通言語基盤が解釈する共通中間言語にコンパイルされて実行されます。

    ■「Python」とは

    Pythonは、汎用の高水準プログラミング言語です。

    「インタプリタ」「動的型付け」「純粋オブジェクト指向」「インデント強制ルール」などの特徴を持つスクリプト言語です。

    ソースコード可読性に優れているため、大規模プログラムを作りやすいという利点があります。初心者にも扱いやすいシンプルな言語と言われています。

    さまざまな領域に対応する大規模な標準ライブラリを提供している点が特徴で、「Webアプリ開発」「GUIアプリ開発」「AI研究」「理工学研究」「統計解析」「ビッグデータ解析」など、幅広い領域で使用されています。GoogleやFacebookでの開発にも採用されています。

    特徴的機能比較

    ■C#

    ・ポインタ機能(unsafe内でのみ可能)
    ・演算子オーバーロード機能
    ・ジェネリクス機能
    ・LINQ機能

    ■Python

    インデントブロック(オフサイドルール)

    字下げによって文などのかたまりの範囲(ブロック)を示す規則で、ブロック識別のためにカッコなどを多用する必要がなく、読みやすいソースコードを作成できます。

    主なユースケース比較

    ■C#

    ・ゲーム開発---Unityなどのゲーム開発ツールで採用
    ・業務システム開発---Windowプラットフォーム向けシステム
    ・モバイルアプリ開発---iOS/Android向け など

    ■Python

    ・各種システム開発
    ・各種学術研究
    ・AI(人工知能)
    ・ビッグデータ解析
    ・ミニコンピュータ「Raspberry Pi」 など

     

    参考元サイト

    「C#」基本情報

    ■概要

    C#(シーシャープ)とは、Microsoftが開発した「.NET Framework」向けマルチパラダイムプログラミング言語です。「.NET Framework」の中核的言語として位置づけられており、タイプセーフなオブジェクト指向型言語です。

    ■基本説明

    C#は汎用のオブジェクト指向プログラミング言語です。開発者が行いたいことを可能な限りそのまま書けるように設計されています。

    C言語/C++言語をベースに拡張しつつ、Javaの影響も受けています。共通言語基盤(共通言語ランタイムなど)が解釈する共通中間言語にコンパイルされて実行されます。

    ■主なメリット

    C#のメリットとして次のような点があります。
    ・高機能---GUI開発、データアクセス関連、グラフィック関連、サウンド関連
    ・安定性
    ・インターネット向け仕様に対応できる
    ・Microsoftによる強力なサポート---機能強化
    ・ドキュメントが充実
    ・学習コストが低め---C++より簡単に習得できる など

    ■経緯

    ・2002年:初版リリース

    名称由来

    「C#」という名称の由来については、「Cの音を半音上げる→C言語を改良したもの説」、「C++言語をさらに拡張→C++++言語説」などがあります。

    ■オフィシャルサイト情報

    オフィシャルサイト

    →Microsoft →Docs →.NET →C# のガイド

    ライセンス情報

    C#のライセンスは「GNU General Public License+他」です。

    ダウンロード

    →Microsoft →Visual Studio IDE

    ■同様製品

    同様な機能を提供する製品として、次のようなものがあります。

    オープンソース製品:「Python」「Ruby」など。


    「Python」基本情報

    ■概要

    Python(パイソン)とは、パワフルなオープンソースプログラミング言語です。インタプリタ、動的型付け、純粋オブジェクト指向、インデント強制ルールなどの特徴を持つスクリプト言語です。

    ■基本説明

    Pythonは、汎用の高水準プログラミング言語として設計されています。

    Pythonは、その言語発展経緯/文法上特徴から、初心者にも扱いやすいシンプルな言語と言われています。可読性に優れています。

    さまざまな領域に対応する大規模な標準ライブラリを提供しています。ライブラリと一体となったPythonは、単なる言語ではなく、フレームワークレベルの力を持っています。

    豊富なライブラリにより、Webアプリ/GUIアプリの作成も可能です。また、理工学、統計解析など、幅広い領域で使用されています。

    「Perl」や「Ruby」に比べて大規模プログラムを作りやすいという利点があります。小さなスクリプトを大きなプログラムに拡張しやすいという特徴もあります。

    Pythonは、複数のプログラミングパラダイムに対応しています。オブジェクト指向型、命令型、手続き型、関数型などのスタイルでコーディングできます。

    ■経緯

    Pythonは、オランダ人の「Guido van Rossum」氏が開発しました。

    「Python」の名前は、イギリスのテレビ局BBCが製作したコメディ番組『空飛ぶモンティ・パイソン』に由来しています。

    「Python」を直訳した「ニシキヘビ」が、Python言語のマスコット/アイコンとして使われています。

    ■オフィシャルサイト情報

    オフィシャルサイト

    →Python

    ライセンス情報

    Pythonのライセンスは「Python Software Foundation License」です。

    詳細について、こちらを参照ください。
    →Python →History and License

    ダウンロード

    →Python →Downloads

    導入事例

    GoogleやFacebookで使われているという実績があります。YoutubeやDropboxもPythonで記述されています。開発者からの人気は高く、世界レベルでランキング上位にあり、幅広く利用されています。

    ■同様製品

    同様な機能を提供する製品として、次のようなものがあります。

    オープンソース製品:「Ruby」「PHP」「Perl」など。

    「Python」の主な特徴

    ■スクリプト言語

    Pythonはスクリプト言語であり、コンパイルを必要としないプログラミング言語です。「軽量プログラミング言語」ともいわれ、記述が容易、コンパイル不要などの特徴があります。

    一方、実行速度に難があるとされることもあります。

    ■パワフル/高速

    Pythonは、高度に最適化されたバイトコードコンパイラ/ライブラリにより、多くのアプリケーションで十分な速度で実行することができます。

    ■連携性

    Pythonは、Java/.NETなどの、他のフレームワークオブジェクトと組み合わせることができます。

    ■拡張性

    C/C++で拡張モジュールを作成したり、既存のコードをSWIGやBoost.Pythonを使ってラップして使用することができます。

    ■インデント強制ルール

    Pythonは、Javaのように「 { 」(中カッコ)は使用しません。Rubyのように「end」も使用しません。

    Python独特な大きな特徴として、「インデント(字下げ)強制ルール」があります。コーディングルールとして、ブロック構造はインデントで表現します。

    コーディング自由度が制限されるため、誰が書いても同じようなコードになります。簡潔に、より少ないコード行数でプログラムを表現でき、とてもクリーンで読みやすいコードになります。

    ■クロスプラットフォーム

    Windows、Linux/Unix、MacOSなど多くのメジャーなOSで動作させることができます。

    ■学習しやすい

    ドキュメントが豊富に存在しています。

    ■pip / PyPI(Python Package Index)

    「pip」とは、Pythonで書かれたパッケージソフトウェア管理システムです。また、PyPI(Python Package Index)というリポジトリがあり、非常に多くのライブラリ(パッケージ)が登録されています。

    ■バージョン体系

    Pythonのバージョンは、旧型「2.x系」と新型「3.0系」があります。後方互換性は保証されていません。

    ■その他のポイント

    ・多くの基本的な機能は標準搭載
    ・広範囲に及ぶ標準ライブラリとサードパーティモジュール
    ・完全なモジュール化サポート(パッケージ階層化もサポート)
    ・アプリケーションに組み込んでスクリプトインタフェースとして利用することが可能
    ・マルチパラダイム
    ・動的型付け
    ・関数型言語
    ・直感的なオブジェクト指向
    ・WSGI(Web Server Gateway Interface)によるインターフェース統一化
    ・インタラクティブシェル
    ・ガベージコレクション
    ・例外ベースのエラーハンドリング
    ・ドキュメンテーションスクリプト機能
    ・過去のプログラム言語の便利な考え方を多数取り入れている
    ・科学演算や機械学習で利用可能なライブラリが多数用意されている など