C言語と学校でのプログラミング教育を考えてみました

IT企画研究所で今までご紹介してきたプログラミング言語のScratchとC言語を比較して論じながら、C言語のプログラミング教育を考察します。

【目次】
1.Scratch
1.1.Scratch概要
1.2.Scratchのプログラムの開発と実行方法
2.C言語
2.1.C言語概要
2.2.C言語のプログラムの開発と実行方法
2.3.C言語まとめ
3.学校教育におけるプログラミング言語
4.まとめ

1.Scratch

1.1.Scratch概要

Scratchは、子ども向けプログラミング言語であり、主に子どものプログラミング教育が目的のプログラミング言語です。
Scratchはアメリカのマサチューセッツ工科大学(MIT)の生涯幼稚園グループが開発したプログラミング言語で、同グループが管理運営するScratchコミュニティーサイトを通じて、オフライン用のScratchアプリをダウンロードしインストールしてプログラミングしたり、オンライン用のScratchをそのままWebページの1ページとして開いてプログラミングしたりします。
Scratchは無償で、世界中の老若男女にその利用が解放されていますが、元々は8歳から16歳を対象に開発されたプログラミング言語です。

Scratchは、子どもが利用するという観点から、プログラムを文字を使って書くという形ではなく、1つ1つの命令がブロックと呼ばれる図で用意されているので、その図をドラッグなどで動かして組み合わせて、プログラミングしていく仕組みになっています。
そのため、プログラミング言語の分類の、グラフィカルプログラミング言語かテキストプログラミング言語かについて、図でプログラミングしていくScratchは、グラフィカルプログラミング言語(別名:ビジュアルプログラミング言語)に分類されます。

1.2.Scratchのプログラムの開発と実行方法

Scratchのプログラミング作業は、Scratchコミュニティーサイトから提供される2つのエディター(オフラインエディターとオンラインエディター)の内、そのときどきの環境や気分に合う方を使って行います。
プログラムや各ブロックの実行は、クリックすることで随時行うことが可能です。
ブロック単独の実行ができる場所は、エディター内です。
Scratchのプログラムの実行ができる場所は、エディター内やScratchコミュニティーサイトのプロジェクトページ、誰かのWebサイトなどに埋め込まれたScratchプログラムの場合は埋め込まれたその場所です。
Scratchのプログラムは、そのほとんどが、緑の旗の絵がクリックされると実行を開始します
(暗黙の了解で、Scratchでは、特に説明書きなどを付けない場合は、緑の旗の絵をクリックしたら実行が開始されるように、プログラミングをするお作法になっています。
もちろん、暗黙の了解に目をつぶり、何かのキーの入力や緑の旗の絵以外のものをクリックすると、実行が開始されるようにプログラミングすることも可能です)。

2.C言語

2.1.C言語概要

一方、C言語は、元々Unix(ユニックス)というOS(オーエス:Operating Systemの略。基本ソフトウェアのこと)を記述するためのプログラミング言語として開発されました。
それまで、OSなどのハードウェアを制御するプログラムは、機械語や、機械語より少し人間が扱いやすいアセンブリ言語と呼ばれるプログラミング言語を使って作られていました。
機械語やアセンブリ言語は、コンピューターやそのCPU(中央処理装置)などによってそれぞれ異なる命令の集合になることや、人間には難解な簡素すぎる記号と数字でのプログラミングが必要なこと、さらに、コンピューターの機械的な仕組みと、プログラムのコンピューター内部での電気的な動きの仕組みをよくわかった上でプログラミングをする必要があることなどから、コンピューターに精通した人たちでないとなかなか使えない言語です。

ブログラミング言語のもう1つの分類として、高級言語(高水準言語)か低級言語(低水準言語)かに分ける場合があります。
高級言語とは、人間が読んでわかりやすい文法を持っていて、機械(ハードウェア)に依存しない汎用的な文法を持つプログラミング言語のことで、低級言語とは、人間にとってわかりにくい記号の集合で、命令の種類や数がハードウェアに依存するような、ハードウェアよりのプログラミング言語のことです。
C言語は、ハードウェアの制御が行えるのに、ハードウェアに依存しない汎用的な文法を持ち、さらに、人間が読みやすく作りやすい構造化プログラミングが可能な文法を持つ、低級言語と高級言語の両方の特徴を持つ、そういう意味ではハイブリッドなプログラミング言語です。

C言語の命令語は、すべて半角英数と半角の記号の文字でできており、また、入出力の内容には漢字やひらがななどの2バイトコードの文字も使用が可能です。
プログラミング言語の分類で、グラフィカルプログラミング言語かテキストプログラミング言語かについては、C言語のプログラムが文法に則って書かれた文字のファイル(テキストファイル)なので、C言語はテキストプログラミング言語に分類されます。

2.2.C言語のプログラムの開発と実行方法

C言語のプログラムが書かれたテキストファイル(これをソースコードと呼ぶことがあります)は、そのままでは実行できません。
実行は、あるアプリで、ソースコードを参照し、ソースコードをそのハードウェアに合った機械語に翻訳したファイル(これを実行可能ファイルと言います)を作って行います。
この実行可能ファイルを作ることをコンパイル、その機能を持つアプリをコンパイラと言います。
特に、C言語のコンパイラを、Cコンパイラと呼ぶことがあります。
具体的なプログラミングから実行までの流れは、編集アプリであるエディターでC言語のソースコードを作成し、Cコンパイラでソースコードを参照して実行可能なファイルを生成し、その実行可能ファイルで実行します。

2.3.C言語まとめ

C言語は構造化プログラミングの機能も豊富(=人間が読みやすく扱いやすい言語)な上に、かなり低レベルな操作が可能(機械の制御ができる)な言語なので、いろいろな目的のプログラムの作成に使用できる言語として重宝されてきました。
最近では、用途別に様々な言語が開発されたこともあって、C言語は、一昔ほど多くは、開発に使われなくなったそうです。
一方、新しいプログラミング言語は、C言語と文法などが似ていたり、C言語から派生した言語もいくつかあり、また、昔から存在するプログラミング言語でも文法仕様を途中からCライクに改訂したもの・・・FORTRANやCOBOLなど・・・もいくつかあります。
このような背景から複数の言語と表現形式が似ていることや、メジャーなOS(Unix系のOS、Windowsなど)のCコンパイラーが無償で誰でも利用できることなどから、C言語はプログラミングの学習用言語として取り上げられることが多くなりました。

3.学校教育におけるプログラミング言語

2020年から、小学校でプログラミング教育が必修化されることになり、Scratchなどのグラフィカルプログラミング言語が、小学校で使用するプログラミング言語として推奨されています。
そして、より汎用的なプログラミング経験を積むために、中学校、高校、大学と進む中でテキストプログラミング言語に学習対象を移していくことになります。
すでにプログラミング教育を行っている中学校、高校、大学などの学校では、小学校でのプログラミング経験がない生徒が多いことから、Scratchなどのグラフィカルプログラミング言語からはじめているところも多いのが現状です。
今後、小学校でのプログラミング教育が定着し、小学校ですべての児童がグラフィカルプログラミング教育を受けるようになれば、その後の中等/高等教育機関でScratchの次に取り上げる言語は、プログラミングに必要な知識の汎用性が高い、C言語が良いのではないかという意見を多く耳にします。

4.まとめ

上記の状況であることから、IT企画研究所では、Scratchの他に、今後はC言語も取り上げ、一般的なアルゴリズムを中心に、これらのプログラミング言語でのプログラミングを、ブログなどで紹介していきたいと考えています。

以上、どうぞ、今後ともよろしくお願いいたします。

コメントを残す