コンピュータを知ろう 初級 ~ 基礎編

プログラミングはどのようにすればいいですか
  コンピュータは気象シミュレーションやAI技術により自動運転から文章作成・表計算・図形作成・インターネット・動画・画像・音楽の編集などで様々な分野で使われています。このコンピュータはどのような構成になっているのでしょうか。大きく分けるとハードウエアとソフトウェアの二つに分類できます
プログラミングの話をする前に

宝を探しに行きませんか。

スタートは S の位置から始めて、前に1歩進むとP8の位置にきます。

問題1 前に5歩、左に3歩、右に2歩、右に3歩、前に3歩、何処にありましたか ?

問題2 AからBに行くのにどの道を選ぶのが正解ですか?

正解は

 

○問題1はG8の所に宝があります。I10にはありません。

5歩前進してから   L8
次に左に3歩進み進む場合、
①将棋の駒の様に体は正面を向いたまま横歩きで移動するか
②左に移動する場合は、左に体を向けてから移動するか
ここまでは同じ位置にいます。  L5

次の指示 右に2歩 ここで位置が変わってきます。

①駒の動き右側に横歩きで2歩  J5
②右向け右で前進2歩      L7

次の指示 右に3歩
①駒の動き右側に横歩きで2歩  L10
②右向け右で前進2歩      J8

次の指示 前に3歩
①駒の動き右側に横歩きで2歩  I10
②右向け右で前進2歩      G8

 

○問題2は全て正解です。

道に問題がなければ、多少遠回りしようがBまで行ければOKです。
もしも、最短でと言う条件があれば、②になります。

解答のまとめ

   人と人が会話をする時、表情や声の大小や口調などから、相手の感情や状態を察して行動することが出来ます。しかし、コンピュータは指示した通りに動いてくれますが、間違った指示だと間違った通り結果か、動かないかになります。

問題1は自分が地図を持って歩くと分かります。少し歩数を増やすともっと実感できます。
例えば、前に15歩、左に10歩、右に12歩、右に10歩、前に16歩、何処にありましたか ?
左に10歩の部分 カニ歩きで10歩ですよ
この問題には、前提条件が無いのです。
指示の方向に進む場合は、進行方向に体を向けてから進むの前提条件があれば、宝物が取れたと思います。

人にこの問題1を解かせる場合は
① もしも違う場所だったら、正解の場所を教えて下さい。
  なぜ、その場所にたどり着くかを考えさせて下さい。
② 宝物の位置を決めてから、5回方向を変えて宝物にたどり着く経路を作成させて下さい。

問題が出来たら、グループや隣同士で出題しあい指示通りに動けば宝物の場所には辿り着けるでしょう。
その時、正確に辿り着くには工夫が必要だと付け加えて下さい。
この工夫は「前提条件」になります。
カニ歩き(将棋の駒の動き)か、必ず進行方向を向いてから進むか、の指示があれば宝物にたどり着くでしょう。

プログラム作成時のポイント

  プログラムを作成するあたり、結果が出ればOKです。そのためには正確な指示を出すことですが、これが難しい。だから「エラー」が生じます。プログラムになれたら、使う人の立場になってインターフェイスや設定を考えればいいにので、取り敢えずなれることです。

  ① プログラムは動けばいい
  ② 正確な指示を出すこと。
  ③ 親切丁寧

プログラムは動けばいいと私は思っています。初心者がプログラムを組んで動けば上等です。独学で本を買って学ぶ場合、「サルでもわかる・・・」とか「初心者のための・・・」とか言う本がありますが、これ難しいよて本はよくあります。これか始めるなら「絵本シリーズ」がおススメで、出来るようになったら、もう少し高度な内容にステップアップすればいいと思います。プログラムも読めるようになるので簡潔なプログラムを知ることが出来ます。

だから、問題2は辿り着けば正解、プログラムは動けばいいと言う事です。

○例えると

  楽器 プログラム
トランペットの音階を吹けるようになる 数行のプログラム・実行できるようになる
曲が吹ける 自分の考えたプログラムを作れ様になる
聴衆に聞かせるレベルまでなる 他の人が使えるレベルまでになる
プロになる プロになる

簡単にプログラムは書けません。簡単に書けたらプログラマの仕事ではお金は稼げませんよね。でも、演奏家になるよりプログラマになる方法が敷居は低いですがね。

プログラミングはどの言語で始めますか。
 コンピュータが唯一解る言語は機械語(マシン語)です。  どんな言語も全て機械語に翻訳されてコンピュータは動いています。この機械語は2桁の16進数の組み合わせでできています。16進数と2進数は相互の変換はスムーズに行えるため、機械語からディジタル信号に変換された信号はコンピュータを指示通り動かせます。しかし、はっきり言って機械語をプログラミング言語として習得するには難易度が高すぎて、殆んどの人達は無理です。  機械語の事を低水準言語または、低級言語と呼ばれています。
低水準言語 と 高水準言語
 低水準言語とはコンピュータが解りやすい言語

機械語やアセンブリ言語があります。
 高水準言語とは人間が解りやすい言語
皆さん聞いたことのあるBASIC、C言語、C++、Java、PHP、Python、Ruby、COBOL、HTMLなどがあります。
 一般的にプログラム言語とは高水準言語のことを言います。
高水準言語
高水準言語のプログラム言語の分類の方法は幾つもあります。

例えば
   ○ 低水準言語 or 高水準言語
   ○ サーバサイド or フロンtサイド
      サーバーサイド : サーバで動くプログラム
      フロントエンド:ユーザ(自分で使用している)側で使用していつもの
   ○ インタープリタ or コンパイラ
      インタープリタ : プログラムを1行ごとの実行する
      コンパイラ  :プログラムを実行ファイルに変換してから実行する。
   ○ 静的型付け or 動的型付け
      静的型付け : 変数の型が基本的には変わらない
      動的型付け:変数の型にこだわらない、宣言しない。
  などがありますが、でもプログラム初心者がこの選択方法を意識してプログラム言語を学習しようと思う人はまずいないとお思います。

インタープリタ or コンパイラ

インタープリタとコンパイラをもう少し詳しく説明すると

  インタープリタ
逐次翻訳型
コンパイラ(C言語)
一括翻訳型
翻訳回数 プログラム実行時に1行ずつ翻訳する 実行形式プログラムの作成時1回
実行速度 低速 高速
      • ソースコード
        プログラミング言語で書かれたコンピュータプログラム
      • インタープリタ
        プログラムの実行時にコードを1行ずつ機械語に翻訳
      • プリプロセッサ
        コンパイル前の準備処理
        コメントの削除
        ファイルのインクルード
        マクロの展開
      • コンパイラ
        ソースファイルやヘッダーファイルに記述されたコードを機械語に翻訳(コンパイル)し、オブジェクトファイルを作成
        オブジェクトファイル - 翻訳されたプログラムソース
      • アセンブラ
        アセンブリ言語をオブジェクトファイルに変換するアセンブル処理
      • リンカ
        オブジェクトファイルやライブラリファイルを結合して1つの実行ファイルを作成
      • ライブラリ
        機械語で書かれた関数やデータの集まり
        標準ライブラリー関数の実体もファイルの中にある
        必要な部分だけを抜粋してリンク
      • ビルド
        ソースコードから実行ファイルまでの一連の処理
プログラム言語はインタープリタか 
    • インタープリタ
      JavaScript
      Python
      Ruby
      PHP     etc
    • コンパイラ
      C言語
      Java
      C++
      C#     etc

○ Pythonなどはインタプリタに分類されていますがコンパイルも可能な言語もあります。

○ 処理速度ですがコンパイラの方がインタプリタより早いですが、コンピュータの性能も向上しているため処理速度はあまり考えなくてもいいと思います。また、用途によって言語は使い分けているため、選んだ言語がコンパイラの形式だったと言うことです。

○ 学習難易度はコンパイラ言語のほうが高く、学習難易度が比較的低いインタプリタ言語と言われています。

○ はじめにコンパイラ言語を学んだ方が、他言語を学びやすいと思います。

まとめ

初心者が好奇心やスキルアップや授業や子供に教えるためにプログラミングを始めるなら、 

  •  C言語/C++
  •  JAVA
  •  Python
 この3つ言語の中から始めれば、問題ないと思います。出来れば、C言語を少し学んでから他の言語を始めた方が後々簡単になりますよ。Ⅽ言語は最初に変数と型の宣言をしなければなりません。と言うことはプログラムを作る時点で変数と型を用意する必要があります。これを静的変数といいます。これに対して変数があれば型は値によって変わることができます。これを動的変数といいます。静的変数を体験してからの方が理解しやすいと思います。プログラミングの基礎は3つの基本構造です。プラス オブジェクト指向の考え方がある程度です。この3つの基本構造を理解しプログラム言語を学習すれば、他の言語を覚えるのはさほど難しくはありません。
     

目次