見出し画像

オブジェクト指向は必須かについて


3行まとめ

  • その会社や扱う言語、開発するシステムの内容や規模等にもよる

  • 知らないよりは知っていた方がもちろんいい

  • (オブジェクト指向が)無理!=システムが組めないというわけでもない

この記事を書くことを相当に悩みましたが…

誤解が生じないようにしたい(私の身の保身的に)

オブジェクト指向の話をしだすと私的には1000年かかります。
クラスやラッパークラス、インスタンス抽象化継承メモリアドレスポインタetc…
昭和VBエンジニア的に言う所の構造体とナニが違うんだ?関数じゃダメなの?みたいな話がゴロゴロとでてくるので厳しい。
かといって現代プログラミングにおいてオブジェクト指向の話(概念)すらしないなんてどうかしてるぞ?と思われそうな恐怖も(私的には)ある。

前提が前提である件

そもそも私が記事を書く本来の目的は
一人でも多くの方にパソコンを好きになってもらえればうれしいな」
という気持ち一つで書いているものです。
バリバリ技術論を語る場だと思っていないという逃げ道を私は事前に周到に用意してこの場に臨んでいるわけです(根本的に逃げ腰)

誰でも分かるとか簡単とか言える気がしない

難しいです。普通にすらすら手続き型や構造化、あるいは関数プログラミングが出来る方でも難色を示すレベル程度には難易度が高い。
そもそも私はNatureに論文を発表出来るレベルの人間でもなければMBAを持っているわけでもない、その辺に転がっているタダの路傍の石です。
それこそ私などが記事を書くよりO'Reilly(オライリー)の分厚い参考書でも読んでいただいた方が身になると思います。
私なんぞは技術評論社の参考書でお腹一杯レベルですので…

(理解)出来た方がいいのは事実

とにかく難易度が…

はじめてプログラムを書く時、オブジェクト指向であれ、そうでないものであれ、プログラムなんてどれも一緒に見えるかもしれません。
しかし実際には大きな違いがあるので、例えば就職であれば、求人情報でJavaやC、C++、C#であればオブジェクト指向プログラミング確定と思っていいと思います。
一方でWeb系言語何か経験ある方~みたいな微妙&あいまいな求人だと、正直聞いてみないと分からないです(そこまで求められない可能性も有)

そもそも難易度が高いってどういうこと?

表現が難しいですが…概念が理解しにくいとでもいうのか…(一応)高級言語とはいえ、視覚的直観的にピンときにくい記述が多いとでもいうのか…
うまく説明できずに申し訳ないのですが、色々と難しいですね…

はじめてのプログラミングでオブジェクト指向は無理?

むしろ…まったくの0からであれば、最初からプログラミングってそういうものなんだでオブジェクト指向から入る方がすんなりいける人はいけるような気もしますし、そうした方が楽のような気もしますが…
下手に昔ながらの書き方に慣れていると、いまさら感&抵抗感がでる可能性はあると思います。

全部が全部オブジェクト指向でつくられてもいない

システムといっても色々ですし、別に絶対的に毎回必要なシーンばかりではありません。
また、地方の中小企業に導入されているようなオーダーメイドシステムには、オブジェクト指向で作られていないシステムなんてザラでゴロゴロありますから。

フレームワークやライブラリを流用する中で

例えば、データベース接続部分であったり、トランザクション処理部分なんかのプログラムであったり、予め決まった処理(定番のお決まり処理)の部分で、そういったライブラリを活用することがあります。
もちろん自前でもつくれますが、そういう有用なライブラリはセキュリティの脆弱性等も配慮して上流エンジニアの方がしっかりしたつくりでおつくりになられているので、それっぽく(カッコよく)なる所はあると思います。

まったくオブジェクト指向じゃないモノ

普通に動きますけど

下画像は昔遊びで私が競馬ゲームを作っていた時に実際に書いていたコードの一部ですが…別にそんなもんといえばそんなもんです(これはこれで普通に動きます)
IF文大好き感(ネスト(入れ子)大好き感といえるかもしれん…)はほっといてください。

ソース的にはシンプルなので追いやすい

プログラム的にコメントアウト(注釈)は大切

下画像の赤枠のような//で注釈行としてコメントアウトしているようなものです。
作っている時は分かっていても、しばらく放置すると「忘れます
その時何故そう思ったのか?
どういう気持ちで(理論で)そこに至った(たどり着いた)のか?
どうしてそう記述しようと思ったのか?

まぁ…1年も放置したらほぼほぼ全部きれいさっぱり忘れますので…

//の行は備忘録みたいなイメージです

それでも思い出せない件

ここまで書いとけばさすがに分かる(思い出せる)やろ!と、当時の私は思ったのでしょう(タブン)
が、今記事を書かせていただくにあたり画像撮るためチラッとみましたが…
コメント読んでも正直自分でもあんまりよくわからねぇぇぇ…っていうね…
ええっ?アンタ自分でつくったんでしょ??と思われるかもしれませんが…
得意&恒例の言い訳させていただきますが…
正直その当時(上記コードを書いていた時)
一体(あの頃の自分は)どこまで理解していたのか?
どんなものが作れるスキルがあったのか?
なんてね…
その当時の自分の真顔ドヤ理論プログラムなんてね…
今にして思うと正直よくわかんねぇぇぇ…っていうのが本音です。
つまり、今まったく同じ内容(挙動)のプログラムを私が書こうと思うと、全然違うコードになる可能性があるわけです(人は進化も退化もする…)

進化していけばいいと思う今日この頃

仮に挫折してもまた気が向いたらチャレンジでOK

私自身、若い頃はC言語なんて自分にはハードル高すぎて絶対に無理!と思いましたし、実際Cは今でも触りませんが(解決してないですが)メシ食えないの?っていわれれば、別に…(エリカ様風)って感じですね。
気が向いたら、今のオレ様私様なら…と思うのであればその時にまた本を開いてみたらいいのではないかと思います。

さいごに

そもそも言語にも人それぞれ相性はある(と思う)

すんなりサクッ!と頭に入ってくる言語もあれば、ウゲ…無理…と思うこともあると思います。
よく文系理系なんかも言われますが…
なんていうかもう…細胞?DNAが拒否ってる感が…(謎)

【重要】優劣を競わない

難易度の高い言語をマスターしている方の中には、簡単な言語を使う方を下に見て馬鹿にしてくる人がいるかもしれません(私の人生経験上、昔から一定数いましたが)
ですがそれをイチイチ気にする必要はないと思います。

何度かお話してますが、自分の内面を磨くということに人は関係ないので。
自分なりに自分のスキルアップをしていけば、きっといいことありますよ♪

なにより楽しいのが一番です。
どんな言語でも、楽しく誇りをもって学べるのがいいと思います!

今回もうまくまとまった感(逃げ切った感)があります。
終わりよければすべてよし。
大体ホームページのHTMLもれっきとした「言語」ですが…
Javaあたりを扱う側からすればHTMLなんざ言語とすらみなさない可能性はあると思います。
だからプログラマーとよばずにコーダーなんて呼ばれるくらいで。
しかしそんなマウントやヒエラルキー構造になんの意味があるのかなとは思いますが…

もし、万が一、サポートいただけるようなことがあった場合には、NOTEの記事の方でしっかりと記事と合わせてサポート額の使い道を報告させていただきます。 (先日落雷でパソコンが破壊されたので多分当分はその買い替え費用の足しにさせていただくことに…すみませんすみません)