misc.log

日常茶飯事とお仕事と

新人が先輩から変数宣言で嘘を教えられていたので訂正したときのメッセージ

1年目氏が先輩から微妙に嘘の説明を受けていたので、後から補足説明したときのメッセージが発掘されたのメモ。

変数の定義(宣言)について。


科学の世界では基本的に、新しい言葉を使う前にはその定義(意味などを定めること)を行う必要があります。


学術論文などを書く機会があれば分かるのですが、文中に新しい用語や、研究者が独自に定めた言葉や造語が有る場合は、必ずそれが何であるかを明記して、第三者が混乱しないようにするのが基本ルールです。ニュースになっている小保方さんのSTAP細胞に関する論文に対して、世界中の研究者が内容を査読、追試を行っていたことを見れば分かると思います(結果、意味が分からなかったり再現出来なければフルボッコ状態というのはご存じの通り)。


コンピューターのプログラムも基本は同じです。コンピューターが分かるように、この変数はどういう種類で、最初にはこの情報を設定しておけ、という「定義」は必ず必要です。


プログラム内で利用する変数を宣言する目的は、「有用だから」ではなく「必要だから」です。


ですが、その手間を省きたいという要望があり、宣言を「プログラムを読み解く処理にお任せする」という機能が追加されました。その結果がVBA(Visual Basic for Applications)などでの「宣言なしの変数利用」機能です。


しかしその結果「宣言なしでいきなり登場する変数は用途も内容も分かりづらい」という苦情が出てきて、「宣言をきちんとしなさいよ」ということになりました。プログラミング言語としては「省略もできる」だけであり「宣言できない」わけではないのに、使う側が勝手に省略するやりかたを常用して、使いづらいと苦情を言っている、という構図です。そこで「省略できるけど、きちんと書かないと後で読む人が苦労するよ」というのがよく言われる「宣言をきちんと書きなさい」の背景です。


微妙に理解のポイントがずれているような気がしたので、上記の話をちょっと記憶のどこかに引っかけておいてもらえるといいかもしれません。


ちなみに、略記してコンピュータ任せにするのはよくない、という風潮の一方で「コンピューターが判断できる宣言は省略しようよ」的な機能も登場しています。型推論という機能で、C#Javaなどをはじめとした言語で利用可能です。Visual Basicの型宣言省略とはちょっと異なるのですが、可読性よりは「見た目のすっきりさ」を優先するという感じでしょうか。

プログラミング言語の世界も言葉の使い方は日々変化し続けていますので、今の常識が10年後に通用するとは限りません。将来も応用が利くように、学んだことの背景やその根底にある考えに目を向けられるようにしていきましょう。


コンピューターの基本原理はおそらくここ30年、そんなに変わっていません。
ただ、コンピューターと人間の間にあるソフトウェアは大きく変化していますし、この先もたぶん変わります。そこの変化の過程に目を向けるくらいの余裕が出来ると、将来の「未知の技術」にも柔軟に対応出来ると思います。まだ目の前の事を片付けるのに精一杯でしょうけど、可能であれば、すこし物事を俯瞰して眺める視点をもってみることをオススメします。