こんにちは。Яei です。
当記事では「プログラミング」ついて、対話形式での分かりやすい解説致します。
Яei
今日は小学生の子どもからの質問「プログラミングって何?」について解説するよ。
学校でプログラミングの授業が始まるんだけど、何だか難しそうで嫌だなぁ・・・
目次
初めに
学ぶ意義
ねぇねぇ、プログラミングの授業って昔はなかったんでしょ?何で僕たちは勉強しなくちゃいけないの?
Яei
そうだね、だいたい2020年頃に必修化されたから科目に加わったのはここ最近だね。
結論から言うと、大人たちが「必要」だと判断したからだ。
また、身も蓋もないことを・・・パパたちもプログラミングの授業なかったんだよね?ずるい!
Яei
逆に言おう!プログラミングを学校で学べる方がずるい!!!
!!!
詳細説明
前提の確認
Яei
身の回りで、ITっぽいものって何があるかな?
うーん。スマートフォンとか、テレビ、パソコンかなぁ。あとはあ母さんと買い物に行くときはセルフレジでぴっぴするよ。
あとは、電車乗る時はお父さんはPASMOでぴってやってるかな。
Яei
正解!そして、驚くことに、これらすべて「プログラミング」が使われているんだ。
なんだって!?(プログラミングってなんだってばよ!)
機械に命令したい
Яei
先ほど挙げてもらった、スマホやテレビ、パソコン、セルフレジや改札機など、ひっくるめて機械と呼ぶことにしよう。
これらの機械は「レシピ」の通りに作業を実施してくれるんだ。上から順にレシピ通りに料理すればあら不思議!美味しいご飯の完成です。
ふむふむ
Яei
つまり、レシピがあれば機械さんにお仕事を頼めるわけだ。
この「レシピ作り」のことをプログラミングっていうんだ。
え!?そんな簡単なことなの?なぁんだ、簡単そうで安心したよ。
Яei
そうだろう?例えば次のようなものがレシピの例だよ。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
try {
System.out.print("入力してください: ");
String input = scanner.nextLine();
// デバッグログ
System.out.println("入力された文字列: " + input);
if (input.equals("おはよう")) {
System.out.println("おはようと返します");
} else if (input.equals("こんにちは")) {
System.out.println("こんにちはと返します");
} else {
System.out.println("不明な入力です");
}
} catch (Exception e) {
System.out.println("エラーが発生しました: " + e.getMessage());
} finally {
scanner.close();
}
}
}
難しいわ!!!!
レシピ作りの問題点(機械語難解問題)
パパ!僕、プログラミングとはお友達になれなさそうだよ!
おや?それはどうしてだい?
Яei
だって、さっきのよくわからないレシピ見せられても全然やる気が起きないよ!もはや日本語全然入ってないし!
Яei
ははは・・・それじゃ少しレシピに焦点を当てて話をしてみよう。
まず、機械さんがいるとしよう。
Яei
でも、機械さんは日本語が話せないんだ。
なんて言っているのか全然分からないよう!
Яei
そうなんだ。機械さんは「機械語」と呼ばれる言葉しか理解してくれないんだ。
だから、レシピを作るのはとても大変・・・というか普通の人にはできないといっても良いくらいだ。
普通の人は扱えないのならば、レシピって選ばれし人しか作れないのかな。。。
レシピ作りの問題点解消法
Яei
「機械語」でないと機械さんに命令できない。けれども「機械語」を普通の人は扱えない。
そんな問題点に答えるために偉い人は「通訳」をたてることにしたんだ。
なるほど。あれ、でも通訳見つけてくるのって大変なんじゃないの?
普通の人は機械語使えないんだよね?
Яei
お!いい質問だ。
実は通訳は「人」ではなくて「ツール」なんだ。
偉い人が「こういう文字はこう変換する」みたいなツールを作ってくれているんだ。
それなら、誰でも使えてすぐに機械さんに命令出せそうだね!
レシピ作りの問題点再び(プログラミング)
Яei
先ほどの話で、実は問題点があるんだ。
それは、通訳の「ツール」はすべての言語に対応できないという点だ。
ん?どういうこと?
Яei
「ツール」を作る側の立場に立って考えてほしい。
世界には 7,000 近くの言語がある。日本語、英語、中国語などなど。
そのすべて対応し、また、日本語だけで考えても例えば「これやって良い?」という質問に対して
「うん」「いいよ」「もちろん」「大丈夫だよ」などなど、いろんな回答ができてしまう。
これらすべてを機械語に翻訳する際に「よい」と翻訳しないといけないわけだけれども、言い回しが多すぎてこんなのすべて対応するのは不可能だ。
確かに、日本語だけでも難しいね。それを7,000近い言語も対応するとなると、通訳さんツールを作るのにどれほど時間がかかることやら・・・
Яei
そう。だから、偉い人は通訳さんとそれに対応する「プログラミング言語」を編み出したんだ。
プログラミング言語で書いたレシピは通訳さんは理解できるので、それを機械語に直してくれるんだ。
プログラミングとは何かはすでに述べているけれども、
プログラミングとは、プログラミング言語でレシピを書くこと
とも言えるね。
なるほど。つまり僕たちはプログラミング言語を学んで、偉大な先人が作ってくれた通訳ツールを通して機械さんに命令ができるようになるわけなんだね。
よし!僕勉強頑張るね!
後日談
聞いてよ!プログラミングの授業なのに、プログラミング言語の勉強が全然出てこないんだ!
僕はてっきり言語を学ぶのが授業内容だと思っていたのに!!!
Яei
プログラミングはプログラミング言語を用いて、レシピを作る作業だと話したよね。
でも、そもそも料理の知識や考え方が分からないとレシピなんて作れないよね?
いきなりプログラミング言語を学ぶより、まずは前提知識を学ぼうって方針なんだよ。
プログラミング的思考なんて都合よく表現したりしているけれども、これがないとそもそもプログラミングなんてできないからね。
そんなぁ・・・
Яei
今度一緒にプログラミング言語を学ぼうか!
うん!