
こんにちは!カーメンこと宮澤郷介です!今日はちょっとプログラムの話をします。
GLAYやミスチルの真似事もまあ楽しいのですが、収入的に現在は厚生年金と親の家賃と老齢年金での二世帯が生活ベースですが、資産形成の段階である20代30代の主収入は派遣SE/PGとしてのお給料です。その財源が税金であるか売上であるかは別問題です。
んでSEさんと言っても元請けでフィクションに近い仕様書を書いていて、現場であるマシンルームにメールやFAXで日本語文書に何らかの帳票などの付いた仕様書を送って、それを読んでプログラミングするのがPGの仕事ですが、おおむね上は「よきにはからえ」で忖度と膨大な知識で持って、下で全てを請け負わなくてはならないケースがあります。
そんなことも分からない読者にプログラミングをいちから説明して、現場が潤滑に回るようになるのか?という疑問はありますが、現場の技術者が案外と迷うのが「命名」です。
中高の数学くらいで出てくるx,yにf(x)というのが代数学と関数の基本形ですが、プログラミングというのは基本的に計算で「メモリ」というコンピュータの部品は電子のあるなしで数字に置き換えると0と1を表しており、その0,1列を大量に格納するのがメモリです。それをプロセッサに渡して演算する演算子の基礎はAND,NOT,OR,XOR,NANDなどですが、現代ではそれらを組み合わせて、二進数の0,1を10進のように扱い、四則演算を使って何かを計算するのが主なプログラミングです。
さて、x,yくらいなら手で計算するのは大変でも数学に強いと頭で計算できてしまいます。ではなぜコンピュータを使うのかと言うと、多項式が行き過ぎてx,y,zときて4つ目はどうしよう、もう10個20個になっちゃったというときに、メモリを使って記憶させるのが主な使い方です。3変数までならx,y,zで良いかもですが、将棋の駒を全部計算しようとなるとまず少なくとも40個くらい変数がいりそうですよね。
これはアセンブラの時代では変数名すらアドレスの数字でa~zも組み合わせてまるで暗号文でした。それがC言語の登場で、代数学的な代数に数字とアルファベットで何文字かの長さのある「名前」を付けられるようになったのが革新的で、そのためにアセンブラではなくC言語を使うようになり、上が仕様書で現場はC言語という体制が出来て行ったのだと思われます。
それで、この変数名に自分で名前を付けるというのが無学なものには難儀なことなのです。俺は後輩から「命名ってムズイっすよね」と言われると「辞書でも使え」と言って、老害から「ウソつくなお前辞書なんか使うか?」とキレられても、老害は工場で過ごした爺さんで、俺が普通科の高校卒なので、英単語とかの語彙量で中卒か工業高校卒を大いに上回ってしまっていっるのです。
ならいっそVisualBasicVB.NETでは日本語も使えるので、いっそ日本語にしてしまったら良いのではないかと思うのですが、老害はメモリが勿体ないとか色々と難癖をつけて、結局は仕事が簡単になって若手に干されるのが怖いのだろうという結論になりました。
だからfloat vxでもfloat vector_xでも変数としては型のfloatに意味があり、vxもvector_xでも実数をひとつ示している事は何ら変わりがなく、他の変数と名前被りが起こってコンパイラにかけるときに衝突による混同が起こらないか、というところこそ大事なのですが、じゃあvxなりvector_xって何を示す変数なのと言うと、物理数学のベクトルが分からないと「ベクトルのx成分を示します」と言って余計に分からない。そしてこれらは昔は単にxであったかもしれないし、ab11とかの名前になっていたかもしれないので昔のプログラムを読んで解析するのは難しいけど、それがその会社で大事な製品の仕様だったかもしれず、新入りが来て「ベクトルだからvxと名付けましょう」と会議で決めて変数をひとつ宣言するというようなペースでは現場のスピード感が出ず、プログラミングだけではなく英語や数学の分かるある程度の学力がある人の集団にどうしても寄って行ってしまうのです。
会社によっては「プログラムの書き方は個人の思想なわけだから、仕様は用事をまとめるにとどめて、あとは個人の裁量に委ねよう」という理解のある上司を演じている人もいますが、言い方を変えると「丸投げ」になるわけです。
技師の中には「もうC言語なんてたくさんだアセンブラに戻せ」という人もいますが、IT企業は反対にpythonとかにシフトして行っています。
しかし現場はあくまで現場でハードウェア寄りの仕事もあるわけで、アセンブラはそれはそれで必要ですが、この中途半端なC言語というのが今のところ俺の専門領域なのでVC++,VB.NETあたりで何故人が悩むのかというと、述べてきたように命名とそれにまつわる語彙量というのはひとつだなと。
ただ、名前が色々分かっても口で言葉を発して結局他人にプログラムをゆだねて働かない人というのも一定数いて、それは英語ではなく数学や物理にプログラミングが分からない人なわけですが、ITバブルで大量雇用された中にはそういうのも居座って営業と組んで悪さをしているものと思われます。
自分でも口頭で人に頼みごとをすると、当然同じように口真似をして人を使おうとするものが現れます。だから文書にすると読み上げるものが現れる危険性も考えられない事はないですが、まあ所感をまとめておこうと書きました。
そこにあるのはベクトルという単語にvxという変数名でも、文法的な意味があるわけではなく、計算の過程に科学的な意味があるわけです。
しかし現場が固いとプログラミングと基板設計のうちプログラミングは技師が打ち込めても何を打ち込んだらいいのかというところが分からないのに口頭ではなく書面で行けとなると、結局自分一人で全部することになり、他の人を雇用して並列展開する意味もありません。
20年のうちほとんどを自分一人プログラミング、周りが全部テストとデバッグという体制で動きながら、左に付いたものがテストやデバッグが実作業であるとふんぞり返って派遣というレッテルを貼られて窮地に追い込まれました。
だけど、ソフトウェアを作ったのは俺、宮澤郷介です。それも言いたかった。
まあ、ハードウェアが無いとプログラムはただの文字列でしか無いのも分かりますが。意味があるし、黒画面もしくは白っぺたにどんどん打ち込んで意味を成していける同業者というのは今までもほとんどネット越しにした出会ったことはありません。
だいたい東京に行っちゃうみたいですね。大阪だったカプコンもいつの間にか東京に本社移転しましたし。俺は親が地主なので、この太い実家を捨てて貧しくなって単身赴任で故郷に錦を飾るくらいの出世は無く、ただカネモのボンが家でして借金抱えて帰って来たという笑い話に近所ではなりました。
それからギター弾いて、自宅からの通勤で貯金して、今に至るわけです。
まあ、何が分からないかと言うと、たぶんプログラミングって今でも原始的に二進数とAND,NOT,OR,XOR,NANDなどで出来た「フローチャート」だと思われていて、そうじゃなくて整数や浮動小数点数で出来た数値演算もあるんだよというところと、数字の意味するところが分かっていないから、整数で出来るお金の計算くらいがトラディショナルに「実務」で関西で研究開発をしている人は本当に少ないのではと20年くらい前に思ったところです。
せっかく前半で綺麗にまとまったのに偉く長くなってしまいましたが、現場からは以上です。