「oop」を含む日記 RSS

はてなキーワード: oopとは

2012-01-04

プログラミング初心者たわごと

JavaScript って生き物っぽいって思ったのがきっかけだった。

なんか菌?に遺伝子いれてたんぱく質生産させるやつ? Function は菌の細胞膜prototype遺伝子で、だから prototype全然関係ない違う生物遺伝子を生きてる菌に入れちゃったり。そうすると全然ちがうたんぱく質生産されたり。prototype にべべーっとコピーして追加するのなんてまさしくそれっぽい。

インスタンスからじゃないと複製できないのも生き物っぽい。

インスタンスって言い方になにか違和感があるなあ。

だってプロトタイプベースって、生き物しかいない世界じゃない?基本的に。インスタンスってのは生き物じゃない設計図があってそれにしたがって出来た生き物がインスタンスってイメージあんだけど。プロトタイプベース世界にはそんな設計図も生き物じゃないものもないよね?なのにわざわざインスタンスっていうのに何か違和感ご都合主義的なもの感じる。クラスは型で、インスタンスを実体だとかなんとかって氾濫してるせいかな。多分この辺の用語が JavaScript をわかりにくくさせてる気がする。

僕の感覚では、オブジェクトってのは生き物で、クラスベースってのは神が設計図に基づいて生き物を生産してる世界で、インスタンスベースってのは生き物が生き物を複製してる世界イメージだ。多分、原始の生物インスタンスベースみたいな世界で、海の中にうようよしてたんだろうな、とか。

オブジェクトじゃないものは、生き物じゃない死んでるたんぱく質RNA の破片みたいな。それだけじゃなにもできないみたいな。それだけじゃ命がないから、生き物の殻に詰めるってのが JavaScriptコンストラクタイメージ

Perl の bless したらこれはもう命入ったよ生き物だからねっあとは勝手にしてねってのも、Python名前空間さえあればなんとかなるよねってのも、JavaScriptハッシュさえあれば世界作れるよねってのも、みんなどこか似ている。ちゃんと OOP を理解できてるかは別としてもこの三つはわりとすぐやりたいことができた。昔 Java の本を買ってきて挫折したのにくらべたら、なぜかずっとわかりやすかった。(bless という命名はすごく洒落てる)

全然関係ないけど、Django日本語リファレンスは何か萌えるラクダ本日本語訳はむかつくのに。

プログラミングを始めたばっかりの時は、なんだか難しい用語の意味を理解しないと OOP がわからないと思ってた。それは僕らの住んでる世界とは全然関係のないプログラミング技術ってやつだと思ってた。

でも多分違う。

世界が動く仕組みさえあれば、あとは作り手に世界の成り立ちを抽象化する表現力さえあれば、世界勝手表現されていくし、動き出してく。たまたま僕らの世界オブジェクトもので溢れていて、プログラミング言語進化すれば世界に似るのも当然だろう。いや逆か。プログラミング言語世界に似てきたから、オブジェクトなんていう世界に似た概念が出てきたってことか。なんだか難しい用語ってのは、その表現の一部分の技術名前をつけてるだけなんだな、と。例えば何とか歌唱法や何々画法とか何とかレトリックとかパースの取り方みたいなのと同じ。それは表現を理解する手助けにはなるけど、その意味を知る事がイコール表現力をあげることにはならないんだよね。これに気づくのに遠回りしすぎたなあ。

(知識を得るだけで、100% 還元される人もいるかもしれないけど、そんなのは一部の天才だけだと思う。殆どの凡人はそうはいかない。とはいえ、元の錬度が低ければ、コツをいくつか教わるだけでいきなりうまくいくこともある。ただ、それをまるまんま実力だと思うのは、どんな分野でも危険だ。恋愛テクニックやらを必死に読んでる連中が男女間の深い人間関係を上手くやれてるとはちょっと想像できない!)

プログラミング表現力を上げるにはどうすればいいんだろう。きっと他と同じだろうな。いい表現を沢山味わって、世界をよく観察して、どう成り立ってるかどう動いてるか、私達はそれをどう認知しているのか、考えることかもしれない。漫画家を志す人が美術解剖学を学んだり、優れた画家が絵筆で世界を生々しく描写するように、優れたプログラマ世界のなりたちをプログラムに写し取ったり、世界の仕組みを作る事が出来るのだと思う。

やっとプログラミング面白くなってきた初心者より。

2011-03-16

http://anond.hatelabo.jp/20110316202255

デザインパターン編を書いてたら99ブクマだと…。なんだかすみません。

あと増田で書くの初めてで記法がちとわかっていなくて見づらくて申し訳ないです。

ブクマコメントレス

>おもしろい。でもJavaJSRubyじゃ同じオブジェクト指向でもまったく違った設計と思想になるのでまとめて説明は難しいかも

言語世界として、どんな世界がいいか考えましょうという話に持って行きたかったけど難しかったですね。

ASしらないけど classが使えるJSっぽいところみるとASなんですねこ

>@shinout 面白い!けどいろいろ間違ってる!!コード動かしてみいや

それっぽい言語なので動きません。JavaとかASとかそのへんですねー。

その割に一部ちゃんと書いてるのが誤解しそうですね。

OOPを習得したPGとそうでないPGとの生産性の差がドラゴンボールで言うところの戦闘力の差という比喩でたとえるとよい。初心者PGが何人集まってもかなわないところがある。

ドラゴンボールで学ぶ開発」というタイトルで是非w

>17号と18号が逆

いません…直しました

セルはis-aはなhas-aで実装した方がいいような気がする。

セルってチートいですよね。くらった技を覚えるブウの設計と、遺伝子を持っているから技が使えるセル設計をどうするかは議論になりそうです

>なんか、むしろ分かり辛くなってると思うけど、心意気やよし!

>かりやすいんだかわかりにくいんだか

無理がありました

>連載はextendされたけど、主人公の継承には失敗したよね

素晴らしいコメント設計ミスで主役になれなかったのは運用カバー出来ましたね。

セルクラスの承継よりもオブジェクトコンポジションの方がいいのか分からない。

http://anond.hatelabo.jp/20110316215156

で突っ込まれてる内容の方がいいかもしれませんね。

でも悟空ベジータは吸収じゃなくて細胞を合成してる?とかなので17号、18号とは別にする必要があったりします。

>その他残念とかダメとか誤字とかのコメント

申し訳ありません…。

2010-07-25

プログラミングを身に付けるには

http://anond.hatelabo.jp/20100725025127

"どうすればいいか"を教わって、プログラミングが身につく人は多くありません。"なにをやりたいのか"を自分で生み出せないと、詰まってしまうし、なにより楽しくありません。

やりたいことがあれば手段は後からついてきます。これは物作り全般に言えることです特に学び始めにおいてモチベーションを維持し勢いをつけるのに大事なのは"やりたいことがあるか"、もっと具体的に言うなら"作りたいものは何か"です。これがないと始まりません。それがどうしてもないなら、そういう状況に自分を追い込むのも有効です仕事でどうしてもやり遂げなければならない状況に追い込まれれば人間 0 からでも身につきます。実際自分がそうでした。

とかく、プログラミングというのは手段さえ知れば、あとはだれがやっても同じ結果が出る生産業だと誤解されがちです。そういう認識で学ぼうとしても楽しくありませんし、本質を掴みにくいので応用が利かなく上達しにくいです

本質は絵や音楽と同じです言語を覚えるということは道具の使い方を覚えることでしかありません。音楽理論や絵筆の使い方を知っているだけで、すぐに素晴らしい音楽や絵ができるでしょうか。殆どの人がそうは思わないはずですプログラミングもそれと同じです。作りたいものがある人が圧倒的に強いのです

また、やりたい分野によって向いている言語は違います

んー、ここまで読んでも「やりたいことはないけどとりあえず勉強したい」というなら、すぐに動くものをつくりやすい言語お勧めかなあ。

Google App EnginePython をやるとか。 Python のいいところは、明快で作法にあまり迷わなくていいところです自分がまったく言語やったことない知り合いにすすめるとしたらこれ。

レガシーではないちゃんとした JavaScript (http://www.crockford.com/javascript/ この辺にあるような) もいいですブラウザですぐ動きますし、 Firefox 環境なら本格的なデバッガまでありますJavaScript は非常に誤解の多い言語ですが、悪いものではありません。 お手軽にグラフィカルなものを扱える、結果がわかりやすいので初心者向けです。それでいて、拡張性が高く、プログラミングに必要な概念ロジック殆ど再現できる底力も秘めています

Perlレガシー作法がいまだに見受けられる (Perl って CGI のことでしょ的な解説が未だにある) のですが、初めから strict に慣れて、 CPAN にあるようなスタイルを参考にして、初めから OOP に突っ走るなら今からやってもいい言語ですCPAN 等のリソース豊富さとコミュニティの広さが強いです。ただ、懐の広さ、できることの多さゆえに初心者向きではないところもあります

PHPお勧めしません。理由は適当検索してください。 PHP5 でかなり良くなりましたが、逆に言えば 4 と 5 では別言語と言っても良いほどです。古い考え方と新しいスタイルがごったになりすぎていて、かつて同じような状況にあった Perl に比べても、洗練されたスタイルを学びにくいと思います。また、ロジック面白さに感動するような部分が PHP にはちょっと足りないです

MMORPG やそのエミュレーターの中には、 Lua を使って AIマクロイベントスクリプトなどを組めるものがあります。すぐに結果が出て自分の役に立つものが作れるので、既にその手のゲーム趣味ならお勧めです。こうした用途では、自分の望む世界を構築するために嫌でも物事をモデル化して考えるので、自然OOP 的な考え方やデザインパターンが身につきます

VB は簡単に GUI アプリケーションが作れるのでやる人が多いですが、癖が強いし応用がききにくいのでお勧めしません。また、公開されているソースコードが少ないことも学ぶには不便です

Ruby はそれほどやりこんでないのでコメントはしないでおきますが、悪くはないと思います

C++ は何をすればいいのか?を聞いてる人にはすすめにくいです。作りたいものが明確にあり、ロジックを見つけることで応用が利く人ならほっといても覚えるでしょう。自分は、必要に迫られて身につきましたが・・・

個人的には、作りたいものがあってそれにマッチしてるなら、関数型言語最初にやったっていいと思います。一度ロジックを掴み取る能力がついてしまえば、第二第三の言語は猛スピードで身につくので。

人に見せて使わせてレスポンスをもらうことが大事

作ったものを公開して、人に見せたり使わせたりして、レスポンスを得るというのはモチベーションの維持や上達に非常に有効です。むしろ、早く上達したいなら必須と言ってもよいですプログラミング場合はこれがおざなりにされがちです

絵を上達したいなら、 pixiv を薦められますよね。今下手かどうかは関係ない。上手くなりたい人が沢山投稿してる。歌が上手くなりたいなら、人前で歌う事は避けられない。ニコニコ動画などで公開してる人がいるよね。人の作品をみると刺激をうける。これはすごいパワーだってのはわかると思う。

プログラミングだって全く同じです。なのに、プログラミングは引きこもって一人で勉強する人が多すぎる。絵や歌は公開しても人に害を与えないけど、プログラミングバグセキュリティホールがあったら人に害をあたえるかもしれない、といった印象が強いのかもしれません。

それでも、もっとコミュニティに参加したり、作ったものを公開することが学び始めのうちから重視されていいのは事実。そういった面から考えると、バグセキュリティホールが出来にくく、安全で、危険な動作がしようもない実行環境があり、加えて Web に公開しやすい言語が学びはじめに向いています

こちらも参考にしてみて下さい

http://d.hatena.ne.jp/Hamachiya2/20090721

http://d.hatena.ne.jp/Hamachiya2/20080131

学校に行く必用があるのか

学校に行けば一人で学ぶよりは後押しや出会いがあるかもしれませんが、”やりたいこと””必用なこと””作りたいもの”が無い限り、殆どの人は身につきません。

また、残念なことに講師にも大変当たり外れが多いです自分専門学校にいったことはありませんが、講師の知り合いがいるのでよく学生さんの話を聞きます。結局の所、しっかり身につく人は、家に帰っても色々作りたいものを作って公開したり、著名なプログラマ達のブログを読みまくったり、フォーラムに出入りしたり、ML に入ってたり、 twitter で刺激的な知り合いをつくるとかしていて、そういうところでめっちゃ差がつきます

学校に行くなとまでは言いませんが、学校いかないで身に付ける人は本当に多いし、学校いって身につかない人も本当に多いということは考えて下さい。

26日追記

ブクマ増えてた!ありがとう

元増田さんがどの言語をやれば・・という方だったので仕方なくこのような書き方になってしまいましたが、作りたいものが既にある人はあまり”どの言語をやるか”には拘らなくてよいと思います

そんなことよりも、今必用で/気軽に/すぐ結果がわかることをやるのが、始めてのプログラミングには大事。だから本当は、どの言語をやるかよりも何を作りたいのかを先に見つけてほしい。

目の前の意外なところにプログラミングは生かせます。できるだけ身近な、すぐ効果がわかるところからとりかかった方がプログラミングの楽しさにはやく気付けるはず。

みたいな導入口でもいいんだ。

例えば C++ でのプログラミング初心者が 0 からやるのは難しいだろうけど、既存アプリケーションプラグインなら開発のためのテンプレート目的に近い作例があってコードも短いからそれを改造するところから始められる。需要があるから楽しいよ。

目の前に実用的な目標があるってのが大事

2010-06-17

http://anond.hatelabo.jp/20100617161153

今一応研究開発系の仕事してます。日本で。

物理は専門だったんで余裕。涎垂らしながら量子力学とかやれるけど、あんま需要無い気がするんだよねえ…。

ただ逆にプログラミングにあまり興味無いのが問題。一応C++とかのOOP動的言語もわかるし関数型言語も多少わかるけど、なんていうかビジネスとして成り立つアプリケーションに作り込むのが超苦手です。

英語勉強してるけどあんま得意じゃないです。来週結果が出るTOEICでたぶん800点くらい。

2009-09-29

OOPFizzBuzz

あえてプログラミングゴルフの正反対を目指してみる。

class FizzBuzzProgram{
	public static void main(String args[]){
		for (int i = 0; i++ < 100; ) {
			System.out.println(new Number(i).checkMod3().checkMod5());
		}
	}
}

interface Mod3Mod5Unchecked extends Mod5Unchecked {
	public Mod5Unchecked checkMod3();
}

interface Mod5Unchecked {
	public Object checkMod5();
}

class Number implements Mod3Mod5Unchecked{
	private int no;
	public Number (int no) { this.no = no; }
	public Mod5Unchecked checkMod3() {
		return no % 3 == 0 ? new Fizz(no) : this;
	}
	public Object checkMod5() {
		return no % 5 == 0 ? new Buzz() : this;
	}
	public String toString() { return Integer.toString(no); }
}

class Fizz implements Mod5Unchecked{
	private int no;
	public Fizz (int no) { this.no = no; }
	public Object checkMod5() {
		return no % 5 == 0 ? new FizzBuzz() : this;
	}
	public String toString() { return "Fizz"; }
}

class Buzz {
  	public String toString() { return "Buzz"; }
  }

class FizzBuzz {
	public String toString() { return "FizzBuzz"; }
}

2009-08-07

http://anond.hatelabo.jp/20090807172637

これマジ?

俺、未経験(もちろん非情報系専攻)で業界に入ってプログラミングやることになって1年くらい経つ。

その間の学習の軌跡はだいたいこんなもん。

  • とりあえずK&amp;Rを読まされてCをなんとなく学習。すぐにC++コード書くことになる。C++柴田ボウヨウかなんかの本を読む。
  • メモリ空間イメージがつかめなくて苦しむ。参照と実体の区別がつかなくてオブジェクトをうまく扱えない。
  • メモリ空間イメージを理解した。ここまでくると大体感覚がわかってくる。OOPとかすんなり理解できるようになる(もちろんギークレベルでは決して無い)。
  • デザパタ系の本をあらためて読むと意味がよくわかるようになっている。継承とかよくないよね。できるだけ集約を使って権限と責任を委譲した方がいいよね、みたいな感じ。
  • Template Methodとか正直名前を覚えてられないんだけど、今ググったら普通に使ってる手法だった。ていうか普通に考えてそういう設計になるよね、みたいな。(いまここ)


実際にはコード書く以外の仕事してる期間も結構ある(半分くらい)。設計考えたりとかアルゴリズム考えたりとか。

でも俺、ギークとかなんとかみたいな変態プログラマの人たちには全く追いつける気がしないし、わかんないことだらけで俺センスねーなーと思うことしきり。本当に。

「珠玉のプログラミング」っていう本があるけど、あれみたいにビットレベルコンピュータ原理を最大限活用してパフォーマンスの高いコードを書く、みたいな考え方がさっぱり身につかない。

でもこのエントリ見ると、俺もちょっとは自身もっていいんじゃね?って気がしたわけだ。

でもやっぱりそんなことは無いのかな。

ちなみにデザパタ関連およびOOP関連では『デザインパターンとともに学ぶオブジェクト指向こころ』っていう本がマジオススメ感動的にわかりやすい。

2009-02-19

モダンPerl入門』を第1章だけ読んだ

巷のPerl Mongerな人たちの間で話題の『モダンPerl入門』を読み始めた。

第1章はオブジェクト指向トレンドの話で、とても興味深く読んだのだが、同時に「なんでこれPerlで実装せなあかんの?」と疑問に思った。ていうかオブジェクト指向やりたいならJavaC#でいいじゃん。

Perl5には本格的なOOPの仕組みが実装されていない。

継承という基本的な概念もないし、コンストラクタなんかも用意されていない。ゆえに、MooseとかのCPANモジュールを使って実装しなければいけないのだけれど、その分敷居が高くなって初心者には判りづらい。初心者でも現場に投入できるような、強力なオブジェクト指向機構が用意されているJavaC#といった言語StrutsASP.NETといったフレームワークなんかとは全然違う。

私はメインPHPASP.NET(C#)という人間で、Perlバッチプログラムとかクローラの実装とか雑用処理なんかに使っている。PHPは小規模プロジェクトアジャイルな開発がしたい時、ASP.NETは大規模プロジェクトに呼ばれた時用の懐刀という感じで使い分けている。PerlWebサービスを作ることももちろん出来るけれども、どちらかというとスピードが優先される開発に用いるものだと思うし、OOPを用いた大規模なプロジェクトPerlを使おうとする理由がよく判らない。無駄に難しいし、そもそも本書を読めるレベルPerlを理解している人の頭数がかなり少ないだろうから、実装しても保守コストがやたらかかる。Livedoormixiはてなのような大規模サイトPerlで動いているようだが。。。

モダンPerl入門』は内容も書き方も素晴らしい良書だけれど、その辺りが引っかかった。「PerlOOPを使う理由(APS.NETStruts+Java採用しない理由)」は何なのだろうか? 私のプログラマーとしてのスキルが低いだけだと思うが、よく判らないので誰か教えてくだしあ。教えてダンコーガイ

2009-02-09

http://anond.hatelabo.jp/20090209072402

そういう人はPHP使えばいいじゃない。

んなことも自己解決出来ない人が生粋OOPrubyで何ができようか。

2008-11-26

はてな面白いって聞いたから一日かけて色々見てみたけど

2ちゃん出張所くらいにしかみえないのだが。

だいたいPerlOOPしてる時点で狂気の沙汰だし、学部基礎レベルデータ構造アルゴリズムをちょっと適用してみせて技術力とか言っちゃってるし。

その活動のすべてがネタだとしか思えないのだが。

2008-06-26

http://anond.hatelabo.jp/20080626231143

コード書き始めて1ヶ月強ですが、なかなかC++仕様が把握できません。

今日はポリモーフィッククラスの扱いがよくわからなくてハマッったりしました。

抽象クラスポインタをnewしようとしてました)

あとSTLmapコンテナがイマイチわからず困ってます。

書いたコードは2,3000行くらい。図形処理のアルゴリズムが難しくて相当苦しみました(まだ未完成)。

テストケースをあまりきちんと洗い出してないからこれから困ると思います。

OOP的に正しい設計とか未だによくわからないし…(設計始めたのはさらに1ヶ月前くらい)。

ギークとまではいかないにしても、何とかして「そっち側」に行きたいのです。

スキルを身につけるという意味では、実際どのくらいのタイムスパンを見込むべきでしょうか。

とか、終わってもいないのに増田に書いちゃう集中力のなさも問題です。

2008-01-31

何も知らない俺がIT土方になるまで。

高専化学っぽいところ出て、大学化学っぽいところに編入して、

東京来て、初めての仕事PHPで、誰に頼ればいいかもわからず、

最新の言語に興味も無く、セキュリティーも知らなかった。

使ってた言語?VB4とHSP2でしたが何か。

 

初めての仕事で学んだこと

 

その後もいろんな会社

 

とか、けっこう酷いことをして、たくさんの人に迷惑をかけましたが、

今ではそれなりにIT土方をやっている。

…という俺から見ると、PHP初心者罵倒は、見るたびに、なんだか恥ずかしさを思い出す。

ああ、明日も仕事だし、勉強するね。うん。みんなごめんなさい。それは全部俺がやった事です。

 

あれです。

ごめんなさい。

2007-09-24

anond:20070924150724

どうしてそう色眼鏡で見るかな。違うよ。みんな梅田のあっち側とかこっち側とかに感化されすぎだよ。

そのくだりは工業製品としての進化の方向性に付いて書いてるんだよ。GUI進化ダイナブック構想とかOOP進化を見てもいいように別にムチャな要求でもなんでもないと思う。

ムチャだというなら、それは「技術者としてお手上げー」って事だよ。

2007-08-24

道具は選ぶべき

http://anond.hatelabo.jp/20070824010205

確かに。

大規模プログラムならOOPを使った方が大抵は美しくコーディングできるけど、

すごくちっちゃい小物プログラムで、ちょっと小さいことをやらせるだけで大袈裟クラスを作って処理させたりとかはすごく大袈裟だし、

こういう場合は従来の普通の構造化プログラムで良いと思う。

まあ、道具は選ぶべきだってこった。

将来はOOPでさえも古臭い技術になって、もっと効率的にシステム構築できる時代が来るかも知れないし。

あるいは人間プログラミングから解放されて、画面の中の小人さん押しかけメイドさん増田猫に頼み事をすればやってくれる……時代はまだ先でしょうけど。

http://anond.hatelabo.jp/20070824002312

OOPプログラミングに有利なのには同意。

しかし、OOPは各オブジェクトの構造や関連に注目した記述となるため、自然言語との親和性が手続き型よりも低い。オブジェクト指向は視覚的なアプローチなのに対し、手続き型言語言葉による理解。一昔前の言葉で言えば、ランダムアクセスとシーケンシャルアクセス並の違いがある。

OOP人間界、、、人間世界観に沿っているのは同意するが、人間言葉に合わせているのではない。

また、「xxx.doThat()」を羅列しただけのようなプログラムOOPではない。それは手続き型だ。

ちなみに俺はOOPの利点は、メソッド・変数群の名前空間の整理(大規模プログラムを書いても名前が混乱しにくい)、データカプセル化(複数の違うフォーマットデータを同じもののように扱える。多態性)であると思っている。分析との親和性についてはオブジェクトデータフローペトリネットも大して差がない。

いや、なんていうか覚え立ての言葉をいろいろ使ってみたかっただけだ、すまん。

http://anond.hatelabo.jp/20070824002312

OOPが別に間違ってるとかそういうところで抗うつもりも無いんだけどさ、いまさらOOPいわれても正論すぎて面白くね?

とくにプログラマがなんとか指向を前提にプログラムごにょごにょして声だかにこれが正しいんだ!とする流れは拒否したいな。

何をつくるかが第一プライオリティであって、どうやって実装するかなんて別にどうでもよくね?

何をしていいかわからないうちは型に嵌るのは重要なことだけど、型の優美さを競うほど成熟したジャンルでもないとおもうわけだ。

今のソフトの発展のスピードは石器時代から近代までを30年ぐらいで一気に駆け上がるぐらいの速度だよね。

ほんの17、8年前までプログラマーという仕事は厚紙の穴ぼこを手で弄ったりしながらプログラミングしてたんだぜ?

そんな速度のところで、スタイルの美しさを追い求めても意味がないと思うんだ。

近代兵器が出てきたあとも、剣舞とかそういう美はあるよね。

でも、実戦において剣技の美をもって近代兵器に立ち向かおうとするのはあまり実のある話しとは思えない。

手法に固執するほど成熟してないんじゃないの、と、そういう事がいいたい。

そういう点で「絶対」とか、「したほうがいい」とか、総論で言われるとどうなんだろうと異論をなげかけたくなる。

そんなのは現場コードレビューコーディング規約レベル現場レベルルールとして落とし込めば十分な話しだとおもっちゃうのだ。

てかてかてか、俺しゅみぐらまーだからそんなんで生産性かわらないし。

2007-08-22

http://anond.hatelabo.jp/20070822132317

昨日と同じような事を書いてるな…

昨日のやりとりを読むといいよ。

たとえ趣味でも書いてひとつき後にそのソースを読めば、OOPであるかそうでないかは意外に重要味を帯びてくる。

2007-08-21

http://anond.hatelabo.jp/20070820212459

オブジェクト指向人間らしい書き方かには疑問の余地があるが、C言語とかでプログラミングしてると必然的に行き着く考え方だとは思う。

  • 関数を作成できる言語ならカプセル化の必要性には早晩気付く。
  • 変数にいったん代入せずに関数の返り値をダイレクトに他の関数に渡したりしてるうちに、array.compact().sort().reverse().to_str()みたいに数珠繋ぎにする、という発想がなんとなく見えてくる(Cっぽい書き方だとto_str(reverse(sort(compact(array))))、って感じか?)。
    • これが見えてくると、関数というのは特定の型に付随するものだ、みたいなイメージが出てくるから、型とメソッドが紐付けられているOOPの発想に心から納得できる。

オブジェクト指向ではない世界で、自分で設計しながらプログラミングした経験があるとオブジェクト指向の理解って早いんだよな。最初からオブジェクト指向ありきの書き方を教えちゃうと、その必然性が理解できないから、ついていけない人が発生する。

趣味プログラミングをやっていた人間と、そうでない人間の差はここに生まれる。必要に迫られたプログラミングしか経験していない人は最短距離しか進まないから、試行錯誤の末に先人の叡智と同じ結論に自分で達した人とは、理解の深さが違ってくる。

2007-06-15

俺が Ruby を覚えた方法

http://anond.hatelabo.jp/20070615171101

俺は大学四年まで全くきちんとしたプログラミングをやったことが無くて(大学講義Javaの超簡単なのを教わったぐらい)で、卒論プログラミングをしなくちゃならなくて、そのとき初めて Ruby を触った。

RubyOOP ですげーんだぜ、とか一部で云われていた時代で、有名なアプリケーションtDiary ぐらいしかなかった。はじめはクラスとかも解らずに何が何だか。そのとき tDiaryプラグインクラス使ってないから簡単に書けるよ、というどこかのチュートリアルをみて見よう見まねで。GD という画像ライブラリを使ったら、サンプルをちょっと弄るだけで画像が作れて面白かったんだ。で、それを日記で公開してみた。今見返すとものすごくしょぼいソース

そのときたまたま Ruby ハカーの方がそのプラグインリファクタリングしてくれて、クラスを使って抽象化してくれて、初めて OOP をほんの少しだけ理解して、こうやってクラスって使うんだなぁというのを知った。本当に運が良かった。

その後就職して仕事php ハカーのすごい先輩にいろいろ教えてもらって php を使って基本的な OOP は理解した(PHPDIS る人が多いけど、プログラミング初心者には良い言語だと今でも思ってる)。これまた運が良かった。

その後またまた Ruby を使い始めたら今までよくわからなかった部分もするする頭に入ってきてホント面白ろくて没頭して。今では一通りのことは Ruby でできるようになった。

プログラミングが解るなら、Railsソース(トリッキーなことやりまくってるのでつらいかも。ActiveRecordActiveSupport はその中でも解りやすい)を読んで、解らなかったら rubygems で興味のありそうなライブラリコード読んで、あたりが OOPRuby 覚えるには手っ取り早いかも。

今なら Rubyレシピブック 268の技Rubyクックブック ―エキスパートのための応用レシピ集 あたり読んでおけば良いんじゃないなぁ。

あと今はてダRuby を含む日記を書くともれなく ruby-dev な人たちがキーワードからたどって読んでくれるので、解らないことをつぶやいたりすると結構答えてくれるみたい。のではてダ使って勉強日記とか書くのも良いと思うよ。

とあんまり参考にならないと思うけど書いてみた。なんか目的見つけられて、楽しく覚えていけたら勝ちなんじゃないかな。たぶん。

2007-04-28

[]OOPの利点

ってホント何なんだろうね。

自分はどっぷりオブジェクト指向だから、そうじゃないコードキモイと思うけど、何が利点なのかは良く分からない。

http://anond.hatelabo.jp/20070427093912

ログイン ユーザー登録
ようこそ ゲスト さん