はてなキーワード: オブジェクト指向とは
キチガイに刃物、ゴミプログラマに継承。危険なものは取り上げるべきだ。
オブジェクト指向プログラミングにおける継承は強力な手法であるが、これを正しく使えるプログラマは残念なことに極めて少ない。たいていの場合、継承を使うことで却ってプログラムの保守を困難にしてしまう。継承のアンチパターンの最たるものは、単なるメソッドやメンバ変数の共有のために継承を使うパターンだ。これを行うとデータが密結合になってバグの原因になり、プログラムを把握することも極めて困難になる。
そもそも、熟達したプログラマの感覚では、業務で書くアプリケーションの実装に継承を使うべき局面などほとんど無い。ライブラリ等のより低レベルな処理で仕様が確定しているものについては、継承が効果的となる場合もあるが、複雑なアプリケーションのロジックに継承を使うのはほとんどの場合、時期尚早な抽象化となる。
また、凡庸なプログラマが継承で実現したいと思うことは、ほとんどの言語でより適切な手段が存在する。
継承を誤って用いるプログラマが多いにも関わらず、実は継承の使い時ははっきりしている。以下は、一定水準のプログラマならば、誰でも答えられる質問である。これに答えられないプログラマは不勉強を恥じるべきである。
答えられない人、自分の答えが正解の内容と一致しているか即座に判断できない人は、継承を使うべきではない。医学知識ゼロの素人が外科手術をするようなものであり、非常識極まりない。
リスコフの置換原則は、オブジェクト指向の文脈で言えば、以下のようになる。
「Baseを基底クラス、DerivedをBaseの任意の派生クラスとするとき、Base型として生成されたオブジェクトをDerived型のオブジェクトに置き換えても問題なく振る舞うようにしなければならない」
ゴミプログラマが継承を使いたがる理由の99%は、以下である。
特に最近の技術にはまるっきしついていけてないためか、Ajax(今時Ajaxというような単語を出してしまったところがもうあれですが)などの非同期処理が必要なUIに関する設計が未だにJSPベースのものになっている。
さらに正規化、オブジェクト指向などモデリングに対する知識は皆無で、すべてがただの落書きになっている。
大手SIerは人を管理することが得意というが、管理すらできてなく押し付けてるだけである。証拠に誰が何をしているのか全く理解をしていないから実際の進捗と客先に報告する進捗の解離が甚だしい。我々からすると嘘の報告を客先にして、その結果客にコレコレと言われてしまったからどうにかして欲しいというような全くプロジェクトの進行とは無関係なことを言い出す始末。
この幼稚で非合理で理不尽な感情をそのまま頭の中に残すのは、近いうちにつくるリアリティのあるシナリオの下書きとして使う前に忘れてしまいそうでもったいないため記録しようと思う。
また、記録するだけだと正直味気ないためここで公開してみる。叩かれるかもしれないが。。。
私は大手Sierのシステム開発の部署に属する一次受け新人SEだった。
そんな経験を活かし、今後はここでたくさんの技術を身に着けエンジニアとしてのキャリアを花咲かせてやる!
期待に目を輝かせていた無知で愚かな新人に仕事内容を聞かれた先輩社員はこう言った。
大手Sierのシステム開発で技術に長けたエンジニアはほとんどいない。
私の経験では30人いる部署のうち、3人いればいいぐらいである。
ちなみにここでの技術に長けたエンジニアの定義だが、基本的にはこのような定義となる。
自分で何かシステムを作っていたらならもうここで技術を学ぶ事は何もないだろう。
何故大手Sierのシステムをエンジニアリングするという職場でそのような事が起きるのか。
実際の理由としてはこのような仕組みとなっているためだ。
こんな子たちを念頭に置きながら設計方針というこれまた作成者不明のドキュメントに伴いExcelで設計書を作っていく作業となる
コーディング知識のない人でもシステムが作れるように適応していった結果なのだろう
これらの仕組みを知る人は自社にはいなかった。
これは知っている人も多いかもしれない。自社でやるより単価が安いからという理由らしい。
たくさんのものを犠牲にしているため、単価が安いからという理由だけで丸投げするのは私は猛反対だが。
そして下請けはどうもこのブラックボックス化したフレームワークについて仕組みまで理解しているらしかった。
そんな理由で開発を丸投げする大手Sierのメンバーは私を含め生成されることとなる。
ちなみにおかしな話だが、この下請けにブラックボックス化されたフレームワークの仕組みをエンジニアとして質問してみたことがあった。返信は今も帰ってきていない。
「下請けにコーディングを丸投げし、設計を自分たちで行う」という文化はよく知られているかもしれない
しかしながら、ここで無知な私は何回か疑問に思ったことがある。
わざわざ答えを人に聞くよりも先に私達が作ったシステムは答えてくれた
どんな人間にも定量的で定性的なシステムは一番信用できると思った。
書きたいのいっぱいあるから叩かれたとしてもこの後いっぱい書くかもごめん。
時間 | 記事数 | 文字数 | 文字数平均 | 文字数中央値 |
---|---|---|---|---|
00 | 108 | 12149 | 112.5 | 56 |
01 | 94 | 12765 | 135.8 | 54 |
02 | 35 | 4414 | 126.1 | 38 |
03 | 21 | 2200 | 104.8 | 34 |
04 | 33 | 4208 | 127.5 | 50 |
05 | 19 | 1556 | 81.9 | 40 |
06 | 28 | 1950 | 69.6 | 47.5 |
07 | 66 | 6859 | 103.9 | 49.5 |
08 | 165 | 15617 | 94.6 | 40 |
09 | 213 | 19306 | 90.6 | 52 |
10 | 215 | 18347 | 85.3 | 48 |
11 | 248 | 25601 | 103.2 | 42 |
12 | 256 | 19813 | 77.4 | 45 |
13 | 228 | 20496 | 89.9 | 41 |
14 | 192 | 26262 | 136.8 | 42.5 |
15 | 212 | 16764 | 79.1 | 42 |
16 | 268 | 27773 | 103.6 | 45 |
17 | 229 | 20522 | 89.6 | 43 |
18 | 198 | 21496 | 108.6 | 44 |
19 | 160 | 14092 | 88.1 | 43 |
20 | 177 | 16101 | 91.0 | 34 |
21 | 236 | 28939 | 122.6 | 27 |
22 | 252 | 25896 | 102.8 | 36 |
23 | 151 | 23751 | 157.3 | 40 |
1日 | 3804 | 386877 | 101.7 | 42 |
クワーッ(7), イチナナ(6), 7発(8), チュプ(21), マミーポルノ(5), 偽ブランド(4), 投げ飛ばし(6), 釣銭(7), くさくさ(3), 平成3年(3), ハンドガン(3), 特定派遣(3), プラットフォーム(14), 爺(13), 健常者(20), 男尊女卑(14), キャバクラ(19), 出生(9), クレーマー(15), VTuber(11), 警官(20), V(16), ジジイ(16), ホスト(14), ゾーニング(20), 男女平等(12), Vtuber(18), 既婚(22), 店員(39), 同人(24), 黒人(42), 垢(19), キモ(52), 作家(23), 白人(22), 障害者(16), 発達障害(17)
■同人女は同人垢で結婚妊娠出産報告をするな /20200826205722(59), ■彼女が発達障害持ちであることを隠していた /20200825231023(38), ■「できる人」をバカにするのはもうやめよう /20200827104657(37), ■偽ブランド品を買い続ける母親 /20200827113038(20), ■経血サバイバル /20200827011835(15), ■女二次創作界隈の焼きマロ自演問題 /20200827140234(14), ■お前らはまだ本当のバーチャルホストクラブを知らない /20200827082812(14), ■集英社に関わる男性がヤバすぎる件 /20200827083708(12), ■単語を繰り返す言い回し /20200827160441(12), ■ジェンダーギャップが解消されるとどうなるか /20200825192900(11), ■義理の兄の中古自動車屋が潰れた話 /20200826164820(11), ■野良猫に餌付けすんじゃねぇーよ!クソが。 /20200826231801(11), ■増田っていつ「バカに見つかった」の? /20200826234802(11), ■お前ら少しくらい協力しろボケが /20200827142555(10), ■Vtuber狂いとホスト狂い /20200826195939(10), ■気付くと句点を使う僕は少数派になっていた。 /20200827084631(9), ■なぜゴリゴリマッチョイムズ丸出しの鬼滅の刃はフェミどもから攻撃されなかったのか /20200826200900(9), ■三国志入門におすすめのなにか /20200827205429(9), ■国公立大学医学部で一番入りやすい大学は徳島大学である。倍率2倍。 /20200827164058(8), ■anond:20200826205722 /20200827132300(7), ■キャバというよりオタクがキモいだけでは? /20200827125739(7), ■その分野の知識が無くても雰囲気で楽しめる作品ってあるよね /20200827083319(7), ■虫が嫌いで、旦那のことも嫌いになりそう /20200827071004(7), ■特定派遣の正社員になって10年が経った /20200827115616(7), ■オブジェクト指向がわからないあなたへ /20200827110007(7)
これをITの非専門家が読んでわかりやすいだろう、って思ってるとしたら相当やばいよ
そもそもプログラミングという行為がわかっていない非専門家に対して
「現実に物がありますよね。これをモデルにしてプログラミングする、それがオブジェクト指向です」
って言われて理解できると思ってるの?
モノという考え方は、18世紀の哲学者カントに遡ります。カントは純粋理性批判において、理性と経験によって認識できる以前の「物自体」という概念を提唱し、大陸の合理主義とイギリスの経験主義を統一しました。オブジェクト指向におけるモノとは、カントのいう物自体です。
しかもそのモノについていきなりカントを持ち出してくるとか正気の沙汰とは思えない。本当にカントの物自体の議論、経験論を踏まえた上で言ってる?それを相手が理解していることを前提としてるの?
俺の独断と偏見で(主にWeb系)プログラミングにまつわる神を感じるものを挙げる。
まずDocker。これがない頃はパソコンの中の開発環境はグチャグチャで、特にライブラリの依存関係の管理がとてもしんどかった。今はDockerのおかげでいくつも開発環境を持てる様になったんでマジ便利。作った人は神に違いない。
次にオブジェクト指向。これがない頃からプログラミングしてた訳じゃないけど、プログラミング始めたての頃に取り組んで訳分からなくて放置して、手続き型のプログラムをそこそこ書いた後でオブジェクト指向に戻ってくると何これ!データと手続きをひとまとめにできる!めっちゃ便利やん!ってなった。アルゴリズムとデータ構造っていうのはそんなタイトルの教科書があるくらいにひと続きのものだからこうなるのは必然かもしれないけれど、その必然を形にした人は神の様な目を持っていたのだろう。
そしてGit。これセーブポイントが作れるだけでしょ、なんて思ってたけど、GitHubと連携させて複数人でひとつのプログラムをいじり始めると途端に神ツールと化す。それにセーブポイントが作れるだけでも十分に神だった。
あとUTF-8。Shift-JISやらEUC-JPやらが混在していた世界は端的に言って地獄だったのに、こいつのおかげで文字コードを基本的に気にすることがなくなった。神。
他にもいろいろあると思うけど、俺としてはこれらに頭抜けて神を感じる。
大学卒業後4年ほど会社員をやったあと、ウェブ関係のプログラマを目指して1年ほど、バイトしながら独学で勉強しています。
ネット上には詐欺師まがいの情報商材屋とイキリマウントゴリラが跋扈し、普通の人間向けの情報が少なかったので、参考までに書いてみます。
なお、ここ数年のウェブエンジニア転職ブームとは無関係に転職を考えていたので、ブームは正直迷惑だと思っています。
独学にはいくつかの大きな問題点がありますが、もっとも大きいのは「全体のロードマップが存在しない」ことだと思います。
初学者は具体的に何をどの順番で学べばいいのかわかりませんし、この情報はネット上にはありません(冒頭にも書いた通り、そう思ったからこそ、このエントリを書いています)。
などありますが、どちらも普通の人間向けというには若干ゴリラ臭と商材屋臭がします。
また、プログラミング初心者向けの教材はおしなべて貧弱で、腹が立つほど不親切です。読んでいて何度もブチ切れそうになります。
特に初学者の場合は、教材の練習問題ひとつ解くにしても、誤字脱字等の初歩的なエラーのために平気で数時間のロスが発生したりします。
当たり前ですが、これは純粋に時間の無駄なので、すぐに講師に相談して解決したほうがいいです。
こういうことを書くとすぐに「自力で問題解決できない人間はプログラマに向いていない」と言いだすゴリラが現れますが、いまはそういう話はしていません。
そのほか独学だと自分の実力や相場感を測ることもむずかしく、その分詐欺師やゴリラに引っかかりやすくなりますし、基本的におすすめしません。
いまさらC言語と思うかもしれませんが、勉強するうえで重要なことはプログラミングの仕組みを理解することであって、どの言語から始めるかではありません。
その点、上記「苦C」はとても丁寧に文法を説明してくれますし、ポインタの説明を通してメモリの仕組みも教えてくれます。
ただし、回答例のコードに誤字脱字があって動かない等の発狂ポイントがいくつかあるので、注意が必要です。
勉強のやり方としては、まずはサイトを読みながらスマホのC言語アプリでポチポチ書いてみるところから始めると気楽でいいと思います。
途中で頭が混乱してきたら、再度冒頭からきっちり丸暗記するつもりで勉強するのがおすすめです。プログラミングに暗記は不要だと言うゴリラもいますが、あれは嘘です。
intはintegerだからintなんだとか、そういうことを調べながらやるだけでも解像度が格段に向上すると思います。
実際にC言語でバリバリ書けるようになる必要はないので、おおよその仕組みを理解してしまえば、最後のほうは流してしまって大丈夫です。
検索するとこの手のサービスが一番上に出てきますが、内容は不十分だと思います。かゆいところに手が届かず、使っていて非常にいらいらします。
とはいえ他に代替となるものもないので、サービスを利用しつつ、必要に応じて入門書を読むのがおすすめです。
私が利用したかぎりでは、Progateは教材の内容が薄く、Paizaは無意味にオタク臭くて私は苦手でした。N予備校やUdemyの評判がいいみたいですが、使ったことがないのでわかりません。
私はウェブ関係のプログラマ志望なので、ProgateとPiazaでHTML/CSS/JavaScript/Git/Ruby/Ruby on Railsを勉強しました。
最近は初心者Railsエンジニアが供給過多の印象があり、DjangoやLaravelのほうが就職には役立ちそうな気がしています。
余談ですが、無料の教材として有名な「Railsチュートリアル」 https://railstutorial.jp/ は、あえて劣悪な翻訳を放置することで、自社のプログラミング講座に顧客を誘導するビジネスモデルのように見えるので、内容はともかく個人的にはあまりいい印象を持っていません。
ちなみに私はこの辺で迷走していたため、いろんな言語をちょっとずつかじっています。
『スッキリわかるJava入門』はオブジェクト指向を理解するのに役立ちましたし、『退屈なことはPythonにやらせよう』で覚えたスクレイピングは求人情報の収集にとても役立っています。ほかには『プログラムはなぜ動くのか』も読んでためになりました。
基本的に本を読んで損することはないので、時間の許すかぎりたくさん読んだほうがいいと思います。私はあまり読めていません。
Railsチュートリアルを参考にRailsアプリのポートフォリオを作りましたが、完成まで半年くらいかかりました。
上述の劣悪な翻訳のせいもありますが、データベースの設計を考えたり、UIを工夫してみたりすると、いくらでも時間が吸い取られていきます。
知識ゼロから3ヶ月でポートフォリオを作りました! みたいな若手情報商材屋を見かけると、そんなにすごい能力があるなら普通にエンジニアだけやってればいいのに、と思います。
完成したアプリはDockerでコンテナ化したうえで、GithubActionsで自動テストを走らせ、AWSのサーバーにデプロイしていますが、この辺は言語の勉強やアプリの製作と比べたら全然むずかしくありません。
まともな日本語で書かれたまともな教材が揃っていますし、ネットの記事も豊富にあります。ここまでの勉強で、エラーメッセージや多少わかりづらい文章を読み解く能力も身についているはずです。
それぞれ1、2週間集中すれば最低限の実装はできると思います。ただしAWSの設定だけは、適当にやると数万円の請求書が届いたりするので注意が必要です(届いた)。
はてブのホットエントリ(総合)で月内に数多く[あとで読む]タグを集めたエントリ
530あとで/4137users NTT フレッツ光における通信速度などの現状について、背景や仕組みから正しく理解する 2020 - diary.sorah
304あとで/1974users 高等学校情報科「情報Ⅱ」教員研修用教材(本編):文部科学省
204あとで/2230users iPhoneでの料理撮影が苦手なライターがカメラマンに論理的に指導を受けた結果→憂鬱な撮影が楽しくなった - メシ通 | ホットペッパーグルメ
202あとで/1706users 天才プログラマーの「締切に対する考え方」に、感銘を受けた。 | Books&Apps
177あとで/1946users ネットワークエンジニアとして | www.infraexpert.com
170あとで/1064users 【翻訳】技術的負債という概念の生みの親 Ward Cunningham 自身による説明 - t-wadaのブログ
169あとで/826users 7つの設計原則とオブジェクト指向プログラミング - ソフトウェア設計を考える
168あとで/1180users ローカル開発環境の https 化 | blog.jxck.io
166あとで/1005users ソースコードブランチ管理のパターン | Martin Fowler's Bliki (ja)
164あとで/991users 大学に行かずにコンピュータサイエンスを学ぶときに優れている教科書や講義映像はどんなものがあるのか? - GIGAZINE
164あとで/1541users 衝撃の結末が話題 無名ラッパーが投稿したYouTube動画が異例の48万再生、投稿者と大学側を取材 - ねとらぼ
161あとで/1789users 無印良品によるサーキュレーターの季節別の活用方法が有益すぎる→早速効果を実感する人も「部屋が快適…!」 - Togetter
147あとで/2111users 批判の文化が日本を技術後進国にしているかもしれないという話 - メソッド屋のブログ
143あとで/809users データベース設計の際に気をつけていること - 食べチョク開発者ブログ
142あとで/731users Web系企業/事業会社への最高の反面教師: "Spotify's Failed #SquadGoals"を読んで - アジャイルコーチの備忘録
136あとで/1777users 「言い切る人」が強すぎる。 | Books&Apps
129あとで/1655users iPhoneのNFCシールでの自動化が便利すぎてシール貼りまくった – ごりゅご.com
129あとで/616users 良いコードを書くための8つの習慣 - New Relic公式ブログ
128あとで/1164users GAFAコーディング面接こんな感じでした - yambe2002’s diary
126あとで/1345users 無料で美麗な絵画やカオスなポスターなどがダウンロードし放題、編集や商用利用も可能な「Artvee」が登場 - GIGAZINE
125あとで/687users デザイン脳を鍛える方法|ハラ ヒロシ|note
125あとで/993users 1からイラストの勉強をした話|せたも|note
124あとで/608users Dockerとはどういったものなのか、めちゃくちゃ丁寧に説明してみる - Qiita
124あとで/992users Web制作の常識が変わる、便利な最新オンラインツール48個まとめ - PhotoshopVIP
121あとで/1091users なぜ、国ごとに差が出たのか。そして第二波がどうなるか。 - 楽園はこちら側
119あとで/1321users アメリカの美大で学んだこと05:「絵がうまい」より大切なこと|Kenta Shimbo|note
119あとで/1684users 自民系の地方議員です。カネ配りについて書きます。 | はてな匿名ダイアリー
118あとで/1444users 料理に対するモチベーション「ゼロ」のぼくがたどり着いた、これだけで料理が簡単&美味しくなる調味料 - ソレドコ
118あとで/1195users 視座の可視化|kgmyshin|note
116あとで/1224users 【公式】ぷよぷよeスポーツ×プログラミング | SEGA
あとで読むタグの数が1月に近いレベルまで大幅に反発、増加した。