C言語は、40年以上の歴史があるメジャーなプログラミング言語です。汎用性の高さから、現在でもさまざまなソフトウェア開発に用いられています。C言語を学ぶことは、ソフトウェアの仕組みやプログラミングの基礎を理解するうえでも非常に役立ちます。しかし、難易度が高いのもC言語の特徴です。そこで、本シリーズ【おさらいC言語】では、C言語を理解するうえでつまずきがちな箇所について紹介していきます。
なぜいまC言語を学ぶのか
C言語は、1972年にAT&T社のベル研究所で開発されたプログラミング言語です。UNIX向けの開発言語として知られるようになり、ANSIやISOなどで言語仕様が標準化されたことや80年代にパーソナルコンピューターが普及したことなどから、多くの開発者に支持されました。90年代半ばには「プログラマーになるならC言語を習得しろ」といわれるくらい、ソフトウェア開発者にとってC言語を使うのが当たり前のことでした。GUIを備えたアプリケーションからOSの開発、家電に組み込むファームウェアまで、C言語さえあればほとんど何でも作れたからです。
しかし、さまざまなプログラミング言語が存在する現在では、C言語を使う機会はたいへん少なくなりました。例えば、PHPやRubyでWebアプリケーションを作ったり、SwiftやJavaでスマートフォンアプリを作ったりする際に、C言語に触れる機会はほとんどないでしょう。多くのプログラマーにとって、C言語は過去のものになってしまっています。C言語はほかの言語に比べて学習のハードルが高く、途中で挫折してしまう人が多いことも関係しているかもしれません。
では、もうC言語は必要ないのかというと、そんなことはありません。C言語が適したソフトウェア開発は現在でも数多くあります。例えば、ほかのプログラミング言語のコンパイラを開発するような場合では、C言語やそこから派生したC++で書くケースも少なくありません。そのため、C言語へのニーズは決してなくなってしまったわけではないのです。実際に、国際標準としてのC言語規格もたびたび更新されています。2020年1月現在の最新版は、2018年に策定された「C17」です。
また、使う必要がないからといって、学んでも意味がないということではありません。C言語をきちんと習得できれば、ソフトウェアが動作する仕組みについての理解が深まり、ほかのプログラミング言語にも応用できる知識が身につくからです。国家資格である情報処理技術者の試験で選択言語のひとつとしてC言語が採用されているのも、そういった背景があるからかもしれません。
【おさらいC言語】とは
【おさらいC言語】は、C言語の学習で一度は挫折してしまった人の助けになりそうな情報を提供するシリーズ記事です。全13回(予定)に分けて掲載します。このシリーズの元となったのは、1997〜2002年の間に筆者が別の場所(現在は閉鎖済み)で公開していたエンジニア向けの文章です。ベースはもう20年も前の古いものですが、現代の事情にあわない部分はカットしたり、大幅にリライトしたりしています。C言語の新しいバージョンに関する記述や、近年よく使われているほかの言語との違いなどについても加筆しました。一方で、あえて古いまま残した部分もあります。例えば、最近ではあまり使われなくなった「ハンガリアン記法」(変数名などに使う、やや風変わりで懐かしい命名規則)などです。
- しばらくC言語を使っていないので「おさらい」したい人
- C言語の学習が思うように進まない人
- プログラミングの経験がありC言語にも触れておきたいと考えている人
- プログラムが動作する仕組みについて興味がある人
このシリーズが少しでもお役に立てば幸いです。
【おさらいC言語】記事一覧
-
【おさらいC言語】第1回:基礎は「ハローワールド」にギッシリあった!
はじめに、C言語の学習者であれば誰もが最初に触れたであろう「ハローワールド」について振り返っていきます。いまさらハローワールド?と思う人もいるかもしれませんが、侮るなかれ!実はそこには、C言語の基礎がギッシリと詰まっているのです。
-
【おさらいC言語】第2回:メイン関数のargcとargvの形をイメージしよう!
C言語のメイン関数がコマンドラインから受け取ることができるパラメータ
argc
とargv
の構造についてみていきましょう。これらの中に何のデータがどのように格納されるのかを、イメージしやすいように解説していきます。また、ほかのプログラミング言語との違いについても紹介します。 -
ただいま執筆中!
C言語の難所「ポインタ」を攻略しましょう。ポインタについて正しく理解するには、さまざまなデータがメモリの中でどんな姿をしているのかを想像できるようになることが大切です。そうすれば、C言語以外のいろいろなプログラミング言語についても理解が深まっていきます。
(本シリーズは、全13回の予定です)