プログラミング言語というスキルを手に入れる
プログラミングの学習は「仕事で使う」または「就職する」または「学校のカリキュラムにある」からという理由から始めることが多いのではないだろうか。
仕事で取り組む場合は、目的がはっきりしているので学習のルートは最短にしやすい。もちろん学習の具合は個人の能力に依存するところが多いのだが、だた漠然と学習するのに比べればモチベーションは高い。
プログラミングのスキルは対象のプログラミング言語を使い込んでいくことで向上させることができる。最近は開発環境そのものがコーディングのアシストを行ってくれることもあり、初期の段階からクオリティの高いコードを書くことも可能になってきている。恵まれた環境だ。
しかし、抜本的にスキルの向上を図りたい場合、日ごろ使っているのプログラミング言語とは別の言語を学ぶとよいという考え方がある。これはプログラミング言語のスキルというよりも、新しい体験や新しい概念を通じて、メインで使っているプログラミング言語スキルに新しいスキルを追加するような効果を狙っている。
例えば、普段はPythonを使っているとする。ここでC++やC#を学んでみると、アルゴリズムの整理やデータ構造の組み方にオブジェクト指向の概念を持ち込みやすくなる。コードを書く前の設計の段階でオブジェクト指向の視点からの分割や整理ができるようになる。
今度はC言語を学んでみる。より低レベルなコーディングや高速に動作するコード、オペレーティングシステムの能力を直接利用する感覚がわかるようになってくる。PythonからCで開発したコードをリンクして使ったり、一部の処理をC言語で書き換えたりするといったこともできるようになる。Pythonというスキルに対して、別のスキルを手に入れることができるのだ。
そんなわけでこれまで、まずはWindowsでC言語プログラミングに取り組んでみるという視点から、基本的な話題を取り上げてきた。抽象度の高いプログラミング言語や人気の高いスクリプト言語ではなく、環境も含めて自分でC言語の開発環境をセットアップするという方法は、最近の記事としては珍しかったのではないかと思う。C言語の学習というよりも、新しい経験として取り組んでみるという視点からまとめてきたつもりだ。
開発環境から組み立てることで仕組みを調べる
WindowsでC言語による開発を行うとなると、通常であればVisual StudioでC/C++の開発環境を用意する。これが最も包括的でパワフルだ。
しかし本連載では、まず次のセットアップを行ってC言語のソースコードをビルドして利用できる環境を用意した。
- C言語コンパイラ: LLVM/Clang、MSVC C/C++コンパイラ
- リンカー: LLVM/Clang、MSVCリンカー
- デバッガ: LLVM/LLDB
- ビルドツール: GNU make/Microsoft make
- 実行環境: Build Tools for Visual Studio 2019
- エディタ環境: Visual Studio Code
Visual Studioをインストールすれば、上記のツールはまとめてセットアップが完了する。しかしこれでは、実際に何がどう動いているのかがよくわからないまま開発を行うことになる。これに対し、ツールを個別に用意すれば、具体的にどのようなステップを踏んで、実際に動作する実行ファイルを作成できるのかがわかる。
まず、本連載ではCコンパイラとしてLLVM/Clangを取り上げた。最近人気の高いC/C++コンパイラで、多くのプラットフォームに対応している。エラーメッセージもわかりやすい。これから使い出すにはよい選択肢だ。
しかし、C言語プログラミングはコンパイラだけ用意しても意味がない。オペレーティングシステム側にも用意が必要であり、Windowsの場合はBuild Tools for Visual Studioにそれらがまとまっている。この2つを最低限用意する必要がある。
エディタにはVisual Studio Codeを採用した。現在最も活発に開発が行われているエディタのひとつであり、開発速度も開発規模もダントツだ。C/C++のみならずさまざまなプログラミングや編集において重要なアプリケーションとなっている。もはやこれなしには考えられない開発者も少なくない状況だ。
このようにそれぞれ個別にセットアップしていくことで、なぜそれらが必要なのか、それは何をするものなのかがわかるようになる。