回答編集履歴
3
重複部分の削除、まとめたり、サブタイトルつけたり
answer
CHANGED
@@ -2,19 +2,33 @@
|
|
2
2
|
「プログラミング言語と数学の共通点は何でしょう?」って質問には、
|
3
3
|
「そもそも何も共通点なんてねーよ」が正解。
|
4
4
|
|
5
|
-
プログラ
|
5
|
+
## 何故共通点が無いはずのプログラミング言語と数学が似てるの?
|
6
|
+
|
6
|
-
|
7
|
+
コンピュータは膨大な計算を任せたい数学者に需要が多くあり早い段階で受け入れられたので、
|
7
8
|
C言語を始めとする一部のプログラミング言語が数式に寄せて設計されたという話。
|
8
9
|
|
9
10
|
ところがC言語の本業は命令を処理することであり、数学を完全再現することじゃない。
|
10
11
|
そもそも上付き文字や下付き文字や分数がパソコン上で表現出来ない以上、数列や階乗なんて表現するのは絶対無理。
|
11
12
|
|
12
13
|
従って、プログラミング言語は数学の式の模倣(エミュレート)でしかない。
|
13
|
-
当然再現率もプログラミング言語によってまちまちってわけ。
|
14
|
-
|
14
|
+
階乗の代わりに`pow(a, b)`という関数を用意しました、数列は無いけど配列はある、みたいな別の書き方や逃げ方で数学の多くの部分を再現することに成功しているけど、再現率もプログラミング言語によってまちまちってわけ。
|
15
15
|
|
16
|
-
|
16
|
+
数学の式の再現に関しては、他の回答者さんが答えてくれているので割愛。
|
17
17
|
|
18
|
+
## コンピュータの本来の役割って何?
|
19
|
+
|
20
|
+
でもコンピュータに求められる役割はそれだけじゃない。
|
21
|
+
コンピュータの本業は「仕事の自動化」になるわけだ。
|
22
|
+
|
23
|
+
だからプログラミングのもう一つのゴールは「ネイティブな文章の評価」。
|
24
|
+
もしこれに成功すれば、論理的思考が出来る全ての人間がコンピュータという超有能な秘書を駆使してバリバリ仕事をこなせるようになる。
|
25
|
+
こっちは50年程経った今もまだまだ試行錯誤中。
|
26
|
+
|
27
|
+
プログラミング言語はマイナーな言語も含めると200種類以上に登る。
|
28
|
+
その中には数学なんて知った事ではない、英文なんて知った事ではないと考えて作られたプログラミング言語も多数存在する。
|
29
|
+
有名な言語で言うとSQLとかね。
|
30
|
+
(SQLはプログラミング言語ではないけど、ルールに沿って作られたネイティブの英文をデータベースに送りつけて望むデータを引き出す事ができる)
|
31
|
+
|
18
32
|
---
|
19
33
|
|
20
34
|
以下、質問文の引用部分に対するツッコミ
|
@@ -27,17 +41,14 @@
|
|
27
41
|
→2進数の計算は超得意だけど10進数の計算はできない
|
28
42
|
→10進数計算できないとか論外!プログラミングを利用して10進数の計算を実現した
|
29
43
|
→機械語じゃ使いづらい!簡単な英文を受け入れるアセンブラ言語が生まれた
|
30
|
-
→アセンブラも
|
44
|
+
→アセンブラも使いづらい!英文や数式をそのまま命令に認識して欲しい(高級言語の開発が急がれる)
|
31
|
-
→高級言語の開発が急がれる ← 1960〜1970年頃の話
|
32
45
|
|
33
|
-
コンピュータの自動化に真っ先に目をつけたのが膨大な計算を任せたい数学者達だった(ここは憶測だけど)
|
34
|
-
|
46
|
+
四則演算を表現することはわりと実装が簡単だったし需要もあった。
|
35
|
-
数式に寄り添うプログラミング言語が次々と生まれ、支持され、開拓されていった。
|
47
|
+
数式に寄り添うプログラミング言語が次々と生まれ、支持され、開拓されていったという話。
|
36
|
-
(だから事象だけ見ればプログラミング言語の構文が数学に似たものというのは間違いではない)
|
37
48
|
|
38
|
-
|
49
|
+
その一つ(C言語)の言語を指して「似たものとなるのは当然」と言われても、
|
39
|
-
もしこれに成功すれば、論理的思考が出来る全ての人間がコンピュータという超有能な秘書を駆使してバリバリ仕事をこなせるようになる。
|
40
|
-
|
50
|
+
似るように作ったのだから似てるのは当然でしょ。
|
41
51
|
|
42
|
-
プログラミング言語はマイナーな言語も含めると200種類以上に登る。
|
43
|
-
|
52
|
+
他にも新しいものを作る時は別の分野の再現や発想を得たりするけど、その時はインスパイア元の名前がそのまま使われる事が多い。
|
53
|
+
ほら、セーターだってタートルネック(亀の襟)とか名付けたりするじゃん?
|
54
|
+
あれと同じで、コンピュータに変数や関数を数学の世界から拝借してその機能を作ったって話。
|
2
高級言語絡みの一文を追加
answer
CHANGED
@@ -28,11 +28,12 @@
|
|
28
28
|
→10進数計算できないとか論外!プログラミングを利用して10進数の計算を実現した
|
29
29
|
→機械語じゃ使いづらい!簡単な英文を受け入れるアセンブラ言語が生まれた
|
30
30
|
→アセンブラもやっぱり使いづらい!英文や数式をそのまま命令に認識して欲しい
|
31
|
+
→高級言語の開発が急がれる ← 1960〜1970年頃の話
|
31
32
|
|
32
|
-
コンピュータの自動化に真っ先に
|
33
|
+
コンピュータの自動化に真っ先に目をつけたのが膨大な計算を任せたい数学者達だった(ここは憶測だけど)
|
33
34
|
また四則演算を表現することはわりと実装が簡単だったのもその理由の一つだろうね。
|
34
|
-
数式に寄り添うプログラミング言語が支持され、
|
35
|
+
数式に寄り添うプログラミング言語が次々と生まれ、支持され、開拓されていった。
|
35
|
-
(だから事象だけ見ればプログラミング言語の構文が数学に似たものとな
|
36
|
+
(だから事象だけ見ればプログラミング言語の構文が数学に似たものというのは間違いではない)
|
36
37
|
|
37
38
|
でも、コンピュータの最終的なゴールはネイティブな文章の評価。
|
38
39
|
もしこれに成功すれば、論理的思考が出来る全ての人間がコンピュータという超有能な秘書を駆使してバリバリ仕事をこなせるようになる。
|
1
校正
answer
CHANGED
@@ -2,37 +2,41 @@
|
|
2
2
|
「プログラミング言語と数学の共通点は何でしょう?」って質問には、
|
3
3
|
「そもそも何も共通点なんてねーよ」が正解。
|
4
4
|
|
5
|
+
プログラムやコンピュータの本業は「仕事の自動化」
|
6
|
+
でも膨大な計算を任せたい数学者に需要が多くあり早い段階で受け入れられたので、
|
5
|
-
|
7
|
+
C言語を始めとする一部のプログラミング言語が数式に寄せて設計されたという話。
|
6
8
|
|
7
|
-
数学者の「数学でいうアレはどうやって表現すればいい?」要望からプログラミング言語は進化していったわけで、
|
8
|
-
|
9
|
+
ところがC言語の本業は命令を処理することであり、数学を完全再現することじゃない。
|
10
|
+
そもそも上付き文字や下付き文字や分数がパソコン上で表現出来ない以上、数列や階乗なんて表現するのは絶対無理。
|
9
11
|
|
12
|
+
従って、プログラミング言語は数学の式の模倣(エミュレート)でしかない。
|
13
|
+
当然再現率もプログラミング言語によってまちまちってわけ。
|
14
|
+
まぁ、階乗の代わりに`pow(a, b)`という関数を用意しました、数列は無いけど配列はある、みたいな別の書き方や逃げ方で数学の多くの部分を再現することに成功しているけど、その辺も言語次第かな。
|
15
|
+
|
16
|
+
その模倣(数学の式の再現)に関しては、他の回答者さんが答えてくれているので割愛。
|
17
|
+
|
10
18
|
---
|
11
19
|
|
12
20
|
以下、質問文の引用部分に対するツッコミ
|
13
21
|
|
14
22
|
> 全ての情報を数値で表し、それを演算するのがコンピュータなのですから、プログラミング言語の構文が数学に似たものとなるのは当然です。
|
15
23
|
|
16
|
-
因果関係が逆
|
24
|
+
因果関係が逆じゃない?
|
17
|
-
そもそも数学の式っぽく命令を記述するC言語が流行ったからでしょ。
|
18
|
-
確かにC言語が後の言語に与えた影響はでかいけど、当然という要素はない。
|
19
|
-
何故ならばコンピュータの用途は「仕事の自動化」だから。
|
20
25
|
|
21
26
|
コンピュータってのは元々機械語(0101)しか認識出来ない
|
27
|
+
→2進数の計算は超得意だけど10進数の計算はできない
|
28
|
+
→10進数計算できないとか論外!プログラミングを利用して10進数の計算を実現した
|
22
|
-
→使いづらい!簡単な英文を受け入れるアセンブラ言語が生まれた
|
29
|
+
→機械語じゃ使いづらい!簡単な英文を受け入れるアセンブラ言語が生まれた
|
23
|
-
→やっぱり使いづらい!英文や数式をそのまま認識して欲しい
|
30
|
+
→アセンブラもやっぱり使いづらい!英文や数式をそのまま命令に認識して欲しい
|
24
31
|
|
25
|
-
要件はざっくり分けると以下の2つ
|
26
|
-
|
27
|
-
- 自然な英文をダイレクトに命令に変換する
|
28
|
-
- 数学の式をダイレクトを命令に変換する
|
29
|
-
|
30
32
|
コンピュータの自動化に真っ先に価値を見出したのは膨大な計算を任せたい数学者達だった。
|
31
|
-
|
33
|
+
また四則演算を表現することはわりと実装が簡単だったのもその理由の一つだろうね。
|
34
|
+
数式に寄り添うプログラミング言語が支持され、また優先的に開拓されていった。
|
35
|
+
(だから事象だけ見ればプログラミング言語の構文が数学に似たものとなる)
|
32
36
|
|
33
|
-
でもコンピュータの用途は仕事の自動化であり、計算だけがその対象ではない。
|
34
|
-
最終的なゴールはネイティブな
|
37
|
+
でも、コンピュータの最終的なゴールはネイティブな文章の評価。
|
35
|
-
こ
|
38
|
+
もしこれに成功すれば、論理的思考が出来る全ての人間がコンピュータという超有能な秘書を駆使してバリバリ仕事をこなせるようになる。
|
39
|
+
こっちは50年程経った今もまだまだ試行錯誤中って印象。
|
36
40
|
|
37
41
|
プログラミング言語はマイナーな言語も含めると200種類以上に登る。
|
38
|
-
その中には数
|
42
|
+
その中には数学なんて知った事ではない、英文なんて知った事ではないと考えて作られたプログラミング言語も多数存在する。
|