【独学C言語入門②】C言語の優位性

C言語の優位性を考えたとき結論からいうとハードウェアエンジニアの僕が感じる最大の強みは圧倒的な処理速度です。速度を考える時、コンパイルについてのご説明を欠かせません。

機械は「printf」など送られてきてもそのままでは理解できないので最終的には0と1だけのデータに変換する必要があります。この人間が理解できるソースコードを機械が理解できる機械語に変換する作業がコンパイルです。他にもコンパイルが必要な言語で有名なのはJavaです。

PythonやRubyではこのコンパイルを行う必要はありませんが、それは実行方式が異なるためです。C言語のように実行前に全てのソースコードのコンパイルが必要な方式をコンパイル方式と呼び、コンパイルするためのソフトウェアをコンパイラと呼びます。それに対してPythonは最初にコンパイルを行う必要がなく手軽ですが、1行ずつ翻訳しながら実行するためどうしても処理が遅くなります。このような方式をインタプリタ方式と呼びます。どちらが良いではなくどちらも一長一短があります。

コンパイル方式は最初に全部機械語に変換するという手間がかかる反面、実行速度が極めて速いという特徴があります。ハードウェアの周辺回路が高速化されているので手軽なインタプリタで十分とおっしゃる方の意見もごもっともです。適材適所でインタプリタで事足りれば全く問題ないという意見には僕も賛成です。ただ、問題はどれくらい速度の差があるのかということです。

ホビーで人気のあるRaspberry Piというシングルボードコンピュータを使用して僕が個人的に行った実験結果になりますが、C言語とPythonで全く同じ処理を行い速度の比較を行ったところ、C言語はPythonの約20倍処理速度が速いという結果が出ました。コンパイラ方式の方がちょっと早いというレベルの話ではありません。人間とF1の最高速度くらい差があるということです。

僕が専門とするエレクトロニクス(電子回路)では画像が4K、8K、通信では5Gになり高速化の波はとどまることを知りません。このような先端分野では処理が早いプログラミング言語に優位性があるのは間違いありません。以上は僕の個人的な意見でしかありませんが、ハードウェアエンジニアの経験と実際の数値に基づく意見になりますので信頼してもらっても良い事実だと思います。

独学C言語入門一覧に戻る