コンピュータのプログラミング(英: programming)とは、コンピュータプログラム を作成する ことにより、人間の 意図した 処理を行う ように コンピュータに指示 を与える 行為 である。
プログラミングは処理の手順をコンピュータ言語によって記述し、その手順通りに動かして想定の結果を得るものである。
プログラミング言語は、外国語のような言葉と違って覚える事がものすごく少ないのです。
外国語を覚えようとすると単語1000語、熟語100以上とかが普通と思いますが、プログラミング言語では、基本文法、命令(予約語)で100以下というのが普通です。
なので、記憶力に自信が無い方でもコツさえつかめればプログラミング言語を覚える事は簡単なのです。
しかも一度一つの言語をマスターすると、ほかの言語も簡単にマスターできます。
プログラミング言語習得には記憶力を必要としないのです。
その代わり、考える力、思考力が必要となります。
思考力については、べつの記事を用意していますので、それを参考にしてください。
よく、プログラミング言語を勉強しようと調べると、大体「Hello World」を表示させるプログラムを作ると思いますが、これはほとんど役に立ちません。
なぜなら、プログラミング言語を覚えるにあたっては、自分で考えて作って実行するしか覚えられないからです。
その為、「Hello world」のプログラムをそのまま手打ちして実行しても、自分で考えている所がない為、頭に残らないのです。
プログラムというと、ものすごく複雑なものを想定すると思いますが、実はプログラムの基本構造は、以下の5つです。
・変数宣言 プログラムの内部で使用するワークエリアを使うための宣言をする。 ・代入・計算 ワークエリアに値を代入する。 代入時に計算して代入する。 ・判断 ワークエリアの内容を比較して処理を振り分ける。 ・ループ 処理を規定の条件に達するまで繰り返す。 ・関数呼び出し 関数(処理の集合体)の呼び出し・クラスの呼び出し。
実際には、何かしらの①入力があり、それを②処理して、結果を③出力する。
①入力があったものを変数宣言したワークエリアに格納し、それを代入・計算、判断・ループで②処理し、処理した結果のワークエリアを③出力する。
プログラミングはこの基本構造の組み合わせで複雑な処理を実現しているのです。
「えっこれだけ?」、と思うかもしれませんがこれだけなのです。
逆にこれだけの組み合わせで処理を実現する事が難しいのです。
プログラミングが作れない人は、ここでつまづきます。
・プログラミングを実行するためのコンパイル・実行環境の構築
実際に動かそうとしているプログラム言語を動かすための環境
Visual Studioや、Python、Excel VBAとか
プログラムが動作するときには、プログラムのコードを機械語(コンピュータが理解できる言語)に変換(コンパイル)し、実行という流れになる。
一番簡単なのは、EXCEL VBA。officeインストールするだけでOK
大体の言語は、インストールすれば、コンパイル環境が出来上がります。
・アルゴリズム
アルゴリズムとは、ある特定の問題を解く手順を、単純な計算や操作の組み合わせとして明確に定義したもの。数学の解法や計算手順なども含まれるが、ITの分野ではコンピュータにプログラムの形で与えて実行させることができるよう定式化された、処理手順の集合のことを指すことが多い。
有名なアルゴリズムでは、ソート(並び替え)などが有名
将棋の定石みたいなものです。
これは自分で考えれていけば自然と身に付きます。
・言語の基本命令
プログラミング言語の命令(予約語といいます。)
覚えるプログラミング言語で、コンパイラが命令として認識する単語。
プログラミングをするのに必要なスキルは、抽象的なもの(プログラミング対象)からルールを抽出し、そのルールを具体的な処理と順序に置き換えて出力する能力です。
「?よくわからん」と思いますが、具体例に行くと、
例えば「じゃんけん」
じゃんけんは皆さんがご存じの通り、自分と相手がそれぞれ「グー」「チョキ」「パー」を出し、出した内容により、あいこか、勝敗が決するかのどちらかです。
これをプログラム的に考えてみると、まず、
①ルールの抽出
ルール1:自分と相手の出せる手は「グー」「チョキ」「パー」のいずれか
ルール2:自分と相手の手が同じの場合はあいこで再戦
ルール3(手の勝敗1):「グー」に対して「パー」が勝ち、「チョキ」が負ける
ルール4(手の勝敗2):「パー」に対して「チョキ」が勝ち、「グー」が負ける
ルール5(手の勝敗3):「チョキ」に対して「グー」が勝ち、「パー」が負ける
②プログラムの処理に置き換えて考える
ルール1:自分と相手の出せる手は「グー」「チョキ」「パー」の為、入力時点で「グー」「チョキ」「パー」であることのチェック(判断)が必要。
ルール2:勝敗が決するまでは、ループで処理する。ループの終了条件は、勝敗が決すること。 ループにする範囲は、ルール1の入力とチェック~ルール3~5の勝負まで。
ルール3~5:じぶんと相手の手が同じの場合は、「あいこ」、それ以外は勝負に入る。 自分の手が「グー」の場合、相手の手が「パー」の場合は負け、それ以外は勝ち 自分の手が「パー」の場合、相手の手が「チョキ」の場合は負け、それ以外は勝ち 自分の手が「グー」「パー」以外の場合(チョキの場合)、相手の手が「グー」の場合は負け、それ以外は勝ち
若干ルールと変わっているのは、処理の順序を考えたときにありえないパターンを除外しているからです。
最後に勝敗を表示。
③プログラミングのコード化
ちなみにこんな言語はありません。わかりやすく日本語的なプログラムを書きます。
ちなみに#はコメント行
メイン処理{ # ----変数宣言---- # 手格納エリア jibun = "" aite = "" # 結果格納エリア result = "" # ループ終了条件格納エリア flg = "" # ----処理開始---- # flgが""のあいだループする。 loop (flg == "") { # 手を入力(input関数がある前提) print("自分の手を入力してください") jibun = input() # 自分の手チェック if jibun == "グー" else if jibun == "チョキ" else if jibun == "パー" else # 自分の手チェックエラー print("自分の手がおかしい( ゚Д゚)") # プログラム終了 exit end if # 手を入力(input関数がある前提) print("相手の手を入力してください") aite = input() # 相手の手チェック if aite == "グー" # チェックOK 処理なにもなし else if aite == "チョキ" # チェックOK 処理なにもなし else if aite == "パー" # チェックOK 処理なにもなし else # 相手の手チェックエラー print("相手の手がおかしい( ゚Д゚)") # プログラム終了 exit end if # あいこ判定 if jibun == aite else # 必ず勝負が決まる為、flgをon flg = "on" # 勝負 if jibunn == "グー" if aite == "パー" result = "自分のまけ" else result = "自分の勝ち" end if else if jibunn == "パー" if aite == "チョキ" result = "自分のまけ" else result = "自分の勝ち" end if else if aite == "グー" result = "自分のまけ" else result = "自分の勝ち" end if end if end if } # 結果の出力 print(result) }
このように、プログラミングの対象としての抽象的なものをどんどん具体的に分解していくような思考ができれば、プログラミングが出来るようになります。
このあたりの技術は、いろいろな思考法が学べれば可能となります。
というか、プログラミングをやっていると勝手にロジカルシンキングが出来るようになります。
言語の習得難易度や、仕事のお役立ち度から考えると、3つお勧めします。
①EXCEL VBA
環境の構築や、実行時の動作も確認しやすく、普段の仕事の効率化もできる為、お勧め。
習得難易度も低め。
インタプリタ言語の為、1実行ステップごとに動作が確認できて初心者にもわかりやすい。
②Python
AIをやるならこの言語、AIをやるためのライブラリが用意されており、言語の書き方も簡単。
今後需要が伸びてくる言語。
③PHP
個人でお金を稼ぐために自分用のWebサイトを構築する際に役に立つ。
④その他
あとは、自分が何をするかによってどの言語を習得するかは変わってきます。
まずは、お勧めの言語を習得してほかの言語をやるのが良いでしょう。