2020年

■2020年06月10日
どの言語を学ぶべきか、ではなく、今、自分にとって、どういうソフトウェア技術が必要なのか、が重要。

日本語を書いたり話せたりできるから、といって売れる小説やエッセイが書けるわけではない。
小説を書くには独特の言い回しや豊富なボキャブラリも必要だろう。刑事モノなら警察や犯罪の知識が、
恋愛モノなら男女関係の経験や知識、がないとね。これは日本語の文法とは全く関係ない。

これと同じでC#、Java、GO、Rustでプログラムを組めるから、といって、ワープロや表計算ソフト、画像処理ソフトが作れるわけではない。
PHPやJavaScript、Rubyが書けるから、といって便利なウェブシステムが作れるわけではない。
Pythonを読み書きできるから、といって AIや数値解析、ディープラーニング(最近聞かないけど)ができるわけではない。

言語はあくまで、「何か」を達成するための、手段。

Windows上で動作する表計算ソフトを書くには、プラットフォームである Windowsの動作原理を知らなければならない。
デザインやUXに関する知識も必要だ。さらに複雑な計算を行うための、数学の知識が必要だ。ワープロならば日本語の文字そのものに関する知見も必要だ。組版に関する知識をどうプログラム上で実装するか?とか。PhotoshopやIllustratorみたいなソフトウェアを作るには2次元、3次元に関するもっと複雑な数学の知識が必要だ。

Ruby/PHP/Pythonだけの知識でウェブシステムが作れるわけではない。HTTPプロトコルやクライアントであるブラウザの知識、セキュリティーや暗号化に関する知識が必要だ。フルスタックエンジニアを目指すならコンテナ仮想化などのインフラ関係の知識も重要だ。高度なシステムだと Ajax通信に関係した JavaScriptの知識も必要だ。そういうものをフレームワークに任せてしまう、というのもあるが、前述の知識なしにフレームワークを使ったところで頭の中が???で埋め尽くされると思うよ。

Pythonで数値解析やAIなんかもやってみたいって? その前に、あなたは数学に関する知識はあるのかい?
Pythonで行列計算が簡単にできるっていったって、その行列計算がなぜ必要か?ということの知識はあるのかい?
高校で習う数列計算・微積分、高校の物理で習うようなことが理解できないなら、Pythonを使えるようになったって意味がない。
正直、大学で講義を受ける数学は最低必要だ。本気でやるならね。

やみくもに言語を勉強したって、それで使えるシステムが作れるなんて思わないことだ。何をどうやって実現したいのかを決めるのが先じゃないの?
C#やJavaは静的型付言語でオブジェクト指向(OOP)的なプログラミングが要求されるけど、実現したいシステムはそれに合ってて落とし込めるのか?
場合によっちゃ 「それ、RubyとかPythonとかPHPでよくない?」って言われるかもよ?

データベースアプリを作るときに、データベースやそれを扱うWindowsだとADOとかだと、DataAdapterやDataSetの扱い方を知らないと、
なんでそんな大量のデータをDataAdapterでFillしてんの? 遅くね? それ?みたいな。ことが起こる。それは言語の問題ではなく、データベースのデータをどうやって扱うか?という基本的な知識が欠如しているからそういう事態に陥る。

言語とは関係なく、やりたいことの知識がないと、せっかく言語を学んでも、糞(つかえねー)システムが出来上がる。

お金を持ってても使い方を知らないとバカを見る、ということにならないよう、気を付けよう。>> おいらがね。