SANMAN

思いつきの考えを垂れ流すブログ

独学に必要なこと(個人の感想)

なんかながい

いま、ポエムを書くとき

電子計算機はどのように実現されているのか?
どうやってアプリケーションが実行されているのか?
インターネットはどうやって実現されているのか?

「コンピュータに関するすべて」を理解したくて情報系の学科に入ったはいいが、本を読んでも、授業を受けてもピンとこない。本での独学厳しい...という愚痴を見た。前半は日本語でおkと言いたくなる文だが、気分が落ち着いてから書かれた後半は割と普通。
anond.hatelabo.jp

興味はあるみたいだけど、立ち止まってるという「なにしに金払って情報学科に通っているんだ?」という状態。 教員にメールでも送って、その良く理解できない本を持参してアポとって質問しに行けばいいじゃないか。
独学の仕方がわからないとか、そういうのも質問すればいいじゃないか。
と言いたいが、この受け身な状態や、イメージがつかない感覚は非常に身に覚えがあるのでわからんでもない。

ブコメではボロカスに言われているが、興味を持っている対象はとても良いと思う。

OSより下の階層、たとえばALUとメモリの組み合わせで、program counterを進めながら動いてるんだよーという感覚はあるので、 それがOSとどういう風につながってるのか、とか、100均で売ってる電卓、あのデジタル表示の部分がどういう仕組みで動いてるの、ということを考えたり、 インターネットプロトコルでパソコンが具体的にどういうパケットを送信しているんだろう

どうなっているんだろうと不思議に思えるというのはひとつの才能だと思うから、立ち止まらずに取り組めば良いエンジニアになれるのではないか。
今、理解したいと思っている内容は正解やお手本がある段階のものだし、まだ若さも時間もあるし、指導者もいる。
天才でもなければ、まずはよくわからないまま手を動かして失敗して、たくさんの文献から正解を探したり、ネットできいてまた手を動かして...をひたすら繰り返すしかないと思う。 百均の電卓バラしてFPGAにつないでベアメタルソフトウェア(OSなしのソフトウェア)でも書けば、だいぶ理解が進むと思う。
ラズベリーパイとかでもまぁいいけど、CPUに必要なものが自作できるし試せるから、再開発可能な車輪がたくさんある。 ARM搭載FPGAとかにしておけば、FPGA領域に手を出せなくてもラズベリーパイと同じくARMマイコンボードとして使える。

学校の授業は無意味なものではなく、やりなおしの勉強するときや、技術的に新しいことに挑戦する際の基礎体力みたいなものとして意味がある。多くの人にとっての英語や数学みたいなものだろう。

自分は就職活動しているときの求人情報でFPGAの存在を知って、「CPUとか作れるんだ。へー、おもしろそう」ってだけの興味本位で潜り込んだために、半導体関連のまともな教育を受けていなかったデメリットをとても感じている。とりあえずの仕事になれてきて色だそうとすると今までのツケがのしかかる。 記憶の片隅に残っているのと、ゼロからスタートではだいぶ辛さ違うと思う。数学の勉強しなおしとかでよくある「あー!そういやこれやったわ」みたいなのが全くないし、単語すら見たことも聞いたこともなかったり。
かしこい頭脳は持ち合わせてないわ、スキルも足りない。でも、なんだかんだいって興味が収まらないからできないなりにやるわけです。

実務ではどうやってるのか具体的に知りたい気持ちもわかる。けれども、具体的となると職場によって様々なので、実際に働くしかない。働けなくても、MISRA-Cみたいなある種の業務上要求されることがある規格もののコーディングガイドラインとか、Linuxのコーディングガイドラインを読んで、従ってみるというのもあるが。

なお、LSI/FPGAでのハードウェア開発だと以下の本が、平易で良いと思う。筆者の実務経験を交えて、筆者はアーキテクチャをどう決めるかについて書いてある。浮動小数除算器の設計コードや、軽量CPUの設計コードとか簡易アセンブラの作製法とかまで書いてある。

独学に必要なこと

自分が思うに以下の4つ。言うは易く。

  • プライドを捨てる
  • 手を動かす
  • 検証する
  • 環境を活用する

食指がどうにも動かないのであれば、むいていないとか、実は大した興味でないということで、諦めるのもOK。 興味本位でいろいろ手を出してみて、自分から動きだすようなものを若いうちに見つけるほうが大事だと思う。

独学のやり方についてはベストセラーでおなじみのポリアの本が良い。独学に限らずいろんな応用ができるし、表紙めくっただけでどのようにやればいいのか即わかるのもいい。

プライドを捨てる

個人的にこれが一番難しいと思う。捨てきれない。にんげんだもの
死ぬまで気をつけるしかないと思う。

  • 他人と自分を比較しない
    他人との比較は無意識にしまうものなので、自制する。 「俺のほうがこのスキルが優れている」だとか「あいつはダメだ」、「この集団の中で俺は一番ダメだ」とか思い始めたら思い直す。 こういう比較にとらわれていると、全くと言っていいほど成長しないと経験上わかったのでしないほうがいい。
    まじめに考えるのは期末試験だとか人事評価の時くらいで十分。 そんなことをしている暇があったら調査、実験、実装、なんでもいいから手を動かす。 伸び悩んでるときとか、なんかしら問題あるときとか、老害化したときとかにこうした思考をしているので、見直す。過去の自分と現在の自分の比較はOK。やる気出る。

  • わからないこと、知らないことを把握し、隠さない
    知らないことはまあいいとして、わかっていないことが多い状態だと、わからないことの把握は結構難しい。理解が浅いと、わかっていると思っていたことが実はわかっていなかったとかよくあるし、浅すぎるとわからないことがわからない状態に。自分の知る限りだけど、賢いと感じる人ってこのへんはっきりしてるし、隠さない。

  • 間違いを認める
    難しい。ピタゴラスはサモスの賢人だったけれど、無理数の存在を認めなかったし。
    個人的には、成功体験の繰り返しが、最終的に人の成長を阻害すると思っている。今までうまくいっていたやり方に固執したり、何かで素晴らしい成功を収めて天狗になったまま帰ってこなかったり。 自分の判断や考えは正しいとはかぎらないということを頭の片隅にいれるくらいしかないのか。

手を動かす

やればできる。やらないとできない。年単位でブランク開くとできなくなる。
最初は写経のように真似して覚えるしかない。

  • 設計する
    ポリア本でいうところの第1、第2に相当。
    設計仕様書とか要求仕様書とか情報系の学校で書くんだろうか?
    学部卒で就職して一番最初に困った。
    設計というのは言ってみれば考えまくって仮説を立てることなので、類似例を調査したりいろんな案をだしては潰してつくっていく。
    つまり卒論。頭を使うので、ひたすらやるしかない。
    学部卒でなければ卒業までに論文10本くらいは書くらしいからそれが応用できる。

  • 実装する
    ポリア本でいうところの第3に相当。
    頭はあんまり使わない。
    「あれれ?」とか「うーん」って頭使い始めたら設計に不備がある。
    設計に立ち戻ることはよくあるので、気軽に戻る。

検証をする

ポリア本でいうところの第4に相当。
次につなげるために、うまくいかなかったこと、うまくいったことについてふりかえる。 自分だけかもしれないが、うまくいかなかったことは自然と考えを巡らすけれど、うまくいったことについてはあまり考えないことが多いので、注意する。 なお、組織においてPDCAのCとAがキチンと実行されることはあまりない...。Pすらもないことも。 個人的にはPよりもCとAに時間をかけたほうがいいと思う。Pの精度が上がる。

環境を活用する

学生はわからなくてあたりまえだし、新卒も若手もできないことはいろいろあるけど若いというだけで許される雰囲気がある。なのでかなりアホみたいなレベルの疑問や質問は早い段階にする。その機会を逃すと、たとえば40代になったり肩書きがいろいろついたりすると、質問がとてもし難い雰囲気がほとんど。でも、必要なことをわからないまま、できないままに年月を重ねるのが一番やばい。
ただ、周りの人次第なところがあるので、「最近の若者は〜」的な感じなことをだけ言って、ちゃんと教えてくれない人もいる。学校の教員であれば、まあメシの種だし無下に扱われることは少ないと思う。会社だったら「学校で習わなかったのかよ〜」とか小言とか言いつつも教えてくれる。教え方が合わないとかはあるかもしれないが。
専門書が多数ある一般の図書館とかそうそうないし、各種学割もあるし、なにより若さと残り時間が段違い。
SNSだとかインターネットのおかげで実際に仕事をしている人たちのあれやこれやを眺めたり、直接質問したりもできる。

おわりに

卒論のおかげで能動的に物事を探求する行為、いわゆる学問をするということを自分なりにでもイメージがはっきりしたのが、大学へいってもっともよかったこと。
覚えが悪かったり、かしこさが足りないとか、これまでの勉強不足とかは気にしたところで今更どうしようもないので、折り合いつけてやっていくしかない。 でも、一回就職してから大学行くような世の中にするといいんじゃないかなぁ、とか思いながら社会人院生とかたまに見てる。 やりなおせるなら小学生からやりなおしたいところだが。