オブジェクト指向 の検索結果:

目的を規定せずにモデリングを考えても意味がない

オブジェクト指向の本では「自転車をモデリングしてみましょう」「鳥をモデリングしてみましょう」ということが、どういうシステムで使うか規定せずによく書かれています。 けれども、モデリングではどういうシステムで使うかということが大事で、それを決めずにモデリングを考えても意味がありません。モデリングすべきはモノではなくシステムのプロセスです。 よく、オブジェクト指向では現実をモデリングするのようなことが言われますね。 例えば鳥が鳴くとして、その一種であるニワトリをどうモデリングするか…

JavaのDIコンテナは言語機能の補完でありinjectはimport

…クラス設計というのはオブジェクト指向は関係ないってことですね。 クラス分けを恣意的に行えるので、単に作業性の問題です。 たとえば次のようなコントローラクラスがあるとします。 @Path("/home") @RestController public class HomeController { @Path("/hello") public String hello() { return "hello"; } @Path("/info") public String info(…

時代がstaticおじさんに追いついてきた(追記あり)

…長い経験から言うと、オブジェクト指向なんてものは、理論としては面白いけど、およそ実用的とは言い難いものだな。まぁ、例えばGUIのコンポーネントとかはオブジェクト指向に基づいて作られているようだから、そういうツールとかを作る人には必要なものなのかもしれない。しかし君たちがいずれ作ることになる業務アルゴリズムにはまったく無縁のものだと思ってもらって間違いない。どうもこの業界、オブジェクト指向でなければダメ、というような風潮がまかりとおっているけどな、オブジェクト指向なんか本当に使…

Javaを中心に偏見ベースでプログラミング言語の関係をまとめた

オブジェクト指向言語の話をするときに便利なように、Javaを中心にプログラミング言語をまとめてみました。 Javaに影響与えるか、Javaから影響を受けるか、という感じですね。 Simula オブジェクト指向はここから始まったと言われています。 クラス、オブジェクト、継承、仮想関数(多態)といった、オブジェクト指向の基本要素が備わっていました。 ただし、「オブジェクト指向」という言葉は生まれていません。 Smalltalk Simulaから発想を得て「オブジェクト指向」という…

分厚く難しそうな技術書を素敵だと思ったら今必要なそうでも買っておくべき

…ろいろ分類した本で、オブジェクト指向言語とはどういう位置づけになるのかという話をするときに確認してもらいたいんだけど、いま中古で4万円。 「アルゴリズムデザイン」も一時絶版状態で、12万とかで売られてるのを見た。 いまは在庫復活して17,000+税になっているけど、買ったときは15,000+税だったな。Amazonの書影の裏表紙見るとわかります。 これも広範囲に網羅されてるし読みやすいし、同じ内容を埋めようとして4000円くらいの本を5冊買うとかを考えると割にあう。 まあ、そ…

サーブレットを「JavaでのWebアプリケーションの基礎」として最初に勉強させるのをやめてあげてほしい

…ほしいと思った話。 オブジェクト指向もそうなんだけど、現状で使わなくなっているにもかかわらず情報更新がされずオブジェクト指向やサーブレットJSPが教えられ続け本が売り続けられるという現状がある。 でももうさすがに変わってほしさ。 ただ、JSPはそこまで悪くないので、サーブレットで話を進める。(ただし、サーブレットが動かない環境ではJSPは動かない) 使われていない まず、いまの案件の多くがSpring / Spring Bootになってて、サーブレットをさわるということは少な…

Dependency Injectionでやりたいことはモジュールimport

…ませる機能ですね。「オブジェクト指向の次はアスペクト指向じゃー!」って盛り上がって、言語機能として使えるAspectJとかが一瞬流行ったことがあるけど、結局トランザクションとロギングくらいしか使いどころがないことがわかって、表だって話題に出ることはなくなりました・・・ あと、テスト時のモック化。 テストのときにDBやらファイルやらネットにアクセスしてられないということで、実装を入れ替えることができますね。 ただ、これはクラスローダーの問題なので、staticにして実装を入れ替…

新しいプログラミング言語が出てこない(新しく出てた言語を追記)

…。 そして、関数型、オブジェクト指向、GCや借用、コルーチンのような言語機能としてほとんどの言語がそれぞれ用途にあわせたバランスで取り込んでいます。 これ以上の言語機能は、用途が限られ需要も限られることから、メジャーな言語が積極的に取り込むようなこともない気もします。 AIが言語格差を広げる ChatGPTやGitHub Copilotなどの大規模言語モデルベースのAIは、ネット上のテキストが多いほどうまく学習します。 つまり、ネット上にコンテンツが多い言語ほど便利になり、マ…

オブジェクト指向はコードを複雑に読みにくくする

「オブジェクト指向するとプログラムが読めなくなるから禁止」のような話は昔からあって、新しい技術についてこれない人を揶揄するようなニュアンスで使われていましたが、実際にはこれはオブジェクト指向迷路にうんざりした現場での率直な意見だと思います。 オブジェクト指向は、まじめにやるほどプログラムを読みにくくするという性質をもっています。 ※ 使い方次第というコメントついてますが、だからこそちゃんと性質をしっておく必要があると思います。 オブジェクト指向の代表的な指針を3つあげると次の…

「オブジェクト指向神話からの脱却」という特集をWEB+DB PRESSで書きました

「オブジェクト指向神話からの脱却」というあおり気味タイトルの特集をWEB+DB PRESS vol.132で書きました。 12/24発売!クリスマスプレゼントです WEB+DB PRESS Vol.132作者:きしだ なおき,加藤 尋樹,斉藤 洸紀,牟田 裕太郎,吉澤 政洋,朝日 リナ,鈴木 僚太(うひょ),川島 義隆,五十嵐 進士,末永 恭正,佐藤 雄太,吉井 健文,牧 大輔,西山 和広,吉田 花春,古川 雅大,岡林 大,池澤 春菜,和田卓人,日高 正博,はまちや2,竹原技…

プログラミング言語の入門が終わったら何の勉強をすればいいの?

…タイルによる基礎からオブジェクト指向・実用ライブラリまで作者:谷本 心,阪本 雄一郎,岡田 拓也,秋葉 誠,村田 賢一郎技術評論社Amazon ただ、もっと突っ込んだ勉強をしようとするときに、言語仕様などを読む必要が出てきますが、言語仕様を読むためには「プログラミング言語」というものがそもそも何かということを知っておく必要があります。 そこで入口として、命題論理、述語論理などの論理学から、ラムダ計算、型付ラムダ計算という流れで勉強するのもいいかと思います。 論理と計算のしくみ…

インスタンスとオブジェクトの違い

…プロトタイプベースのオブジェクト指向」と呼びます。 代表的なのがJavaScriptですね。 まあ結局プロトタイプベースでは考え方は楽かもしれないけど使い方が超ややこしいということになって、classが導入されたわけです。 ※追記 いずれにしろJavaScript(TypeScript)でクラスのようなものの出番はあまりないという指摘があった。 結論 どうやってもややこしい オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシック…

オブジェクト指向は継承で多態するプログラミング

オブジェクト指向って継承による多態があるからこそなんだけど、継承が非推奨になって以降に雰囲気でオブジェクト指向を知った人には、継承はオプションでカプセル化だけでオブジェクト指向って言ってしまいがちに思います。 実際はカプセル化はオブジェクト指向固有じゃなくて、クラスでカプセル化を実現してるだけです。 さまざまな人のオブジェクト指向の定義 本来ならどのように継承こそがオブジェクト指向なのかという説明をするんですが、かなり長くなりそうなので、とりあえずはいろいろな人たちのオブジェ…

なぜオブジェクト指向方法論に代わる方法論が出ないのか

1990年代にオブジェクト指向分析・設計の方法論がめちゃ流行ったことがあります。 ただ、そのブームが終わって、後続となるような方法論が流行ることはありませんでした。 で、なぜなのか考えていたのですけど、オブジェクト指向方法論のウリは分析段階で出てきたオブジェクト(といいつつクラス)がコードにそのまま引き継がれるというものでした。ようするにオブジェクト指向方法論というのはコードのスケッチを書いて詳細化していくというものだったのです。 しかしながらこれは、スケッチとして書いた分析…

「プロになるJava」はこんな人におすすめ #projava

…すすめ 「Javaでオブジェクト指向がうまくできないんですけど、いい本ないですか?」 →オブジェクト指向なんかやらなくていいって教えてくれる「プロになるJava」をおすすめ 「でもクラスとか継承とか使うのにオブジェクト指向が必要なんでしょ?いい本ないですか?」 →継承の使い方をオブジェクト指向という言葉を使わずに解説している「プロになるJava」をおすすめ 「hogeという言語を使っててJavaには興味ないんだけど、もうすこしプログラミング能力を高めたいと思ってます。いい本な…

オブジェクト指向は差分プログラミングとデータ分類をまとめて扱おうとしたのが弱点

オブジェクト指向の最大の特徴は、モジュールと型を一体に扱ったことです。 メイヤーの本では次のような「オブジェクト指向の基準」があげられています。 クラスが唯一のモジュールでなければならない すべての型はクラスに基づいていなければならない つまり、クラスはモジュールであり型であるということです。 ここで、モジュールにとって必要な、クラスで実現できる機能は、モジュール間で異なる部分だけをそのモジュールで実装するという差分プログラミングです。 型に求められるのは、データの分類です。…

プログラミング言語の入門書はプログラミングの入門書ではないのでプログラミングできるようにならない

…ん。 クラスにしてもオブジェクト指向というなにやら壮大な言葉をもってきて、これがオブジェクト指向ですというプログラムを提示するのだけど、じゃあそのコードを実際のプログラミングでどう使うの?っていうのはわかりにくいわけです。「プログラミングはオブジェクト指向でやるから!」みたいにケムにまかれ、でも実際はオブジェクト指向でやらないのでそんなコードは出番がない。 ということで、変数の使い方をちゃんと提示していたり*1 、ループがどのように難しくなるか説明していたり、クラスの使い方を…

オブジェクト指向はすでに粒度が時代にあっていない

定期的にオブジェクト指向disを書いてしまってるのだけど。 とりあえずオブジェクト指向の話をすると定義が人によって違いすぎるので、改めてここでの定義を書いておくと 、基本的にはOMTの「データ構造と振る舞いが一体となったオブジェクトの集まりとしてソフトウェアを組織化すること」 に従うのですが 「1990年に流行りソフトウェア開発のすべてを飲み込み、いまとなっては人それぞれ定義が違って技術的議論に使えなくなった、主にオブジェクトを基本単位としてプログラムを整理するやりかたを指す…

10年目のFizzBuzz改善

…ドいくない。 あと、オブジェクト指向など実業務では使いものにならない!newなんてムダだってことで、全部staticメソッドにした。 あいかわらず数値は出せてないけども。 package kis.sample; public class FizzBuzz { public static void main(String[] args) { n(0); } static void n(int i){ if(i % 3 == 0){ if(i % 5 == 0){ fizzbuz…

オブジェクト指向には、カメラがやっとついたころのガラケーのイメージがある

某所でオブジェクト指向についていろいろ書いたのでまとめておく。 問題意識としては初学者がなにかというと「オブジェクト指向できるようになりたい」のようなことを言うけどそこまでの優先順位でがんばるものではないんでは、というところです。 まず前提として、オブジェクト指向は1980-2000年くらいに流行って発達したものの、それ以降は時代にあわせた進歩はしていない20年以上前の技術ってのがあります。 そのころは今だとCPUのキャッシュにも満たないようなメモリをやりくりしてプログラムを…

オブジェクトはストックで、関数はフロー

…ん必要です。 ということで、オブジェクト指向が有効な場面は少なくなるのに対して、関数が重要な場面は多くなる、ってことになるんじゃないかと思います。 もうひとつ。結局オブジェクトと関数というのは、同じものを違う見方で見ているだけであり、しかもそのとき片方が見えてるときには片方は見えなくなるルビンの壺のようなものなので、ある程度排他的になるのは仕方ないかもなーと思います。 全体を両方の考え方にするんではなくて、ここはオブジェクト的、ここは関数的ってやったほうがいいんじゃないかと。

Software Design 9月号でオブジェクト指向の記事を書きました

書きました! Software Design 2014年9月号|技術評論社 Software Design (ソフトウェア デザイン) 2014年 09月号 [雑誌]Amazon

オブジェクト指向について

…いうことが重要です。オブジェクト指向を勉強するとはそのような組織化のしかたを勉強することだと考えています。 現在のシステムは、データはデータベースに格納され、振る舞いとは分離して管理されています。そのような中では、システムをオブジェクトの集まりとして組織化することはできません。 局所的にも、ステートレスを前提としたHTTPの処理では、オブジェクト組織の必要な局面はありません。 個別のオブジェクトの共通化に継承を使うという点では「クラスは単にユーザー定義型であり、継承は部分型と…

オブジェクト指向は禁止するべき

…たけど、まだぜんぜんオブジェクト指向とかできてません」のように言ったり、ちょっと慣れた人が「このソース、ぜんぜんだめ。オブジェクト指向ができてない」にようなことを言ったり、まるで、オブジェクト指向ができてるかどうかがよいプログラムかどうかを表すことになってるようだ。 Javaのアルゴリズムの本に、「Javaなのにオブジェクト指向ができていない」のような書評がついているのを見たときには、お前は何を求めてるんだと思ったりもした。そのようなオブジェクト指向は、窓から投げ捨てるべきだ…

ソフトウェア工学は失敗している

…じだったかというと、オブジェクト指向が大成功し、統一設計技法の前段階としてUMLができ、異機種通信としてCORBAが注目され、統一データ定義としてXMLが策定、開発プロセスとしてCMMに期待が集まっていたという時期でした。 しかし、結局統一設計手法は完成せず、UMLだけが残りました。実際に使われているのはその一部です。CORBAも普及せず、WebプロトコルにあわせてSOAPが出てきたものの、結局単純なRESTが定着しました。XMLはいまは毛嫌いされています。大成功したはずのオ…

黎明期のJava入門書の話

…スン 第3版(下) オブジェクト指向を始めよう 今回の「Java言語プログラミングレッスン」もやはり上巻でif、for、配列、下巻でクラス、インタフェースという構成になっていて、1冊にまとめれなかったものかという感がぬぐえない。 あわせて5040円というのは入門書として高価だし、上巻だけでは役にたたない。 まだ発売されていないので内容は見ていないのだけど、結城さんの本であるからには記述がすばらしいということに疑いの余地はない。だからこそ、二分冊という構成はもったいない。 また…

プログラマの実力は経験だけであがらないことがレベル格差につながる

…産のしかたのほうで、オブジェクト指向設計→プロセス改善→XP→アジャイル→テスト→継続的インテグレーション(イマココ)のようなものが流行り続けてる。 ただ、これらの勉強は、ともするとルールとツールと名言集のようになってしまって、頭でっかちを産むだけの逆効果にもなりうる。こういった「どのように作るか」だけの勉強では、やはりプログラマのレベルはあがりにくいと言える。 最終的には「純粋なオブジェクト指向とは」「これはアジャイルといえるか」「TDDではなくBDD、いやxDD」のような…

プログラムの理論とはなにか

…ムの勉強は必要ない、オブジェクト指向やデザインパターンを勉強するべき」というコメントが付きます。 おそらくアルゴリズムの勉強は必要ないという人は、アルゴリズムの勉強を、アルゴリズムカタログを頭のなかにもっておくことだと誤解しているのだと思いますが、上に書いたように、アルゴリズムの勉強というのはそういうことではなく、プログラムの性質がわかるようになることです。 反対に、プログラムの理論としてオブジェクト指向やデザインパターンを勉強する必要があるかという話ですが、オブジェクト指向…

そろそろIDEよりコマンドラインのほうが理解が深まるという有害な妄想は捨ててはどうか?

…れます。 それより、オブジェクト指向のほうがJavaの本質に近いと思われます。オブジェクト指向を腫れ物のように扱って2分冊にするということのほうが、本質をはずしている気がします。 間違い探しはプログラムを組む訓練にならない 入門書のサンプル入力では、失敗した数だけ時間が多くかかるだけで、ほとんど学べることは増えません。 例えば、何かエラーが出たとします。統合開発環境を使わないのであれば、原因と思われるものを列挙し、丹念に個々の原因と思われるものを調べるうちに、失敗していなけれ…

「オブジェクト指向は教えないでください」ってなんてよくわかった会社だろうか

…" を教えてほしい。オブジェクト指向は教えないでください。」との指示を受けたそうです。 プログラミングにおいて、現場での「オブジェクト指向」の優先度が低いってことですよね。 そして、理論的にも優先度は低い。アルゴリズムとか関数的ななにかとかをちゃんと扱えるようになるのが先決ですね。 関数+制御構造がやはり基本だし、その範囲がちゃんと扱えないで「オブジェクト指向」がちゃんと活用できるとは思えないし。 ただ、そうしようとしてもJavaではオブジェクト指向のための構文を知らざるを得…