なぜC言語を学ぶのか?

提供: C言語入門
移動: 案内検索
スポンサーリンク

世の中には、色々な言語があるなかで、なぜ、今、C言語 を学ぶのでしょうか? 学ぶ理由を考えて、まとめてみました。

読み方

C言語
しーげんご

概要

最近では、どんな言語が流行っているのでしょうか?

OSS 界隈では、 Java 系が強いと思ってます。たとえば、ビッグデータ会で人気な Hadoop は Java で作られています。Google の Android のアプリも Java で作れますね。

みんなだいすき Apple の iPhone や iPad などの iOS アプリは、以前は Objective-C でしたが、今は、新しい Swift になりました。

機械学習界隈では、Python が人気があるようです。 セキュリティ界隈のハッカーもPython好きが多いようですね。 統計の分野では、R言語やPythonが人気です。

ウェブ界隈では、アプリケーションの開発に node.js, PHPなどが使われているようです。 ログ界隈では、fluentd でログを転送して、まとめる、のようなことをやられているようですが、fluentd は Ruby です。 Ruby といえば、 Metasploit も Ruby でできていた記憶があります。 インフラストラクチャをコードで表現する、デプロイツールの Chef は Ruby です。レシピは Ruby で書けます。

いろいろなツールが Go 言語で書かれるようにもなってきています。

nmap というセキュリティ界隈で使われるネットワークスキャナーのプラグイン(NSEスクリプト)はRua言語で記述します。KVSのRedisは内部でRua が実行できます。

LinuxFreeBSD 様な OS は、 C 言語が使われています。

というように、いろいろな言語が様々な形で使われています。

適材適所なので、どの言語だけ知っていれば良い、というわけではありません。

C言語と組み込み

組み込み系の開発の場合は、C++が使えず、C言語かアセンブラしか選択肢がないことがあるようです。

C言語かC++言語か?

C言語とC++で選択が可能であるなら、C++言語を使えばよいと思います。 スマートポインタ、クラス、例外処理、テンプレート,C++11,C++14など様々な面でC++は、便利です。

スマートポインタを使えば、メモリリークを抑えるコーディングが可能でしょう。 std::string(文字列クラス)を利用すれば、C言語の配列の泥臭い操作でバグる頻度を下げられるでしょう。

C言語の利点は?

C言語は、たいていの言語(処理系)のプラグイン/エクステンションを書くことができます。多くの場合、C++でも書けると思います。 プラグインを作ることで、処理系に足りない機能を追加することができます。それがC言語の良さです。

いろいろな言語を使う環境では、共通のライブラリを利用したほうが、品質や性能の面で統一することができます。メンテナンスコストも下げることができます。共通部分は、C言語からC++言語で作り、各言語のエクステンション/プラグインとするといったアプローチができます。

1つの言語しか使わない、という環境では、あえて、C言語で書かなくてもよいかもしれませんし、言語によっては、C言語で書いたほうが高速!といったケースもあるでしょう。パフォーマンスを追求するのであれば、C言語で作ったほうが良い場合もあります。

C言語は、大抵の環境で利用できるはずなので、どこの世界でも生きていける、というのがあります。

また、言語が枯れていることもあり、大幅に仕様が変更されることはありません。PHP, Ruby, Python などは、どんどん仕様が変更されているかもしれませんが、そういった面で、C言語は安定しています。もちろん C99, C11 など、新しい機能が追加され、改善もされています。

C言語は、コンパイル型の言語で、実行ファイルはそのままCPUが実行できるため、スクリプト言語よりは多くの場合、高速です。

C言語が読めれば、Unix などのソースが公開されている OSのコードも読むことが可能です。 OS がどうなっているのか、という理解も深まりますし、OS を改善することもできます。

まとめ

  • C言語でいろいろな言語の拡張ができる
  • C言語がわかれば OS の仕組みを理解する(コードを読む)助けになる
  • C言語は仕様が大きく変わらない
  • C言語のプログラムは高速に動作する

関連項目



スポンサーリンク