fc2ブログ

ツンデレ祭りー永遠のライバル

おっ!わんくまでツンデレ祭りが開催されているピヨ♪
本当は関数型言語で表現したかったんだけど、日本語表記が難しく面倒なので断念(笑)
ツンデレという言葉でボクが連想するのは熱血バトル漫画ピヨッ!


using System; namespace TunDre { class Program { static void Main( string[ ] args ) { Hero hero = new Hero( ); Console.WriteLine( "後に永遠のライバルとなる敵が出現" ); Enemy enemy1 = new Enemy( hero ); TunnDreRival rival1 = hero.Sympathy( enemy1 ); Console.WriteLine( "\n強敵出現!" ); Enemy hard = new Enemy( hero ); hero.HP = 10; Console.WriteLine( "\n" ); } } /// <summary> /// 主人公 /// </summary> class Hero { /// <summary> /// 最大HP /// </summary> private int m_maxHp = 100; /// <summary> /// 現在のHP /// </summary> private int m_hp; public int HP { get { return this.m_hp; } set { this.m_hp = value; if ( this.m_hp <= ( this.m_maxHp / 10 ) ) OnPinch(); } } /// <summary> /// もうHPがやばいよ! /// </summary> public event EventHandler<EventArgs> Pinch; /// <summary> /// HPがやばい事を外部に知らせる /// </summary> private void OnPinch() { Console.WriteLine( "ここまでか・・・" ); EventHandler<EventArgs> e = Pinch; if ( e != null ) Pinch( this, EventArgs.Empty ); } /// <summary> /// 敵に情けをかける。 /// </summary> public TunnDreRival Sympathy(Enemy e) { Console.WriteLine( "止めは刺さない。お前なら変われる。" ); return ( TunnDreRival ) e; } } /// <summary> /// ツンデレ仕様のライバル /// </summary> class TunnDreRival { /// <summary> /// ライバル視している相手 /// </summary> private Hero rival; /// <summary> /// ライバル視している人を指定して、インスタンスを生成する。 /// </summary> /// <param name="target"></param> public TunnDreRival( Hero target ) { this.rival = target; this.rival.Pinch += new EventHandler<EventArgs>( Rival_Pinch ); } /// <summary> /// それは俺の獲物だ! /// </summary> void Rival_Pinch( object sender, EventArgs e ) { this.Help( ); Console.WriteLine( "お前を倒すのは俺だ!" ); } /// <summary> /// 主人公を助ける。 /// </summary> private void Help() { Console.WriteLine( "だらしがないぞ!"); Console.WriteLine( "俺が奴を引き付けている間に必殺技を使え!" ); Console.WriteLine( "よし、やったな!" + "流石俺の永遠のライバルだけあるぜ!" ); } /// <summary> /// 昨日の敵は今日の友 /// </summary> public static explicit operator TunnDreRival( Enemy obj ) { return new TunnDreRival( obj.Target ); } } /// <summary> /// 主人公の敵 /// </summary> class Enemy { /// <summary> /// 敵視している相手 /// </summary> private Hero target; internal Hero Target { get { return target; } } /// <summary> /// ターゲットを指定して、インスタンスを生成する。 /// </summary> /// <param name="target">敵視している相手</param> public Enemy( Hero target ) { this.target = target; } } }

やっぱりライバルの助けはイベントだね♪それと、敵がライバルに変るのもお約束の仕様さ♪
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

中の人の徒然草141

みなさまおはようございます。今日も元気に行きましょう♪昨日私は関数型言語について考えていて、ふと疑問に思うことがありました。それは集合論が出すぎという事です。データ中心アプローチ、オブジェクト指向、関数型言語などでよく集合論が引き合いに出されます。確かに原点は集合論なのでしょうが、集合論にこだわりすぎなのが気になりました。というのも、私はそれ程集合論について知りませんが、それでもシステムが構築できるからです。
みなさまも思い返せば思い当たる節があると思いますが、全ての情報処理技術者が集合論をマスターしているでしょうか?集合論なくして仕事できないでしょうか?答えはおそらく否でしょう。私が例外で本当は全員が数学者並みに学んでいるのかもしれませんが、少なくとも私の周りでは数学者並みに集合論を使いこなす人が居ませんでした。そこから考えるに、情報処理技術は集合論を飛び出した違う何かなのではないでしょうか?むろん学問に無駄は無く、より深い理解の為に集合論も学ぶ意思はありますが、あまりにも集合論に拘りすぎるのも違うのではないかと私は考えます。何故ならば、原点に拘り過ぎると発展や進化がなくなってしまうからです。情報処理には情報処理特有のやり方があるはずです。
此れに似た現象で、よく情報処理技術は建築と対比されます。しかしこれも違うと私は考えております。似ているのは人間の思考が似たり寄ったりだからであって、変に建築に拘りすぎたのが原因で様々な弊害をもたらしていると私は思えてなりません。例えば、多重下請け構造とか、設計者の方が優れていて、プログラマは単純労働者だという頓珍漢な発想とかね。プログラマが単純労働者だと思うのならば、自分でやってみれば真実がわかるでしょうに(笑)
これらの事から私は思うに、情報処理技術はまだ未成熟な分野ゆえに、色々な不備があるのでしょう。従って、数学や建築による一種の呪縛から開放された先に真の情報処理技術があるのではないでしょうか?

テーマ : 裏事情
ジャンル :

中の人の徒然草140

いやっほー。今日もご機嫌のインドリです♪ 新連載の 仮想ネットワーク実装でTCP/IPを学ぼう ― TCP/IPの基礎と勘所の人気がいいようです♪色々あって第2回目の執筆が遅れているので頑張らなきゃ!編集部の人に長すぎるとのご指摘を受けて改善しましたので、今度は前回の半分ぐらいなので気楽に読んでね♪Web記事の特性を考慮した濃縮した記事にします。読者の方々何時も有難うございます。
うーんと今日は何を書こうかな・・・あっそうそう。昨日本棚の整理をしていたのですが、ある事に気付きました。考えたら当たり前の事なのですが、ざっとみると関数型言語の本が10冊ぐらいしかありません。後スクリプト言語は関数型よりも少し多い程度で、論理型言語Prologの本は4冊でした。Prlogが4冊もあるのにぃ、好きな関数型言語の本が10冊程度しかないorz
という事は・・・StandardML、Haskell、Scheme、LISP、OCamlの各言語2冊ぐらいしかもって居ない事になります。改めて関数型言語の本が少ない事を実感しました。もっと関数型言語の本が出版されて欲しいな!もう邦書では限界で洋書に移行するべき時期なのかもしれません。OSとコンパイラ実装系も洋書の方がいいし・・・早く洋書読めるように英語頑張ろうと改めて考える出来事でした。

テーマ : 裏事情
ジャンル :

VB.NETを咥えてWindows.Formsをつつく0-兎に角フォームを出してみる!

ご要望に答えて、新しい連載を開始するピヨ♪この連載では、Windows.Formsを通じてオブジェクト指向を体感する事を目的としているピヨッ♪さあ、ボクと一緒にグラフィカルにオブジェクト指向を楽習しよう♪
初めは一番簡単なフォームを表示するところからやってみるピヨ。みんな、文章を読むだけじゃなくて触りたいよね?早速開発ソフトを立ち上げよう♪立ち上がったら殻、いや空のプロジェクトを作ってね♪えっ?何でWindowsフォームアプリケーションにしないのかって?それはねぇ、そんなことしたらコードの海で溺れるからだよ。いきなり開発ソフトが生成したコードを読んで分かるのならば、この連載読まないよね。分かってもらえたと思うから作業をすするめるピヨ。
次は参照の追加で、SystemとSystem.Windows.Formsを追加してね。それが終わったら、プロジェクトのアプリケーションの種類をコンソールに設定しよう。OK?何でコンソールなのか疑問に感じるだろうけど、ひとまずこうして欲しいな♪これで準備は終わりで、ついにお楽しみのサンプルコードを投下するピヨッ!とぉー


バサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサ


Imports System
Imports System.Windows.Forms

Public Class FormProgram
    Public Shared Sub Main()
        Dim frm As Form = New Form()
        frm.Show()
        Console.ReadLine()
    End Sub
End Class


早速動かしてみて♪みて♪コンソール画面と一緒にフォームが表示されるピョ♪・・・あれ?だけど、何だか様子が変だよね。フォームにカーソルを合わすとアイコンが時計になるし・・・そう、このプログラムはWindowsアプリとして何かが足りないんだ。その何かというとコードなんだピヨッ♪そのコードは・・・
いいところで次回へ続く♪お楽しみに♪

テーマ : プログラミング
ジャンル : コンピュータ

書籍をつつく85-やさしいインタープリタの作り方入門―オリジナルなインタープリタを作成する。入門書として最適♪

昨日コンパイラ本を読んでいてふと思ったピヨ。ボクが紹介している本は「初心者向けなのかな?」と・・・ という事で、自分視点ではなくて初心者用のコンパイラ本を紹介するピヨ♪
やさしいインタープリタの作り方入門―オリジナルなインタープリタを作成する
目次を見てこの本が初心者向に最適だ思ったんで紹介するピヨッ!


【目次】
第1章 プログラミング言語とインタープリタ
1.1 プログラミング言語
1.2 インタープリタとコンパイラ
1.3 インタープリタとプログラミング言語の設計
練習問題
第2章 単純な計算プログラム
2.1 最初のインタープリタ
2.2 ポストフィックス計算機
2.3 高度な話題
練習問題
第3章 四則計算機
3.1 四則計算機の概要
3.2 四則計算機の作成
3.3 四則計算機の拡張
練習問題
第4章 ラインインタープリタ
4.1 ラインインタープリタの設計
4.2 字句解析
4.3 ラインインタープリタの作成
練習問題
第5章 インタープリタと言語の設計
5.1 2種類のインタープリタ
5.2 さまざまな定義
5.3 その他の検討事項
練習問題
第6章 インタープリタの開発
6.1 式の計算
6.2 Ano言語の処理
6.3 インタープリタのソースリスト
6.4 実行例 200
6.5 言語の改良と拡張
練習問題
付 録
付録A ソースコードの使い方
付録B 新しい言語を作るためのヒント
付録C 練習問題解答および解答例


どう?初心者向けだと思わない?残念ながらボクの場合は、自分で考えた技術がコンパイラと呼ばれていると気付く事から始まったから、コンパイラ初心者の気持ちは分からないけど、目次を見る限りコンパイラを知らないけどもちょっと気になる人に向いていると思うんだ。ただちょっときになるのが、初心者向けすぎてある程度のレベルに達しないのではないかという事ピヨ。でもそれは大丈夫♪コンパイラの初歩の初歩だけで終わらないピヨ。予定をみると、続編のコンパイラ作成本は2009年6月発行予定だそうだから安心ピヨ。
この本の作者は、アセンブラなどの書籍を出している人なのできっといい本だと思う。ちょっとお遊びしたい人は安いし是非買ってみよう!コンパイラを学んで損することは無いからね♪

テーマ : プログラミング
ジャンル : コンピュータ

中の人の徒然草139

みんなコンニチワ♪今日もボクはご機嫌です♪今日は何を書こうかな・・・そうだ、ボクの初めての趣味の「蟻研究」の思い出について書きます。
蟻は私が産まれて一番最初に興味を持った対象でした。赤子の頃から「この動く黒いものは何?」とすごく興味を持ちました。ですから自然と、蟻を研究するのが幼き日の私の日課兼趣味になりました。一番最初に気付いたのは「動きに規則性がある」という事です。ジッとみてみると、蟻は集団で規則正しく動いています。まるでロボットの様に同じことを繰り返しています。しかしもっと観察してみると、決して単純な規則があるわけではなく、列をはみ出る蟻や仕事をサボり、上司?が来た時だけ仕事している振りをする要領のいい蟻が居ることに気付きました。子供ながらに人間社会の一端を垣間見たような気がしたものです。
この様なことを考え続けて何年か研究したのですが、非常に申し訳ないことを蟻にしました。子供が天使というのは嘘です。私はそれが何を意味するのかわからずに、無邪気という名の元に、蟻の巣を壊してみたり、虫眼鏡で蟻を焼き殺してしまったりしました。我ながら残酷な事をしたと思います。その自分の残酷な行為に気付いた時、私は蟻研究を止めました。蟻は生き物であり、決して誰かの娯楽の為に存在しているのではないと気付いたからです。それは小学2年ぐらいの事でした。今でもいい思い出です。
その様なこともあってか、私の親は私が将来研究者になるものと思っていたようです。子供は飽き性だとよく言われていますが、私は逆にしつこい性格をしていました。蟻だけで数年間毎日何時間も観察するほどです(笑)そんな私は今、趣味で色々な情報処理技術の研究をしています。三つ子の魂百までとはよく言ったものです。
あと、「根がおっとりしている」のは今でも変りません。私はかなりおっとりしていて、素で話すと「おはよ・・・」と誰もが途中までしか聞いてくれない状態でした(笑)そうしたこともあって、私は話すという行為がかなり苦手です。小さな頃からトラウマなのでです。ですから、私は話すだけで緊張して、声が大きくなったり、やたら早口になったり色々な失敗をします。普通に自分のペースで話せれば落ち着くのでしょうが、誰も私の話しを最後まで聞いてくれません(笑)関西人はせっかちですから・・・でも最近私は、「もうこうなったら自分を貫き通すのがいいかも」と思えるようになってきました。人はみなトラウマがあるものだと思いますが、もう一層の事自分をさらけ出すのがいいのかもしれません。日本は皆一緒でなくてはならないという脅迫観念にとらわれすぎだと私は思います。
みんな、自分流で行こう!

テーマ : 裏事情
ジャンル :

中の人の徒然草138

コンニチハ。鳥のインドリです♪CodeZineの記事もCSMA/CDの解説を書いて、後はVLANについて書くだけです。もう直ぐなので暫しお待ちください。
今日は散歩をしていてふと思ったのですが、仕事とプロって何なのでしょうね?何故この様に感じたのかといいますと、定額給付金でもめているだらしのない政治家と詐欺師のニュースを最近よく耳にするからです。私は常に1システム3ヶ月~6ヶ月ぐらい(しかも複数プロジェクト並行)のノルマを求められ、報酬もちゃんと支払われた事ありません。報酬が暴力だった時すらあります。それでも、日本の法律は基本的に犯罪に甘く、法律は弱者の味方などではなく強者の武器なのでまかり通ります。その中必死で生きてきた私にしてみれば一つの仕事をあれだけダラダラして、なおかつ中身の無い事を行い、あれほど高額な賞与を得ている事実は信じられない事です。
改めて考えてみれば、日本は看板で報酬が決まりますから、何もしない搾取だけする会社が儲かっているのも事実ですし・・・そりゃ、何もしないで簡単に億単位の売上を得るのは旨くてやめられないですよね。人間としてのプライドとか恥とか考えなきゃね。
私は自分の生き方が間違っているとは思わないし、あのような恥ずべき輩や犯罪者になってまでお金や地位が欲しいとも思いませんが、仕事とプロの定義はどうなっているのだろうかと疑問に感じます。もし、詐欺や恐喝する事が仕事と評価され、プロとは効率よく怠けたり、犯罪的行為で儲ける人というのならば、私はプロにもなりたくありませんしその様な仕事もしたくありません。
世間は「不景気、不景気」と空騒ぎしておりますが、落ち着いて働くとは何かという事を考え、正しい仕事をする事から始めたら景気なんて関係ないと私は考えます。元を正せば、何も生産せず紙遊びするのが一番儲かるとしてしまったからこうなっているんであって、ひたすらに真面目に汗水流して働いていればそういうことも起こらなかったのではないでしょうか?

テーマ : 裏事情
ジャンル :

中の人の徒然草137

今日は天気で気持ちのいい日です♪♪日課の散歩も気持ちよく出来ました。その時ふっと気付いたのですが最近Linuxを触っていません。Windowsでの仕事が多いのでメインはWindowsですが、やっぱりプロとしてはLinuxやFreeBSDも使えなくてはなりません。CodeZineの記事書き終わったらDebianでもいじろうかな♪そういえば、Emacsも最近使っていないので感覚忘れているだろうし・・・統合開発環境を使った富豪プログラミングもいいのですが、たまにはEmacs中心のちょっと貧乏臭いプログラミングが恋しくなる時があります。最近は富豪プログラミングの話題しか耳にしなくなりましたが、LinuxでのEmacs方式のプログラミングは独特な味があって私は好きです♪時間があまったら詳解Linuxをガイドにしてカーネルソースの旅をしたいしね♪Windowsもカーネルソースをオープンにして欲しいですぅ。そうすれば、カーネルソースレベルでWindowsとLinuxを比較できるのにぃ。それに、知りたい事があればどんどん探索できますしね♪EXEファイルのヘッダの使い方とか、ローダーの詳細な挙動とか、プロセスのメモリ空間の使い方とか・・・色々調べたい事があるのに、オープンになっていないので調べるのが非常に困難です。MSは隠蔽しすぎです!開発者がお客なんだから開発者の知的好奇心を殺ぐ真似は止めて欲しいものです。MSはいい製品を作っているのだから自身を持ってオープンソースにすればいいと思います!以上。私の欲望を叫んでみました♪
とはいえ、大企業ともなると大人の事情が色々あるんでしょうね・・・なんだかんだ言って、オープンソースとクローズドソースは共存するべきなのかもしれませんね。

テーマ : 裏事情
ジャンル :

中の人の徒然草136

いきなり寒くなりましたねぇ~。う~寒寒。寒さに弱いインドリです♪最近CodeZineの記事のサンプルを書いていて改めて考えたのですが重点以外を省略するというのは非常に難しいですね。私がプログラミングジャンキーという事もあって、気付いたら大量のコードを書いていました♪でも時間を置いて客観的に見ると、コードが多いと余計に理解の妨げる事に気付きました。理解されないサンプルコードを書いても意味が無いので、今現在泣く泣くコードをスリム化しているところです。
もうそろそろ言ってもいいかな?私が新連載するのは「仮想ネットワーク実装でTCP/IPを学ぼう」というシリーズです♪前回は仮想CPUを題材にしましたので、今度はネットワークプロトコルを題材にしました。私がプロとしての鍛錬(ボクの感覚ではラブ)に於いて一番困ったのがネットワークです。ネットワークは目に見えませんし、自宅に環境を構築する経済的余裕はありません。さらに当時は仮想化ソフトも無かったので非常に困りました。そこで私は「ならば自分で作ればいいじゃん♪」と考えて貧弱ながらも仮想ネットワーク環境を実装しました。その実装を通じての楽習が大変効果的でした。その事を思い出したので、今度はそれを記事の形にしてみようと思い立ったというわけです。 因みに、現在書いているところは、ネットワークアクセス層を抽象化したコードです。今CSMA/CDがほぼ実装できている状態です。VLANまで解説したいので後もう少し頑張ります♪この記事がみんなの役に立ったら嬉しいな♪
予定よりも長引いて、ブログがおろそかになっておりますが、もうしばらくお待ちください。その分良い記事を書きます♪

テーマ : 裏事情
ジャンル :

書籍をつつく84-分散システム 原理とパラダイム 第2版。出た♪名著♪

ついに出たよ♪待望の第2版ピヨ♪
分散システム 原理とパラダイム 第2版
もうOS研究者には堪らない一品といえると思う。


【目次】
第1章 初めに
第2章 アーキテクチャ
第3章 プロセス
第4章 通信
第5章 名前付け
第6章 同期
第7章 一貫性と複製
第8章 フォールトトレラント性
第9章 セキュリティ
第10章 分散オブジェクト指向システム
第11章 分散ファイルシステム
第12章 分散ウェブベースシステム
第13章 分散協調ベースシステム
第14章 推薦図書および参考文献
索引


目次を見たらもうそそる内容ばかりだ!高いからまだ買えないけど、何時か絶対にボクは買う。何故ボクがこんなに興奮しているのかというと、これらから先を見据える上でも重要な本と思うからなんだ。分散化するといわれて久しいけども、現在はそれ程分散化は進んでいない。クライアント/サーバシステムを構築する時ちょっとだけ意識するぐらいなものさ。だけど、マルチコアCPUなどが実用化されているからもうプログラマもSEも各層での分散化を無視できないと思うピヨ。だから、この本は情報処理技術者ならば絶対読むべき本といっても過言じゃないと思う。高いから財布に余裕がある時買っておこう!

テーマ : 情報処理技術
ジャンル : コンピュータ

プロフィール

インドリ

Author:インドリ
みなさん、はじめまして、
コンニチハ。

ボクは、無限の夢(infinity dream)を持つネタ好きな虹色の鳥インドリ(in dre)です。
色々な情報処理技術を啄ばむから楽しみにしてね。

http://twitter.com/indori
は別人による嫌がらせ行為です。
私とは関係ないので注意して下さい。
次はなりすましブログなどをするかもしれませんが、ここ以外でブログをするつもりがないので、ここ以外にインドリのブログがあったとしても無視してください。


何度言っても分からない人がいるので、ここにコメント欄へ書き込むときの注意事項を書きます。


一、社会人としてのマナーをわきまえましょう。
一、妄想に基づく書き込みを止めてください。
一、暴言の類は書かないで下さい。
一、某誹謗中傷サイトの書き込みは彼らの妄想に基づく書き込みですから無視して、ここへ書き込まないで下さい。
一、コメント書く前に他のコメントよく読んでから行って下さい。
一、言いがかかり等の行為を禁止します。
一、その他常識的に考えて迷惑なコメントはしないで下さい。


以上のルールを守れない人のコメントは削除します。



利用上の注意
ここに紹介してある文章およびプログラムコードは正確であるように心がけておりますが、内容を保証するものではありません。当サイトの内容によって生じた損害については、一切の責任を負いませんので御了承ください。


執筆したCodeZineの記事


【VB.NETで仮想CPUを作ろう】

  1. VB.NETで仮想CPUを作ろう
  2. レジスタの実装
  3. 仮想CPUのGUI化
  4. テストドライバの改良
  5. CPUの基礎動作の実装
  6. MOV命令の実装
  7. ADD命令実装
  8. SUB命令実装
  9. INC命令&DEC命令の実装と命令長
  10. MLU命令の実装とModR/Mについて
  11. DIV命令の実装とイベント設計について
  12. 機械語駆動式 関数電卓を作ろう!
  13. 機械語駆動式 関数電卓を作ろう! 解答編(前半)
  14. 機械語駆動式 関数電卓を作ろう! 解答編(後半)


【仮想ネットワーク実装でTCP/IPを学ぼう】
  1. TCP/IPの基礎と勘所
  2. ネットワークアクセス層の勘所
  3. インターネット層の勘所
  4. トランスポート層の勘所
  5. アプリケーション層の勘所
  6. セキュリティの基礎と仮想ネットワークの仕様
  7. GDI+と独自プロトコルの定義



【並列化】
インテル Parallel Studioを使って並列化プログラミングを試してみた
並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」


【TBBシリーズ】
  1. インテル スレッディング・ビルディング・ブロックの概要
  2. インテルTBBから学ぶループの並列化
  3. スレッドセーフとインテルTBBのコンテナ
  4. インテルTBBのスレッドクラス


【OpenMPシリーズ】
  1. OpenMPの基礎構文
  2. OpenMPの実行時ライブラリと並列ループ
  3. OpenMPのメモリモデルとfork- joinモデル

最近の記事
最近のコメント
月別アーカイブ
カテゴリ
Ada (9)
COBOL (5)
C (9)
C++ (11)
C# (370)
D (25)
Java (8)
Perl (1)
Ruby (14)
PHP (2)
Boo (2)
Cobra (2)
LISP (6)
F# (33)
HTML (0)
XHTML (0)
CSS (0)
XML (0)
XSLT (0)
Scala (4)
WPF (0)
WF (2)
WCF (0)
LINQ (4)
MONO (5)
Linux (0)
MySQL (0)
ブログ内検索
リンク
最近のトラックバック
RSSフィード
ブロとも申請フォーム

この人とブロともになる

QRコード
FC2カウンター