目 次
宝を探しに行きませんか。
スタートは 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歩ですよ
この問題には、前提条件が無いのです。
指示の方向に進む場合は、進行方向に体を向けてから進むの前提条件があれば、宝物が取れたと思います。
① もしも違う場所だったら、正解の場所を教えて下さい。
なぜ、その場所にたどり着くかを考えさせて下さい。
問題が出来たら、グループや隣同士で出題しあい指示通りに動けば宝物の場所には辿り着けるでしょう。
その時、正確に辿り着くには工夫が必要だと付け加えて下さい。
この工夫は「前提条件」になります。
カニ歩き(将棋の駒の動き)か、必ず進行方向を向いてから進むか、の指示があれば宝物にたどり着くでしょう。
プログラムを作成するあたり、結果が出ればOKです。そのためには正確な指示を出すことですが、これが難しい。だから「エラー」が生じます。プログラムになれたら、使う人の立場になってインターフェイスや設定を考えればいいにので、取り敢えずなれることです。
① プログラムは動けばいい
② 正確な指示を出すこと。
③ 親切丁寧
プログラムは動けばいいと私は思っています。初心者がプログラムを組んで動けば上等です。独学で本を買って学ぶ場合、「サルでもわかる・・・」とか「初心者のための・・・」とか言う本がありますが、これ難しいよて本はよくあります。これか始めるなら「絵本シリーズ」がおススメで、出来るようになったら、もう少し高度な内容にステップアップすればいいと思います。プログラムも読めるようになるので簡潔なプログラムを知ることが出来ます。
だから、問題2は辿り着けば正解、プログラムは動けばいいと言う事です。
○例えると
楽器 | プログラム | |
① | トランペットの音階を吹けるようになる | 数行のプログラム・実行できるようになる |
② | 曲が吹ける | 自分の考えたプログラムを作れ様になる |
③ | 聴衆に聞かせるレベルまでなる | 他の人が使えるレベルまでになる |
④ | プロになる | プロになる |
簡単にプログラムは書けません。簡単に書けたらプログラマの仕事ではお金は稼げませんよね。でも、演奏家になるよりプログラマになる方法が敷居は低いですがね。
例えば
○ 低水準言語 or 高水準言語
○ サーバサイド or フロンtサイド
サーバーサイド : サーバで動くプログラム
フロントエンド:ユーザ(自分で使用している)側で使用していつもの
○ インタープリタ or コンパイラ
インタープリタ : プログラムを1行ごとの実行する
コンパイラ :プログラムを実行ファイルに変換してから実行する。
○ 静的型付け or 動的型付け
静的型付け : 変数の型が基本的には変わらない
動的型付け:変数の型にこだわらない、宣言しない。
などがありますが、でもプログラム初心者がこの選択方法を意識してプログラム言語を学習しようと思う人はまずいないとお思います。
インタープリタとコンパイラをもう少し詳しく説明すると
インタープリタ 逐次翻訳型 |
コンパイラ(C言語) 一括翻訳型 |
|
図 | ||
翻訳回数 | プログラム実行時に1行ずつ翻訳する | 実行形式プログラムの作成時1回 |
実行速度 | 低速 | 高速 |
-
-
- ソースコード
プログラミング言語で書かれたコンピュータプログラム - インタープリタ
プログラムの実行時にコードを1行ずつ機械語に翻訳 - プリプロセッサ
コンパイル前の準備処理
コメントの削除
ファイルのインクルード
マクロの展開 - コンパイラ
ソースファイルやヘッダーファイルに記述されたコードを機械語に翻訳(コンパイル)し、オブジェクトファイルを作成
オブジェクトファイル - 翻訳されたプログラムソース - アセンブラ
アセンブリ言語をオブジェクトファイルに変換するアセンブル処理 - リンカ
オブジェクトファイルやライブラリファイルを結合して1つの実行ファイルを作成 - ライブラリ
機械語で書かれた関数やデータの集まり
標準ライブラリー関数の実体もファイルの中にある
必要な部分だけを抜粋してリンク - ビルド
ソースコードから実行ファイルまでの一連の処理
- ソースコード
-
-
- インタープリタ
JavaScript
Python
Ruby
PHP etc - コンパイラ
C言語
Java
C++
C# etc
- インタープリタ
○ Pythonなどはインタプリタに分類されていますがコンパイルも可能な言語もあります。
○ 処理速度ですがコンパイラの方がインタプリタより早いですが、コンピュータの性能も向上しているため処理速度はあまり考えなくてもいいと思います。また、用途によって言語は使い分けているため、選んだ言語がコンパイラの形式だったと言うことです。
○ 学習難易度はコンパイラ言語のほうが高く、学習難易度が比較的低いインタプリタ言語と言われています。
○ はじめにコンパイラ言語を学んだ方が、他言語を学びやすいと思います。
初心者が好奇心やスキルアップや授業や子供に教えるためにプログラミングを始めるなら、
- C言語/C++
- JAVA
- Python