-generic- 総称的プログラミング -programming-
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNG関数言語の型システムで、オブジェクト指向の型システム(クラス)を説明できるようになり、
最終的には、オブジェクト指向言語の型システム(クラス)について、フォーマルな取り扱いがしやすくなるんでわ?
つうのが、漏れの信念です。
でも、こーゆーのって、米澤県とかMSRあたりのキラ星研究者がやってるテーマな気がする。。。
0084デフォルトの名無しさん
NGNGその「研究機関の研究テーマ」ってのは何だ?(w
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNGおまえが研究機関か!
あれほど裏の空き地で野球を(ry
0087デフォルトの名無しさん
NGNGなんで一々絡んでくるの?だから素人は嫌いだ。
0088デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNG相手に丁寧な説明を要求しちまうような、
礼儀知らずで無作法な厨房って多いよな。
俺はそういう厨房が、大嫌いだ。
今も、大岡山近くの事務所(誰だよ番頭は?)から、
その手の厨房が俺の席前に出張ってきていて、
対応に困ってる。
こっちの言うこと全然聞かねぇで反論ばっかりだし(口癖は聞いて下さいよ〜)し、
メールで返事しろつっても、非難するような口調で一々口頭で質問してくるし、
忙しいから出来るか出来ねぇかまず答えろつっても、じくじく質問してきやがって、
挙句の果て、ここまで説明すりゃーどんな厨房でも出来るだろ、っつう説明をし終えると、
今度は「そんなことやっても意味がないです」ブチッ
てめぇの趣味聞いてんじゃねぇんだよ、仕事だからやれよ。
自分で方法も思いつかず、忙しい人様の時間を浪費して質問してくるなら、
さっさと実装しろよ。方法を人に聞いて、自分勝手に結論出して意味がねぇって、おまえ何様?
ふつ〜、そ〜ゆ〜無作法な奴って、卒業研究か博士課程でゴリゴリ削られて丸くなるもんなんだけど、
その程度の訓練もできてないヤシが、なんで大口叩くの?40も近くなって。お子様ですか?
と、ゆーような、アフォに心乱される日々を送る、2004年春の夜。
0090デフォルトの名無しさん
NGNGってこったな。
0091デフォルトの名無しさん
NGNG俺にもわかるように教えてください。
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNG君ももうちょっと大人になればいいのに。
0094デフォルトの名無しさん
NGNG・虚偽の報告をする奴
・分担作業者間のすり合わせをのらりくらり逃げる奴
・ぷろぱの指示聞けない外注さん
は、居なくていいか、と。
俺がこんなこと言わにゃならんとはな〜、世も末だなこりゃw
老婆心ながらアドバイスしとくと。
・報告やすり合わせの場で、あんま反論ばっかりすると、
プロジェクトが荒れるから、もうちょっと反論の方法を考えた方が良いよ。
口頭でつじつまの合わない逃げを打つと、ボロクソに叩かれるのが道理。
それでも自分に理があると思うなら、冷静にメールで事実を伝えてはどうよ。
CCで自分と相手の上司にもCC打つのは基本動作。
ようするに、口頭でツマラン喧嘩する暇があったら、自分も相手も逃げ場のない方法で
きちんとした誠実な議論をして呉れっつう事。それが、正しい問題解決の方法だよん。
0095デフォルトの名無しさん
NGNG不合理外注も(゚д゚)イラネ、ペッ
0096デフォルトの名無しさん
NGNG独善的終了済プロ真似の愚痴はこちらで http://life4.2ch.net/yume/
0097デフォルトの名無しさん
NGNGいみ、ふめいですぅ〜☆
0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNGこの板の過疎っぷりも、ひどいな。
ここ数年、気違いが荒らしまくってるのを放置した結果が、このザマか。
0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNG興味本位に重箱の隅をつついた質問を繰り返す、
そんな厨房が、私は大嫌いだ。
呆れ返った相手が、同情心で莫迦っ丁寧な説明をしてくれるのを見て、
「そんな幼稚な事は判り切ってるよ、アフォ」とか、
「アフォを煽って、うまく情報を聞き出したぞ」とか
「知的でクールな駆け引きをして情報を入手した」とか
ゆーよーな態度を取る厨房が、死ぬほど嫌いだ。
おまえら、ヴァカでアフォで格下だから、そんな態度が許されるんだぞ。
おまえらが、おまえらより格下にそんな態度とったら、アフォ扱いされるんだぞ。
そんな態度とる奴は、
「私はヴァカなガキなんで、丁寧にものを尋ねるマナーすらありません」
って首から看板ぶら下げて歩いてるくらい、みっともないんだぞ。
ただし、ヴァカでアフォでガキなおまぃらは、ヴァカでアフォでガキだから、
そーゆー未熟な態度しかとれない事はわかってる。遠慮なく、ヴァカでアフォでガキな態度でもがく事を特別許す。
だけど、とってもウザいから、とにかく早く成長しろ。おながいします。
0103にゃーご
NGNG0104デフォルトの名無しさん
NGNGどこを縦読み?
0106厨でーす
NGNG単にみんなObject型(型継承木のルート)で扱うのと、なんが違うの?(型間違いのチェックを除いて)
「どうだ、これが下寝りっくぷろぐらみんぐだ」!見たいな
サンプルコードない?
0107デフォルトの名無しさん
NGNG手に入りやすいところでtype_traits辺り読んでみてね。
0108厨でーす
NGNGとんくすこ。それって、
http://www.boost.org/libs/type_traits/ の Example code のこと?
++読めないけど読んでみますた。
げねりっくって、コンテナ系に強いっていうか、
なんでも(?)コンテナベースで書くのが流儀なの?
コンテナを発想の中心に据えてコードを書くのかな?それって一般的に可能なの?
(Type Trait自体はリフレクションでいいかなとか思っちゃうけど(速度がメリットな訳じゃないよね?))
0109デフォルトの名無しさん
NGNGcontainerで一番発達しています。
traitsっていうくらいで、
型システムをうまく使った脱闇鍋ぶりをみてね。
0110デフォルトの名無しさん
NGNG型の気持ちよさが維持できる、ということですかい?
全部Objectで書いて気にならない剛の者、あるいは
静的型がない言語では別段うれしくはない?
0111デフォルトの名無しさん
NGNG学がない人の知ったかぶりって、やーねぇ
0112デフォルトの名無しさん
NGNGC++ STL方面(Boosts C++ Library ?)で
Template引き数の型特性情報(voidとかpointerとか)
をランタイム情報として持たせる
って話か。いかにもC++って感じだね。
>>30近辺で型パラメータ(仮引数)だtype class(実引数)だ、って言ってる話の派生ね。
で、>>107-108は一体何を言ってるの?
0113デフォルトの名無しさん
NGNGおれもあんまわかってないけど、それは違うと思われ。
http://www.mamezou.com/tec/Tips/jsgl/
Genericsってのは、*事実上*、汎用的なコンテナと汎用的なイテレータで
汎用的にごにょごにょするのをいうのではないかと。
そういう意味で、Javaではもともと可能な訳で、
J2SE5.0で追加の、erasureによる「Generics」はホントはgenericsではなくて、
気持ちよさの味付けに過ぎない、とか言ってみるテスト。
0115デフォルトの名無しさん
NGNGあの〜w
まめぞの記事リファレンスに出すくらいなら、
もっと皆に分かりやすく説明したらどうだろね。
>>110が主観的すぎて第三者に意味不明、
それにレスする>>113はもっと意味不明。
要するに、Java Genericは普通のGenericじゃねぇよ、と知ったかしたいのですね :-)
0116デフォルトの名無しさん
NGNGどーでもいーや。あんたの発言。
夜中にいみふめな即レスつける厨はすっこんでろ、と。
0117デフォルトの名無しさん
NGNG突っ込みどころをきちんと突っ込んでくれれば話は進むのですが。
0118デフォルトの名無しさん
NGNG一応こういうのも作れたり。
0119デフォルトの名無しさん
NGNGそれもGenericProgramingなの?
0120デフォルトの名無しさん
NGNG場所は>>114=>>115=>>116です。
OKで終了
キャンセルでデバッグ
[OK] [キャンセル]
0121デフォルトの名無しさん
NGNG型の気持ちよさが維持できる、ということですかい?
全部Objectで書いて気にならない剛の者、あるいは
静的型がない言語では別段うれしくはない? 」
ってのは、生半可な厨房に言える言葉ではないな。
究極の厨房、至高のDQS、とにかく視野が狭すぎ。
C++ばっかやんないで、スクリプト系言語やプロトタイピングベースのOO
にでも手を出して、視野を広めてきなさい、ってこった。
0122デフォルトの名無しさん
NGNGしかし、プロトタイピングベースのOOってのは初めて聞いたな。
0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNG> 汎用的にごにょごにょするのをいうのではないかと。
Genericsって、用途というか適用範囲は限られてるんだね。
OOみたいなもっと一般的な考え方かと思ってた。
0125デフォルトの名無しさん
NGNG関数型言語の「多相型」についてもっと勉強した方がいいよ。
0126デフォルトの名無しさん
NGNGそれって、コンテナとイテレータ(イテレーション)でごにょごにょとは
全然違って、Genericsを一般的な技法にしてくれるもの?
0127デフォルトの名無しさん
NGNG> それって、コンテナとイテレータ(イテレーション)でごにょごにょとは
C++だって、そうじゃない。
話っぷりがアホっぽくて、相手したくないから、
"Modern C++ Designe"でも読んでくれ。
0128デフォルトの名無しさん
NGNGアホはおめーだろwww.co.jp
0129デフォルトの名無しさん
NGNGコンテナもイテレーションも関係ない。
0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNGその心は?
0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNGとくにEndUserだけあとでコンパイルしたら。
public class Holder<T> {
T value_;
public Holder(T t) { value_ = t; }
public T value(T t) { return value_; }
}
public class IntegerHolderUser {
void method( Holder<Integer> holder ){....;}
}
public class EndUser {
void hoge(IntegerHolderUser iu){
....;
iu.method(new Holder<String>("Unko"));//★
....;
}
}
0134デフォルトの名無しさん
NGNG試しもせずに聞く奴はウンコ。
> EndUser.java:3: method(Holder<java.lang.Integer>) (IntegerHolderUser 内) を (Hol
> der<java.lang.String>) に適用できません
> iu.method(new Holder<String>("String"));
> ^
> エラー 1 個
0135ウンコ
NGNGクラスファイルは今までと変わらなくて、
実体はみんな只のObject(か制約してるinterface)+ キャスト、ってのはガセか?
これって、classファイルにしっかり特殊化したパラメタの型データが埋め込まれてるって事だよな?
0136デフォルトの名無しさん
NGNGそーゆーのが知りたきゃ、横着しないでちゃんと仕様読めよ。
http://java.sun.com/developer/earlyAccess/adding_generics/
でダウンロードできる adding_generics-2_4-ea.zip 内にある文書とか、
http://www.jcp.org/en/jsr/detail?id=202 とか。
0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNGこのおっさん何言ってんだ?あふぉ?
Genericプログラミングは、型についてGenericなプログラミングなんだから、
「」が言ってることはあってるだろ。
0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNG0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNG0143デフォルトの名無しさん
NGNG0144デフォルトの名無しさん
NGNG別に言語なんて何だっていいんだけどね。
0145デフォルトの名無しさん
NGNGだったらこのスレ盛り上げてけろ。
0146デフォルトの名無しさん
NGNGストリームもgeneric programmingじゃないんだろうか。
ファイル・標準入出力・メモリ(文字列)などを一般化して扱っているのだから。
0147デフォルトの名無しさん
NGNGparametric polymorphism ≒ C++のテンプレート ≒ JavaのGenerics
generic programming == polytypic programming(呼び方が変わっただけ)
だな。
前者はMLとか大昔からあって、まあコンテナがメインだよな。
たとえば二分木を実装したいときに「整数の二分木」「浮動小数の二分木」
「文字列の二分木」とか、要素の型ごとに別々に実装するのが無駄なので、
「…の二分木」の…の部分をパラメタライズできる機構を導入したわけだ。
後者はまだ新しくて、「木にもリストにも組にもグラフにも集合にも
適用できる関数を定義」とか、もう1段上の一般化。
そこまで一般的に定義できるとうれしい関数としては、
シリアライザとかpretty printerとか=(構造等値)とか。
前者は明らかに役に立つが、後者はまだ用途が限定されてて何とも言えん
と俺は思う。
0148& ◆D3ra0B2LiQ
NGNG「要素の型をObjectにすればいいじゃん!」と思うかもしれんが、
そうすると取り出した要素をダウンキャストしないと
ほとんど何もできなくて、コンパイル時型チェックの有難さが
減ってしまう。実行時に「クラスが違うからダウンキャストできないよー」と
言われてしまう(かもしれない)わけだ。
もちろん、誰かが言ってたがコンパイル時型チェックのない言語だったら
そもそもparametric polymorphismなんて不要というか意味がない。
polytypic programmingも、コンパイル時型チェックのない言語なら
普通は自明に実現できるので、やはりあまり意味はない。
0149デフォルトの名無しさん
NGNGたまにしか書かないので許してちょ
0150デフォルトの名無しさん
NGNG大体、Ada83の昔から、genericは後者を明らかに志向していたし
無論AdaのGenericを手本にしたC++のtemlateも
STLなんかを見れば明らかに後者を志向している
0151デフォルトの名無しさん
NGNGちょっとちょっと
> 後者はまだ新しくて、「木にもリストにも組にもグラフにも集合にも
> 適用できる関数を定義」とか、もう1段上の一般化。
が役に立つかどうか言えないなんて、世間ずれしすぎ…
0153147
NGNGたとえばAdaのgenericsでもC++のテンプレートでもいいが、
木とかリストとかペアとか任意のデータ型に適用できるpretty printerを
どう書くの?
0154デフォルトの名無しさん
NGNG0155147
NGNGhttp://www.cs.uu.nl/research/projects/generic-haskell/
でも見てね。
0156デフォルトの名無しさん
NGNGfindとかfor_eachって、後者に入るのでしょうか?
それとも全然見当はずれなのかな。
0158156
NGNGなぜなら、findやfor_eachを*作る*のはgeneric programmingだが、
*使う*のはまた別の話。
0159147
NGNGOOでいうgeneric programmingが食い違ってるような気がしてきた。
狭義と広義っていうか。googleしてみたら半々ぐらいっぽい。
勉強になりますた。出直してきます。
0161デフォルトの名無しさん
NGNGきちんとinterfaceベースで設計すればよいだけでは?
JDK5のGenericsだってOjbectで扱う、コンテナ以外の使い道三塚欄。
0162デフォルトの名無しさん
NGNGまず、まともな日本語で書け。意味が分からん。
それから、そういう次元の話はしていない。
0163英語毎回追試
NGNGit is satisfied by correct desinging with 'interface'. is't it?
Generics introdused to J2SDK5.0 seems to be only useful for containers
that need hadling 'Object's.
0164デフォルトの名無しさん
NGNG設計を図にしたいときってどうするの?
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGGeneric Haskelは、CLOS的な総称関数をHaskelにtype safeなまま持ち込む試み。
Dynamic typingも含む。
どっちかつーと、CLOS, C++(with typeid)の後追いかな。
もちろん理論部分で頑張ってるけども。
0167147
NGNG現在の自分の理解…
OOでいっているgeneric programmingは、MLとか関数型言語でいう
parametric polymorphismのことで、C++のテンプレートとか
Javaのgenericsが実現の一例。intのtreeと、floatのtreeと、
stringのtreeと…を「Xのtree」みたく、型について一般化された
型や関数を定義できる。
Haskellとか関数型言語(プログラミング言語基礎理論のコミュニティ?)でいう
generic programmingは、polytypic programmingと同義で、treeにもlistにも
pairにも適用できる関数を「定義」するための機構。>>156もいっているように、
foreachとかmapとか別々に定義して「使用」することは大抵の言語で可能だけど、
そうではなくて、まとめて定義するってことね。テクニカルにいうと、
型(intとかfloatとかstringとか)について一般的なだけでなく、
型演算子(listとかtreeとか)について一般的な定義ができる。
ついでにソフトウェア工学あたりだと、とにかく超広義に「一般的なプログラムを
書くための仕組み」を何でもgeneric programmingとか言っている人もいる。
ってな感じで合ってる?
0168147
NGNGあー、C++のテンプレートはいろいろとくっついてるから、一概に
parametric polymorphismだけとはいえないのね。なるほど。
ちなみにCLOSの総称関数ってどんなの?
0169147
NGNGhttp://en.wikipedia.org/wiki/Generic_programming
0170デフォルトの名無しさん
NGNGC++と同じくコード共有はあまり気にしない流儀。
http://www.lisp.org/HyperSpec/Body/mac_defgeneric.html
Generic Haskelは、dynamig typing使って、
コード(というか定義)共有頑張るんでしょ? (違うのかな?)
Java genericsやC#のboxing/unboxingみたいに。
structural polymorphismってのは、
C++でいうところのtraitやconceptを入れたポリモなのかな?
0171デフォルトの名無しさん
NGNG> Java genericsやC#のboxing/unboxingみたいに。
auto-boxing/unboxingね。
0172デフォルトの名無しさん
NGNGこんな感じ。
http://www.shiro.dreamhost.com/scheme/gauche/man/gauche-refj_149.html
0173デフォルトの名無しさん
NGNG妄想書いてみた
(define-macro (hoge . body)
(let ((x (gensym)))
`(let ((,x 1))
(hage ,x (car body)) (set! ,x 2) (mage ,x ,@(cdr body)))))
#define hoge(#rest body) \
{ int #gensym x = 1; \
hage(#unquote x, #first body); \
#unquote x = 2; \ mage(#unquote x, #unquote_splicing #rest body); }
hoge(a,bc)
↓
{ int g01__x = 1;
hage(g01__x, a); g01__x = 2; mage(g01__x, b,c); }
#define_syntax for_each #var o #var proc in #var seq ; \
{ #unquote seq.type #gensym x = #unquote seq; \
for (; #unquote x; ;#unquote x = #unquote x.next()) { \
#unquote x.data.type #unquote o = #unquote x.data; \
#unquote proc}}
for_each z printf("data = %a",z); in strlist;
↓
{ string_list_t g02__x = strlist;
for (g02__x; g02__x = g02__x.next()) {
string_list_data_t z = g02__x.data; printf("data = %a",z); }}
やっぱ型がネックだなー
やはりC++の選択は正しかったのか。
0174デフォルトの名無しさん
NGNGC++のテンプレートは構文マクロだからな。
どうでもいいがJava Genericsには日本人の貢献もでかいな。
■ このスレッドは過去ログ倉庫に格納されています