見出し画像

(第13回)「プログラミングやりたくない!」〜下から目線のコーディング武者修行〜

“function”こぼれ話 〜その1〜

noteは自分の過去の「学習ノート」を素材にしてます。

今回から何回か、「プログラミングを学習しはじめて、詰まりに詰まった」部分をテーマにしてみようと。

自分の作ったノートをあらためて読み返してみると、まー、”function”に関する内容の多いこと多いこと。よっぽど分からなかったんだな(^∇^)

というわけで、ここから何回かは「初心者キラー」として有名な”function”について取り上げてみたいと思います。

[”function”に出会って困った3つのこと]

画像1

(1) 「関数」「引数」「戻り値」という日本語がシックリこない

このnoteで再三繰り返す「プログラミング用語」のモンダイ。functionはそれが特にひどかったという思いが。

「関数」は「かんすう」でいいとしても、「引数」が「ひきすう」(Not「いんすう」)、「戻り値」は「もどりち」など、日本語の表記からしてすでにコンランを呼び寄せる気配が(^∇^)

自分で数学を学び直してわかったのですが、

自然言語がトクイな人は、すべての発想を「連想型」で処理する

傾向があるみたいです。

一方、

数的処理がトクイな人は「記号から処理内容に直結」して考えられる

そのため、記号や用語の字面にとらわれないで済むという。

自然言語派の人が理数の学習に向かったとき、「記号から意味を連想してしまう」ため、それが理解を阻んでいる様子。

さっきの「関数」「引数」「戻り値」なら自然言語派はこう考えるんじゃないでしょうか:

・「関数」→「関係する数」→何と何が関係するの?
・「引数」→「数字を引いてくる」→どこから何を引いてくるの?
・「戻り値」→「戻ってくる値」→どこから何が戻ってくるの?

なんて。

ところが実際にfunctionをやってみると、さっきの「連想」と「処理内容」が乖離してるので混乱に拍車がかかってしまうという。

もちろん気にしなければいいんですが、名前とやることが違うのは自然言語派的にはかなりキビシイ。

*反対に理数の処理がトクイな人は、自然言語を学ぶときに「連想しろと言われるとツライ」となるのかも。

「連想型」のニンゲンが連想しないようにするのはどだいムリな話なので、全部英語にすることで乗り切りました。

*あのまま、「かんすう」「ひきすう」「もどりち」でやってたら、とっくにプログラミングやめてただろうな……(遠い目( ´_ゝ`))

(2) “function”の時だけ出てくる”arguments”ってナニ?

オールEnglishでプログラミングを学び、edXの各種コースであらためてfunctionに取り組むーー

それはいいんですが、動画講義を聞いているとfunction関係でしか使われない用語が。

それがarguments。トーゼン、「議論」とかいう意味ではない( ´ ▽ ` )ノ

どーもやる内容を見ていくと、フツーの文脈なら「変数variable」なのに、functionでカッコに入れる時だけ「arguments」に変身するみたい。

言ってても仕方ないので、実例を書くとこんな感じ。

var f = function (arguments1, arguments2) { 
    //method()
};

*おお、このnoteに初めてコードが出てきたぞ。13回目にして初だ(´∀`)
*自分ではTypeScriptやES6以降の書き方をしますが、なるべくフツーのJavaScript形式で書いておきました

functionの右隣のカッコに入るときだけ、variableからargumentsにヘンシン!  

なんで変身しちゃうのか、考えたところで分かりっこないので、またしてもOED大先生(全20巻)に頼ることに。

自分が作ってる「Tech語源辞典」を見ると、あったあったありました。argumentsの項目が。しかしOEDで調べた当人もよくわかってない始末。

・Arguments
argumentを調べたら余計にわからなくなった
arguments
argue,
1.to bring evidence, convict, prove, indicate
[argumentの語釈]
2.Astr. and Math.The angle, arc, or other mathematical quantity, from which another required quantity may be deduced, or on which its calculation depends.
[チョーサーの実例]
c1386 CHAUCER Frankl.T. {Franklin’s Tale} 549
Hise othere geeris, As been his centris and his Argumentz

とりあえず、世界で初めて、数学用語としてのargumentsを使ったのが、ジェフリー・チョーサー(Geoffrey Chaucer)と分かりました。

画像2

シェイクスピア以前の英文学で重要な人物と言えばこの人! 『カンタベリー物語』の作者チョーサー!

むかーし中世英語でさんざん読みましたが、まさかプログラミングの学習をしててチョーサーさんに再開するとは思わなんだ。

チョーサーさんは中世のイギリスでメチャ優秀なお役人だったらしく、当時の先進国イタリアまで国費留学してるくらいなので、数学もメチャできたみたい(本職は税関の職員)。

それでargumentsの由来は分かっても、なんでfunctionのときにだけ使うかのギモンは据え置き( ´ ▽ ` )ノ

*そのうち機会があったら、チョーサーが初めてargumentsを使った「Flanklin’s Tale」についても取り上げます

(3) “return”したものはどこに行くの?

argumentsに一応の決着が付いたと思ったら、いよいよ本丸の登場! functionを学びにくくしてる張本人! 「return」!(ヒドイ言われよう)

edXでPython学んでて気づいたんですが、functionも単純なものなら別にコンランはしなくて済む。

しかし「return」が出てくると話は別! 「return」を使うケースでは、急に何をやるのか分からなくなるという。

「おかしいなーおかしいなー」(©︎稲川淳二)とウンウン唸ったところで、returnの扱いが分かるわけではない。

一番ツラかったのは、

「何を調べればreturnが分かるようになるのか」、そのヒントが長いこと見つからなかった

こと。

プログラミングの世界は「習うより慣れろ」なのは、写経を通じて感じてましたが、一方でそういう「力技」ではどーにもならないカベがあるのも事実。

かといって、「何を調べたらいいかもわからない」状態だったので、こうした経緯から「プログラミングやーめた!」ってなってる人、多い気がする。

自分がついに掴んだヒントは、またしても「ハードウェア」にありました。

結局、コンピュータは機械(モノ)なので、

プログラミングでわからないことがあるときは、「ハードウェア」を見るのが近道

と分かりました。これに気づくまでが長い長い(^∇^)

で、肝心のreturnが分かりにくいことと、コンピュータのハードウェアがどう繋がってるの?

それについてはまた次回に!

#プログラミング
#学習法
#数学史

この記事が気に入ったらサポートをしてみませんか?