JRuby/Ruby

2007年10月31日 (水)

Python.use(better, by="K&R") # for novice《25》switch(3)脱・ハードコーディング★

------------ 序 ------------

この連載では、K&R の名著 "The C Programming Language" を読み解きながら、Python によるオブジェクト指向プログラミングへの扉を開きます。

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
《準備中》

【目次】関連記事
〔Python/Jython 入門〕Python.use(better, by="K&R")  # for novice

《その他の関連記事》
2007年8月18日《21》switch 文は、百害あって一利なし《前篇》
2007年8月25日《22》switch 文は、百害あって一利なし《後篇》
2007年7月 9日《11》三項演算子 ?: に代わるもの★

※ goto 文と並んで悪名高いのが switch 文です。構造化プログラミングにとっては心強い味方であり、old-timer には根強い人気のある switch 文ですが、オブジェクト指向プログラミングにとっては、逆にその switch 文が手枷足枷となります。

《査読中》

------------ 本文 ------------

続きを読む "Python.use(better, by="K&R") # for novice《25》switch(3)脱・ハードコーディング★"

| | コメント (0) | トラックバック (0)

2007年10月30日 (火)

Python.use(better, by="K&R") # for novice《24》switch(2)switch は禁断の木の実★

------------ 序 ------------

この連載では、K&R の名著 "The C Programming Language" を読み解きながら、Python によるオブジェクト指向プログラミングへの扉を開きます。

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
《準備中》

【目次】関連記事
〔Python/Jython 入門〕Python.use(better, by="K&R")  # for novice

《その他の関連記事》
2007年8月18日《21》switch 文は、百害あって一利なし《前篇》
2007年8月25日《22》switch 文は、百害あって一利なし《後篇》

※ goto 文と並んで悪名高いのが switch 文です。構造化プログラミングにとっては心強い味方であり、old-timer には根強い人気のある switch 文ですが、オブジェクト指向プログラミングにとっては、逆にその switch 文が手枷足枷となります。

《査読中》

------------ 本文 ------------

続きを読む "Python.use(better, by="K&R") # for novice《24》switch(2)switch は禁断の木の実★"

| | コメント (0) | トラックバック (0)

2007年10月29日 (月)

Python.use(better, by="K&R") # for novice《23》switch(1)なぜ switch は不要か★

------------ 序 ------------

この連載では、K&R の名著 "The C Programming Language" を読み解きながら、Python によるオブジェクト指向プログラミングへの扉を開きます。

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
《準備中》

【目次】関連記事
〔Python/Jython 入門〕Python.use(better, by="K&R")  # for novice

《その他の関連記事》
2007年8月18日《21》switch 文は、百害あって一利なし《前篇》
2007年8月25日《22》switch 文は、百害あって一利なし《後篇》

※ goto 文と並んで悪名高いのが switch 文です。構造化プログラミングにとっては心強い味方であり、old-timer には根強い人気のある switch 文ですが、オブジェクト指向プログラミングにとっては、逆にその switch 文が手枷足枷となります。

《査読中》

------------ 本文 ------------

続きを読む "Python.use(better, by="K&R") # for novice《23》switch(1)なぜ switch は不要か★"

| | コメント (0) | トラックバック (0)

2007年5月25日 (金)

【準備中】連載: 気分はGroovy〜婚姻届問題《番外編》只今リハビリ中

 思い起こせば、ここに連載するはずの記事を保留にしたまま、はや十か月余りが過ぎてしまいました。当初は、Groovy で記述する予定でしたが、やはり Java の縛(釈迦の掌の内にある孫悟空?)からは逃れられそうになく、将来の明るい見通しも立ちそうにもないので、断念せざるを得ないという状況です。その間 Ruby/Python からも遠ざかっていたので、今はリハビリ(?)を兼ねて、別の連載を担当しています。今後は、Groovy/Pnuts に代えて、Ruby/Python などで記述した事例を紹介する予定です。
 この「婚姻届問題」は、自然言語で記述された要求仕様とは別に、VDM++ で記述された要求仕様に従って、Smalltalk で実現した事例がもとになっています。別解として、これと同等の(やや見劣りはしますが)JML/Java で実現したものがあります。
 この事例は、一般的なグラフ索を、限定的に扱った問題として捉えることができます。単純な木の探索と違って、両親が別々の家系図に属していることから、「三親等にある」という関係をどのようなデルで表現するかが鍵となります。さらに、応用問題として、RDB を使ったデータベーススキーマの定義を考案してみるのも面白いでしょう。
 過去に「未成年男子17歳を含む婚姻届けが受理された」という不手際がニュースにもなりました。現実的な問題として、役所の窓口では、婚姻の条件を満たしているかをここまで厳密に調べることはないでしょう。しかし、このようなシステム開発の発注があったと仮定するなら、興味深い課題になるかもしれません。みなさんも、いろいろな事例を実現してみると、その理解が深まるかもしれません。
 式手法の適用は、先進的な欧米企業の取り組みに比べて、まだ多くの日本企業(大学や研究機関は別として)は発展途上にあると言えます。しかし、先日の「NTT ひかり電話」の障害の原因が「アルファベットの大文字を誤って小文字で入力したこと」にあると聞くと、対岸の火事とばかりも言っていられません。さあみなさんも、そろそろ危機感を持って、形式手法に本腰を入れて取り組んでみませんか。

==================================
後藤いるか 著 ◆ 監修:小泉ひよ子とタマゴ倶楽部

| | コメント (0) | トラックバック (1)

2007年5月 7日 (月)

Smalltalk use: better "外伝"《1》ユビキタス世代のプログラミング

この連載では、Smalltalk をメタ言語として、Java/C# に象徴されるアナログ世代から、Ruby/Python に象徴されるディジタル世代のプログラマーに共通する話題を交えながら、オブジェクト指向プログラミングの本質に迫ります。

† HERE: To be added. 07/05/07

| | コメント (0) | トラックバック (0)

2006年5月 8日 (月)

連載: Smalltalk use: better《1》始めの一歩、末の千里★

キーワード ◆ autoboxing・James Gosling・NullPointerException・Oak・unboxing・アジァイル開発・イディオム・オブジェクト指向・クラス・コレクションフレームワーク・コンストラクター・コンポーネントウェア・デザインパターン・メソッド・モデリング・リファクタリング・概念モデル・基本データ型・制御構造・統合開発環境

60500_1

※ Smalltalk use: better《SeasonⅠ》site map ⇒ 「piyo60500.pdf」をダウンロード

ここで公開している記事は「キーワード検索」を利用するための便宜的なものです。詳細は、正式版(PDF)をダウンロードしてご覧ください。
「piyo60508.pdf」をダウンロード

------------ 序 ------------

例えばね。                       
19世紀の終わりにね。
電子っていうものが、素粒子が発見されて、
そのときに、それが大きな産業を作るなんて、
誰も思わなかったでしょ。

ところが、
五十年も経って、二十世紀の半ば頃になると、
エレクトロニクス産業って物凄いものができたのね。

基礎科学の研究っていうのはね。
ある程度は山勘になっちゃう。

ひとつのことをね。
もうトコトンまで、もうギリギリ考えて考えて、考え抜いて、
ああでもない、こうでもない、こうしたらどうだろうって、
もうトコトン考え抜くとね。
山勘って当たりが良くなる。
そういうふうに、僕は思いますよ。

NHK「プロジェクトX~挑戦者たち~」小柴昌俊

◆ 1970 年代の初頭「オブジェクト指向」は産声を上げました。その四半世紀後に「オブジェクト指向」が広く知されるようになることを、彼らは予測していたのかしら。

------------ 本文 ------------

続きを読む "連載: Smalltalk use: better《1》始めの一歩、末の千里★"

| | コメント (0) | トラックバック (0)

2006年4月14日 (金)

連載: Java.use(better) NITRIS 問題《10》でもここなら置けますよ★★

キーワード ◆ __class__・lambda 式・OCL・reject 演算・select 演算・Smalltalk・クロージャー・ハリウッドの原則・フレームワーク
サンプルプログラム ◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60414.pdf」をダウンロード

------------ 序 ------------

フレームワークの本質を理解するときに「ハリウッドの則」と呼ばれるメタファーが役立ちます。伝統的なプログラミングスタイルから脱却して、オブジェクト指向を習得するときに、越えなければならない壁のひとつと言えるでしょう。◆ あるクラスを定義して、メソッドを記述するとともに、そのメソッドを呼出すコードを記述することでしょう。しかし、これからフレームワークについて理解しようとするときに、自分が記述したコードを自分が呼出すことがないという状況に直面します。いわば、既存のフレームワークから呼出してもらうためのコードを記述するという立場です。「私を呼ぶなかれ、私あなたを呼ぶのだ」

◆ select 演算と reject 演算とは、相補的な関係にあるので、これらを対にして理解するのが早道です。◆ Jython では、クロージャーが使えないので、λ式を使ってコレクション演算を実現しています。Smalltalk では、伝統的な select: や reject: など、クロージャーを使った汎用的なフレームワークが提供されています。OCL では、iterate 演算を基本として、他のループ演算を体系的に導出しています。同様に、Smalltalk では、do: を中核に体系化されています。そのため、Collection を頂点とするクラス体系では、do: を再定義するだけで、他のメソッドを再定義する必要がなくなります。JRuby/Ruby や Groovy でもクロージャーを使えるので、Jython/Python と比べると、より簡潔なコードを記述できることでしょう。《ひよ子》

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《10》でもここなら置けますよ★★"

| | コメント (0) | トラックバック (0)

2006年4月11日 (火)

連載: Java.use(better) NITRIS 問題《7》集めた石でブロックを作る★★

キーワード ◆ iterate 演算・lambda 式・クロージャー・ループ演算
サンプルプログラム ◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60411.pdf」をダウンロード

------------ 序 ------------

◆ フレームワークを適用した事例として、ゲーム作りで必要になるメソッド関数を実現するときに、OCL で規定されたループ演算を使ったものを紹介します。Jython に組み込みの機能を使って実現したものと比べて、すでに実績のあるコレクションフレームワークを活用することで、信頼性のあるコードを記述できます。これによって、単体テストにかかるコストを低減するなどの、効用が期待できます。

◆ iterate 演算は、ループ演算(select、reject、collect、forAll、exists)の中核を成すもので、これから他の演算を導くことができます。クロージャーは、Smalltalk だけでなく、Groovy や JRuby でも利用できるようになりました。しかし、Jython では、クロージャーを利用できません。そこで、lambda 式を使って、iterate 演算を実現することにします。《ひよ子》

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《7》集めた石でブロックを作る★★"

| | コメント (0) | トラックバック (0)

2006年4月10日 (月)

連載: Java.use(better) NITRIS 問題《6》私のコレクションは石集め★★

キーワード ◆ __init__・__str__・iterate 演算・java.util・len・OCL・Python・Ruby・Set 型・size 演算・Smalltalk・type・VDM・コレクションフレームワーク・タプル・リスト・辞書・文字列
サンプルプログラム ◆ Nitris.py

※ PDF でご覧になるには ⇒ 「piyo60410.pdf」をダウンロード

------------ 序 ------------

◆ コレクションフレームワークを導入すると、配列を使った古典的なプログラムと違って、洗練された信頼性のあるコードを記述できます。◆ フレームワークを持たないのは、電気もガスも水道もない世界に放り出されたようです。これが短期間なら、観光客の気分で、大自然の恵みを堪能できるかもしれません。しかし、長期間ともなると、大自然の厳しさに直面します。小川から水を汲み、火をおこすという、サバイバルの日々が続きます。その覚悟はできていますか。◆ 今週は、ゲーム作りの手を休めて、快適な生活(プログラミング)を送るたるめに、その要求に応える道具立て(フレームワークの構築)に着手します。さあ、ご一緒に。Java 原人から、ホモサピエンスへと、進化の道程を歩き始めましょう。

◆ Java には、java.util としてコレクションフレームワークが提供されています。しかし、他のプログラミング言語(Smalltalk をはじめ、PythonRuby など)が提供するものと比べると、開発率(使い勝手)がいいものではありません。たとえば、リテラル表記ひとつを取り上げても、より洗練されたものが望まれます。また、OCLVDM で規定されたもののように、より表現のあるものが望まれます。◆ これから作成する、クラス OCL_ Set は、OCL で規定された、Set 型に準拠するものです。OCL では、Collection の傘下に、いくつかの便利な道具立てが提供されています。Set は、そのひとつとして位置付けられます。《ひよ子》

【目次】
〔Python/Jython 入門〕Java.use(better) # Stairway to Real Agile World

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《6》私のコレクションは石集め★★"

| | コメント (0) | トラックバック (0)

2006年4月 4日 (火)

連載: Java.use(better) NITRIS 問題《2》ゲームを始める前に★

キーワード ◆ Groovy・JRuby・Jython・オブジェクト指向プログラミング
サンプルプログラム ◆ Nitris.py

※ PDF でご覧になるなら ⇒ 「piyo60404.pdf」をダウンロード

------------ 序 ------------

◆ 今日は、実際にサンプルプログラムを実行して、ゲームの様子を観察します。今回のサンプルは、CUI を使って作成していますが、今後、GUI を使って作成したり、さらに3次元で表示するなどの予定です。◆ このサンプルでは、乱数をもとに作成したブロックを、ボード上に落とす様子を観察できます。落とされるブロックと、ボード上の石の配置を、文字列で表現しています。実際のゲーム作りに着手する前に、その基本動作を確認するだけなら、CUI でも十分に可能なのです。◆ さあ、実際にプログラムを実行して、ゲームのルールを確認してください。

◆ サンプルプログラムは、Jython で作成しました。Jython とは、Python のリファレンス実装のひとつで、Java で記述されています。◆ Jython を導入すると、Java とのコラボレーションが可能になり、その選択の幅も広がります。たとえば、演算子の多重定義も自由自在です。オブジェクト指向プログラミング(OOP)言語としては非力な Java ですが、Jython をパートナーにすることで、本格的な OOP 言語へと進化します。次のリリースを待たずに、Java に欠けている機能を思いのままに拡張できるのです。Java の可能性を拡げる選択肢には、Jython 以外にも、GroovyJRuby などがあります。《ひよ子》

【参考文献】Python and Java: The Best of Both Worlds
・http://www.python.org/workshops/1997-10/proceedings/hugunin.html

------------ 本文 ------------

続きを読む "連載: Java.use(better) NITRIS 問題《2》ゲームを始める前に★"

| | コメント (0) | トラックバック (1)