見出し画像

第1章-1 C#とは

はじめに


第1章では、プログラミング言語「C#」を扱います。
具体的なプログラミングに入る前に、C#について学習しましょう。

ではいこう

プログラムとは


プログラムとは、「コンピュータに対する命令を記述したもの」です。
プログラムの具体的な記述内容を「コード」と呼び、コードを書く人を「コーダ」と呼びます。「プログラミング」や「プログラマ」といった言葉はもう少し広い意味合いになり、設計などを含めた作業を行うこと/行う人という意味になります。では、プログラムを記述する言語は「コーディング言語」なのかと言われれば、これは「プログラミング言語」と呼ぶことが多いです。ややこしいね。

まぁ、これは言葉の定義であり、実際は「コード=プログラム」「コーディング=プログラミング」「コーダ=プログラマ」と捉えていいと思います。私の勤める会社でも、設計する人のことをプログラマとは呼びません。

プログラミング言語


C#はプログラミング言語ですが、そもそもプログラミング言語って何でしょうか?
コンピュータに命令を出す方法を並べてみました。

機械語

コンピュータは0と1で書かれた「機械語」しか理解できません。これは、コンピュータが電気のオンとオフでモノを考えるからです。ちなみにこの電気のオンオフで0と1を表現する部品を「トランジスタ」といいます。ムーアの法則の問題文で出てくるアレです。
閑話休題。なので、コンピュータに指示を出そうと思ったら、0と1で書かれた命令を出してやらねばなりません。今では考えられませんが、黎明期には本当に人間が0と1で命令を出していました。

アセンブリ言語

0と1ではあまりにも難解すぎるということで、アセンブリ言語が登場しました。アセンブリ言語は機械語を人間にわかりやすい記号(ニーモニック)に置き換えたものです。アセンブリ言語で書かれたコードは「アセンブラ」というプログラムで機械語に翻訳されます。とはいえ、機械語を記号に置き換えただけで、まだまだ難解ではあります。
ちなみにアセンブリ言語は文法が少ないので、覚えることが苦手な人には最適です! メモリに直接値を書き込むだけで、すぐに使えるようになります!

高級言語

プログラムをより効率的に書くために、より人間の言葉に近い言語が開発されました。これらを総称して「高級言語」といいます。また、機械語やアセンブリ言語は「低級言語」といいます。勘違いして欲しくないのは、どちらが優れているとかではないことです。
高級言語はその使いやすさから爆発的に広がりを見せ、今日では変態以外はみんな高級言語でプログラムを書いています。高級言語は「コンパイラ」というプログラムで機械語に翻訳されます。

私たちがこれから学ぶ「C#」という言語は、高級言語です。人間の言葉に近いので、そんなに尻込みせずに気楽に取り組んでください。

C#とは


.NET

C#は、.NETで動く前提で作られたプログラミング言語です。
.NETはMicrosoftが開発したソフトウェア開発のプラットフォームです。
Microsoftが開発しただけあって、Windowsにくっついてきます。

.NETを簡単に説明すると、プログラムを作ったり動かしたりするときに使える便利な環境です。

◎.NETの特徴

  • 相互運用性
    .NETでは、古いプログラムや、.NETではないプログラムを一緒に使うことができます。

  • 共通の実行環境
    .NETはすべて共通の実行環境(CLR)で動いています。こいつは、プログラムがちゃんと動くようにメモリを管理したり、エラーを処理したりします。

  • 言語への非依存性
    .NETでは、様々なプログラミング言語を使って開発できます。C#、VB.NET、F#などが使えますが、これらの言語で作ったプログラムは同じ仕組みで動くため、一緒に使うことができます。

  • 基本クラスライブラリ(BCL)
    .NETには、すぐに使えるたくさんの便利な機能が用意されており、これらを「基本クラスライブラリ」と呼びます。これにより、開発者はゼロから機能を作る必要がありません。

  • 配置
    コンピュータに新しいアプリをインストールするには、既にインストールされているアプリとの競合に注意しなければなりませんでした。.NETではこれらの競合を防ぐ仕組みがあります。

  • セキュリティ
    .NETには、プログラムが許可されていない操作をしないよう制限をかけたり、安全に暗号化する機能があります。そして、信頼できないコードを隔離して動かす仕組みもあります。

C#

では、この.NET上で動くC#にはどのような特徴があるのでしょうか?

  • JavaとC++の子ども
    C#は名前からC言語の系譜であることは推測できると思いますが、実はJavaとC++から強い影響を受けています。まぁ、JavaもC++もC言語の子どもなんだけどネ。

  • オブジェクト指向
    オブジェクト指向は、プログラムを「オブジェクト」という部品に分けて組み立てる考え方です。C#は、オブジェクト指向プログラミングをすることを前提に作られています。ただ、言語がサポートしていても、私たちがオブジェクト指向プログラミングをしなければ、オブジェクト指向は達成されません。

  • .NET
    .NETとの親和性がメチャクチャ高い
    です。というか、.NETで使うために作られたんだからそりゃそうです。

  • ガベージコレクション
    C#は不要なメモリ領域を自動で開放します。
    PCにはメモリという、作業机みたいな領域があります。プログラムくんはこの作業机を使って作業します。普通は作業したプログラムくんが作業机を片付けます。つまり私たちがコードの中で「片付けてね」という命令を書く必要があります。でもそれじゃ面倒くさいので、片付けてくれる秘書を雇いました。この秘書がガベージコレクションです。

まとめ


  • プログラミングはコンピュータに指示を出すこと

  • C#は高級言語

  • .NETはすごい

  • C#はすごい

予告



システムは始動する。だが、それはプログラミングの序章に過ぎなかった。
「やってみたいけど難しそう……」と迷うあなた。
だが、直感的な高級言語が、あなたに一歩踏み出す勇気を与える。
開発環境は整っている。手にするのは、新しいスキルと未来への可能性。
簡単なプログラムから、徐々にできることが広がる。
得点表示開発――すべてはその一歩から始まる。
C#で切り開く、あなたの物語が今ここから始まる。
次回『Hello, World!』
この次も、コーディング、コーディングゥ♪


いいなと思ったら応援しよう!