(第13回)「プログラミングやりたくない!」〜下から目線のコーディング武者修行〜
“function”こぼれ話 〜その1〜
noteは自分の過去の「学習ノート」を素材にしてます。
今回から何回か、「プログラミングを学習しはじめて、詰まりに詰まった」部分をテーマにしてみようと。
自分の作ったノートをあらためて読み返してみると、まー、”function”に関する内容の多いこと多いこと。よっぽど分からなかったんだな(^∇^)
というわけで、ここから何回かは「初心者キラー」として有名な”function”について取り上げてみたいと思います。
[”function”に出会って困った3つのこと]
(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)と分かりました。
シェイクスピア以前の英文学で重要な人物と言えばこの人! 『カンタベリー物語』の作者チョーサー!
むかーし中世英語でさんざん読みましたが、まさかプログラミングの学習をしててチョーサーさんに再開するとは思わなんだ。
チョーサーさんは中世のイギリスでメチャ優秀なお役人だったらしく、当時の先進国イタリアまで国費留学してるくらいなので、数学もメチャできたみたい(本職は税関の職員)。
それでargumentsの由来は分かっても、なんでfunctionのときにだけ使うかのギモンは据え置き( ´ ▽ ` )ノ
*そのうち機会があったら、チョーサーが初めてargumentsを使った「Flanklin’s Tale」についても取り上げます
(3) “return”したものはどこに行くの?
argumentsに一応の決着が付いたと思ったら、いよいよ本丸の登場! functionを学びにくくしてる張本人! 「return」!(ヒドイ言われよう)
edXでPython学んでて気づいたんですが、functionも単純なものなら別にコンランはしなくて済む。
しかし「return」が出てくると話は別! 「return」を使うケースでは、急に何をやるのか分からなくなるという。
「おかしいなーおかしいなー」(©︎稲川淳二)とウンウン唸ったところで、returnの扱いが分かるわけではない。
一番ツラかったのは、
「何を調べればreturnが分かるようになるのか」、そのヒントが長いこと見つからなかった
こと。
プログラミングの世界は「習うより慣れろ」なのは、写経を通じて感じてましたが、一方でそういう「力技」ではどーにもならないカベがあるのも事実。
かといって、「何を調べたらいいかもわからない」状態だったので、こうした経緯から「プログラミングやーめた!」ってなってる人、多い気がする。
自分がついに掴んだヒントは、またしても「ハードウェア」にありました。
結局、コンピュータは機械(モノ)なので、
プログラミングでわからないことがあるときは、「ハードウェア」を見るのが近道
と分かりました。これに気づくまでが長い長い(^∇^)
で、肝心のreturnが分かりにくいことと、コンピュータのハードウェアがどう繋がってるの?
それについてはまた次回に!
この記事が気に入ったらサポートをしてみませんか?