回答編集履歴

1

本回答の修正

2021/06/29 08:48

投稿

BeatStar
BeatStar

スコア4962

test CHANGED
@@ -1,5 +1,99 @@
1
- まず、発想自体が根本から違います。
1
+ まず、**発想自体が根本から違います**
2
2
 
3
3
 
4
4
 
5
+ 学校で学ぶ、独学である……に関係なく、入門書やサイト, 教科書等に載っているのは
6
+
7
+ **あくまで基礎**であり、**道具です**。
8
+
9
+
10
+
11
+ そもそも、
12
+
13
+
14
+
15
+ プログラミング言語がある -> そうだ! ソフトを作ろう!
16
+
17
+
18
+
19
+ とかじゃないです。
20
+
21
+
22
+
23
+ 元々は軍事利用でした。
24
+
25
+ たとえば弾道計算や暗号解読とかです。
26
+
27
+
28
+
29
+ 一応、人間が手作業でやろうと思えばできますが、現実的じゃないです。
30
+
31
+
32
+
33
+ 暗号方式や時代によってはたかだか『おはよう』の4文字ですら、1カ月とかかかります。
34
+
5
- (今、まともな回答ができないで続き後で書きます)
35
+ (そこでは行かなくとも、平文わりに相当労力を使う)
36
+
37
+
38
+
39
+ ましてや軍事だと、速さが大事です。
40
+
41
+
42
+
43
+ なので、機械に任せようという発想に。
44
+
45
+
46
+
47
+ ですが機械は0と1からなる機械語(machine language)なるものしか認識できません。
48
+
49
+
50
+
51
+ でもその機械語は人間にとってはメンドクサイ。
52
+
53
+
54
+
55
+ そこでアセンブラとかが開発されました。
56
+
57
+ でもまだ問題があったのでC言語とかが開発されました。
58
+
59
+ でもまだ問題があったのでJavaとかが開発されました……
60
+
61
+
62
+
63
+ と言う風になっています。
64
+
65
+
66
+
67
+ つまり、プログラミングは「こう書けばいい」……というものではなく、
68
+
69
+
70
+
71
+ 『**プログラムは魔法でもなんでもなく、人間が現実世界でやっていることを逐一指示されながら処理しているだけの代物である**』です。
72
+
73
+
74
+
75
+ 簡単に言えば、『**現実世界で手作業でやっていることをシミュレーションしているだけ**』です。
76
+
77
+
78
+
79
+ 本来なら0と1からなる機械語( 0111100101100100010101010101010... のような ) ものをやらないといけませんが、人間にはつらいので人間の言語寄りのプログラミング言語で書き下すのです。
80
+
81
+
82
+
83
+ for文とか配列とか変数とかはそれらを表現するための道具です。
84
+
85
+ もちろん、関数とかもです。
86
+
87
+
88
+
89
+ なので、まずはその道具で表現できないか考える。
90
+
91
+ でも今回はできない(できるとは思いますが面倒な感じがある……)ので、
92
+
93
+
94
+
95
+ 『現実世界でならどうするか』を考えるのです。
96
+
97
+
98
+
99
+ そうすれば、ppaulさんの回答のようになるはずです。