初心者の学習記録、初記事です。
対象読者
・これから大学に入るがまだプログラミングをやったことのない方
・大学に入るのはまだまだ先だが、プログラミングに興味のある方
プログラミング入門!C言語とは?
大学の情報科・工学科って何やるの?
情報系・工学系で学習する「C言語」について説明
情報・工学系の学部の授業でまず初めに学習するのは、おそらく「C言語」です。
コンピューターに指示を出すためには、プログラミング言語を使って命令(ソースコード=プログラム)を書く必要がありますが、プログラミング言語にもいろいろな種類があります。
「C言語」はそれらの中でも古くからの歴史がある言語とされ、難しめの言語として知られてします。
では、なぜ大学の授業ではわざわざ「難しめの」言語を課しているのでしょうか?
それを理解するのにはプログラミング言語同士の位置関係・特性の違いを理解する必要があります。
先ほども記しましたが、プログラミング言語はコンピューターに指示を出すときに使われるものです。しかし、多くの人のイメージ通り、普段私たちが使っている言語とは違うものです。(そしてたいてい難しい)
ではなぜ、プログラミング言語と普段私たちが使っている言語(自然言語と言います)は異なるのでしょう。
そもそもコンピューターは私たちの使っている自然言語を理解することはできません。その代わりに0と1だけは理解することができます。なぜでしょうか?コンピューターのメモリに使われている半導体が記憶できるのが0と1(オンとオフ、逆かも)だからです。私たちは普段からスマホやパソコンを使って写真データを保存しておいたりメモ帳でメモをとったりしていますが、写真や文字がそのままその形で保存されているわけではないのです。実際にはすべての電子データは0と1に変換されて保存されます。半導体がそのような形式でしか記憶できないからです。
そういった経緯から、コンピューターに命令を出しても0と1の形に直してくれないと理解してくれないわけです。これを「機械語(machine language)」と呼びます。もっと詳しく言えば、番号ごとに実行すべき命令が表になっているそうです。これを「アセンブリ言語」と呼びます。ところが、この「アセンブリ言語」を覚えて使いこなすのは大変です。そこで、より人間のことばに近い言語を作ろう、という動きが起こったわけです。このようにしてプログラミング言語は誕生しました。プログラミング言語は英語と記号でできていますから、人間(特に英語圏の人)にとって読みやすいわけです。(日本人は英語から始めなければならないわけですがw)人間がプログラミング言語でコンピューターに行ってほしい処理を記述し、それを機械語に翻訳することでようやくコンピューターが何をすべきかわかるわけです。(翻訳してくれるアプリはコンパイラやインタープリタと呼ばれます)
プログラミング言語の中にもいろいろある、と書きましたが、いろいろ、というのは人間の言語(自然言語)と機械語のどちらにより近いか、という意味です。C言語は他のプログラミング言語と比べて機械語寄りとされる言語です。自然言語では「○○やっといて」といった雑な命令の仕方が成り立ちますが、コンピューターというのは正確に命令されないと分かってくれないものです。
最近はやりの(AIやデータ分析に使われる)Python言語などは書き方が雑でも多少は察して動いてくれます。一方でC言語はあまり察してくれません。細かく細かく指示しないとなかなか動いてくれないわけです。(全体としてプログラムの長さは長くなる)
C言語ってどこで使われるの?
・組み込み系のソフトウェア(工場のロボットや家電などでしょうか)のプログラム
・パッケージソフト(ウイルスバスターやエクセルなど)
・通信にかかわるプログラム
・ゲーム開発(大学の授業ではC言語・C++でCGを作る授業があると思います)
・メモ帳、ブラウザ
・Webサーバー
・大規模なシステム(政府系や金融系?)
・OS(WindowsやMacなど)
上記のものは処理速度が求められるものが多いように思います。C言語は実行速度が速いとされているので重たい処理が求められる作業、早い処理を求められるプログラムには適しているのではないかと考えられます。CGなんかも映像・画像の処理ですので文章だけと比べるとかなりの負荷がかかるはずです。
参考
https://www.sejuku.net/blog/9698
最後に
後日まだ書き足します。大きな間違いはないかと思いますが、細かい部分で不適切な表現がある可能性もあります。この程度の内容はググればほかにも出てきますので、ほかの記事で言っていることと違っている部分がありましたらそちらを信用なさってください。
読んでいただいてありがとうございました
追伸
すごい、初記事なのに2日間で92もviewがついてる。。。見てくれた方々ありがとうございます。
第2弾!!!C++言語について解説!!!