トップページ⇒tech
982コメント320KB

やっぱり動的型付け言語は大規模開発で効率が悪い 4

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2011/11/22(火) 23:39:39.06
静的型付け言語は最強

Java → 冗長すぎる → Scala(静的型付け言語)

のコンボで行きましょう


前スレ
http://hibari.2ch.net/test/read.cgi/tech/1320832914/
0002デフォルトの名無しさん2011/11/23(水) 04:01:20.49
Clojureも型付け指定すれば柔軟な動的言語としての機能をローカル関数で使って、インターフェースとして外界にさらす関数を型指定で組むことで使いがってが非常に良くなるので検討してちょ
0003デフォルトの名無しさん2011/11/23(水) 05:12:14.10
重複スレ誘導
http://hibari.2ch.net/test/read.cgi/tech/1321843683/l50
0004デフォルトの名無しさん2011/11/24(木) 04:01:03.26
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
0005デフォルトの名無しさん2011/12/16(金) 16:19:33.84
まさかSmalltalkのメッセージパターンが英語との親和性が非常に高いことも知らずに
メソッドの英語としての読みやすさ云々を言う香具師がいるとはねw
0006デフォルトの名無しさん2011/12/16(金) 18:54:02.24
Smalltalkのメッセージの英語っぽさなど笑止
メソッド名に英語の文章をだらだら書くJava方式こそ至高
0007デフォルトの名無しさん2011/12/16(金) 19:22:10.45
Java言語+Eclipseのタッグが最強だろ…誰がなんと言おうとな、ハ。
Scalaなんぞつかっとる厨など俺のEclipse捌きの前では瞬殺だは。
いうなればGoogle Mapsを駆使してる俺 vs 紙の地図でウオーサオーしてる厨みたいなもんだは。
ショートカットキーぽんぽんぽんでコーディングが完了する様を指でもくわえてみてろよw
0008デフォルトの名無しさん2011/12/16(金) 19:41:18.18
魚竿?
0009デフォルトの名無しさん2011/12/16(金) 21:37:36.98
しつこすぎ
いい加減にしろ
0010デフォルトの名無しさん2011/12/16(金) 21:45:54.88
なんか静的型付け言語だと
Javaだけじゃなくて、C#、C++、Scalaが代表例として出てくるけど、
動的型付け言語はSmalltalkしかないみたいじゃない

Smalltalk(現場では殆ど使われてない)しか
誇れるものがないの?w
0011デフォルトの名無しさん2011/12/16(金) 23:28:50.53
SmalltalkとLISPが極北にあってある意味理想型だけど、
強力すぎるので制限されたSmalltalkやLISPとして他の言語を使っているわけだ。
0012デフォルトの名無しさん2011/12/16(金) 23:42:17.84
いや静的型付け言語は実際に使っている言語の話をしてる。
動的型付け言語だけだろ。実際に使ってない言語の話をしてるのは
0013デフォルトの名無しさん2011/12/17(土) 05:35:23.65
ScalaとSmalltalkでは、どう考えてもSmalltalkのほうが事例は多そうだがなw
0014デフォルトの名無しさん2011/12/17(土) 06:59:46.30
動的型付け言語って、静的型付け言語ならソースコードだけで完結することをわざわざドキュメントとテストにまで散らかして仕事増やしてるだけだよね。
ドキュメントもテストも適当でいい、または採算度外視のプロジェクトでしか使えない。
0015デフォルトの名無しさん2011/12/17(土) 07:36:10.98
しつこすぎ
いい加減にしろ
0016デフォルトの名無しさん2011/12/17(土) 08:44:40.24
ここそういうスレだから、ウザイと思うならスレ見なきゃいいじゃん。
0017デフォルトの名無しさん2011/12/17(土) 08:53:27.73
COBOLやFlex/as3プログラマーが定時退社で月給150万円以上もらってるという事実すら知らず、
Flashはオワコン、Webサイコー、Javaサイコー、Rubyサイコー、動的だ、静的だ、
とか言ってるアホが多い

挙げ句の果てにはドカタがドカタを見下すアホっぷり

まあアホだからこそ中卒リアル土方以下の月収40万円無保障使い捨てでもこき使えるんだが
言語云々よりも客先業界を選ぶ能力を身に付け、潤ってる業界が好む言語を使え


動的だの静的だの、そんな見当違いのところに頭つかってるからドカタなんだよw

 
0018デフォルトの名無しさん2011/12/17(土) 10:04:45.12
IDEの話をすると動的型言語使い(Smalltalk除く)は黙る
コードを書く御題が出るとJava使いは黙る
0019デフォルトの名無しさん2011/12/17(土) 10:18:21.21
つかもっと実践的な長いコードで比べてみたいんだが。
500行以上でライブラリを使いこなしたコード。
そうすれば大差ないってことが分かるんだがね。
0020デフォルトの名無しさん2011/12/17(土) 10:31:01.63
うむ。オイラは2kステップ以内ではやりかたの優劣なんか大して出ないと思っている。
実際の現場では一人5kから15k書いて1小隊が30kから50kくらいになるよな?
でさらにそれらを結合していく訳で。
ジャンボジェットつくるときに昆虫の飛行理論出すのはイクナイ、と思うことが、よくある。
0021デフォルトの名無しさん2011/12/17(土) 10:36:40.38
smalltalkで英語の文みたいに書けるて話、もう25年前だろ?

あれで一体、オレらが生きてる現実世界の何を解決出来たのかと、小一時間問い詰めたい。

夢見て裏切られると、信者から超アンチになるよ
0022デフォルトの名無しさん2011/12/17(土) 10:38:59.89
>>17
>COBOLやFlex/as3プログラマーが定時退社で月給150万円以上もらってるという事実すら知らず、

と、妄想を語る無職元ドカタ乙
0023デフォルトの名無しさん2011/12/17(土) 11:10:50.46
>>22
COBOLは知らんがFlexは150どころか200、300なんて話も聞くな
技術者がいないのもそうだが、仕事を取ってくる発注側(企画会社、広告代理店)で金が唸っているのが一番の理由っぽい
まず発注者がNTTデータやNECなどの既存ベンダーではないってのもあるかも

完全に一過性のバブルだろうけど
0024デフォルトの名無しさん2011/12/17(土) 11:22:44.61
COBOLは年功序列的な要因だろ
20世紀はCもVBもインフラ屋さんそのくらいが相場だったし
0025デフォルトの名無しさん2011/12/17(土) 12:25:38.44
Smalltalkのキーワードメッセージパターンは
メソッドの意味、各パラメータがどのように使われるのかという用法など、
コードとドキュメンテーションの一体化にすごく貢献している。
その工学的な有効性を理解できずにアンチになる人はどのみち大したこと
できないだろうから、放置でいいんじゃね?
0026デフォルトの名無しさん2011/12/17(土) 12:41:14.06
>>19>>20
違うちがう。Javaドカタはライブラリのメソッドを順番に呼び出す
簡単なコードしか書けないってことだよ。
ちょっと制御構造が入ったら10行程度の簡単なプログラムも書けない。
まさにドカタ。
0027デフォルトの名無しさん2011/12/17(土) 12:51:47.14
Smalltalk って 1 + 2 * 3 が 9 を返すんでしょ?
0028デフォルトの名無しさん2011/12/17(土) 12:56:26.16
演算子の優先順位とか考えなくていいからそれはそれで便利だけどな
0029デフォルトの名無しさん2011/12/17(土) 13:08:11.13
>>23-24
> Flexは150どころか200、300なんて話も聞くな
> 20世紀はCもVBもインフラ屋さんそのくらいが相場だったし

ソースプリーズ

脳内の妄想なら、自分の日記に書いとけ。
0030デフォルトの名無しさん2011/12/17(土) 13:36:38.85
>>27
電卓dis乙
0031デフォルトの名無しさん2011/12/17(土) 13:54:57.58
>>29
ブラック案件じゃあるまいし公募なんてしてるわけねーだろ
常識的に考えて
学生かよ
0032デフォルトの名無しさん2011/12/17(土) 14:07:05.09
はい、脳内確定です。
0033デフォルトの名無しさん2011/12/17(土) 14:08:45.81
>>1-1000
おまえら一盛り10円
http://kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
0034デフォルトの名無しさん2011/12/17(土) 14:09:57.49
ドカタ言語があるのではなくドカタドメインがあるってことに気付け
どれだけ多くの言語を覚えたところで
ドカタドメインのアプリしか書けないならドカタ

特定のドメインでしか使われない言語がある
その言語を使いこなして仕事をする奴は単価が高い

だからといってドカタがその言語を覚えても単価は上がらない
単価が高いのは、その言語を使いこなせるからではなく
そのドメインに精通しているからだよ

このことを勘違いしているドカタは本当に痛い
0035デフォルトの名無しさん2011/12/17(土) 14:18:43.77
>>27
電卓でも珠算でも9だね。で、何?
0036デフォルトの名無しさん2011/12/17(土) 14:25:43.56
>>29
シリコンバレーでFlashプログラマの給与が急騰中
http://www.publickey1.jp/blog/10/flash_2.html

DeNAの初任給1000万円、グリー1500万円
http://news.livedoor.com/article/detail/6111164/

バブルor不人気では当たり前の結果だわな。
ゴミ収集のおっさんが給料高いのと一緒。
0037デフォルトの名無しさん2011/12/17(土) 14:28:26.52
500個のタブを開いたSafariをFLASHでクラッシュさせられたときの絶望感
0038デフォルトの名無しさん2011/12/17(土) 14:37:14.69
>>35
> 電卓でも

関数電卓だと 7 になる奴もあるよ。

> で、何?

無知露呈しちゃったね。
0039デフォルトの名無しさん2011/12/17(土) 14:43:06.36
世の中には「色を決める職業」というのがある。
主に高級ブランドサイトや大手企業サイトが客。
お値段、A4の紙切れ2枚で500万円。
当然、それを受け取ってWebサイトを作る人も高給取り。

完全に属しているコミュニティーの問題だよ。
0040デフォルトの名無しさん2011/12/17(土) 14:43:36.72
>>38
うーん。それで Smalltalk の弱点を指摘しているつもりなら違うなあ。

System.out.println(BigInteger.valueOf(1).add(BigInteger.valueOf(2)).multiply(BigInteger.valueOf(3)).intValue());

Java でも 9 だ。

数学的には + は T * T -> T に定義される関数であって、
これを T 型オブジェクトのメソッドとするという発想に無理がある。

関数は関数。何でもメッセージにすりゃいいってものじゃないだろうと。
0041デフォルトの名無しさん2011/12/17(土) 14:53:20.68
>>1-1000
おまえら一盛り10円
http://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html
0042デフォルトの名無しさん2011/12/17(土) 15:00:59.98
>>40
>うーん。それで Smalltalk の弱点を指摘しているつもり

まず、日本語の理解から始めたほうがいいんじゃね?
0043デフォルトの名無しさん2011/12/17(土) 15:31:48.36
>>42
当たり前だが >>27 を含めてレスしている。
0044デフォルトの名無しさん2011/12/17(土) 16:33:41.90
>>38
> 関数電卓だと 7 になる奴もあるよ。

で、何?
1+2*3という表現式の評価結果を9とする
正当な環境があるという事実には
何の変わりもないよ。
0045デフォルトの名無しさん2011/12/17(土) 16:40:37.10
しょぼい電卓 or Smalltalk: 1 + 2 * 3 = 9
数式、関数電卓、普通の高級言語:1 + 2 * 3 = 7
0046デフォルトの名無しさん2011/12/17(土) 16:42:47.14
かってにきめんな!まず演算子の優先度をだな…
といった定義厨御用達言語。
0047デフォルトの名無しさん2011/12/17(土) 16:47:19.97
smalltalkって決めうちの優先度を持っていたり自分で優先度を定義する
仕組みって無いの?
0048デフォルトの名無しさん2011/12/17(土) 17:10:11.78
だまSmalltalkの話しかしてないのか?
そんなに動的型付け言語は駄目なのか?
0049デフォルトの名無しさん2011/12/17(土) 17:11:43.36
>>45
へー、あんた、数学での掛け算をアスタリスクで書いてるのかw
0050デフォルトの名無しさん2011/12/17(土) 17:20:19.69
>>49
お前は何で書いてるの?
0051デフォルトの名無しさん2011/12/17(土) 17:25:38.26
\times
0052デフォルトの名無しさん2011/12/17(土) 17:31:27.81
>>49
そんなことでしか反論できなくなったのか (w

ROM ってりゃいいのにね。
0053デフォルトの名無しさん2011/12/17(土) 18:19:03.69
ROMるべきは、動的型付言語の本当の問題点を何一つ指摘できずに
動的型付言語発祥の技術を「静的型付だからできる(キリッ」とか言ったり
動的型付けとは関係ないアサッテな事で腐すしか脳がない静的ドカタでは?
0054デフォルトの名無しさん2011/12/17(土) 18:20:27.03
>>45
そんなことでしか反論できなくなったのか (w

ROM ってりゃいいのにね。
0055デフォルトの名無しさん2011/12/17(土) 18:41:15.57
lispだとcobolの10分の1程度のタイプ数になったりするから
行数ベースで見積もりたててると効率が悪いって話になるんだろうな
0056デフォルトの名無しさん2011/12/17(土) 19:07:25.62
そうだね、俺も >>53 は ROM るべきだと思う。
0057デフォルトの名無しさん2011/12/17(土) 19:20:12.25
1 + 2 * 3 => 7
----- 演算子の優先順位の壁 -----
1 + 2 * 3 => 9
----- 演算子定義の壁 -----
BigInteger.valueOf(1).add(BigInteger.valueOf(2)).multiply(BigInteger.valueOf(3)).intValue() => 9
0058デフォルトの名無しさん2011/12/17(土) 20:10:39.30
>>45
関数電卓ならRPNでしょ。
0059デフォルトの名無しさん2011/12/18(日) 18:19:22.05
型推論最強のHaskellさんでFA。
動的言語なんて使い捨て目的以外で使おうなんて思わない。
evalなんてスパゲティの元だ。
0060デフォルトの名無しさん2011/12/18(日) 19:56:35.98
Haskellが流行ったら困るのは
mapやfoldlすら殆ど使ったことのないJavaドカタだけどな
0061デフォルトの名無しさん2011/12/18(日) 20:13:12.61
そのままそうして燻っておけ。そのほうが助かるわ。
0062デフォルトの名無しさん2011/12/18(日) 21:19:04.45
> mapやfoldl
動的言語のlispがもとだろ
0063デフォルトの名無しさん2011/12/18(日) 21:28:16.33
>>62
細かいこと気にしすぎじゃね?
なら型推論使ってる動的言語をどう思うの?
0064デフォルトの名無しさん2011/12/18(日) 21:38:09.97
実行時に型を判断するから動的型付け言語なのであって、
型推論(静的に型を推論する機能)は動的型付け言語とは
真逆の発想だ。
0065デフォルトの名無しさん2011/12/18(日) 21:40:29.21
動的型付け言語が型推論欲しいのって
やっぱり静的型付け言語は羨ましいなぁ。
静的にチェックしたいよ。という要求から来るのではないのか?
0066デフォルトの名無しさん2011/12/18(日) 22:16:54.33
Javaにブザマな型推論が入ったときは、
やっぱドカタも簡潔な言語が羨ましいんだなって思ったわw
0067デフォルトの名無しさん2011/12/18(日) 22:17:06.24
よく知らずに想像で書くけど、
コンパイルのときに型推論できるところは最適化できるとかかなあ。
0068デフォルトの名無しさん2011/12/18(日) 22:59:24.68
最適化できるという話はあるが最適化したという実績は知らないから想像で書くけど、
コンパイラの価値は最適化ではなくポータビリティにある。
しかしJavaの型とHaskellの型は全然違うので全然ポータブルでない。
0069デフォルトの名無しさん2011/12/19(月) 04:25:57.64
静的型付け言語が型推論欲しいのって
やっぱり動的型付け言語は羨ましいなぁ。
型なんて書かずにプログラミングしたいよ。という要求から来るのではないのか?
0070デフォルトの名無しさん2011/12/19(月) 05:17:51.69
>>65,69
どちらの視点も正しい(少なくとも誤りではない)と思うね
0071デフォルトの名無しさん2011/12/19(月) 08:08:17.31
>>66
簡潔に書ける構文と
静的動的は別の概念だぞ。

静的でもScalaのように簡潔に書ける言語はあるし
動的でもJavaScript(DOM)のようの面倒な言語もある。
0072デフォルトの名無しさん2011/12/19(月) 08:10:50.00
>>67
> コンパイルのときに型推論できるところは最適化できるとかかなあ。
うん。型推論っていうのは
動的に型を判断するのではなくて
型を書いてないのに、型を書いたかのように
静的に型を判断してくれる機能。

実行時にならないと型がわからない場合(動的)は
型推論できない。
0073デフォルトの名無しさん2011/12/19(月) 08:34:46.57
型推論っていうのは、
変数から型情報をなくしましょうではなくて
型情報が推論で決まる所は省略できますってだけだからな。

実質型を書いているのと同じなんだよ。
冗長な記述をなくしただけ。シンタックスシュガーと同等のもの。

動的型付け言語は、変数から型情報をなくして
実行時の値で判断しましょうという考え。
だから根本的に違っている。
0074デフォルトの名無しさん2011/12/19(月) 08:57:48.51
まあ本当に型を書いてない多相ヴァリアントは型推論の中でも異端視されているんだよな
0075デフォルトの名無しさん2011/12/19(月) 09:21:40.73
静的型付け言語も、パターンマッチは実行時の値で判断する。
これって、実行時の値で判断しましょうという考えから来るのではないのか?
だから根本的には同じだ。
0076デフォルトの名無しさん2011/12/19(月) 14:03:55.67
>>73
動的型付け言語に後付けで型推論ベースの静的型チェックを
追加すること(例えばlint的なものとして)は不可能という主張?
0077デフォルトの名無しさん2011/12/19(月) 14:20:36.17
scalaが簡潔?scalaはinfoQ記事以後の流れを見てると完結しそうだが。複雑だろ?
0078デフォルトの名無しさん2011/12/19(月) 16:33:48.52
>>75
それはJava/C#のような「出来の悪い」静的型付け言語に限定される話
それだからcaseの網羅性をコンパイル時に(静的に)検査できないという欠陥がある

MLやHaskellのような「正しい」静的型付け言語であれば、
パターンマッチはコンパイル時に(静的)に決定される

>>だから根本的には同じだ。

したがって、他の人達が言うように静的型付けと動的型付けは根本的に違うよ
0079デフォルトの名無しさん2011/12/19(月) 17:36:30.98
つってもHaskellでさえ実行時束縛してる箇所あるし
0080デフォルトの名無しさん2011/12/19(月) 18:36:57.09
出来の悪い静的型付けと正しい静的型付け
なぜ潰し合うのか
0081デフォルトの名無しさん2011/12/19(月) 21:08:00.48
>>76
> 動的型付け言語に後付けで型推論ベースの静的型チェックを
> 追加すること(例えばlint的なものとして)は不可能という主張?

条件付きで可能。100%は不可能。

たとえばローカル変数の場合、他から変更されようがないから
その変数の型は判断可能。

その変数にオブジェクトを代入したとして、オブジェクトに
動的に追加されたメソッドまで分かるかと言ったら無理。
0082デフォルトの名無しさん2011/12/19(月) 21:29:01.52
ocamlでもメソッドを追加できるぞ

let add_bar x = object
method foo () = x#foo ()
method bar () = "bar"
end;;

let o = object method foo () = "foo" end
in add_bar o;;
0083デフォルトの名無しさん2011/12/19(月) 22:11:15.11
そもそもOCamlはオブジェクト作るのに
必ずしもクラスを定義する必要無いからね
0084デフォルトの名無しさん2011/12/19(月) 23:16:03.47
>>75
お前はBoostで地獄を見てこい。
0085デフォルトの名無しさん2011/12/20(火) 00:18:26.28
>>84
型付けとは関係ないけど
Cでできることが全てC++でもできることを証明することにより
Cで地獄を見ないならばC++でも地獄を見ない、ということを証明できる気がする
0086デフォルトの名無しさん2011/12/20(火) 12:16:27.06
Java, C#:出来の悪い静的型付け
Ruby, Python:静的型検査無し
Haskell, OCaml:ライブラリ不足
C++, Scala:セカンドシステム症候群

どれも決定打に欠けるので、いつまでも結論が出ない
0087デフォルトの名無しさん2011/12/20(火) 13:41:23.67
Haskell, OCamlがJVM, .NETに対応できない理由は、
出来の悪い中間言語より型のないネイティブコードを生成する方が良いと思ってるから。
ということはつまり、Java, C#の更に上に型のないレイヤーを乗せれば、
Haskell, OCamlがJVM, .NETに対応してライブラリが利用できる。
0088デフォルトの名無しさん2011/12/20(火) 15:04:00.64
なんだよ型のないネイティブコードって。
0089デフォルトの名無しさん2011/12/20(火) 15:40:55.96
コンパイル時に既にチェック済みなので実行時は一切チェックされなくなるコード。
0090デフォルトの名無しさん2011/12/20(火) 15:54:45.92
それはCOMとIDL(インターフェイス定義言語)のことかな?
0091デフォルトの名無しさん2011/12/20(火) 15:58:23.18
そう言えば、最近、ドカタキングことドカ太郎がいない。。。

polymorphism も universalとad-hocと2種類あるんだな。へぇーと思って本を読んでた。
0092デフォルトの名無しさん2011/12/20(火) 16:00:44.45
>>86
ぎんのたまはないってこと。
最も、問題に適切なパラダイムを持つ言語を使えるようにしておくのが一番い
いんだろうけどな。現実はそうやないから、むしろ言語選択する側のリテラ
シーによるよな。リテラシーのないやつほど、好きだから、みんな使ってるか
らみたいな情緒的な理由になりがち。
0093デフォルトの名無しさん2011/12/20(火) 16:20:19.33
>>90
機械語の事だろ。
0094デフォルトの名無しさん2011/12/20(火) 17:49:08.18
動的型付け言語はふつうの包丁
静的型付け言語は悪用を防ぐ装置がついた包丁
0095デフォルトの名無しさん2011/12/20(火) 19:16:25.12
>>94
ただし、肉を切ろうとすると悪用防止装置が発動して、肉を切れない包丁。
0096デフォルトの名無しさん2011/12/20(火) 23:10:23.68
そうやってまた変な例えをする…。
現実の包丁はCやasmの低水準だろ。
0097デフォルトの名無しさん2011/12/21(水) 01:08:05.25
パラダイムの違いなんだって。^^; data driven なプログラミングを
静的でやろうとおもえばかなりしんどいだろうけど、他のでやれば
何とかなるってこったろ?ただ、柔軟じゃないってこと。
0098デフォルトの名無しさん2011/12/21(水) 22:14:28.31
>>86
ぶっちゃけその中だとdynamic使えるC#が最強だと思う
DynamicJSON使って思った
0099デフォルトの名無しさん2011/12/21(水) 22:17:18.88
>>87
OCamlはF#があるだろ
0100デフォルトの名無しさん2011/12/22(木) 05:08:22.61
>>86 の分類で言えば、
動的型付けの柔軟さと静的型付けによる安全性とパフォーマンスを
高度に両立させたGemStone/Sが最強だと思うのだが。
しかも全てのオブジェクトについてトランザクショナルな状態更新ができるし、
フォワーダやレプリケートを自在に使い分けた分散協調は最高だぜ?
0101デフォルトの名無しさん2011/12/22(木) 06:56:11.37
>>100
めちゃくちゃパフォーマンス悪そうw
0102これで十分でしょ2011/12/22(木) 13:05:43.67
<?php
function hoge(int $moge){
echo 'barusu';
}
?>
0103デフォルトの名無しさん2011/12/22(木) 16:17:16.01
>>101
GemstoneはFEDEXのシステムで使われた
ハイパフォーマンスなOODBだが?
0104デフォルトの名無しさん2011/12/22(木) 18:28:06.94
静的ドカタっていつもこのパターンだよね

知りもしないのに動的型言語をからかってみるものの
事例付きで完全に論破されて皆の失笑を買う...

やっぱ馬鹿なのかな?
0105デフォルトの名無しさん2011/12/22(木) 20:28:55.69
>>100
> 動的型付けの柔軟さと静的型付けによる安全性とパフォーマンスを
> 高度に両立させたGemStone/Sが最強だと思うのだが。

どんな感じで両立させてるのか教えて。
0106デフォルトの名無しさん2011/12/22(木) 23:03:43.31
>>105
smalltalkをベースにした
0107デフォルトの名無しさん2011/12/23(金) 00:14:13.83
誰もベースなんて聞いてないだろw
0108デフォルトの名無しさん2011/12/23(金) 02:03:30.26
gemstone/sをベースにした、rubyも早かったんじゃ?
maglevだっけ?
0109デフォルトの名無しさん2011/12/23(金) 03:20:27.11
まとめるとF#最強伝説
0110デフォルトの名無しさん2011/12/23(金) 09:16:23.02
すでに「伝説」かよ。
0111デフォルトの名無しさん2011/12/23(金) 09:48:58.51
>>106
Smalltalkで静的型付けの安全性ってどうやって?
型推論でもしてんの?完璧に?
0112デフォルトの名無しさん2011/12/23(金) 17:52:58.12
>>111
誰かGemStoneが型推論してるなんて発言してるか?
0113デフォルトの名無しさん2011/12/23(金) 19:29:39.09
静的型チェックも無しに静的型付けの安全性と両立とか
脳が湧いてる発言しか無いな
0114デフォルトの名無しさん2011/12/23(金) 19:52:12.48
動的型付け言語がビジネスでまともに使われてるのってWeb系だけじゃねーの?
0115デフォルトの名無しさん2011/12/23(金) 19:53:32.74
スクリプトで使うだろ
0116デフォルトの名無しさん2011/12/23(金) 19:54:15.60
あ、いや、大規模に
0117デフォルトの名無しさん2011/12/23(金) 19:56:01.92
>>114
その通りだと思うけど、それが何か?
0118デフォルトの名無しさん2011/12/23(金) 19:57:37.15
>>117
いえ別に。「動的型付け言語で大規模開発やってる」のが
ほぼ100%Web系だっていうなら俺の認識と合ってるから問題ない
0119デフォルトの名無しさん2011/12/23(金) 20:42:18.95
JavaつかってるGoogleほどの
大規模開発はまず見かけないけどな。
0120デフォルトの名無しさん2011/12/23(金) 20:57:07.56
ネットは動的で広大だ
広大だといえばほぼ100%ネットだ
0121デフォルトの名無しさん2011/12/23(金) 21:00:57.17
その広大なネットに何の貢献もしてないのがsmalltalkだけどな
OSの上にゴミみたいなOSモドキを作ってオナニーしてるだけ
0122デフォルトの名無しさん2011/12/23(金) 21:24:14.78
PerlはSmalltalkを無視していたのにPythonとJavaが蒸し返した
0123デフォルトの名無しさん2011/12/23(金) 21:44:22.59
>>121
>何の貢献もしてない

この世からSmalltalkの貢献を排除したら、コピペも、カラムインターフェイスも、
マルチフォントも、オーバーラップウインドウも、右クリックメニューも使えないからやだな。
0124デフォルトの名無しさん2011/12/23(金) 21:48:17.34
Objective-C も生まれなかったから WWW も無しだな。
0125デフォルトの名無しさん2011/12/23(金) 21:51:51.74
アセンブラがなければ、そのどちらも生まれてないんだから

お前ら、アセンブラ使えや。
0126デフォルトの名無しさん2011/12/23(金) 21:57:47.09
VisualAge for JavaもなかったからEclipseもダメだな。
HotSpot VMも出てこないからJavaは高速化されなかったし、
あ、そもそもJavaやIDEって自体が出てこんか。
0127デフォルトの名無しさん2011/12/23(金) 22:37:24.37
それらが出て来た以上もうオワコンってこと
今「Smalltalkすげー」って言ってるアホ含めてオワコン
0128デフォルトの名無しさん2011/12/23(金) 22:41:03.89
出てきた物がSmalltalkのそれを全てにおいて凌駕できていればオワコンとでもなんとでも
0129デフォルトの名無しさん2011/12/24(土) 01:05:20.67
Smalltalkしか自慢ができる言語がないのかよw
どうせ普段使ってないだろ?
0130デフォルトの名無しさん2011/12/24(土) 02:02:32.32
でもJavaerたちはSmalltalkerに足を向けて寝られない。
デザパタ然り、リファクタリング然り。
おそらくここで、Smalltalkを馬鹿にしてるものは不届き者で
無礼千万であるぞ。
0131デフォルトの名無しさん2011/12/24(土) 02:08:06.04
じゃ、RubyやPythonやPHPやPerlには
足を向けていいってことだなw
俺はケツを乗っけて寝るw
0132デフォルトの名無しさん2011/12/24(土) 02:31:23.71
もしプログラマーだったら、130の条件が131の条件に依存関係があるかどうかくらい自分で判断できるだろうよ。
それいじょうはかかないが
0133デフォルトの名無しさん2011/12/24(土) 05:48:58.32
>>113
GemStoneは静的型検査をしていないなんて、誰も書いてないと思うけど?
実際、GemStoneは静的型検査も動的型検査もやってるし。

どうして静的ドカタはいつも藁人形を自作して罵倒をはじめるの?馬鹿なの?
0134デフォルトの名無しさん2011/12/24(土) 08:49:53.77
>>133
よーわからんけど、Smalltalkで静的型検査してると考えていいの?
その場合はどのような静的型検査してるの?
型アノテーションを書いてるの?それとも型推論してるの?
それともJavaからも使えるから静的型検査できると主張してるの?
0135デフォルトの名無しさん2011/12/24(土) 09:01:06.14
なんでSmalltalk信者って一言多いの?
0136デフォルトの名無しさん2011/12/24(土) 09:11:54.88
一言多いっていうかコミュ障なんだろ
>>105に対して「smalltalkをベースにした(キリッ」で答えたつもりになってるし
0137デフォルトの名無しさん2011/12/24(土) 09:14:57.06
いやもうマイナー言語はいいから。

静的型付け言語 = C/C++/Java
動的型付け言語 = Perl/PHP/Python/Ruby

これに絞ろう。他に是非とも追加したいものある?

Smalltalk/Lisp 禁止
Haskell/ML 禁止
0138デフォルトの名無しさん2011/12/24(土) 09:15:23.08
普通に答えりゃいいのに。
つか、いくらなんでもこれは>>100と別人か?
0139デフォルトの名無しさん2011/12/24(土) 10:10:24.16
>>135
静的ドカタが馬鹿なことを書くからじゃないのか?
ボケがあればツッコむ。そういうもんだろ。
0140デフォルトの名無しさん2011/12/24(土) 10:22:02.05
煽りのボキャブラリーが少ないからすぐわかる。
0141デフォルトの名無しさん2011/12/24(土) 10:42:21.98
いやもうマイナー言語はいいから。

静的型付け言語 = C/C++/Java
動的型付け言語 = Perl/PHP/Python/Ruby

これに絞ろう。他に是非とも追加したいものある?

Smalltalk/Lisp 禁止
Haskell/ML 禁止
0142デフォルトの名無しさん2011/12/24(土) 10:50:30.36
素直に「俺の知らないこと書くの禁止」って言えばいいのに。
0143デフォルトの名無しさん2011/12/24(土) 10:57:12.31
動的型言語には型チェック機構なんてぜったい組み込めない、とか短絡しないほうがいいよ。
古くは Objective-C があるし、Strongtalk や、その中の人が作った Dart だってある。
http://www.strongtalk.org/
0144デフォルトの名無しさん2011/12/24(土) 11:11:02.14
>>141

X: 静的型付け言語 = C/C++/Java
 動的型付け言語 = Perl/PHP/Python/Ruby

O: 「出来の悪い」静的型付け言語 = C/C++/Java
  「正しい」静的型付け言語 = Haskell/ML
  動的型付け言語 = Smalltalk/Lisp/Perl/PHP/Python/Ruby


泣き言は、スレタイ書いた>>1に言えw
0145デフォルトの名無しさん2011/12/24(土) 11:11:44.21
プロダクトとして使われて無くても、影響力のある言語ってあるからな。
単純によく使われてるって事になれば、スクリプト言語ならPHPが他を圧倒するわけで。
0146デフォルトの名無しさん2011/12/24(土) 11:24:59.91
http://news.mynavi.jp/news/2011/02/08/042/index.html

1 Java 17.773 ↑ 6ヶ月連続1位
2 C 15.822 ↓
3 C++ 8.783 ↓
4 PHP 7.835 ↓
5 Python 6.265 ↑ 6位から5位へ浮上
6 C# 6.226 ↑ 5位から6位へ下落
7 (Visual)Basic 5.867 ↓
8 Objective-C 3.011 ↑
9 Perl 2.857 ↓
10 Ruby 1.784 ↓

こんな感じだからな。リストに乗ってない架空の言語とも言えるようなもので
勝負したってしょうがない。
だって、”開発”効率の話をしてるんだからさ。
0147デフォルトの名無しさん2011/12/24(土) 11:28:41.87
水ナントカさんが斧投げてきそうだから「出来の悪い」方にScalaくらい入れておいてやれよ。
0148デフォルトの名無しさん2011/12/24(土) 11:31:04.17
 TIOBE Programming Community Indexは複数の

検 索 エ ン ジ ン の 検 索 結 果 か ら

 対象とするプログラミング言語が

ど れ だ け 話 題 に な っ て い る か

 をインデックス化したもの。
0149デフォルトの名無しさん2011/12/24(土) 11:38:01.93
いかにもドカタが話題にしそうな言語が列んでるという意味では正しいな。
0150デフォルトの名無しさん2011/12/24(土) 11:39:40.97
>>148
じゃあ別のデータ持ってくれば
反論したいならそれぐらいするべきだよ。
0151デフォルトの名無しさん2011/12/24(土) 11:41:05.32
じゃあこれでいい?
http://sourceforge.jp/magazine/09/08/13/0423202

この調査は、Black Duckのオープンソースプロジェクト情報データベース「
Knowledge Base」を利用し、過去1年間に利用された言語のコード数を調べたもの。

 プロジェクトのすべてのコードを対象とした場合、最多はCで比率は40.91%、
次いでC++(14.02%)、Java(10.95%)、Shell(8.96%)、JavaScript(5.55%)となった。
過去1年間に追加されたコードのみを対象にした場合、それぞれの比率は40.34%、13.43%、10.29%、7.05%、7.6%となった。

 前年同期比と比較すると、JavaScriptが2.1ポイント増加した以外、上位4言語はすべてマイナスとなった。
JavaScript以外に前年同期比増となった言語は、PHP(全体6位、0.3ポイント増)、SQL(全体9位、1.1ポイント増)、
C#(全体10位、0.1ポイント増)、Ruby(全体13位、0.2ポイント増)。

 Black Duckは傾向として、JavaScriptがこの12か月にリリースしたプロジェクトの36%で利用されるなど、
動的言語人気のトレンドを指摘している。静的プログラム言語全体では、
利用が前年同期からマイナス1.8ポイントとなったのに対し、動的言語は2.4ポイント増加したという。だがCは、コード行数10億台を唯一上回るなどゆるぎない地位を保っており、C、C++、Java、Shell、JavaScriptのトップ5で全体の80%を占めたとしている。
0152デフォルトの名無しさん2011/12/24(土) 11:41:29.07
自分の知らない言語を話題から排除する根拠に
TIOBE持ってくるとかどんだけ情弱なんだよ。
0153デフォルトの名無しさん2011/12/24(土) 11:44:50.25
これが一番信頼できる。
http://www.langpop.com/

1位から順に20位までこんな感じだ。

C、Java、C++、PHP、JavaScript、
Python、C#、Perl、SQL、Ruby
Shell、Visual Basic、Assembly、ActionScript、Objective C
Lisp、Delphi、Pascal、Scheme、Haskell
0154デフォルトの名無しさん2011/12/24(土) 11:45:21.58
>>152
いつまでTIOBEの話してるの?
すでに他のデータ出てるんだけど。
0155デフォルトの名無しさん2011/12/24(土) 11:46:26.81
TIOBEじゃないなら否定する理由はないね。

あぁ、使われてないさ。k疎。
0156デフォルトの名無しさん2011/12/24(土) 11:47:49.86
排除っていうか、大規模開発の効率の話してるんだから
このスレに合わないってだけなんだけどなーw
0157デフォルトの名無しさん2011/12/24(土) 11:53:37.89
Scalaって大規模開発で使おうとしたら人が集まらなくて頓挫したんだっけか。
0158デフォルトの名無しさん2011/12/24(土) 11:58:07.04
>>156
JPモルガンが扱う金融サービスって小規模なのか?
http://smalltalk.cincom.jp/main/successes/financial-services/
0159デフォルトの名無しさん2011/12/24(土) 12:03:20.63
しょせんドカタだからな。自分のアンテナのしょぼさに気付かない上に、あまつさえ
それにひっかかってこない事象はこの世に存在しないも同然とか、そんな感じだろ。
0160デフォルトの名無しさん2011/12/24(土) 12:05:31.30
俺の気に食わないデータは排除する
0161デフォルトの名無しさん2011/12/24(土) 12:06:10.98
>>158
お前は使ってないだろ?
0162デフォルトの名無しさん2011/12/24(土) 12:07:06.81
だから「動的型付け言語はドカタ動員必至の大規模開発で効率が悪い」でFAだろうと何度言ったら
0163デフォルトの名無しさん2011/12/24(土) 12:09:22.90
>>161
お前はSmalltalk童貞かも知れないが一緒にはしてくれるな。
0164デフォルトの名無しさん2011/12/24(土) 12:14:25.99
Smalltalk童貞とかLisp童貞って、これらの言語が引き合いに出されるとすぐいらつくよね。
あるいは有名人とかだと、知ったかぶりして墓穴掘るとか。
0165デフォルトの名無しさん2011/12/24(土) 12:16:29.28
Smalltalkの仕事が全く存在しない前提で話進んでるみたいだけど
一応あることはあるんだぞ
0166デフォルトの名無しさん2011/12/24(土) 12:21:44.75
SmalltalkやLispとかがずっと昔からやってきたことって、
車輪の再発明による才能の無駄遣いを避けるためには、知っておくべき常識だと思うけどな。
人によってはパラダイム転換に少し手こずるかもしれないけど、言語自体はそんなに難しくもないし。
0167デフォルトの名無しさん2011/12/24(土) 13:01:04.41
なぜ車輪の再発明は無駄でパラダイムの転換は無駄ではないんだろうね
車輪の転換とか、パラダイムの再発明ってのはないのかね
0168デフォルトの名無しさん2011/12/24(土) 13:02:41.55
これが一番信頼できる。
http://www.langpop.com/

1位から順に20位までこんな感じだ。

C、Java、C++、PHP、JavaScript、
Python、C#、Perl、SQL、Ruby
Shell、Visual Basic、Assembly、ActionScript、Objective C
Lisp、Delphi、Pascal、Scheme、Haskell


0169デフォルトの名無しさん2011/12/24(土) 13:16:52.00
>>164
いらつくというか、2ch のような「一般レベル」を想定して話すべき場所で
わざわざマイナー言語を持ち出してきて、俺知ってる。お前知らないだろ?
っていう書き込みが、学歴自慢と同じような臭いを感じて反発してしまう。

逆の立場からは「コンプレックス丸出し」という印象を受けるのだろうから
お互いさまだろうけど。
0170デフォルトの名無しさん2011/12/24(土) 13:32:19.41
SmalltalkやLispとかがずっと昔からやってきたこと

を学ぶ方法として Smalltalk や Lisp そのものを勉強するのが近道かどうかはわからない。
0171デフォルトの名無しさん2011/12/24(土) 13:54:44.45
どう考えても近道だろ。

そもそもHaskellやOCamlだのの相応の知的レベルを要求される
小難しい型システムを学ぼうって前の尻込みならともかく、
SmalltalkだのLispだののちょっと考え方をひねるだけのアハ体験を
何故そんなに身構えんといかんのか分からん。
0172デフォルトの名無しさん2011/12/24(土) 13:55:43.07
童貞だからさ
0173デフォルトの名無しさん2011/12/24(土) 13:56:45.35
そして、開発では何使ってるの?って話に戻る。
0174デフォルトの名無しさん2011/12/24(土) 14:02:51.78
Smalltalk
0175デフォルトの名無しさん2011/12/24(土) 14:03:56.40
ほう・・・で開発規模は?
0176デフォルトの名無しさん2011/12/24(土) 14:13:03.55
2100クラス、46000メソッド。;p
0177デフォルトの名無しさん2011/12/24(土) 14:25:52.12
おおーええかんじじゃないか
あるところにはあるんだなあ・・・
0178デフォルトの名無しさん2011/12/24(土) 14:29:29.73
>>171
SmalltalkやLispがずっと昔からやってきたことってたとえば何?
0179デフォルトの名無しさん2011/12/24(土) 14:32:11.12
>>176
平均 21.9 メソッド/クラスって多いと思うんだがSmalltalkだとそういう感じになるのか?
0180デフォルトの名無しさん2011/12/24(土) 14:35:14.33
>>178
メタプログラミング、ジェネリクス、クロージャーとかか?


0181デフォルトの名無しさん2011/12/24(土) 14:48:11.93
動的型付け言語はSmalltalkしか自慢できる言語がないってことが
証明されてしまったな。
0182デフォルトの名無しさん2011/12/24(土) 14:49:17.85
>>180

>メタプログラミング
#define マクロだって一種のメタプログラミング
eval に限定した話だとしても Ruby でもいいね

>ジェネリクス
Java にもあるね

>クロージャ
もう色々な言語でサポートされているから何を使って覚えてもいいね


というふうに、概念を理解するためだけに、
当時の言語を一々勉強する必要はないと思うのだけど。

まあ一つ一つ遊びながら「プログラミング言語史」を味わうってのは面白いけどさ。
それが実用としてそれほど重要か、常識か、となると、首をひねらざるを得ない。
0183デフォルトの名無しさん2011/12/24(土) 14:54:28.84
>>158
CM そのまま信用しちゃう素朴な人?
0184デフォルトの名無しさん2011/12/24(土) 15:19:19.61
Smalltalk起源だと、Classboxes Traits Continuation-based frameworkあたりも押さえておきたいし、Smalltalkベストプラクティス・パターンは他の言語でも勉強になるから読んでおけ。
というか仕事で使うかはともかくとして、複数言語使えるのは当たり前だろ?
0185デフォルトの名無しさん2011/12/24(土) 15:20:46.38
それでPerlだとどういうことになるわけ?
0186デフォルトの名無しさん2011/12/24(土) 15:30:55.67
無駄無駄。Javaで思考が止まっているドカタに何を言っても、
「それJavaにもあるよね」で終わり。そもそもドカタにSmalltalkや
Lispの何が嬉しいかなんて理解できるわけがない。Javaレベルでで
満足しているんだからそっとしておいてやれよ。

ドカタもドカタで関係ない動的型言語にちょっかい出してくんな。
0187デフォルトの名無しさん2011/12/24(土) 15:32:09.48
「ほげ言語」のパラドックス
http://practical-scheme.net/trans/beating-the-averages-j.html
0188デフォルトの名無しさん2011/12/24(土) 15:39:13.83
で、Perlの場合で教えてください。
たとえばPerlで実用的な
リファクタリングブラウザはありますか?

自分の結論は無い。でした。
Padreは使い物になりませねんでした。
0189デフォルトの名無しさん2011/12/24(土) 15:40:56.00
Smalltalk以外の動的型付け言語は
ゴミだと思ったほうがいい。
Smalltalkだけが最高。
0190デフォルトの名無しさん2011/12/24(土) 15:42:19.51
>>181
言語を隠すこと自体が動的型付けのパラダイムなんだよな
静的型付けの場合、言語を隠すと型も見えなくなって困るけどな
0191デフォルトの名無しさん2011/12/24(土) 15:44:32.31
型が見えなくなって困る?

動的型付け言語は
最初から型が見えないんだけどw
0192デフォルトの名無しさん2011/12/24(土) 15:44:53.62
言語を隠すの意味が理解出来ない。

誰か他の人で分かった人いる?
0193デフォルトの名無しさん2011/12/24(土) 15:46:27.22
情報隠蔽。カプセル化。
0194デフォルトの名無しさん2011/12/24(土) 15:51:37.10
カプセル化すると型が見えないってどういうこと?
初めて聞いた。
0195デフォルトの名無しさん2011/12/24(土) 15:57:03.87
相手が意味を取れるかどうか関係無しにメッセージを投げつけて
上手く反応できなくても気にしない

動的型厨らしい会話のスタイルだな
0196デフォルトの名無しさん2011/12/24(土) 15:58:48.10
オブジェクトが持っているメソッドが分かるってことは
それは情報隠蔽できてないってことだよ。
0197デフォルトの名無しさん2011/12/24(土) 16:05:44.21
メソッドの存在は分かる
どのような言語・アルゴリズムで実装されたかは分からない
0198デフォルトの名無しさん2011/12/24(土) 16:07:27.37
>>197
DLLの話でもしてんの?
0199デフォルトの名無しさん2011/12/24(土) 16:08:24.62
COMは型がわかるよね。
0200デフォルトの名無しさん2011/12/24(土) 16:28:48.89
COMを自慢したらJavaを自慢できない
自慢できるものは一個しかない
自慢すればSmalltalkのように閉鎖的になる
0201デフォルトの名無しさん2011/12/24(土) 16:29:14.91
情報隠蔽っていうのは、型の内部の実装を直にいじ*ら*ないようにしようって
方向性の話で、もちろんそのために言語機能で縛りを入れていじ*れ*ないように
することもやぶさかではないけれど、真の目的は、隠すことそれ自体じゃなくて、
型の内部の実装が変わってもその型を扱う処理は書き換えなくても大丈夫って
いうのが本質だ。だから言語にアクセスコントロール機能があるかないかは
(名前の衝突という見えなくすることで生じうるマッチポンプ的事象の回避を除けば)
あまり問題ではないし、むしろイントロスペクション的にはアクセスコントロールなんて
ないほうがありがたい。
0202デフォルトの名無しさん2011/12/24(土) 16:50:33.95
高度に発達した型システムを持つ静的型言語は、動的型言語と同じ事が出来る。

ただ、処理系の出来が悪いとかなりいろいろと書かないといけないが。
0203デフォルトの名無しさん2011/12/24(土) 17:00:17.93
>>169
ここのコメントを読んでいるとステレオタイプに
他人のアドバイスの批判と自己主張をしている人がいることがわかるが,
論の展開もむちゃくちゃだし,エビデンスもない。
自分と意見が違うだけのレスを「間違い」として批判することで
自己の優位性を示そうしていることがよくわかる。
0204デフォルトの名無しさん2011/12/24(土) 17:08:20.78
>>203
>自分と意見が違うだけのレスを「間違い」として批判することで
>自己の優位性を示そうしていることがよくわかる。

お前のことじゃん (w
0205デフォルトの名無しさん2011/12/24(土) 17:09:25.83
創価モナ
言われて気付いたわ
39
0206デフォルトの名無しさん2011/12/24(土) 17:44:26.00
>>187
いったい「ほげ」に何ができるっていうんだい?
「ほげ」にはまともな最適化コンパイラすらないじゃないか
0207デフォルトの名無しさん2011/12/24(土) 18:40:20.10
「ほげ」が何かによるな。
0208デフォルトの名無しさん2011/12/24(土) 18:59:29.16
>>203
2チャンらしいから、ここはそうゆうところだしね。
0209デフォルトの名無しさん2011/12/24(土) 22:13:33.73
Smalltalkの蓄積をJava使いにも分かるように具体的に、なおかつ
JavaでそれをやるよりSmalltalkで直接学ぶほうが効率が良い例を考えてみるのは
興味深いテーマだと思う。デザパタぐらいしかすぐには思いつかないけれど。

デザパタ、特にGoFのはSmalltalk等で育まれたパターンを静的型言語でも
実装・再利用可能であることを示したことが大きいが、それ以前に、
数ある無名のパターンの一部に名前を付けてカタログ化したことにも意義がある。
Smalltalkに触れることで、そういうGoFから漏れた無名のパターンを発見して会得できる
し、それは一度静的型への変換を経たGoF等からでは学びにくい…というのはちょっと弱いか。

GoFのから漏れた時点で学ぶ価値無し、とか言われそうで。
0210デフォルトの名無しさん2011/12/24(土) 22:37:45.61
Smalltalkは、OODBモドキの中に組まれた処理系で他にない仕組みで動いている性格から、
プログラマはプログラミングに際して必要とされる情報をデータベースからデータを集めるように
インタラクティブに気軽に収集して活用できるちょっと変わった体験を得やすい。

Smalltalkで組まれていたVisualAge for Javaやその流れをくむEclipseには、そうした体験から
発想された機能が多く搭載されているが、すべてがJava IDEに受け継がれたわけではないので、
まだ新しい便利な機能やプラクティスをSmalltalk処理系から見つけてきて
Java IDEに組み込んで活用できる可能性は高い。

たとえば機能ならSqueakのMethodFinderとか、プラクティスならメソッドやクラスのカテゴリー属性とか。

ただこれも結局、Java IDEに継承されなかった物は無用でもうカスしか残っていないとか言われそうか。
なかなか難しいね。
0211デフォルトの名無しさん2011/12/25(日) 00:56:30.61
>>182
その例で行くと MOP -> リフレクション かい?
ぶっちゃけ lisp や Smalltalk の劣化コピーだろ?
0212デフォルトの名無しさん2011/12/25(日) 01:28:26.36
「劣化コピー」とか言うとまた反感を買いそうだけれども、Javaなどのそれらは「限定的な実装」であるから
SmalltalkやLispならフル機能を見ることで、どうあるべきだったか、どんな効果を狙った物だったのかを
理解しやすいというパターンは提案できそう。前述のデザパタしかり、IDEの便利機能やプラクティスしかり。

比較的最近の言語機能で言えば、Javaの類似機能は8からだけれども、Scala(厳密にはこれは機能だけ
シミュレートした別物)やPerl(ただし呼称はRole)、PHP(5.4から)で取り込まれた「Traits」もこのパターンかも。

Javaのは最終的にどうなるか分からないけれど、既存のTraits、あるいはそれに準ずるとされる機能は
元ネタであるSqueak Smalltalkのそれからすると程度の差はあれ限定的な実装に過ぎないから
不完全な物を前にあれやこれ悩む前に、一度オリジナルに接しておくのは効率のよい学習法ではないだろうか。
0213デフォルトの名無しさん2011/12/25(日) 01:29:36.86
Smalltalkの技術を一番受け継いだのが
Javaだってってことか。
0214デフォルトの名無しさん2011/12/25(日) 02:06:17.26
>>201
言ってることは否定しないが、規模がデカくなるにつれて、
いかにショッパイ奴らに最低ラインの仕事させるか、
ジャマさせないか、がキモになってくるから
言語による縛りとかが欲しくなってくんのよ。

ベンチャーは知らね。
0215デフォルトの名無しさん2011/12/25(日) 02:20:50.67
というか、中をごちゃごちゃいじりまわすようなのは
行き当たりばったりと同じだよ。
ちゃんと設計ができてないだけ。

ある程度の規模なら自分でも縛り作るわ。
どうせ将来の自分は何やってるのか忘れるんだしさ
設計がきれいにできていれば、責務をきちんと分けられるから
難しいものは内部に押し込めて、
通常は最低ラインだけ書けばよくなるんだ。
0216デフォルトの名無しさん2011/12/25(日) 06:52:11.13
>>181
で、静的型付けは、どの言語が自慢できるの?

ライブラリもロクに揃ってないHaskell?
それともドカタ向けになろうとしてなれなかったML系?
0217デフォルトの名無しさん2011/12/25(日) 07:07:44.08
自慢とかどーでもよくて、使われてる言語同士で、どっちがより使えるか勝負の議論だと思うんだ
0218デフォルトの名無しさん2011/12/25(日) 08:09:01.69
>>209-210
Java は元々 C++ と Smalltalk のいいとこ取りしようみたいな言語だと思うのだけど、
その過程でそれぞれの言語から取り込まれたもの、捨てられたものあるでしょう。
その論調で Smalltalk を学ぶべきというなら当然 C++ も学ぶべきで、
さらに言えば closure のある言語を使う人は関数型言語も学ぶべき?
そうやって広げていくと最後には「ありとあらゆる言語を学ぶべき」という結論にしかならないような。
時間が無限にあるならその結論でもよいのだけど、現実はそうではないので。

せっかく具体例を挙げてくれたので、そこに反応すると

>MethodFinder

入出力で検索できるなんてのは面白いけど、
Java の場合は、そもそも入出力の型で絞り込まれるのでそれほど重要じゃないのかな。

>メソッドやクラスのカテゴリー属性

Java はインタフェースによって実質的に多重継承をサポートしているから、
それがカテゴリの代わりを担っているのだと思う。
ここは C++ を「注意深く」受け継いだ利点と言えるかな。
0219デフォルトの名無しさん2011/12/25(日) 08:53:39.46
>>218
> さらに言えば closure のある言語を使う人は関数型言語も学ぶべき?

closureの元祖は関数型言語なのか?
むしろALGOL60の系だと思っていたが。
0220デフォルトの名無しさん2011/12/25(日) 08:57:18.21
>>212
自分だったら、まず知ってる言語で触ってみて、
その上でさらに「オリジナル」を知りたくなったら
Smalltalk をインストールする前に論文を読む。

そりゃあ論文の著者が Smalltalker なのだから
Smalltalk を知っていれば低コストで効率的に理解できるという有利はある。

でも Smalltalk を知らない人が「traits を理解するために」
Smalltalk を覚えるというのは、遠回りな気がしてならない。
(覚えたところで Smalltalk でプログラミングはしないのだから)

何か概念を勉強するなら
「自分が使う言語で実践+本を読む」の組み合わせが近道だと思うけど。
0221デフォルトの名無しさん2011/12/25(日) 09:03:50.43
>>220
モナドによるSTMの論文を理解するのにHaskellダウソすらしない人?

Unixカーネルのコンテキストスイッチの論文を理解するのに
linuxのソースツリーのダウソすらしない人?

使ったこともないのに教科書的な「うわっつらの知識」で理解できる
つもりになれる人っていうのは、Smalltalkに限らず大抵の技術について
本質を理解する機会を自ら放棄しているんじゃないのかな?
0222デフォルトの名無しさん2011/12/25(日) 09:09:14.52
>Unixカーネルのコンテキストスイッチの論文を理解するのに
>linuxのソースツリーのダウソすらしない人?

なんで linux なの?
他じゃ駄目なの?
むしろ linux はオリジナルでも何でもないですが?

という話で、traits という「教科書」の実装を理解するために使う「例」は
別に Smalltalk でなくても Perl でも PHP でも何でもいいと思うんだけどね。
より深く知りたくなったら Smalltalk をダウンロードすりゃいいけど、
研究者じゃないんだから深さはどこかで見切りをつけなきゃ仕事できないよ。
0223デフォルトの名無しさん2011/12/25(日) 09:10:39.74
藻などが自分の使う言語で使えれば
Haskellはいらんだろ
0224デフォルトの名無しさん2011/12/25(日) 09:15:16.95
流れぶったぎるが traits って普通に委譲で書くのに比べて何がいいんだ?
0225デフォルトの名無しさん2011/12/25(日) 09:22:41.86
>>221
>Unixカーネルのコンテキストスイッチの論文を理解するのに
>linuxのソースツリーのダウソすらしない人?

理解するだけなら、普通しないだろ。
そもそもその論文の内容が実装されているかすらわからんのに。

>使ったこともないのに教科書的な「うわっつらの知識」で理解できる
>つもりになれる人っていうのは、Smalltalkに限らず大抵の技術について
>本質を理解する機会を自ら放棄しているんじゃないのかな?

上っ面の意見ありがと。

それを言うなら、ソースを「見てるだけ」ではだめで、自分で「実装してみ
ないと」だめだろ。
0226デフォルトの名無しさん2011/12/25(日) 09:29:59.60
というか、Unix カーネルのコンテキストスイッチの論文を理解するために
「Linux」のソースを使うというのは、オリジナルが何かということには構わず
自分が Linux に慣れ親しんでいるから Linux を題材に勉強するというスタンスで、

>>221 が否定している >>220 の

>「自分が使う言語で実践+本を読む」の組み合わせが近道だと思うけど。

そのものではないかと。
0227デフォルトの名無しさん2011/12/25(日) 09:36:21.61
>>225
> それを言うなら、ソースを「見てるだけ」ではだめで、自分で「実装してみ
> ないと」だめだろ。

もちろんそうだ。ダウソすらしないのは論外だろ?
0228デフォルトの名無しさん2011/12/25(日) 09:37:10.00
>>222
もちろん他のUnixカーネルでも構わんと思うよ。で?
0229デフォルトの名無しさん2011/12/25(日) 09:41:10.24
>>228
220はsmalltalkでなくてもperlやphpで勉強したっていいだろって言ってるのに、
それを否定しておいて、そこでlinuxでも他のunixでもなんでもいいってのは意味不明
0230デフォルトの名無しさん2011/12/25(日) 09:42:42.20
>>222
> という話で、traits という「教科書」の実装を理解するために使う「例」は
> 別に Smalltalk でなくても Perl でも PHP でも何でもいいと思うんだけどね。

そうやってオブジェクト指向はJava等に劣化コピーされたものが広まり、
MVCも劣化コピーされ続けて本来のSmalltalk-80的なMVCは見る影もなく、
劣化コピーが劣化コピーを生み続けていくわけだ。

コピペドカタが本質に興味を持たないのは仕方ないと思うが、
どこかの深さで見切りをつけるというのなら、
劣化コピーで勉強したつもりになるのをやめて、原典にあたったほうが
ずっとマシだと思うぞ。
0231デフォルトの名無しさん2011/12/25(日) 09:42:45.20
論文しか読まないなんて誰も言ってないのに、脳内敵を作るタイプ?
0232デフォルトの名無しさん2011/12/25(日) 09:44:14.19
traitsなんて多重継承もprivate継承もテンプレートも何一つ持たない糞言語の苦肉の策だろ正直

とC++の立場から煽ってみる
0233デフォルトの名無しさん2011/12/25(日) 09:46:11.66
>>229
で、Linuxのプロセススケジューリングは何の劣化コピーなの?
0234デフォルトの名無しさん2011/12/25(日) 09:47:41.52
>>233
それを言うなら、Javaの何がSmalltalkの劣化コピーなの?
って話だ。そっちが元なのだから。
0235デフォルトの名無しさん2011/12/25(日) 09:48:03.35
>>232
traits のおかげで多重継承もprivate継承もテンプレートも代替できるなら
C++はいかに糞言語か、ということですか?
0236デフォルトの名無しさん2011/12/25(日) 09:48:49.18
>>235
いやtraitsは完全には代替できないので劣化コピーです
0237デフォルトの名無しさん2011/12/25(日) 09:51:06.39
>>234
何の話をしているのかもわからずに、
Smalltalkなんて参照する意味ないと断言してたの?
0238デフォルトの名無しさん2011/12/25(日) 09:51:59.90
ま、一つ一つの断片を切り出して、劣化コピーだ何だいっても始まらんわな。
インタフェースは多重継承の劣化コピーかね。あほかと。
言語全体の中でのバランスを考えて取捨選択があるんだろうに・・・
0239デフォルトの名無しさん2011/12/25(日) 09:53:01.81
>>236
そうだね、traitsでは多重継承のような「大混乱を起こす」という機能はない。
その意味では劣化コピーだw
0240デフォルトの名無しさん2011/12/25(日) 09:53:38.62
>>239
まあドカタがC++を使えば大混乱を起こすよ。それは認める。
0241デフォルトの名無しさん2011/12/25(日) 09:55:49.25
どんどん煽るけどw

ドカタでも使える多重継承が欲しいよね
ってのがインタフェースでありMix-inでありtraitsでしょ?
0242デフォルトの名無しさん2011/12/25(日) 10:05:38.03
>>233
論文理解する立場からだと、Unix だろ。

コンテキストスイッチとプロセススケジューラを混同しているような
理解力だと、同じに見えるかもしれないけど。
0243デフォルトの名無しさん2011/12/25(日) 10:24:44.43
UnixとLinuxは大体同じだから問題ない。

SmalltalkとJavaは互換性がない。
オブジェクト指向という最強の技術を使ったにもかかわらず全く互換性がない。
0244デフォルトの名無しさん2011/12/25(日) 10:42:26.03
オブジェクト指向が最強の技術www
0245デフォルトの名無しさん2011/12/25(日) 10:46:05.84
>>243
>UnixとLinuxは大体同じだから問題ない。

なるほど、その程度の認識で「コンテキストスイッチの論文」とか言ってるわけね。
あほらし。
0246デフォルトの名無しさん2011/12/25(日) 10:48:17.14
243は単発で釣りに出てきたただの馬鹿で
コンテキストスイッチと言ってた人とは別人だと思うが
0247デフォルトの名無しさん2011/12/25(日) 10:50:16.49
>>239>>241
既存クラスにメソッドをガシガシ追加するような
邪悪な文化がSmalltalkにあるから、classboxesやらtraitsが無いと
収集が付かなくなるんだよ
C++の多重継承なんて底なしの低能でなければ十分コントロール可能だ
0248デフォルトの名無しさん2011/12/25(日) 11:20:46.29
>>210
メソッドカテゴリのススメ http://bit.ly/uqzT2T
典型的なカテゴリ http://bit.ly/tRqdXn
0249デフォルトの名無しさん2011/12/25(日) 11:26:41.82
Java屋だがやっぱりtraitsのメリットが今一つ理解できない。

Javaなら普通に、traits=interface+implementationに分離して
class側はtraitsのinterface部分をそれぞれimplements宣言して
内部はtraitsのimplementationをフィールドで持ちつつ委譲メソッドを定義
(traits側からclass側にアクセスする必要があるならthisを渡す)

だと思うんだが、そういうごく普通のスタイルに比べたメリットは
1.traitsのimplementationが単独でインスタンス化されないことを保証する
2.class側で委譲メソッドを明示的に記述しなくて済む
の二点でOK?正直どっちも大した問題じゃないだろ。
0250デフォルトの名無しさん2011/12/25(日) 11:27:26.54
相変わらずSmalltalk以外の
動的型付け言語は話題にすらなってないのかw
0251デフォルトの名無しさん2011/12/25(日) 11:30:28.29
>>247
正直、SmalltalkでもTraitsっていうのはあんまし使えないね。
経験的にも、クラス横断的なメソッドって意外と無いもんだ。
事実Squeakでも、Traitsはクラス機構の一部に使われているだけで
コレクションなどの組み込みライブラリにはほぼ使われていない。
ま、あれば便利だし、たまには使うけど。
0252デフォルトの名無しさん2011/12/25(日) 11:32:08.78
>>224
メソッドが少数なら委譲でいい。
メソッドを増やしていくと委譲は不利になる。
なので、委譲では駄目だということにしたい人は、メソッドをガシガシ増やす。
0253デフォルトの名無しさん2011/12/25(日) 11:36:43.07
>>248
「メソッドは慣習に従って正しいカテゴリに入れましょう」と
「メソッドは慣習に従って正しい名前を付けましょう」で何が違うのかな。

accessing カテゴリに入れなくても getXXX, setXXX
testing カテゴリに入れなくても isXXX

で駄目な理由はある?
0254デフォルトの名無しさん2011/12/25(日) 11:37:28.20
>>252
traits にメソッドが大量に入って太っていくのは、
そもそも traits による設計という著者の思想を何も理解していないと思う。
0255デフォルトの名無しさん2011/12/25(日) 11:41:47.62
ここから>>254が著者の思想を語ってくれます。
静かに話を聞きましょう。
0256デフォルトの名無しさん2011/12/25(日) 11:48:06.17
>>255

Traits: Composable Units of Behaviour
Nathanael Scharli, Stephane Ducasse, Oscar Nierstrasz, and Andrew P. Black

から引用すると

>In our proposal, lightweight entities called traits serve as the primitive units of code reuse.

"lightweight entities called traits"
0257デフォルトの名無しさん2011/12/25(日) 11:49:36.78
>> 255

特性:行動の組み合わせ可能なユニット
ナサニエルシェルリ、ステファンデュカス、オスカーNierstrasz、とアンドリューP.ブラック

から引用すると

>私たちの提案では、形質と呼ばれる軽量エンティティはコードの再利用のプリミティブ単位として機能する。

"軽量エンティティは、特性と呼ばれる"
0258デフォルトの名無しさん2011/12/25(日) 11:54:20.25
>>249
Traits自体は実装も書けるインターフェイスで、ミソは(インターフェイス同様)「フラット化」にある。
インターフェイスの場合、実装は書かないからフラット化が意識されることはないけれど(もちろん
シグニチャが違うメソッドの場合は別の話になる。念為)、実装があればそういうわけにもいかなくなる。

ミックスイン(多重継承)の場合はリニアライズにより親クラスの優先順位が決まるわけだけれど
その際に望まないメソッドやプロパティの遮蔽があったりしていろいろと問題が多い。ダイアモンド継承
問題がその良い例。

Traitsではこの種の問題を回避するためにリニアライズせずにフラット化をする。トレイトに定義された
メソッドやプロパティを集合としてとらえ複数 use する際にはそれらをコンパイル時に合成して
しまうわけ。これで相互の優先順位は消滅するので遮蔽はなくなる。代わりにコンフリクト状態は
いっさい許されないからエラーになる。これがTraitsの嬉しいところ。

ちなみにScalaのTraitsは別物なので無視したほうが吉。あれは普通のミックスイン機構だから。
0259デフォルトの名無しさん2011/12/25(日) 12:06:46.65
なんかさ、メソッドのコンフリクトとかいろいろ問題にしてるけど、
そんな問題が全く起きなかったVB6の方が優れているとしか思えないんだけど。
0260デフォルトの名無しさん2011/12/25(日) 12:28:00.80
>>258
簡単に言えば衝突をエラーにする多重継承だろ?それは分かる。
Javaはinterfaceという仕組みでシグネチャのみ多重継承OK、実装は単一継承
という枠組みになってるから、多重継承の問題は発生しない。

単一継承+Mixinよりは、+traitsの方が使いやすいのかなという気はするが
(クラス単位のリニアライズではなくメソッド単位で優先順位を決められるところが)
Javaなら元々interfaceがあるからtraits別に要らんなと。
まあtraitsの方が「実装付き」な分だけ記述量が少なくて済むってのはあるだろうが、
Javaは知ってのとおり静的型付けなので、traitsの内部実装を取り替えたいとなったら
結局traitsからinterfaceを切り出すとかいうアホなことをする破目になるんだろうしw
(useするtraitsを取り替えて一丁上がり、には絶対ならない)
0261デフォルトの名無しさん2011/12/25(日) 12:40:33.82
>>258
ScalaのTraitsだってコンフリクトの問題は回避出来るだろ
0262デフォルトの名無しさん2011/12/25(日) 12:42:19.55
自己レス
>Javaは知ってのとおり静的型付けなので、traitsの内部実装を取り替えたいとなったら
>結局traitsからinterfaceを切り出すとかいうアホなことをする破目になるんだろうしw
>(useするtraitsを取り替えて一丁上がり、には絶対ならない)

これはそんなことねーか。traits側のシグネチャがclass側に「フラット化」されてると
考えりゃ実装を取り替えるのはJavaでもuseするtraitsを変えるだけか。
というよりも、そもそもinterfaceとは違って、classがtraitsをuseしていても、
それをtraits型として使うことはできないと。静的型付け言語だと当然そうなるわな。
衝突検知付きのprivate継承か。なるほど。
0263デフォルトの名無しさん2011/12/25(日) 13:03:51.68
>>247
つまり、既存クラスに手をつけないという制約がC++の思想にあるわけでしょ。
その制約を受け入れたドカタがC++を使って、
その制約を受け入れられない創造的プログラマーはSmalltalkを使う。
そういう棲み分けになっているわけだね。
0264デフォルトの名無しさん2011/12/25(日) 13:05:33.65
>>263
まあC++はネイティブコードへのコンパイルが当然の前提なのでSmalltalkとは違うよ。
0265デフォルトの名無しさん2011/12/25(日) 13:10:30.61
創造的プログラマはバッファオーバーランを積極的に利用する
0266デフォルトの名無しさん2011/12/25(日) 13:11:41.83
て言うか、大規模開発で既存クラスにガシガシ手をつけるなんていう発想が信じられん。
0267デフォルトの名無しさん2011/12/25(日) 13:12:42.43
ネイティブコードへのコンパイルと既存クラスへの変更は排他的な関係じゃないでそ。

既存クラスへの変更ができて、ネイティブコードを吐く処理系もあるし、
ネイティブコードへのコンパイルはないのに既存クラスへの変更ができない
ドカタ言語もある。
0268デフォルトの名無しさん2011/12/25(日) 13:13:11.42
>>266
ドカタにはそう思えるわけね。
0269デフォルトの名無しさん2011/12/25(日) 13:14:14.67
>既存クラスへの変更ができて、ネイティブコードを吐く処理系もあるし

そうなん?具体的には何?
0270デフォルトの名無しさん2011/12/25(日) 13:15:24.68
>>265
なるほど、巨大な線形サーチで番兵がわりに例外処理で終了条件をチェックするのか。
0271デフォルトの名無しさん2011/12/25(日) 13:15:43.47
>>269
Smalltalk/MT
0272デフォルトの名無しさん2011/12/25(日) 13:18:44.71
>>265
具体的に。
0273デフォルトの名無しさん2011/12/25(日) 13:22:15.59
>>271
ちらっとサイトを見たけど全然わからんかった。
何が書けるのかサンプルがないと、結局知ってる人にしか分からんね
0274デフォルトの名無しさん2011/12/25(日) 13:23:20.81
>>273
書けるのはSmalltalkのコード。
吐くのはwindows上で動くネイティブコード。
0275デフォルトの名無しさん2011/12/25(日) 13:24:09.23
つかさ、インターフェースが違うのなら
シグネチャが一緒でも別メソッドだと思うんだけど?

なんで一つのクラスに、シグネチャが一緒だとしても
インターフェースが違うのなら、違うものとして
扱える言語がないの?
0276デフォルトの名無しさん2011/12/25(日) 13:40:33.62
>>268
大規模開発したことないのがバレバレだよ。
ドカタどうのこうのの問題じゃない。
0277デフォルトの名無しさん2011/12/25(日) 13:42:37.38
>>275
シグネチャにも名前空間を導入するってこと?
0278デフォルトの名無しさん2011/12/25(日) 13:48:09.67
>>274
へーと思ってインストールしてみたけど何をどう書けばいいのかさっぱりわからなかった。
こりゃ普通の言語しか知らない身には無理だわ
0279デフォルトの名無しさん2011/12/25(日) 13:48:25.72
>>269 CLOS あたりがそうかな
CHANGE-CLASS
UPDATE-INSTANCE-FOR-DIFFERENT-CLASS
UPDATE-INSTANCE-FOR-REDEFINED-CLASS
てな、総称関数がある
0280デフォルトの名無しさん2011/12/25(日) 13:56:44.95
>>279
うーん。eval をイメージしているのだけど。
0281デフォルトの名無しさん2011/12/25(日) 14:07:02.79
>>274
もう少し試してみてるけど、やっぱり全然わからん。
まともに使えるの?これ。

workspace を開いて

Transcript show: 'Hello world'.

と書いて実行しても transcript に何も結果が出ない。なんだこれ。
0282デフォルトの名無しさん2011/12/25(日) 14:16:12.01
>>276
ドカタは元請けが決めたライブラリを弄っちゃいけないんでしょ?
それを当然だと思うのがドカタの誇りなんでしょ?

かわいそうに。あたかも鎖の豪華さを誇る奴隷のようだ。
0283デフォルトの名無しさん2011/12/25(日) 14:20:53.14
そもそも何に関して大規模なのかも明らかにせずに
「大規模開発したことないのがバレバレだよ。キリッ!」とか認定する>>276は
大規模どころかプログラミング自体に対する適性を疑われて当然だな
0284デフォルトの名無しさん2011/12/25(日) 14:30:26.89
http://d.hatena.ne.jp/sumim/20080304/p1

これを見て、
counterMaker := [:n | [n := n + 1] fixTemps].
c1 := counterMaker value: 0.
c2 := counterMaker value: 100

を貼り付けて実行してみたけどやっぱり動かない。
全然だめ。意味不明。
0285デフォルトの名無しさん2011/12/25(日) 14:43:37.67
色々調べてたら結局これを見つけた

http://c2.com/cgi/wiki?WhyIsSmalltalkDead
0286デフォルトの名無しさん2011/12/25(日) 14:50:41.79
>>282
>ドカタは元請けが決めたライブラリを弄っちゃいけないんでしょ?

いきなり誰も書いてない元請とか…、君こそドカタ思想に染まってンじゃね?
まあ、そんな奴らにPM/PLの発想は浮かばんわな。

>>283
> そもそも何に関して大規模なのかも明らかにせずに

規模なんて、相対的なもん。
規模がでかくなるにつれて、既存クラスへの変更の影響はどんどんでかくなる。
ある程度の規模 (企業や部署によって違うだろうが、うちの感覚だと 1M 超、) に
なると「ガシガシ変更」なんてありえない。

と言うことぐらい理解しようよ。

まあ日本語への適性すら怪しい奴には無理かもな。(w
0287デフォルトの名無しさん2011/12/25(日) 14:52:00.26
ドカタという仮想敵を作ることで
自分の精神を保つ。
0288デフォルトの名無しさん2011/12/25(日) 14:53:59.60
一瞬さわって持った印象はこれかな

Doesn't use an AlgolFamily-influenced syntax style making it seem "strange"
Fragmented industry. Not all Smalltalks were compatible // fixTemps ってのは Squeak 独特なもので普通の Smalltalk では使えないっぽいね。実行してもそこでメッセージを受け取れないとエラーになったので。
It's an ImageBasedLanguage, and developers have voted against that with their feet.
Lack of multi-paradigm constructs such that it tended to only attract OOP extremists.
0289デフォルトの名無しさん2011/12/25(日) 14:58:30.78
高スキルな OOP extremists が集まれば Smalltalk で大規模開発できるんだと思う。
そうでなきゃ無理だね。絶対無理。
0290デフォルトの名無しさん2011/12/25(日) 14:59:19.83
別に高スキルじゃなくてもいいでしょw
Smalltalkに実用開発としての魅力が出来ればいいだけ。
0291デフォルトの名無しさん2011/12/25(日) 15:00:50.56
>>289
いや、きちんと手順を決めてやれば Smalltalk でも作れると思うよ。

ただ、Smalltalk を採用するメリットのかなりの部分がなくなるけど。
0292デフォルトの名無しさん2011/12/25(日) 15:00:58.67
Smalltalkを使えばこんなウェブアプリが
たったこれだけのコードで簡単に作れますとか
ゲームが、とかデスクトップアプリがとか
なんかそういうデモ無いの?
0293デフォルトの名無しさん2011/12/25(日) 15:01:56.06
もうアンインストールしてしまった。さらば Smalltalk/MT.
0294デフォルトの名無しさん2011/12/25(日) 16:08:23.56
>>292
こんなの?

Amber Smalltalkを使ったゲームのライブコーディング
http://vimeo.com/31597779
0295デフォルトの名無しさん2011/12/25(日) 16:58:00.47
既存クラスの変更のように、型にさえ副作用があって良いとする動的型OOP
なるべく副作用を制限しようとする静的型関数型言語

真逆の方向性だが、どっちも大多数が使うには極端すぎるのかもしれんな
0296デフォルトの名無しさん2011/12/25(日) 17:08:09.90
>>294
見た。
一番興味があるのは game.html に何て書いてあるのかだな。そこがデモにない。
むしろそれ以外はどうでもいいのだが・・・
0297デフォルトの名無しさん2011/12/25(日) 21:03:07.80
>>296
たぶん最初に書いている SnakeGame>>#startGame がそれだと思う。
これはスーパークラスの Game>>#renderOn: から呼び出されている。

Game >> renderOn: html
   "Do not override me, use #startGame instead"
   canvas := html canvas.
   canvas at: 'width' put: 250;
      at: 'height' put: 250;
      id: 'canvas'.
   context := canvas element getContext: '2d'.
   (window jQuery: document) keydown: [:evt | self keyDown: evt].
   (window jQuery: document) keyup: [:evt | self keyUp: evt].
   canvas asJQuery bind: 'mousedown' do: [:evt | self mouseDown: evt].
   canvas asJQuery bind: 'mouseup' do: [:evt | self mouseUp: evt].
   canvas asJQuery bind: 'mousemove' do: [:evt | self mouseMove: evt].
   self startGame.
   self gameLoop.
0298デフォルトの名無しさん2011/12/25(日) 21:26:40.18
/var/www/html/game.html に置いて httpd を起動すれば、
ブラウザで http://localhost/game.html にアクセスしてそのゲームができるのかな
0299デフォルトの名無しさん2011/12/25(日) 21:44:38.00
smalltalkerはlisper以上に絶滅危惧種だからな。とあるlisperがつぶやいてみる。
0300デフォルトの名無しさん2011/12/25(日) 22:07:38.18
lispはemacsがあるから、定期的に迷える子羊を食ってるだろ。
emacsがなかったら別にlispなんてやる必要なかったよ
0301デフォルトの名無しさん2011/12/25(日) 22:14:20.63
まぁ、Cとlispの勉強にはなったからいい...と思いたいけど、
その若いときの時間を、読み手の気持ちを思いやる文章や図解の書き方を学ぶのに使ったら、
もっと良かったとも思う
0302デフォルトの名無しさん2011/12/25(日) 23:40:07.59
>>298
node.js をインストールして http://github.com/bromagosa/amber/tree/ludus を git clone 後、
./bin/server すれば localhost:4000/ludus.html でクラスブラウザからソースを読んだりサンプル試せますよ。
(github からでも読むには読めますが st コードをジェネレートする js コードなので読みづらいです)
0303デフォルトの名無しさん2011/12/25(日) 23:41:26.21
SmalltalkってあのIDEみたいなの使うしか無いの?

普通にテキストファイルで、関数じゃなくて
全体を見たいんだが。
0304デフォルトの名無しさん2011/12/26(月) 04:50:08.01
>>300
昔々、gimpにlispがおったそうな…。おわり
0305デフォルトの名無しさん2011/12/26(月) 10:35:56.34
>>303
慣れるとそのIDE(クラスブラウザ)がないとやってられなくなるんですけれどもね。
普通の Smalltalk 処理系なら file out という、テキストファイルか
それに準ずるかたちでソースをはき出す機能があるのですが、
残念ながら Amber にはないみたいです。
0306デフォルトの名無しさん2011/12/26(月) 11:32:00.15
C#でコーディングする時のコツはdynamicを散乱させない事だと思うんだ。
これを散乱させるとあらゆる便利機能が使えなくなる unsafe みたいに分離管理できるようにした方が良かったと思う。
0307デフォルトの名無しさん2011/12/26(月) 20:46:19.89
最近は言語間の連携が簡単になってるから
ひとつの言語で静的型付けと動的型付けを中途半端に両立するくらいなら
別々の言語を使って連携したほうが良いと思う
0308デフォルトの名無しさん2011/12/26(月) 20:57:57.75
シェルと連携すると、string型ばっかりでがっかりするよ
0309デフォルトの名無しさん2011/12/26(月) 22:28:58.36
それわかるわぁ
0310デフォルトの名無しさん2011/12/26(月) 22:48:54.54
そこでPowerShellですね
0311デフォルトの名無しさん2011/12/27(火) 02:48:15.10
シェルスクリプトは基本型は文字列だけで十分。
四則演算したければ別の処理系を呼べばいい。
0312デフォルトの名無しさん2011/12/27(火) 04:31:26.05
expr! expr!
0313デフォルトの名無しさん2011/12/27(火) 05:16:31.62
Windows8でPowerShellも強化されるっぽいな
0314デフォルトの名無しさん2011/12/27(火) 05:44:01.10
PowerShellで書いてたらいつの間にかVSが立ち上がっていた
何を言っているのか(ry
0315デフォルトの名無しさん2011/12/27(火) 07:13:47.76
つまり Objective-C 最強 ということですね
たいへんよくわかります
0316デフォルトの名無しさん2011/12/27(火) 08:44:45.95
Cの安全性とSmalltalkの実行速度を備えたObjective-Cが最強?
0317デフォルトの名無しさん2011/12/27(火) 09:00:54.00
あの括弧さえなければ…という事になってHaskellに
0318デフォルトの名無しさん2011/12/27(火) 11:05:08.98
Tclの出番か
0319デフォルトの名無しさん2011/12/27(火) 12:14:23.01
PowerShellかどうかしらんけど、MSは操作体型を独自にするからなぁ。
それに慣れた人間が他に移れないようにするためという戦略的な意図
があるから、関わりたくないね。用語も独自のものにしてしまうからね。
0320デフォルトの名無しさん2011/12/27(火) 12:52:42.09
そういえば、委譲とmixinとtraitsと多重継承は
どれが独自でどれが普通なのかな?
0321デフォルトの名無しさん2011/12/27(火) 15:00:51.67
「委譲」は文脈で指す物が変わり過ぎるのでここでは扱わないとして
「mixin」と「traits」と「多重継承」の違いを説明してみる。

「多重継承」は、その名の示すとおり複数の基底クラス(スーパークラス)を
持てること。

「mixin」は広義、かつ、古典的(1970年代)な意味では多重継承と
同義だが、近年は特にリニアライズの機能を持つ多重継承機構を特にこう呼ぶ
ことが多い。リニアライズというのは、複数の基底クラス(スーパークラス)に
何らかの基準で優先順位を付ける仕組みを持つ機構。Rubyのモジュールのように、
クラスとは別にmixin専用のクラス様エンティティを用意する言語もある。

「traits」は、厳密にはmixinとは区別され、リニアライズではなく
フラット化(複数トレイトを use した際のコンパイル時合成)を
行なう多重継承機構を言うが、Scalaなどのように仕組みとしては
mixinのままで、単にJavaなどのインターフェイスに実装も書ける版を
こう呼ぶ場合もある。C++ の traits はさらに別物。

#独自か普通かの意図するところは分からなかった。すまん。
0322デフォルトの名無しさん2011/12/27(火) 18:56:34.83
mixinという話題が出てちょっとググってたんだけど
http://itpro.nikkeibp.co.jp/article/COLUMN/20050915/221232/

結局 Java流 interface が機能を絞り込み過ぎてしまったのが問題で
単純にフィールドおよびコンストラクタを含まないクラスなら多重継承可能だよって制約加えればとてもシンプルになったのではと思う次第。
C++の地獄多重継承も、継承元にメンバ変数含まなければ何も困らなかったりするしなぁ
などと思う。
0323デフォルトの名無しさん2011/12/27(火) 19:05:40.35
メンバ変数含まないってのはgetter使うってことだよね?
それなら確かにシンプルになりそう。
0324デフォルトの名無しさん2011/12/27(火) 19:11:48.71
フィールドやコンストラクタがなければvirtual継承と非virtual継承の区別も無いしね。
実質
class A : S1 , S2 ... Sn {} == class A : virtual S1 , virtual S2 ... virtual Sn {}

実際のC++でコンパイルしてみると仮想テーブルの作り方が違うみたいだけれど、振る舞いは一緒だと思う・・・多分。
0325デフォルトの名無しさん2011/12/30(金) 13:06:58.20
障害が発生するかどうかは、変化する物があるかないかで決定的になる事が多いね
変数フィールドを含むと障害が発生する、関数しか含まないクラスの特徴は実行中に変化しない事。
定数フィールドなら含まれていてもおそらく多重継承で障害にならないと思われる。
0326デフォルトの名無しさん2011/12/30(金) 17:20:29.33
>>325
んなわきゃないw
0327デフォルトの名無しさん2011/12/30(金) 19:39:30.26
>>326
問題でるかね?
思いつかないんだけど・・・
0328デフォルトの名無しさん2011/12/30(金) 20:06:12.21
>>325
障害が発生するのはプログラムにバグがあるからでは
0329デフォルトの名無しさん2011/12/30(金) 20:15:01.70
>>328
そりゃどんな物でもそうだけどね(^^;
フィールドの値を操作する順序が見極わめずらくなるんだよ、多重継承をすると・・・
特にC++の多重継承は殆どアウトオブコントロール状態になる、自分の作ったクラスがどのような範囲で使われるか想定しずらいんだ。
ただJavaはC++の反省をした結果「あつものに懲りてなますをふく」状態になっている感は否めないなと思える。
0330デフォルトの名無しさん2011/12/30(金) 20:17:42.42
こんなの欲しいなと思った事はある
class S {
 virtual int const Data1;
}

class A {
public:
 virtual int const Data1 = 10;
}

class B {
public:
 virtual int const Data1 = 20;
}
S s = new A();
s.Data1 は 10 、A::Data1 は 10、B::Data1 は 20、S::Data1 はコンパイルエラー、汎用RTTI的な物になります。
virtual int GetData1() const でいいではないかという話もあるけれど、仮想テーブルにメンバ関数ポインタだけでなく定数を入れるのもアリでは?
0331デフォルトの名無しさん2011/12/30(金) 20:21:28.78
>>329
それは貴方がそのレベルだということでは。
Java よりも複雑なことを書きたい。C++ ほど複雑なものは要らない。
どこまで必要かは人によると思う。
0332デフォルトの名無しさん2011/12/30(金) 20:23:54.00
>>331
そういう要望がないならmixinやらtraitsを考えだす必要はないと思いますよ
これだけ新しい言語で採用されているって事はみんな必要としていた物を削ってしまったって事だと思います。
03333312011/12/30(金) 20:40:04.98
要望がないとは言っていないよ。
mixin や traits で済む人。
そこまでも不要で Java の interface で十分な人。
mixin や traits では足りない人。

それぞれがいて、329 は mixin や traits がちょうどいい人なのだろうと言っているだけ。
0334デフォルトの名無しさん2011/12/30(金) 20:45:07.90
必要としている人はもっぱら、ウェブサイトをクイックに立ち上げたい動的型付けに感動してしまった人なんだろうなと思う。
同様の機能はなくても同様なコードはあっさりコーディングできるからね。
ただどのようにでも書けてしまうので、C++の問題と良く似た問題を抱え込んでしまう事が多い、とてもメンテが困難。
0335デフォルトの名無しさん2011/12/31(土) 05:38:26.37
C++はGCじゃないのがなあ
0336デフォルトの名無しさん2011/12/31(土) 07:33:48.82
GCなんて押し付けられたらC++使う意味ない
0337デフォルトの名無しさん2011/12/31(土) 08:59:05.37
組み込みたければ自分で作って自分で組み込めればベストだったんだけれどね
ユーザー定義可能な参照型が必要だったとは思う
0338デフォルトの名無しさん2011/12/31(土) 09:01:40.08
BoehmGC
0339デフォルトの名無しさん2011/12/31(土) 09:18:07.47
現状は shared_ptr weak_ptr を使ったなんちゃってGCがベストだよ
本格的なGC標準化は先送りになっちまったからな、無理やり実装したGCはどれも微妙な仕様だし
0340デフォルトの名無しさん2011/12/31(土) 10:15:10.22
C++の話か。標準化されてないだけで、C++をインタプリタや動的格付け言語で動かしたりできるだろ。
コンパイラなど翻訳する側の問題。
ガベージコレクションを言語に依存せず翻訳側の問題。
0341デフォルトの名無しさん2011/12/31(土) 10:55:33.52
337と340が意味不明なので誰か翻訳を頼む
0342デフォルトの名無しさん2011/12/31(土) 11:11:47.03
C++のプログラムをソースリストのまま実行(インタプリタ)する方法
しかし,世の中には,C++をソースリストのまま実行するソフトを作っている人たちがいる。
CINTというものだ。
http://root.cern.ch/root/Cint.html
http://sato-si.at.webry.info/200603/article_12.html


ROOT/CINT 自社翻訳ドキュメント
http://www.dw-sapporo.co.jp/technology/root_cint_dw_documents/root_cint_dw_documents
0343デフォルトの名無しさん2011/12/31(土) 11:27:24.72
言語仕様と、翻訳は別のこと。
C/C++に手を加え・一部変更して動的型付け言語にもできる。
コードを理解する仕組みの問題。
0344デフォルトの名無しさん2011/12/31(土) 12:27:05.50
>>341
C++には、メモリーアロケーションを行うための演算師 new から参照を行う -> 演算子や = 代入演算子の機能を書き換える事ができる文法があって
これを使ってガベージコレクタ的な物を実装する事ができる。
ただ、微妙に機能が足りなくて、実用的なものはリファレンスカウンタ型のガベコレ以上の物を作ると非効率にしかならないんだ。
こういうオプティマイズを色々できるような特殊な文法があるのはC++ならでは。
C++には、他にもで珍しい仕様がいくつもある。
普通の言語ならコンパイラの内部仕様としてユーザーのコードからタッチ出来ない筈の内部テンポラリ変数ともいえる右辺値型なんて物もある。

ちなみに完全にGCを実装しようという話は無い訳では無くて、目下検討中。
ただし今回のC++11では、見送りとなっている。

以下wikiより
>透過的なガベージコレクション [編集]
>C++11には、透過的ガベージコレクションの機能は直接には導入されない。代わりに、C++11標準には、C++でのガベージコレクションの実装を容易にする仕様が導入された。
>完全なガベージコレクションのサポートは、もっと後の標準やTechnical Reportに回されることになった。


>>340 についてはオレじゃない、何が言いたいのかも良く分からない。
0345デフォルトの名無しさん2011/12/31(土) 12:30:52.40
きっとなんでも反抗したいお年頃なんでしょう
0346デフォルトの名無しさん2011/12/31(土) 13:01:43.00
C/C++言語の変数宣言を外し動的型付けにして
動作するコンパイラやインタプリタを開発する事は可能。
厳密に仕様を守れば変数宣言を削れないがその辺は一部変更。
0347デフォルトの名無しさん2011/12/31(土) 13:05:21.09
C++でどうしても動的型付け的な事をしたいなら新規に何か追加する必要はないよ
templateメタプログラミングで、C++文法中に動的型付け的文法を作り出せばいい
0348デフォルトの名無しさん2011/12/31(土) 13:14:30.82
ガベージコレクションや動的型付けは、言語(仕様)と一体のものではないと言いたい。
一部の仕様変更で、古いC言語に、ガベージコレクションや動的型付けの付いたコンパイラ、インタプリタを作成できる。
0349デフォルトの名無しさん2011/12/31(土) 13:17:14.67
用も無いのにガベージコレクタが言語と分離していたらかなり嫌かもなw
0350デフォルトの名無しさん2011/12/31(土) 13:22:30.32
>>348
言語の仕様を変えて対応するってことは、
やっぱり、言語と一体ということじゃないのか?w
0351デフォルトの名無しさん2011/12/31(土) 13:24:03.44
>>347
そのとおりだよね。

templateじゃなくてリフレクションのようなものがあれば
動的型付け的ライブラリを作ることは可能だし。
0352デフォルトの名無しさん2011/12/31(土) 13:24:42.64
静的型付けという仕様を、動的型付けにしようしたらそこは変更するしかない。
大部分はそのままで、動的型付けやガベージコレクションは導入可能。
0353デフォルトの名無しさん2011/12/31(土) 13:25:41.24
>>346
>C/C++言語の変数宣言を外し動的型付けにして
>動作するコンパイラやインタプリタを開発する事は可能。

可能っていうか、素手にあるだろ: C++/CLI

便利かどうか知らんけど。

>>348
> 一部の仕様変更で

それを世間では、新しい言語って言う。
0354デフォルトの名無しさん2011/12/31(土) 13:28:38.60
>>351
templateで十分だよ boost::split などが良い例。
こちらで文法決めて、コードして、それを実行する=文法と同等の構造体を得るようなコードしておく。
構造体を適当なプログラムでコンパイルするなりインタプリタ的に解釈実行するなりする。
これで実現できる。
0355デフォルトの名無しさん2011/12/31(土) 13:48:52.00
>>344
説明ありがとう。337の1行目の意味はそれでわかった。
2行目の意味は相変わらずわからない
0356デフォルトの名無しさん2011/12/31(土) 14:35:53.07
実現法などどうでもいいことだ。
動的型付け言語は多くはC++で書かれてるだろうが、テンプレートでは対応していない。
これはコンパイル時に必要な型のコードを生成するものだ。
スクリプト言語などはユーザー定義の未知のクラスなどが出てくる。
0357デフォルトの名無しさん2011/12/31(土) 14:38:44.35
>>354
その程度で動的環境を実現できると思い込むなんて
静的脳って本当に怖い精神障害だね

お大事に
0358デフォルトの名無しさん2011/12/31(土) 14:49:58.96
普通のテンプレートプログラムだけやって知った気になってますねw
メタメタなプログラミングし始めると、どんな風にでもなってしまうC++の黒魔術は見ものだから一度挑戦してみればいい。
0359デフォルトの名無しさん2011/12/31(土) 14:51:32.79
ちなみに、効率を無視すれば完全なガベコレの実装も今現在すでにあるね
0360デフォルトの名無しさん2011/12/31(土) 14:56:51.14
>>357
横レスになるけど、C++のような静的型付け言語でも本物の動的環境は実現できる

その良い例が、>>342が紹介してくれたROOTというCERNで開発された科学技術計算システム
ROOTではC++でクラスを書けばそこからGUI操作可能な3Dオブジェクトが動的に自動生成されるし、
逆にGUI操作で3Dオブジェクトを更新するとC++ソースが自動更新される

ただし、CERENではROOTを実現するために独自のMOP(Meta Object Protocol)技術を開発しており、
このMOPを(口先だけでなく)実際に設計できる優秀な技術者というのは、一般的には極めて少ない
つまり、動的型付け言語では比較的容易に実現できる事(動的環境の実現)なのに、同じ事を実現するのに
静的型付け言語では非常に高度な技術力を要求される .... というのが現実ではないかと思う

ちなみに、ROOTはCINT(C++インタプリタ)で書かれているが、CINTはSTLをサポートしていない
言い換えるとROOTでは(基本的に)templateは使われていない
0361デフォルトの名無しさん2011/12/31(土) 15:01:22.79
>>357
>>354 は、要するに処理系作るという話だから、実現できない理由はない。

それぐらいは汲み取れよ。

もし、できないというなら、その一例でも書いてみればはっきりするだろ。

ただ、そもそも template どうのこうの以前の話しだし、処理系なんて大概の
言語で実現できるからそれができたからどっちが偉いというモンでもない。

まだ、どっちが処理系の実現が容易かと言う話なら、わかるが。
0362デフォルトの名無しさん2011/12/31(土) 15:05:33.94
>>361
例えばJavaやC#の文法を新規に追加せずに動的言語の構文を「ソース中」に書けるようなライブラリなど作成可能かね?
俺には想像すらできないが・・・
ところがC++はこれができてしまう。
0363デフォルトの名無しさん2011/12/31(土) 15:14:40.63
>>362
文字列中に記載して、逐次通訳

想像力なさ杉。
0364デフォルトの名無しさん2011/12/31(土) 15:30:08.78
>>362
C言語でも可能だよね。

プリプロセッサという文字レベルでの
置き換え機能があるから。

他の言語にもプリプロセッサがあるといいのに。
まあ、Cのプリプロセッサを他の言語に使うのも
可能だと思うけど。
0365デフォルトの名無しさん2011/12/31(土) 15:57:39.42
mixinや多重継承も、ないならないで構わないな。
0366デフォルトの名無しさん2011/12/31(土) 16:00:17.49
>>364
>他の言語にもプリプロセッサがあるといいのに。

PL/I にもあったよ。

if 文は当然、do とかのループ文とか、subroutine 定義や、substr (部分文字列) なんかの
文字列関数もあって、ほとんどインタープリターの世界なので、がんばれば全く別の言語
ソースから PL/I 言語に変換してコンパイルするなんてこともできた。

マジで、C 言語のマクロなんて足元にも及ばない。

もちろんそんなことすると、C言語マクロ以上にわけわからんようになるが。
0367デフォルトの名無しさん2011/12/31(土) 16:05:12.93
なぜ真っ先に GNU m4 が出てこないのか
0368デフォルトの名無しさん2011/12/31(土) 16:11:37.72
OCamlにもCamlp4というプリプロセッサがある

Haskellのdoに相当する構文やリスト内包表記も
Camlp4で実現されてる
0369デフォルトの名無しさん2011/12/31(土) 16:19:41.26
>>367
汎用マクロプロセッサだから。

汎用マクロプロセッサがいいなら、自作マクロプロセッサを持ち出して来る奴がでてきて、
収拾付かなくなるからね。
0370デフォルトの名無しさん2011/12/31(土) 16:31:50.39
この議論の意味がさっぱりわからん
preprocessorやC++のTMPを駆使してDSLを作る話をしているように見えるが
それがどういう主張に繋がるのかさっぱりわからん
それができたら何だと言いたいのかわからん
お互いに何を主張したくて論を戦わせているのかわからん
0371デフォルトの名無しさん2011/12/31(土) 16:46:45.29
わからんならスルーしなよ。
て言うか、まともな議論したいならこんなスレ見ない方がいいかと。
0372デフォルトの名無しさん2011/12/31(土) 16:50:39.03
俺こんなことも知ってるんだぜ合戦だから
0373デフォルトの名無しさん2011/12/31(土) 16:55:31.03
ドカタ言語(Java,C#)に無い機能を挙げていくゲームだから
0374デフォルトの名無しさん2011/12/31(土) 17:03:37.49
本物のプログラマはfortranを使うとかアレ系のネタ会話か
0375デフォルトの名無しさん2011/12/31(土) 17:11:40.46
「javaにはクロージャは無いけど無名クラスで同じ事できるぜ」
くらいの話だと思ってた
0376デフォルトの名無しさん2011/12/31(土) 17:26:27.08
>>362
ほとんどの言語できると思いますが
0377デフォルトの名無しさん2011/12/31(土) 18:05:04.45
>>374
「Pascal を使わない」だろ。

て言うか、こんなスレと比べるのは失礼だよ。
0378デフォルトの名無しさん2011/12/31(土) 18:29:41.20
>>377
いや、実は「本物のプログラマはPascalを使わない」というのは、
ある高名な先生が書いた「本物のプログラマはFORTRANを使う」のパロディで
それを楽しむものなんだ
オリジナルはもう二十年以上も昔の話だから、今時の若者が知らないのは無理も無いね

>>374
横レスかつネタバレw、失礼しますた!!
0379デフォルトの名無しさん2011/12/31(土) 19:08:51.01
>>378
>ある高名な先生が書いた「本物のプログラマはFORTRANを使う」のパロディで

Real Programmers Don't Use PASCAL: Copyright (c) 1982
http://www.ee.ryerson.ca/~elf/hack/realmen.html

The story of Mel (Real Programmers write in Fortran.): Source: usenet: utastro!nather, May 21, 1983
http://www.pbm.com/~lindahl/mel.html

もっと早いというソースある?
0380デフォルトの名無しさん2011/12/31(土) 20:15:53.58
>>370
templateメタプログラミングが判ると色々面白い事、普通に考えていると判らない真実なんかが見えてくる。
否定ばかりせずに少し考えてみたらどうだい?

>>364
Cのプリプロセッサでは選択ができないから無理では?
コンパイラに、自前の任意の何かのプログラムを実行させるにはマクロがチューリングマシンでないと・・・
0381デフォルトの名無しさん2011/12/31(土) 20:41:00.92
メタプログラミングから見た動的言語の意味を少し語って見よう。
templateメタプログラミングで動的言語を実装するとするなら、次の様な実装が簡単だ。
例えば、式 r = ( 10 + b ) * c ;
動的型付言語なので型を考えては駄目だが、C++としての型は持たないと駄目な事は分かる。
具体的にどういう型を作るかと言うと次のようにするのが一般的だと思われる。

『変数式型』 = ( 『定数式型』 + 『変数式型』 ) * 『変数式型』 ;

また、「(『定数式型』 + 『変数式型』 )」および「( 『定数式型』 + 『変数式型』 ) * 『変数式型』」は 『右辺値式型』
全体 「『変数式型』 = ( 『定数式型』 + 『変数式型』 ) * 『変数式型』」 は 『式型』

というC++の型を持たせると良い、動的型付けで実行時の型はなくても文法を構成するのに必要な型はある。
これらの型情報はコンパイラには必要だがプログラマには必要ないので通常アクセス手段が無い。

#C++には右辺値型を調べる手段があったりするがこういうのは例外的。
0382デフォルトの名無しさん2011/12/31(土) 20:41:28.21
物理などでは、次の様な式を良く建てる
10m/s = 20m / 5s
の様に、単位と値のペアと、型は良く似ている (10,m/s) = (20,m) / (5,s) の単位の方は変化しない情報と良く似ている。

ところで
以前、型は実行中に通常変化しない情報だと書いたが、変化するものと変化しない物を分類してみると
動的的型付言語でも変化しない部分がある訳だ、『変数式型』などの型にさらにintデータとかstringデータとかといった付加情報がある。
この付加情報が変化しないならそれは「静的型付け言語」変化するなら「動的型付け言語」

静的型の場合 ( 実行中変化させたい情報 , 実行中変化しない情報 ) のペアとして、色々な処理を行う。
動的型の場合は変化する部分が少し浸食していて、型もデータも変化するが
動的的型付言語で構造体の様な物がある時、プログラマは全ての要素を動的に取り扱う事は普通しないだろう、かなりの部分を静的に決定している。
動的的型付言語では ( 実行中変化させたい情報 , 実行中変化させたい情報 ) となってしまっているが、所詮データのペアでしかない物、少し工夫して切り分けポイントを選べば
( 実行中変化させたい情報 , 実行中変化しない情報 ) のような形で取り扱う事はできそうな予感がする訳です。C++を扱っていると。


#結局、正体は準同型だね
0383デフォルトの名無しさん2011/12/31(土) 22:04:05.18
>>382
>物理などでは、次の様な式を良く建てる
>10m/s = 20m / 5s
>の様に、単位と値のペアと、型は良く似ている (10,m/s) = (20,m) / (5,s) の単位の方は変化しない情報と良く似ている

それは「次元解析(dimensional analysis) 」と呼ばれる技法だね
次元解析では次元(dimension)と単位(unit)明確に区別して扱い、
次元空間を整数のベクトルとして表現する
たとえば>>382の例であれば、
・ベクトル: <1, 0> -- 次元: 長さ
・ベクトル: <0, 1> -- 次元: 時間
であり、他に角度とか比率などの無次元量を表現する
・ベクトル: <0, 0> -- 無次元
が定義される

これをプログラミング言語の型検査に応用する発想が>>381なのかもしれない
うーみゅ、自分ニャ難しいw
0384デフォルトの名無しさん2011/12/31(土) 23:10:13.53
>>382
>以前、型は実行中に通常変化しない情報だと書いたが、

ところがぎっちょん、世の中には型が一級市民である静的型付け言語 Russell が存在していた
つまり「型」というデータ型を持つ言語であり、型型(type type)の値は言語のすべての型になる
なお Russell という名前は、「ラッセルのパラドックス」で有名な数学者/哲学者に由来する
0385デフォルトの名無しさん2012/01/01(日) 01:14:26.20
ところがぎっちょん
ってなに?
0386デフォルトの名無しさん2012/01/01(日) 08:59:37.15
>>385
自分の無知を晒すのって、楽しい?
0387デフォルトの名無しさん2012/01/01(日) 10:29:51.51
>>381
>templateメタプログラミングで動的言語を実装するとするなら、次の様な実装が簡単だ。

「するとするなら」
「様な実装」

あなた、うわべの知識だけ広くて実経験の乏しい人でしょ。
あなたの言う「簡単だ」は「簡単なはずだ」であって「簡単だった」ではないよね。
0388デフォルトの名無しさん2012/01/01(日) 11:28:00.93
年も変わったんだし、もうその話題はいいよ。
0389 【大吉】 【433円】 2012/01/01(日) 12:27:03.72
なんで今年は大吉ばっかりなんだろ
0390デフォルトの名無しさん2012/01/01(日) 12:38:09.82
では去年までに出た話題は禁止
0391 【大吉】 2012/01/01(日) 12:44:54.78
どや
0392デフォルトの名無しさん2012/01/01(日) 17:16:57.35
プリプロセッサで喜んでる馬鹿はマクロアセンブラで遊んでろw
0393デフォルトの名無しさん2012/01/01(日) 17:50:37.81
今はconstexprがあるからTMPなんて遊び以外で使う機会がないと思うんだが。
0394デフォルトの名無しさん2012/01/01(日) 19:46:14.51
>>392
>>388
悔しいのはわかるけどさ。
0395デフォルトの名無しさん2012/01/02(月) 11:38:23.23
>>394
どうしたの?顔真っ赤だよ?
0396デフォルトの名無しさん2012/01/02(月) 11:43:43.56
ぶっちゃけ大規模になってくると言語仕様よりも
処理系の出来の良さのほうが重要
厳密な型検査ができようが、柔軟かつ簡潔なコーディングができようが
処理系が不安定だと話にならん
0397デフォルトの名無しさん2012/01/02(月) 14:10:41.32
安定している処理系と不安定な処理系の例を挙げてくれ
0398デフォルトの名無しさん2012/01/02(月) 15:06:19.05
>>395
悔しいのはわかるけどさ。(w
0399デフォルトの名無しさん2012/01/02(月) 16:38:18.80
>>397
不安定:Ruby(MRI), Haskell(ghc)
0400デフォルトの名無しさん2012/01/02(月) 17:11:06.30
SqueakやPharoはトイプログラムなら良いが
ちょっと重たい処理を走らせるとすぐ不安定になる。
Smalltalkは玩具にすぎないことが良く分かる。
0401デフォルトの名無しさん2012/01/02(月) 18:22:29.09
 ghcは2年くらい王座が動いてなかったけど、昨年7月に動いたくらいで
安定してるよ。
0402デフォルトの名無しさん2012/01/02(月) 18:27:24.82
>>400
プロならVisualWorksくらい知っとけよ。
http://smalltalk.cincom.jp/
0403デフォルトの名無しさん2012/01/02(月) 22:21:42.53
>>396
言語仕様が安定かつ文書化されていて、処理系が複数あるものと、
処理系の仕様 = 言語仕様となっている言語ではちょっと事情が違うかも。
0404デフォルトの名無しさん2012/01/02(月) 22:31:25.83
不安定な処理系って
どの処理系のこと?
0405デフォルトの名無しさん2012/01/02(月) 22:33:52.90
>>402
なんでそんなレスしたの?
IDEを使うと、安定するって言いたいわけ?
0406デフォルトの名無しさん2012/01/02(月) 22:46:01.95
てかMRIって今はもうメンテ止まってなかったっけ?
MRIなんて書かずに単にRubyと書くなら仕様が不安定、で間違いないけど
0407デフォルトの名無しさん2012/01/02(月) 22:50:11.71
処理系が不安定じゃなくて
言語仕様が不安定ってことか。

変わりまくりで互換性がない。
うん。これはビジネスとしては使えないね。
0408デフォルトの名無しさん2012/01/03(火) 06:33:22.79
死ぬまでJava1.0でビジネスしてろw
0409デフォルトの名無しさん2012/01/03(火) 08:05:14.48
>>408
互換性の意味分かってる?w
0410デフォルトの名無しさん2012/01/03(火) 09:09:25.26
自分はどうなんだw
0411デフォルトの名無しさん2012/01/03(火) 09:21:06.62
プログラミングRubyのRubyベタボメっぷりにRubyを使い始めて早10数年、使えば使う程にRubyって駄目だなと痛感する
Rubyを学習し始めた頃は誰でもRubyは素晴しいと思うのだが、数年も使えばそのどうしようもない互換性のなさにウンザリする
しかも互換性が無くなることをマズいと思っていない集団がRubyを制作しているのでどうしようもない
1.4時代のコードが1.6になった途端に互換性がなくなり動かなくなることはあったが、1.6→1.8ではそれが顕著になり、1.9など何のエラーも出さずに前のコードが動く方が珍しいほど
それどころか1.9に行かずREEが海外ではデファクトになりつつある現状、そして始まるPlain RubyとREEの方言問題
例えばPassengerもREEの方がうまく動いたり、かと思えば特定のバージョンだとPlainじゃないとまともに動かなかったりと、とても面倒臭い

美しいコードを求める為の副作用、という名の互換性のなさはRuby界全体に蔓延していて
例えばあれだけもてはやされたRailsも、Rails2とRails3の互換性のなさに誰しも苦労したのは記憶に新しいところ
誰もが互換性のなさに辟易し、俺ライブラリを量産するため、gemで探すと似たような事をする終わったプロジェクトがわんさか引っかかる
諸処の小さなプロジェクトだけがそんな現状ならば許せるが、dbiアダプタでさえそんな現状なので
バージョンが変わるとデータベースにすら接続できなくなったとか、dbiのAPIバージョン変わったのにアダプタ側の更新ないな、
とか思ってるとアダプタ作者がRubyから足洗ってたとか余裕

身内同士でRubyはコードが美しいと四六時中自画自賛しているが、実はそれこそがRubyのガン
その美しいコードという名のオナニーの為に一体どれだけの互換性と人的リソースが失われていったことか
Rubyのコードは美しい、Railsスゲー、ベタボメする人は沢山いたがいつも一過性の人気しか得られないのはそこにあるし
ベタボメしていた人達もしばらくするとウンザリしてRuby界から消えてしまうのも原因は実はそこにある
達人プログラマーはRubyをベタボメしなくなったし、Mongrel作者はRailsどころかRubyに見切りをつけちゃったしね
ああいう熱狂的なRuby信者でもRubyから足を洗っているのを見ると、tDiaryがRubyに見切りつけてPythonで全部書き直したとか言われても驚かないだろう自分がいる
0412デフォルトの名無しさん2012/01/03(火) 10:23:19.41
スーツ向け言語とギーク向け言語の違い

スーツ向け言語は「疲れさせない」ことが大切
ギーク向け言語は「飽きさせない」ことが大切
0413デフォルトの名無しさん2012/01/03(火) 10:27:45.07
なんで飽きたら開発が止まるんだ?
飽きても開発続けろよw
0414デフォルトの名無しさん2012/01/03(火) 10:41:23.65
好奇心が失われた人に「続けろ」というなら金を出せって話じゃね?
0415デフォルトの名無しさん2012/01/03(火) 10:48:49.24
仕事の話なんだから
金は払ってる。
0416デフォルトの名無しさん2012/01/03(火) 10:51:11.92
なら契約違反で訴えりゃよくね?
0417デフォルトの名無しさん2012/01/03(火) 10:51:39.16
いえ、クビにします。
0418デフォルトの名無しさん2012/01/03(火) 10:55:25.27
そうか頑張れ。うちは去年100人程度切るだけでえらい騒ぎだった
0419デフォルトの名無しさん2012/01/03(火) 10:57:50.30
>>412
○○言語を使っていれば飽きない!
ってさ、ただの下っ端プログラマじゃね?

上級プログラマになるとシステムアーキテクチャとか
そういう言語に依存しないレイヤーのことを考えるから
ぶっちゃけ言語なんかどれでもいい。
不足している機能があれば自分で作れば大抵のことは
どうにかなる。経験上これは事実だ。

開発自体はどんなものを使っても飽きる。
どうせ土台があらかたできてしまえば、あとは足りない部分を
埋めるだけの単純作業。こうならない言語なんて無いよ。

あるとしたら、アーキテクチャ部分と単純作業が分離されてない
素人が作ったシステム。楽しい楽しいと言いながら汚い設計に
パッチをあてるような開発をしてるんだろう。
0420デフォルトの名無しさん2012/01/03(火) 11:02:12.31
その点、Perlは凄いよなあ。
Perl5.6辺りで書かれたプログラムなら、12年経った現行のPerl5.14でもほぼ動く。
0421デフォルトの名無しさん2012/01/03(火) 11:07:29.89
>>420
12年前って2000年じゃねーかw

2000年ごろのプログラムが普通に動くって
それRuby以外の言語では普通だっていうのw
0422デフォルトの名無しさん2012/01/03(火) 11:07:49.26
>>419
> 経験上これは事実だ。

お前はJavaの経験しか無いドカタだろwww
0423デフォルトの名無しさん2012/01/03(火) 11:08:17.44
PerlはCPANモジュールの互換性がひどい。
バージョンが上がると動作が変わることが多い。
あれ、だれか互換性テストしてるのか?
0424デフォルトの名無しさん2012/01/03(火) 11:11:55.20
>>422
いえ、C言語もC++もアセンブラ(MASM)PerlもJavaScriptもPHPもVBもありますが。
いろんな言語をやった上で、言語によって開発速度や開発のしやすさに
大きな差はないという結論です。

どの言語を使おうが表現方法が変わるだけで設計思想は同じだし。
英語と日本語の違いみたいなもんだよ。
0425デフォルトの名無しさん2012/01/03(火) 11:13:29.76
だから、システムツール作るときはCPANモジュール極力使わずに、Perl本体だけでプログラム組むのがベストプラクティスで、みんなそうしてるから。
PythonとかPHPとかなら、2000年前後に書かれたプログラム、今の最新バージョンじゃまともに動かないだろ。
0426デフォルトの名無しさん2012/01/03(火) 11:16:23.18
へぇ、PHPで10分でできることと、MASMで10分でできることと、大きな差はないというのが結論だと。

すごいなー(棒)
0427デフォルトの名無しさん2012/01/03(火) 11:25:06.75
>>426
アセンブラは例外。
あれは高級言語ではないからね

なつかしいな。
今は高級言語が当たり前だから
違いがあることに気づかず、普通に聞いてきたねw
0428デフォルトの名無しさん2012/01/03(火) 11:26:47.14
>>425
Perl本体だけで作れって、それフレームワーク使うなってことじゃないかw

それにPerlの標準ライブラリはCPANモジュールから持ってきたものが多く
Perlのバージョンが少し上がると、Perl内蔵のCPANモジュールもアップデートされ
互換性問題が出る。
0429デフォルトの名無しさん2012/01/03(火) 11:26:51.55
>>425
PHPは知らんが、Pythonは動くぞ(ただしPython2.7)
0430デフォルトの名無しさん2012/01/03(火) 11:28:19.16
PHPも2000年なら4がでてるし。
動くだろう。
0431デフォルトの名無しさん2012/01/03(火) 11:29:42.95
PHP4と5での互換性がない情報
http://www.php.net/manual/ja/migration5.incompatible.php

これだけだって・・・
0432デフォルトの名無しさん2012/01/03(火) 11:38:35.40
C++とPHPに開発効率の違いはあるだろ。
ホームページソースを取得するだけ、正規表現をやるだけでC++は、
かなり準備と行数がいる。
PHPなら10秒でかけるぞ。
0433デフォルトの名無しさん2012/01/03(火) 11:39:36.65
>>431
2000年頃って、PHP3使ってた頃じゃん。

>>429
>>>425
>PHPは知らんが、Pythonは動くぞ(ただしPython2.7)
2.7、最新じゃないじゃん。
0434デフォルトの名無しさん2012/01/03(火) 11:44:03.63
PHPの場合、新しい関数使いたかったら、モジュール入れるんじゃなくて本体のバイナリ入れ替える事になるんで、長く使おうと思うと致命的だな。
0435デフォルトの名無しさん2012/01/03(火) 11:50:12.57
>>432
10秒とか小さい話をしているから見えてこない。
システム開発は数ヶ月はかかるもの。

その期間においてC++で正規表現ライブラリを
導入するなんて小さい話。
0436デフォルトの名無しさん2012/01/03(火) 11:51:10.14
>>434
互換ライブラリをいれればいいだけじゃね?
0437デフォルトの名無しさん2012/01/03(火) 11:57:25.29
それを言うならPerlも6で比較しろと。アホか
0438デフォルトの名無しさん2012/01/03(火) 11:58:04.86
出てないもので比較する理由がない。
0439デフォルトの名無しさん2012/01/03(火) 11:58:12.48
>>433
Python2.7.2 と Python3.2.2 が最新
http://python.org/
0440デフォルトの名無しさん2012/01/03(火) 12:00:24.58
>>438
互換性を捨てたバージョンを鋭意開発中だが
まだ完成していないのでPerlは互換性に優れている(キリ
0441デフォルトの名無しさん2012/01/03(火) 12:01:11.10
Perl6は互換性を切り捨てられたことで批判されているが、
それとRubyは一緒。という結論ですよね?
0442デフォルトの名無しさん2012/01/03(火) 12:03:02.75
PHPの互換ライブラリって何の事だよ?
PHPって4.系内でもかなり違う。特にPHP4.0と4.1の違いが大きい。$_SESSIONとか無かったし。
0443デフォルトの名無しさん2012/01/03(火) 12:04:11.27
Python3 も一緒だし PHP5 も同じ
ある程度枯れた言語がメジャーバージョンアップすれば
多かれ少なかれ批判は避けられない

その時に「それでも新しいバージョンを勉強しよう」と思わせるだけの魅力があれば
ユーザはついてくるし、そこまでの魅力がなければ捨てられる。

正直なところ、Rubyはその天秤にかけられて多くのユーザに捨てられた感が強い。
0444デフォルトの名無しさん2012/01/03(火) 12:04:52.90
まあ、Perl6はリリースされないだろうし、リリースされてもPerl5が主流でPerl6は傍流だろうから、3系への移行が決まってるPythonとは事情が違う。
Pythonって、2.8とか2.9とか出るわけ?
0445デフォルトの名無しさん2012/01/03(火) 12:05:57.82
出ない。2.7 が 2 系最終だと決まっている
0446デフォルトの名無しさん2012/01/03(火) 12:06:08.05
>>443 俺は捨てた、を、「多くのユーザに捨てられた感が強い」って言い換えるテクニックですねわかりますw
0447デフォルトの名無しさん2012/01/03(火) 12:10:10.82
美しいと言ってたのを捨てるのは嘘つきだが
汚いとさんざん言われていたのを捨てるのは素直でよろしい
0448デフォルトの名無しさん2012/01/03(火) 12:39:23.55
> 正直なところ、Rubyはその天秤にかけられて多くのユーザに捨てられた感が強い。

Rubyはちゃんと世界レベルで
公式に議論するような場所ないの?

いい加減、開発者のさじ加減で
事が進むようなことはやめたほうがいいよ
0449デフォルトの名無しさん2012/01/03(火) 12:49:09.07
世界レベル
0450デフォルトの名無しさん2012/01/03(火) 13:57:45.93
>>448 ということにしたいのですね、としか言いようがないな。
世界レベルの公式な議論だぁ?

ISO の会議以外は、「開発者のさじ加減」ってことにでもしたいのかいw
0451デフォルトの名無しさん2012/01/03(火) 14:35:51.97
こういうものの存在を言っているのでは?
ま、こういう方向で Java レベルは到底無理だろうが。
http://jcp.org/en/participation/committee
0452デフォルトの名無しさん2012/01/03(火) 17:32:20.68
視野が狭い人がいる
最近のWEB系は、考えたアイディアを数時間のうちに実装して、即公開するケースも多いので
長時間掛るシステム開発だけを考えた言語と即行型言語はそれぞれに強みを考えるべきだね

0453デフォルトの名無しさん2012/01/03(火) 17:37:50.42
また、時間が掛る開発では、メインテナンス性の良さが重要という事も知っておくべき。
大規模開発では開発が進むにつれて実装と同時にメインテナンスが行われる、一発で修正なしに開発できる事は無いからね。
メインテナンス性は言語によって大きく違う、どれでも同じなんて話は有り得ない。
0454デフォルトの名無しさん2012/01/03(火) 17:41:43.70
メンテナンス性を云々言うのなら、
言語仕様の安定性は極めて重大な問題だな。
0455デフォルトの名無しさん2012/01/03(火) 17:55:24.65
安定版をバージョンアップさせずに使う。
0456デフォルトの名無しさん2012/01/03(火) 19:12:18.75
>>452
それが言語の互換性とどういう関係があるの?
0457デフォルトの名無しさん2012/01/03(火) 19:14:54.94
Railsのあの10分だか15分だかで
ブログのようなものを作るデモのせいで
短時間ですぐに開発できると思っている人がいるけど、
あれ3分クッキングのようなもんだからね。
本当に3分でクッキングが出来るわけじゃない。

結局のところ製品レベルの品質でリリースするなら
何を使ってもそれなりに時間はかかる。
即効型言語なんてものはありはしない。
0458デフォルトの名無しさん2012/01/03(火) 19:43:17.13
先達のまねごとしかできないのに、設計思想とは大笑い。
0459デフォルトの名無しさん2012/01/03(火) 19:45:47.02
オレオレ設計はやめてください。

何のために先人達が頑張って
それを資料としてネットや本に記録していると思ってるの?
0460デフォルトの名無しさん2012/01/03(火) 19:47:28.19
俺スゲーって感じで、なんか意味不明な
独特(笑)な設計する馬鹿っているよな。

そういう場合はこうするのが定石だよね?ってしか思わないんだが。
0461デフォルトの名無しさん2012/01/03(火) 20:05:17.32
>>455
で、いつまでも大穴が開いたままになるわけかw
0462デフォルトの名無しさん2012/01/03(火) 20:06:59.41
Javaとかでも一旦稼働させたらバージョンなんて上げないけどな
0463デフォルトの名無しさん2012/01/03(火) 20:12:24.23
バージョンが変わらない互換性があるサポートが
継続されてるのなら何の問題もない。
0464デフォルトの名無しさん2012/01/03(火) 20:12:55.68
>>459-460
その通り
だから、他社でやった焼き直しで設計思想なんて使うなっていうお話

0465デフォルトの名無しさん2012/01/03(火) 20:18:22.21
>>464
はぁ?

誰が他社でやった焼き直し設計とかいう話してんの?

お前の脳内の仮想人物?勝手に作った人物像?
0466デフォルトの名無しさん2012/01/03(火) 20:21:12.26
>>461
言語仕様の話とセキュリティホールの区別も付いてないのか…

さすがにバカすぎる。
0467デフォルトの名無しさん2012/01/03(火) 20:21:53.09
設計思想と設計の区別がついてないんだろうね。
思想が設計ごとに変わると思ってるんでしょ。
同じようなジャンルなら設計は違っても思想は同じ。
0468デフォルトの名無しさん2012/01/03(火) 20:23:02.34
>>465
えぇー!
今日くらいの前レス読めよ。
カス
0469デフォルトの名無しさん2012/01/03(火) 20:23:54.25
>>468
今日のレスのどこにも「社」という文字すら無いんだがw
0470デフォルトの名無しさん2012/01/03(火) 20:25:28.11
RailsとかWeb開発とかを基準にRuby語るのは違和感があるなあ
ちょっとしたスクリプトやテストを書くための言語であって
「開発」という言葉を使うような言語としては未だに考えたことない
0471デフォルトの名無しさん2012/01/03(火) 20:40:41.28
>>469
だからお前はマヌケなんだ。
この場合「社」ではなく、「設計思想」を探すだろう。
0472デフォルトの名無しさん2012/01/03(火) 20:40:55.16
>>471
やっぱりそういうレスしてきたか、
多分そうだろうなって思って先にこのレス準備しておいたわ
俺エスパーだからなw

よく読めよな。

それはな。(同じシステムを作る時)言語が変わっても
(システム自体の)設計思想は同じという意味だろ。

頭が悪いってのはお前のことだぞ。
0473デフォルトの名無しさん2012/01/03(火) 20:42:29.20
うむ。他社の設計を使いまわすなんて話は
全くしていないな。
0474デフォルトの名無しさん2012/01/03(火) 20:42:42.22
>>463
Javaのサポートとか冗談みたいに短いから問題だな
0475デフォルトの名無しさん2012/01/03(火) 20:45:56.98
でも互換性が高いから問題無いな。
0476デフォルトの名無しさん2012/01/03(火) 20:47:44.43
>>475
>>462
0477デフォルトの名無しさん2012/01/03(火) 20:48:18.99
Java6のリリースは2006年
サポートは2012年までらしいね。
0478デフォルトの名無しさん2012/01/03(火) 20:49:07.08
>>476
バージョンを上げないのなら、
サポートが短いのがなにか問題なのか?

サポート期間はバージョンをあげるからこそ
意味があるもんだろw
0479デフォルトの名無しさん2012/01/03(火) 20:50:03.86
>>478
>>461
0480デフォルトの名無しさん2012/01/03(火) 20:55:31.47
>>479
ん? だからどっちでも問題ないってことじゃないか。

バージョンを上げない人 → サポート期間が短くても関係ない → 無問題
バージョンを上げる人 → 互換性が高いからあげても安心 → 無問題
0481デフォルトの名無しさん2012/01/03(火) 20:55:43.57
>>472
お前、なかなかおもしろいな。
設計思想などとは、少し大げさだと思ったわけよ。
新言語の仕様を作り出したとか、今までになかったサービスを生み出したときに使いたい。
俺はプレゼンで「本案件の設計思想は」とは、恥ずかしくて言えないよ。
Adaの設計思想が好きだとは、言っている。

まともな人は、>>467のように反応する。
0482デフォルトの名無しさん2012/01/03(火) 20:57:14.50
>>481
大袈裟なのはお前のほうだろw

なんでシステムの設計思想ごときで
新しいサービスとかでてくるんだ。
お前設計思想が新しいサービスを産み出すとでも思ってるのか?

全く関係ないぞ。
0483デフォルトの名無しさん2012/01/03(火) 20:58:19.64
> まともな人は、>>467のように反応する。

あ、それ書いたの俺wwww
0484デフォルトの名無しさん2012/01/03(火) 20:59:20.53
>>481
お前本当に設計思想と設計の区別がついてないんだなw

他社の設計をそのまま使わなくても
設計思想は同じ事なんてよくある話だぞ。
0485デフォルトの名無しさん2012/01/03(火) 21:04:23.01
設計思想の例
http://www.codereading.com/notebook/moin.cgi/TheUnixPhilosophy

UNIX [1] には9つの定理、設計の哲学がある。

スモール・イズ・ビューティフル
一つのプログラムには一つのことをうまくやらせる
できるだけ早く試作を作成する
効率より移植性
数値データはASCIIフラットファイルに保存する
ソフトウェアの挺子を有効に活用する
シェルスクリプトを使うことで挺子の効果と移植性を高める
過度の対話的インタフェースを避ける
すべてのプログラムをフィルタにする
0486デフォルトの名無しさん2012/01/03(火) 21:05:21.78
たとえば>>485のようなものは別に
UNIXだけに限った話じゃない。

これに近い設計思想でウェブアプリを作ることも可能。
0487デフォルトの名無しさん2012/01/03(火) 21:07:32.96
こういう感じの設計思想を
新言語の仕様を作りだしたとか
新しいサービスを生み出したときに使いたいとか
いったら、じゃあお前が今仕事で作っているシステムに
設計思想はないのか?って言われる。

本当に無いのか?
0488デフォルトの名無しさん2012/01/03(火) 21:12:17.51
スレチだし、もうやめよう。
下っ端プログラマよりのお願い。

0489デフォルトの名無しさん2012/01/03(火) 21:13:10.80
実際に本当にに設計思想のないシステム開発をしてるんでしょ。
よくある話。

モジュールによって使い方が微妙に違っていたり
行き当たりばったりのバグ修正したり、
このモジュールにあるべきではない処理が含まれていたり。

ま設計思想を語ることのできない、
語っても反映されない、そんな
下っ端プログラマなんだろうけどね。
0490デフォルトの名無しさん2012/01/03(火) 21:16:10.01
>>488
よし、じゃあ元に戻そう。

>>489
動的型付け言語を使って開発しているところは
まさにそんな感じ。

モンキーパッチが便利なテクニックとして濫用されている。
本来は拡張性をもたせるように設計・修正するべき所で
行き当たりばったりの対応をする。

そしてやっぱり動的型付け言語はすごいとか言ってる。
実際の開発ではどうしても動的型付けが必要になることはまず無い。
0491デフォルトの名無しさん2012/01/04(水) 02:57:30.72
いや、そういう人が静的型付け言語使えば
行き当たりばったりにならないかといえば違うだろ。
0492デフォルトの名無しさん2012/01/04(水) 08:11:45.85
>>491
でも行き当たりばったりではない
ちゃんとした開発を行なっていれば、
動的型付けのメリットはないよね?
0493デフォルトの名無しさん2012/01/04(水) 10:32:21.52
ちゃんとした開発を行ってれば
最初からまともな設計になるとか幻想だろ

Sunの連中が設計したJava標準ライブラリですら、
再設計しまくりのdeprecatedのゴミ残りまくりだろうが
それともドカタにはあのゴミの山が素晴らしい設計に見えるのか?
0494デフォルトの名無しさん2012/01/04(水) 10:52:32.24
ちゃんとした開発を行ってれば
動的型付けはいらないと言ってるんですが?
0495!omikuji2012/01/04(水) 11:19:46.66
動的型付けだとdeprecatedいらないというか全部作り直しなレベル
0496デフォルトの名無しさん2012/01/04(水) 12:31:37.15
実際の開発で「どうしても」静的言語が必要になる局面ってあるか?
0497デフォルトの名無しさん2012/01/04(水) 13:13:25.67
設計思想なしのいきあったりばったりと
設計思想の本質を理解して形に拘らない柔軟な設計をしている事の違いを
ドカタには理解できないことぐらい最初から明らかなのに
お前らは一体なにを騒いでいるんだい?
0498デフォルトの名無しさん2012/01/04(水) 15:13:58.19
↑ ドヤ顔
0499デフォルトの名無しさん2012/01/04(水) 15:19:52.30
>>497
お前なかなか面白いな
設計思想などとは、少し大げさだと思ったわけよ。
新言語の仕様を作り出したとか、今までになかったサービスを生み出したときに使いたい。
俺はプレゼンで「本案件の設計思想は」とは、恥ずかしくて言えないよ。
Adaの設計思想が好きだとは、言っている。
0500デフォルトの名無しさん2012/01/04(水) 18:48:53.87
設計設計うるさい奴の設計がまともだった試しは無いけどな
無知なのを隠す為に必死こいている奴が大抵こういう事ばかりを口にする
本人は気付いていないだろうけど廻りはみんな気付いて呆れているんだが
0501デフォルトの名無しさん2012/01/04(水) 18:51:03.63
設計うるさい奴の特徴は、大抵その場の発言権の主導権を取ろうとしているだけで
何か凄い手法やアイディアがある訳ではない事が非常に多い
その鳥頭なんとかしろよw
0502デフォルトの名無しさん2012/01/04(水) 20:10:37.20
>>497
「中学1年生のプログラミング入門:1限目」講師の先生ありがとうございました。
0503デフォルトの名無しさん2012/01/04(水) 20:31:56.72
お正月は顔を真っ赤にしたドカタさんがいっぱいだね。
0504デフォルトの名無しさん2012/01/04(水) 20:36:08.16
設計やれないプログラマは
ドカタだろうねw
0505デフォルトの名無しさん2012/01/04(水) 22:29:42.44
設計工程なるものを実装と区別する時点でドカタ
0506デフォルトの名無しさん2012/01/04(水) 23:01:59.44
言語の設計思想ならまだ判るが、アプリの設計思想を語れる奴が2chに書き込む訳ないだろw

設計思想は一つだけ知っていても、他の大勢と比較出来なければ意味が無い。
大勢知るには、最低でも設計者が解説したものを読むか、実地経験が必要。

言語の方は、アマチュアでも色々漁る事は可能だが、本格的なアプリの方は残念ながら設計者にはそんな解説を作る余裕は少ない。

逆に言えば、アプリの設計思想を語れるのは相当なベテランという事になるが、「そんなお方が暇を持て余して2chで罵詈雑言というのを信じる」位の論理性では、プログラムの方も怪しい。
0507デフォルトの名無しさん2012/01/04(水) 23:30:33.94
>>466
言語仕様の変更を理由に旧バージョンの処理系を使い続ける場合、
周辺ライブラリも旧バージョンのまま更新できないことが多い。
とりあえずの最低限のセキュリティパッチは出ることもあるが、
根本的な解決には最新の処理系で最新のライブラリを使う必要がある場合が多い。

ここまで説明しなければわからないとか、どこのドカタですか?
0508デフォルトの名無しさん2012/01/04(水) 23:41:27.76
ドコモ副社長「SPモードはサーバーに一定以上負荷がかかれば毎回不具合が発生する仕様だ」

設計思想がなかったのかと、小一時間・・・
0509デフォルトの名無しさん2012/01/04(水) 23:59:26.73
>>507
> 根本的な解決には最新の処理系で最新のライブラリを使う必要がある場合が多い。

具体例プリーズ。
0510デフォルトの名無しさん2012/01/05(木) 04:16:33.67
>506
どうした?設計思想が理解出来ないドカタか?w
0511デフォルトの名無しさん2012/01/05(木) 04:17:37.34
>>508
「負荷が高くても不具合が発生しない」という
設計思想がなかったんだろうねぇ。
0512デフォルトの名無しさん2012/01/05(木) 20:54:03.26
朝4時の痛々しいレスに涙した 乙!
0513デフォルトの名無しさん2012/01/05(木) 22:23:40.23
そんだけしか言えない>>512
0514デフォルトの名無しさん2012/01/05(木) 22:43:43.02
そもそもドカタは上流行程含めて設計なんてしてないだろ
例えばJavaのフレームワークなんて、どこぞのクローンならまだマシで、
大抵は真似しきれてない劣化コピーばかりだし
上流行程では他言語で実証された設計をドカタ言語用に翻訳する作業してるだけ
0515デフォルトの名無しさん2012/01/05(木) 23:02:34.31
朝4時のドカタ連呼のくそレスに
われ泣きぬれて犬とたわむる

こっちがいいかな
0516デフォルトの名無しさん2012/01/05(木) 23:05:39.35
>>514
書き込み内容に違和感があるなぁ(笑)
知らないのに無理して書きこまなくていいよ。

ちなみに違和感のある場所は、「Javaのフレームワークが劣化コピーばかり」という所ね。
フレームワークは通常”使う”ものでコピーなんかしませんから。
0517デフォルトの名無しさん2012/01/05(木) 23:07:29.87
設計を翻訳っていうのも意味不明だね。
>>514はどういう作業のことを想像してるんだかw
0518デフォルトの名無しさん2012/01/05(木) 23:11:43.42
http://business.nikkeibp.co.jp/nbs/nknavi/weekly/index.html
「新卒でも能力があれば年収は最高1500万円」
「端的に言えば、製品やサービスを1人で設計して、最後まで開発できるような人を求めている」

古い重厚長大なシステムばかりを見ていて最近の流れをみていないんじゃないのかなと思う人が居る次第。
言語の設計だってそうだ、上流設計だけをやるなんて有り得ない、上から下まで全部一人で作るんだ。
上流うるさい奴は、もう会社のしがみついていないと何もできないが、その会社も怪しくて困ってるんだよw

今のシステム開発には昔ほど大人数は要らない、そんなのが必要なのはレガシーシステムだけだ。
0519デフォルトの名無しさん2012/01/06(金) 00:15:21.00
>>518
その記事の世間の評価
http://b.hatena.ne.jp/entry/business.nikkeibp.co.jp/article/topics/20111216/225258/

自分から馬鹿ですって名乗った気分はどう?w
0520デフォルトの名無しさん2012/01/06(金) 00:16:37.24
もう一つ
http://ceron.jp/url/business.nikkeibp.co.jp/article/topics/20111216/225258/
0521デフォルトの名無しさん2012/01/06(金) 01:20:29.44
身動きの取れないSIerの断末魔ととるか、馬鹿だと考えるか、見方次第
工業も重工業から軽工業・精密へと移行した。これと同じ事が今ITにも起こっているんだな。
0522デフォルトの名無しさん2012/01/06(金) 08:38:14.07
何がどう同じなのか知らんが、見方次第というのはその通りだな。
個人的には企業が言うには刹那的すぎる言葉に見えるが。
0523デフォルトの名無しさん2012/01/06(金) 09:50:18.89
>>516
JUnitはSUnitの劣化コピー
まあ作者は一緒だが
0524デフォルトの名無しさん2012/01/06(金) 10:08:25.71
Eclipseも劣化コピー...
0525デフォルトの名無しさん2012/01/06(金) 10:52:26.86
昔は、プログラマとタイピストは別の人がやっていたが
マルチユーザーのOSができて、プログラマ自らがコード入力を始めた
今は、サービス設計からコーディング公開までプログラマ自らがやっている
アマゾンなんかが震災の時、サクッと必要な物を送るサービスを実装したりとか
こういうフットワーク良さは、今の時代ならではだね。
動的型付け言語が頻繁に活用されているのはこういった人たちによる物で
今までにない使い方が言語に要求されているんだな
正直動的型付けが必要とは思えないのだが、現状の静的型付け言語では自由度に不足があって使いにくいのも事実。
改良された静的型付け言語の必要性を感じずにはいられない。
0526デフォルトの名無しさん2012/01/06(金) 11:11:22.67
>>516
フレームワークを"使う"だけで"作る"ことをしないのはドカタ
0527デフォルトの名無しさん2012/01/06(金) 13:04:39.99
何をそんな当たり前のことを。
0528デフォルトの名無しさん2012/01/06(金) 13:08:43.02
静的でも型推論くらいは標準で備えて欲しいなあ
0529デフォルトの名無しさん2012/01/06(金) 13:26:45.88
>>527
フレームワーク作るときに他言語の設計をパクるって話だろ。
0530デフォルトの名無しさん2012/01/06(金) 23:00:13.33
>>526
やっぱ違和感があるな。

具体的に、お前が今まで作ったフレームワークは何?
お前はもちろん作ったんだよな?
その答えを聞けば、違和感の理由がはっきりするだろうな。
0531デフォルトの名無しさん2012/01/06(金) 23:13:44.94
>>528
HaskellやOCamlじゃダメ?
0532デフォルトの名無しさん2012/01/06(金) 23:30:17.16
>>530
何でお前の違和感を解消するためだけに
自分の経歴を晒さなきゃならんのだよアホか
つーか、人に聞きたきゃ自分の情報から晒せよ
それが最低限の礼儀ってもんだろ
0533デフォルトの名無しさん2012/01/07(土) 00:20:44.42
情報が聞きたいんじゃない。

フレームワークを作るって
普通はやらんだろう。

なのにお前はやったという。
そのやったないようをちゃんと書けというだけの話。
今の状態は、やった内容を言っていないのだから
お前はなにもやってないのとほぼ同義だ。
0534デフォルトの名無しさん2012/01/07(土) 01:35:03.62
まだやってんのかw
動的言語は馬鹿専用言語
これいがいにいうことないだろwwww
0535デフォルトの名無しさん2012/01/07(土) 01:40:08.81
静的言語サイコーとか思っている奴は視野狭窄で馬鹿な事は確かw
0536デフォルトの名無しさん2012/01/07(土) 05:00:37.75
ドカタでなければフレームワークぐらい作ったことあるだろ。
俺は今思い出せるだけでも5つ作った。移植も入れれば7つ。
こんぐらい、普通じゃね?
0537デフォルトの名無しさん2012/01/07(土) 05:47:10.43
へえ…凄いですね、尊敬します
それらのフレームワークは
どんな機能があって、いくつぐらいのプロジェクトで使われるんですか?
0538デフォルトの名無しさん2012/01/07(土) 07:52:41.15
>>535
>静的言語サイコーとか思っている奴は視野狭窄で馬鹿な事は確かw

「大規模開発で」って何回言ってもダメな動的片付け言語厨は、馬鹿以前。
0539デフォルトの名無しさん2012/01/07(土) 08:15:23.08
小規模プログラミングでも静的型付けの方がぜんぜんいいけど.
動的とかいってる馬鹿は静的言語なんて知らないだけw
0540デフォルトの名無しさん2012/01/07(土) 08:30:24.99
>>539
FizzBuzzも満足に書けない馬鹿が何言ってんだw
そんなんだからお前等は低収入の上に転職も出来ないんだよ
0541↑2012/01/07(土) 08:37:31.07
FizzBuzzなんかを例に出している辞典で低脳まるだし
0542デフォルトの名無しさん2012/01/07(土) 09:09:01.94
>>539
小規模ではなくて高速立ち上げって所に視点が行かない時点でお前は論外w
何が重要なのか全く判っていない
0543デフォルトの名無しさん2012/01/07(土) 09:16:29.18
いつもの人は自称設計担当で「上級プログラマは言語に拘らない」「コーディングは下っ端の仕事」
と書いてるのに、Javaがけなされると必ず反応するので微笑ましい。
0544デフォルトの名無しさん2012/01/07(土) 09:31:17.61
高速立ち上げこそ,静的片付けの方が良いね.
0545デフォルトの名無しさん2012/01/07(土) 09:40:45.48
>>543
ここIDでてないよね?
だったらいいなっていう妄想?
0546デフォルトの名無しさん2012/01/07(土) 09:50:50.46
Javaは冗長すぎて書いている内に日が暮れるから嫌がられるんだけれど
大規模開発ではあの糞冗長なのがいいとか言う人が多いからな
しかも凝り固まっている
0547デフォルトの名無しさん2012/01/07(土) 09:51:35.45
冗長って言っている人は見た目だけで判断してないか?
それともタイプするのがそんなに遅いのだろうか?
0548デフォルトの名無しさん2012/01/07(土) 09:53:36.89
数年がかりなら冗長でも差はなくなるだろうなw
ノロマ過ぎて話にならんと思われる世界もあるわな
0549デフォルトの名無しさん2012/01/07(土) 10:12:41.03
プログラミング言語で冗長ってのはボイラープレートコードが多いってことじゃね
0550デフォルトの名無しさん2012/01/07(土) 10:18:08.00
>>546
糞冗長なのが良いんじゃなくて、始めて覚えたのがJavaで
二つ目の言語を覚える能力が無いだけ
0551デフォルトの名無しさん2012/01/07(土) 10:24:17.82
使い捨てスクリプトを作るのならスクリプト言語で
長期間使うシステムを作るのなら静的型付け言語で

こういう分類でいいでしょ。
0552デフォルトの名無しさん2012/01/07(土) 10:26:53.95
使い捨ても静的型付けの方が良いよ.ふつうにさ.
0553デフォルトの名無しさん2012/01/07(土) 10:40:47.73
ドカタってこのレベルのプログラムも書けないってマジ?
良くクビにならないね?

http://d.hatena.ne.jp/JunichiIto/20111102/1320253815
0554デフォルトの名無しさん2012/01/07(土) 10:45:20.76
すべてにおいて静的型付け言語がよいな.
静的な型付けがない言語は,単に出来損ないなだけ.
0555デフォルトの名無しさん2012/01/07(土) 10:49:42.30
>>553
お前の希望をかかれても困るw
0556デフォルトの名無しさん2012/01/07(土) 11:04:27.92
>>553
流石にJavaドカタ以外なら余裕だろwww
0557デフォルトの名無しさん2012/01/07(土) 11:12:49.54
>>556
やっぱり必死だな。何度も繰り返してる時点で。
0558デフォルトの名無しさん2012/01/07(土) 11:17:33.79
少なくとも557には書けないだろうな
0559デフォルトの名無しさん2012/01/07(土) 11:21:16.20
ほらムキになってレスしてきたw
0560デフォルトの名無しさん2012/01/07(土) 12:40:13.32
とにかくコードで語れよ。
できると言う奴は、コード貼れ。
俺には、無理。
0561これで十分でしょ2012/01/07(土) 13:05:25.29
これできないとWeb系では使い物にならねぇな
0562デフォルトの名無しさん2012/01/07(土) 13:28:51.69
>>561
コメントはいいからコード貼れ
俺には無理。
0563デフォルトの名無しさん2012/01/07(土) 13:32:10.84
ドカタなのでJavaでしか書けない

int toInt(String s) {
 int result = 0;
 for (int i = 0; i < s.length(); i++) {
  result *= 26;
  result += s.charAt(i) - 'A' + 1;
 }
 return result;
}

String toStr(int i) {
 String result = "";
 while (i > 0) {
  i--;
  result = String.valueOf((char) (i % 26 + 'A')) + result;
  i /= 26;
 }
 return result;
}
0564デフォルトの名無しさん2012/01/07(土) 13:33:58.68
ここからコードを貼らない人達のダメ出し大会
0565デフォルトの名無しさん2012/01/07(土) 13:38:53.84
Javaって基数変換のメソッドって無かったっけ?
36進数とか。自由に指定できるやつ。
この場合は26進数でいいのか。

つか、こんなの言語に基数変換の機能があるのか、
それを知っているかどうかで、難易度が大きく変わるじゃないか。

ルールとして用意されている基数変換関数を
使ってはならないと決めたほうがいいかもな。
0566デフォルトの名無しさん2012/01/07(土) 13:40:21.97
問題へのダメ出し一人目きました
0567デフォルトの名無しさん2012/01/07(土) 13:42:09.96
答えへのダメ出しじゃないからOKOK
0568デフォルトの名無しさん2012/01/07(土) 13:47:17.16
あったあった。toStringで第二引数を指定すれば基数変換ができるんだね。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Integer.html#toString(int, int)
0569デフォルトの名無しさん2012/01/07(土) 13:48:00.04
>Javaって基数変換のメソッドって無かったっけ?

残酷な現実を突きつけると、
現場じゃこういうタイプが「使い物にならない」典型。
調べればわかることは覚えなくていいと考え暗記問題を馬鹿にする奴。
よくいるだろ。

何でも一々調べる奴と体に叩き込んでる奴の差は圧倒的だ。
0570デフォルトの名無しさん2012/01/07(土) 13:48:33.33
>>565,568

お前がそれを調べる10分でドカタは>>563を書き終える。
0571デフォルトの名無しさん2012/01/07(土) 13:51:42.72
>>569 >>570
何を必死になってるの?
俺Java知らないんだけど。

お前知らない言語の関数仕様まで完璧に覚えてるのか?
馬鹿じゃねーのwww
0572デフォルトの名無しさん2012/01/07(土) 13:52:29.34
>>571
じゃあ知ってる言語でいいからさっさと貼れよw
0573デフォルトの名無しさん2012/01/07(土) 13:52:45.77
今回はJavaプログラマの勝利ってことで。
0574デフォルトの名無しさん2012/01/07(土) 13:53:34.60
お前が普段馬鹿にしているJavaプログラマに
圧倒的な時間差で回答を出された気分はどう?w
0575デフォルトの名無しさん2012/01/07(土) 14:03:00.15
>>571
だいたいこんな問題に言語関係あるか?
webで調べながら即席perl。

my @alpha = ('A'..'Z');
my @str;
my $n = $ARGV[0];
while ($n > 0) { $n--; unshift(@str, $alpha[$n % 26]); $n = int($n / 26); }
print @str;
0576デフォルトの名無しさん2012/01/07(土) 14:03:17.65
今北。Rubyで3分で解いたが見るのが遅かった。
今から書き込んでも3分で解いたとは証明できない。
残念。今回はお前の勝ちでいいや。本当は3分で解いたけど。
0577デフォルトの名無しさん2012/01/07(土) 14:04:31.34
>>575
そんなのを調べながら書いたのか?
だからお前は使いものにならないという。
プロは全て暗記しているもんだ。
それが圧倒的コーディング力に繋がる
0578デフォルトの名無しさん2012/01/07(土) 14:05:38.65
575だけど$n/26が0にならないでやんの。Javaドカタには未知の領域だったわ。
0579デフォルトの名無しさん2012/01/07(土) 14:06:27.86
>>575
なんか無理矢理感があると思ったら、改行を削ってたのね。

my @alpha = ('A'..'Z');
my @str;
my $n = $ARGV[0];
while ($n > 0) {
 $n--;
 unshift(@str, $alpha[$n % 26]);
 $n = int($n / 26);
}
print @str;

0580デフォルトの名無しさん2012/01/07(土) 14:06:31.73
今から数時間、貼れない人がネタで逃げます
0581デフォルトの名無しさん2012/01/07(土) 14:19:52.52
>>563
BigIntegerくらい使えよ
7文字でオーバーフローするコード書いて恥ずかしくないのか?
0582デフォルトの名無しさん2012/01/07(土) 14:34:06.32
典型的な揚げ足取り
0583デフォルトの名無しさん2012/01/07(土) 15:04:57.39
なんか最初にテスト書いてから作り始めたやたらとレッドが出るので頑張って潰したら面倒なコードになってしまった

{-# LANGUAGE TemplateHaskell, ViewPatterns, RankNTypes #-}
module Excel where
import Control.Applicative
import Control.Monad (foldM)
import Data.Char (ord,chr)
import Data.List (unfoldr)
alphaN :: Int
alphaN = length ['A'..'Z']
checked :: (a -> Bool) -> a -> Maybe a
checked p x = if p x then Just x else Nothing
u2i :: Char -> Maybe Int
u2i = checked ((&&) <$> (1<=) <*> (<succ alphaN)) . calc
  where calc c = succ $ ord c - ord 'A'
e2i :: forall a. (Integral a, Num a) => String -> Maybe a
e2i = foldM f 0
  where f a c = u2i c >>= \ i -> return $ fromIntegral i + a * fromIntegral alphaN
i2e :: Int -> Maybe String
i2e m | m >= 0 = Just $ reverse $ unfoldr psi m
   | otherwise = Nothing
  where
   psi 0 = Nothing
   psi (pred -> p) = let (q,r) = divMod p alphaN in Just (chr $ r + ord 'A', q)
0584デフォルトの名無しさん2012/01/07(土) 15:16:45.29
offset, alnum = ord('A') - 1, ord('Z') - ord('A') + 1
def stoi(s):
    if s.isupper():
        return reduce(lambda x,y: x * alnum + y, (ord(a) - offset for a in s))
    else: raise ValueError(s)
def itos(n):
    f = lambda n : [] if n < 0 else f(n / alnum - 1) + [n % alnum]
    return ''.join((chr(x + offset + 1) for x in f(n - 1)))
0585デフォルトの名無しさん2012/01/07(土) 15:22:16.24
1 -> A
26 -> Z
で、
27 -> AA
というのが難しい。
27 -> A0
だったら簡単なのに。
0586デフォルトの名無しさん2012/01/07(土) 15:24:16.50
はぁ 26で割っていって、あまりの数値をAからZに割り当てるだけだろう。
0587デフォルトの名無しさん2012/01/07(土) 15:28:10.35
単純に割り当てただけではキャリーの処理で死ぬ
0588デフォルトの名無しさん2012/01/07(土) 15:30:08.06
死なないようにすればいいだけ。そこはアルゴリズムの本質ではない
0589デフォルトの名無しさん2012/01/07(土) 15:41:43.92
ループごとに計算した後で足してずらした分を同じようにループごとに前もって引くっていうのがポイント
単純に割ってから引いたりするとどうなるかは元ネタとなったブログで詳細に報告されてる
0590デフォルトの名無しさん2012/01/07(土) 15:46:23.08
うん。当たり前じゃね?
2進数変換とか16進数変換を
自分で実装したこと無いのか?

ライブラリや言語ばっかりに頼ってるLL厨は
応用が効かないな。
0591デフォルトの名無しさん2012/01/07(土) 15:52:23.67
実行速度?アルゴリズム?なにそれ?
自分で実装しない方がバグが少ないよね。

#!/usr/bin/ruby

def alpha2num(alpha)
("A"..alpha.to_s).to_a.size
end

def num2alpha(num)
alpha = "A"
(num.to_i - 1).times{ alpha.succ! }
alpha
end

puts send(%w(alpha2num num2alpha)[ARGV.shift.to_i], ARGV.shift)
0592デフォルトの名無しさん2012/01/07(土) 15:56:27.28
オーバーフローさせたり大文字以外を入力しても
エラーも出さないゴミコード書いてるアホは何なの?
良くそんなので大規模とか言ってられるな
0593デフォルトの名無しさん2012/01/07(土) 16:02:53.85
そんな事いうとオーバーエンジニアリング乙とかいう返しが来るだろうね
05945912012/01/07(土) 16:03:36.95
要件によりけりでしょ。こんなのどうみても使い捨て。
もともと大規模向けのネタじゃない。
0595デフォルトの名無しさん2012/01/07(土) 16:07:15.55
わざわざ「上限なし」って問題に明記されてるのにか?
0596デフォルトの名無しさん2012/01/07(土) 16:10:00.15
>>595
*2
0597デフォルトの名無しさん2012/01/07(土) 16:16:54.97
確かにZZZZZZZでマイナスが返って来たら俺なら笑っちゃう
0598デフォルトの名無しさん2012/01/07(土) 16:17:37.26
競技プログラミングやれということか
0599デフォルトの名無しさん2012/01/07(土) 16:22:20.37
Rubyを知らない俺からすると591は意味がわからん

def alpha2num(alpha)
("A"..alpha.to_s).to_a.size
end

これは alpha が A-Z の一文字で、それを 1-26 の数字に変換して戻す関数だと思うが
なぜ to_s が必要なのか。なぜ to_a が必要なのか。
型がないくせに冗長じゃないか。なぜ ("A"..alpha).size と書けないんだ。


そもそもプログラムとしても、A-Zを1-26に変換するためにAからalphaまでの配列を
作成してサイズを計算するというのはいくらなんでも酷くないか。
大規模でも小規模でもこれはないわ。
0600デフォルトの名無しさん2012/01/07(土) 16:29:49.67
C++のようなある部分をコンパイル時に計算して埋め込める言語が優れている点だな
0601デフォルトの名無しさん2012/01/07(土) 16:32:27.64
>>591のヒドさは群を抜いてるなw

http://ideone.com/yl6oQ
0602デフォルトの名無しさん2012/01/07(土) 16:38:52.31
ああ、succ ってのが Z の次を勝手に AA にしてくれると。
なるほどwこいつ馬鹿だwwとんでもない馬鹿だwww

>>594
小規模ってのはスクリプトの行数のことだろww
小規模なスクリプトなら入力値も小規模だと思ってるwwww
即死レベルの馬鹿ww
0603デフォルトの名無しさん2012/01/07(土) 17:00:02.04
>>537
1つは、日本人なら皆知ってるエンタメブランドの主力サービスのサーバで使われている。
もう1つは、論文でも俺が知ってるだけでも10本は参照している。
もちろん、俺自身が書いた論文は含まれていない。
一番新しい奴は、まだ参照している論文は5本しかないけど、これから増えてくるだろう。
残りはインハウス物だから公表されていない。

で、おまえはどんなフレームワーク書いたんだ?
0604デフォルトの名無しさん2012/01/07(土) 17:30:44.49
>>603
で、そのフレームワークの特徴は?
なぜ既存のフレームワークを使わなかったのか?

具体的に言わなきゃ認めない。
嘘でも言えるからな。

「俺の作ったフレームワークは全世界で使われてるよ。」
ほらねw
0605デフォルトの名無しさん2012/01/07(土) 17:38:48.55
>>602
Rubyは5文字でfailed to allocate memoryで死ぬが、
Javaも7文字でinteger overflowになる
どっちも問題外のドカタコード
0606デフォルトの名無しさん2012/01/07(土) 18:03:13.72
ということで>>605がJavaで実例を見せてくれるソーです。
0607デフォルトの名無しさん2012/01/07(土) 18:11:00.01
タイミングが遅かったけどOCaml


open ExtLib
open Num
let ($) f g x = f (g x)
let offset = int_of_char 'A' - 1
let radix = Int (int_of_char 'Z' - int_of_char 'A' + 1)

let a2i = function 'A'..'Z' as a -> int_of_char a - offset | _ -> assert false
let s2i s = List.fold_left (fun x y -> (x */ radix) +/ Int (a2i y))
               (Int 0) (String.explode s)
let i2s n = 
  let rec f n xs = match n -/ Int 1 with
      x when x </ Int 0 -> xs
    | x -> f (quo_num x radix) (mod_num x radix:: xs)
  in String.implode [char_of_int (int_of_num x + offset + 1) | x <- f n []]

let _ = (match Sys.argv.(1) with
    "0" -> print_endline $ string_of_num $ s2i
  | "1" -> print_endline $ i2s $ num_of_string
  | _ -> assert false) Sys.argv.(2)
0608デフォルトの名無しさん2012/01/07(土) 18:12:21.68
直した
テスト内容は問題のページに書かれてるパターンと
e2i (i2e x) == x、i2e (e2i x) == xそれぞれ10000パターン分ぐらい

{-# LANGUAGE ViewPatterns #-}
module Excel where
import Control.Applicative
import Control.Monad (foldM)
import Data.Char (ord,chr,isUpper,isAscii)
import Data.List (unfoldr)
import Data.Function (on)
alphaN :: Integral a => a
alphaN = fromIntegral $ length ['A'..'Z']
checked :: (a -> Bool) -> a -> Maybe a
checked p x = if p x then Just x else Nothing
u2i :: Char -> Maybe Int
u2i = fmap calc . checked ((&&) <$> isAscii <*> isUpper)
  where calc c = succ $ ((-) `on` ord) c 'A'
e2i :: Integral a => String -> Maybe a
e2i = foldM (\ a c -> u2i c >>= \ i -> return $ fromIntegral i + a * alphaN) 0
i2e :: Integral a => a -> Maybe String
i2e m
   | m > 0 = Just $ reverse $ unfoldr psi m
   | otherwise = Nothing
  where psi 0 = Nothing
     psi (pred -> p) = let (q,fromIntegral -> r) = divMod p alphaN in Just (chr $ r + ord 'A', q)
0609デフォルトの名無しさん2012/01/07(土) 18:14:28.72
なんでこんなに文字がみっちり詰まってるんだ?

空白も見やすいコードの一部だぞ。
ちゃんと空白、改行入れれ。
0610デフォルトの名無しさん2012/01/07(土) 19:01:46.05
マイクロソフトに言え
0611デフォルトの名無しさん2012/01/07(土) 19:12:58.66
>>606
別に俺はJavaドカタは糞コードしか書けないって評価で全然構わないんだが?
0612デフォルトの名無しさん2012/01/07(土) 19:17:15.04
uITRON の移植とか Unix 系 kernel の移植とかで,
しょっちゅうアセンブラと付き合ってる俺か見れば
「何このアホども」 なんだが...
0613デフォルトの名無しさん2012/01/07(土) 19:19:37.35
>>612
>>560
0614デフォルトの名無しさん2012/01/07(土) 19:20:01.05
口では何とでも言えるな
じゃあ俺はNASAで探査機の制御プログラム書いてたという事にするわ
0615デフォルトの名無しさん2012/01/07(土) 19:22:07.57
Java=ドカタという発想こそ,低脳の妄想にすぎない.
実際の被搾取集団母体である非静的かたづけ言語集団の惨めなさけびにすぎない
0616デフォルトの名無しさん2012/01/07(土) 19:52:24.65
Javaがドカタというかプログラマ全体がドカタ
0617デフォルトの名無しさん2012/01/07(土) 20:01:53.66
Rubyはドカタじゃありませn
0618デフォルトの名無しさん2012/01/07(土) 20:07:05.31
puts send(%w(alpha2num num2alpha)[ARGV.shift.to_i], ARGV.shift)

こういうコード嫌い
・sendを使ってメソッドを文字列で呼び出すのが糞
・shift2回が引数の評価順序に依存しているのが糞
0619デフォルトの名無しさん2012/01/07(土) 20:13:22.84
じゃあどうしろと?
0620デフォルトの名無しさん2012/01/07(土) 20:16:30.65
ifを使う
ARGV[0],ARGV[1]を使うか、shiftするなら代入して文を分ける
0621デフォルトの名無しさん2012/01/07(土) 20:19:11.73
それで何のメリットが生まれるというのか?
0622デフォルトの名無しさん2012/01/07(土) 20:19:28.50
>>621
分かりやすい
0623デフォルトの名無しさん2012/01/07(土) 20:20:11.13
書き手が言語仕様に精通しているのは当たり前だが
読み手に言語仕様に精通していることを要求するコードを書く奴は糞
0624デフォルトの名無しさん2012/01/07(土) 20:20:27.81
>>622
馬鹿にとってはなw
俺にとっては>>618の方がわかりやすい。
コードが短いとそれだけ読む時間も書く時間も短縮される。
0625デフォルトの名無しさん2012/01/07(土) 20:22:14.25
>>624
Rubyでは関数の引数が左から右の順に評価されるという言語仕様である
ことを知っていることを読み手に要求する

のが嫌い
0626デフォルトの名無しさん2012/01/07(土) 20:22:44.23
単純計算で、タイプ量が半分になれば
コーディングにかかる時間も
リーディングにかかる時間も半分になる。
0627デフォルトの名無しさん2012/01/07(土) 20:24:43.27
>>625
多くの人にとって、文章は左から右に読む。
読んでいるときにいちいち視線を左に戻すなんて
非効率的すぎる。
0628デフォルトの名無しさん2012/01/07(土) 20:24:52.47
それはないわ
0629デフォルトの名無しさん2012/01/07(土) 20:26:50.20
政治家もドカタじゃんそれじゃw
0630デフォルトの名無しさん2012/01/07(土) 20:28:54.42
Java

int[] a = new int[]{ 1, 2, 3 };
int[] b = new int[]{ 4, 5, 6 };
int i = b[(b = a)[1]];

i の値を答えよ
0631デフォルトの名無しさん2012/01/07(土) 20:33:42.86
プログラミングスピードをあげたければ
タイピングソフトで練習するのが一番の近道。
俺に言わせればデスマに陥っているところはタイピングスピードが遅い。

基礎と馬鹿にしてはいけない。なんでも基礎が一番大事。
プログラミングで一番時間がかかっているところは
タイピングなのだから、これをおろそかにするのは良くない。

タイピングスピードを200文字/1分ぐらいを超えたら
コードの書き方に注意を払う。文字は左から右に流れる。書くのも一緒。
この流れに従うことで開発スピードも飛躍的に上がる。
0632デフォルトの名無しさん2012/01/07(土) 20:36:54.14
>>630
当然6.
左から右に読むだけ
0633デフォルトの名無しさん2012/01/07(土) 20:45:45.37
当たり前だよな。左から右に読むだけだろ。
これ即答できない奴とか頭沸いてる
0634デフォルトの名無しさん2012/01/07(土) 20:46:28.65
左から右に読むのが多くの人にとって自然だからな
0635デフォルトの名無しさん2012/01/07(土) 20:47:26.63
メソッドチェーンは左から右なところがいいな
0636デフォルトの名無しさん2012/01/07(土) 20:55:16.02
int fib(int n) {
 return n-- <= 2 ? 1 : fib(n--) + fib(n);
}
0637デフォルトの名無しさん2012/01/07(土) 21:00:15.28
>>635
メソッドチェーンの利点は左から右に書くことじゃないよ。
だって普通に関数でも、

b = a.hoge(); c = b.hage(); d = c.hige();

って書けば左から右に書いていることになるでしょ?
メソッドチェーンの利点は代入変数を省略できる所
0638デフォルトの名無しさん2012/01/07(土) 21:01:19.39
左から右に評価……?

int i = b[(b = a)[1]] = a[(a = b)[1]];
0639デフォルトの名無しさん2012/01/07(土) 21:05:45.17
左から右にっていうのなら
a + b => int c とかいう構文のほうがいいんじゃないのかね?
0640デフォルトの名無しさん2012/01/07(土) 21:10:20.15
>>637
Rubyなんかは結局ブロックの中で局所変数定義してるじゃん
0641デフォルトの名無しさん2012/01/07(土) 21:22:12.73
>プログラミングで一番時間がかかっているところは
>タイピングなのだから
へー
06426312012/01/07(土) 21:23:06.69
叩かれるかと思ったが、そうならない所を見ると
俺の書いていることはそんなに間違ったことじゃないようだw

で、上のほうで聞かれた俺の作っているフレームワークだが
書くコードを最小限にすることで開発スピードをあげるというフレームワーク。
読み出しは左から右へ、そして戻らないのが原則。どっかの論文で読んだ
「左から右に流れるように書く」という言葉にインスパイヤされた。

このフレームワークをJavaで実装するのはかなり難しい。
今のところRubyが一番適しているかな。

そしてこのフレームワークの大きな特徴だが、よく使う関数を配列に入れておいて数字で
呼び出せるようにするフレームワーク。これによりタイプ量を大幅に減らせる。
このオレオレフレームワークを各言語ごとに作っているから
俺はたくさんのフレームワークを自作しているというわけさ
06436312012/01/07(土) 21:24:56.09
あ、いっとくけど、俺のフレームワークはこんな単純なもんじゃなくて
もっと幾つかのタイプ量を減らすテクニックの集まりだけどね。
詳しくは特定されるから秘密w
バージョン1.0になったらオープンソースで公開しようかなと考えているから。
0644デフォルトの名無しさん2012/01/07(土) 21:26:07.46
>>631>>642
見え見えの釣りは面白くない
Javaドカタは普通にしてるときが一番面白い
0645デフォルトの名無しさん2012/01/07(土) 21:26:13.12
そんなに自信あるなら有料でそれ使って商売した方があなたとその周りの為になると思うけど
0646デフォルトの名無しさん2012/01/07(土) 21:27:08.78
>>644
ドカタはお前だろw
バレバレだ
0647デフォルトの名無しさん2012/01/07(土) 21:28:37.25
>>631
なに自信過剰になってんだか
それがフレームワーク自作ねぇw

みんな馬鹿にして相手してないだけだよ。
0648デフォルトの名無しさん2012/01/07(土) 21:50:55.03
>>626
たとえば, 以下のコードの ``;;''で始まるコメント行を有効にすると
速度が 2 桁変わる言語の処理系もあるわけだが, そっち側の効率は
無視するのかい?

;;(declaim (ftype (function (string) (unsigned-byte 62)) exel-col-to-num))
(defun exel-col-to-num (str)
;;(declare (optimize (speed 3) (debug 0) (safty 0))
;; (type string str))
(let ((len (length str)))
;;(declare (type fixnum len))
(labels ((exel-col-to-num (pos acc)
;;(declare (type fixnum pos)
;; (type (unsigned-byte 62) acc))
(if (>= pos len)
acc
(exel-col-to-num (1+ pos)
(+ (* acc 26)
(- (char-code (char str pos))
(char-code #\a) -1))))))
(exel-col-to-num 0 0))))
0649デフォルトの名無しさん2012/01/07(土) 21:54:28.18
>>642
>そしてこのフレームワークの大きな特徴だが、よく使う関数を配列に入れておいて数字で
>呼び出せるようにするフレームワーク。これによりタイプ量を大幅に減らせる。

笑うところ?
0650デフォルトの名無しさん2012/01/07(土) 21:56:58.37
>>649
Javaドカタにはわからないだろうなw
0651デフォルトの名無しさん2012/01/07(土) 22:12:55.99
変数名やメソッド名を一文字にすると大幅にタイプ量を減らせるよ。
お勧め。
0652デフォルトの名無しさん2012/01/07(土) 22:15:25.85
>>650
フレームワーク使ったときと使わないときのサンプル出してみてよ。
0653デフォルトの名無しさん2012/01/07(土) 22:36:41.45
>>651
一文字はローカル変数に使っている。
sだったら文字、iだったら数値。
文字型変数が複数あるときはs1、s2、s3・・・ってなる
0654デフォルトの名無しさん2012/01/07(土) 22:46:26.68
なんかタイプ量がどうこうっていう発想が、大規模開発っていうより
一度っきりの使い捨てプログラム作る時のものだよな
0655デフォルトの名無しさん2012/01/08(日) 02:54:43.42
>>623
雑多なライブラリ仕様はともかくとして、言語仕様に関しては精通していて欲しい
ていうか精通していないならプロジェクトに関わるのは止めてくれ、お願いします。
洒落にならん
0656デフォルトの名無しさん2012/01/08(日) 08:29:59.09
>雑多なライブラリ仕様はともかくとして、言語仕様に関しては精通していて欲しい

俺の感覚は違うなあ。
仕事を進める時に必要な知識って、ライブラリ9割言語仕様1割くらいだ
言語仕様は当たり前のことを当たり前に身に付けておけば十分で、
その「当たり前」の範囲の仕様ってのは多くの言語で共通だと思う。
0657デフォルトの名無しさん2012/01/08(日) 08:41:15.63
言語仕様がわかってないのにライブラリの仕様がわかるって、
英語は読み書きできないけど、英文学はわかります、みたいな感じ?
0658デフォルトの名無しさん2012/01/08(日) 08:46:49.18
>>657
文法は曖昧なところがあるけど日常会話はできます、みたいな感じ。
0659デフォルトの名無しさん2012/01/08(日) 09:06:35.64
よーしパパRubyの言語仕様に精通しちゃうぞ

Rubyの言語仕様(公式のドキュメント)
http://doc.ruby-lang.org/ja/1.9.3/doc/index.html

>クラスとオブジェクト
>
>Ruby プログラムからはクラスもまたオブジェクトとして扱うことができ、文による操作と合わせると以下の基本操作が可能です。
>
> メソッドの存在を問い合わせる
> メソッドを定義する
> メソッドの定義を取り消す

吹いた
0660デフォルトの名無しさん2012/01/08(日) 09:18:22.35
Rubyの言語仕様 -> プロセスの実行 -> Ruby プログラムの実行
http://doc.ruby-lang.org/ja/1.9.3/doc/spec=2feval.html

>eval, instance_eval, module_eval
>これなんだっけ

Rubyの言語仕様を書いている人たちはRubyプロジェクトに関わってはいけない
0661デフォルトの名無しさん2012/01/08(日) 09:30:04.83
>>658
サバイバル英語ならぬサバイバル開発は出来ますって事か

ちょっと酷いかも・・・
0662デフォルトの名無しさん2012/01/08(日) 09:32:56.96
>>661
658=659=660なんだが、
それならRubyを使う自体サバイバル開発でOKかな。
0663デフォルトの名無しさん2012/01/08(日) 09:36:56.68
>>662
Rubyが何かなんてどういう関係があるのかさっぱりだが
言語仕様に関しては関わる以上最低限の常識として持っておかないと
他の開発チームのメンバーに迷惑だろ
0664デフォルトの名無しさん2012/01/08(日) 09:38:47.76
>言語仕様に関しては精通していて欲しい
>ていうか精通していないならプロジェクトに関わるのは止めてくれ

と主張する人は、当然、
言語仕様が明文化されていない言語は使わないんだよな

というのが俺の主張。
言語仕様が明文化されていない言語、としてすぐに思いつくのがRuby。
あくまでも例。
0665デフォルトの名無しさん2012/01/08(日) 09:54:27.86
>>663
reference implementation が仕様という言語もあるわけですが。
開発に関わるなら、処理系のソースコードをダウンロードして通読しておけと要求するのですね。
それは厳しいなあ(わらい
0666デフォルトの名無しさん2012/01/08(日) 10:01:31.42
> 開発に関わるなら、処理系のソースコードをダウンロードして通読しておけと要求するのですね。

リファレンス実装の言語使うなら当たり前だろ
ノリやフィーリングでコーディングすんな
0667デフォルトの名無しさん2012/01/08(日) 10:02:13.63
>>666
了解。確かに大規模開発で効率が悪そうだ。
0668デフォルトの名無しさん2012/01/08(日) 10:28:22.17
>>666
さっそく公式からソースコードをダウンロードした。
Ruby の処理系は C で書かれているな。
ということは、Ruby を仕事で使う人は、まず C を学ばなければいけない。

この順序がはっきりした。
一つ大きな前進だ。
0669デフォルトの名無しさん2012/01/08(日) 10:29:40.72
>>668
アタマおかしいんじゃね?、生きるのが辛くね?
0670デフォルトの名無しさん2012/01/08(日) 10:30:32.00
仕様厨が売り言葉に買い言葉で自滅しているだけ。そろそろ降参したらどうだ。
0671デフォルトの名無しさん2012/01/08(日) 10:31:07.62
確かに仕事でruby触るなら何か困ったことがあったら処理系のソースコードまで追えるぐらいは出来ないと怖い気もするな
インタプリタもプロダクトの一部みたいなもんで処理系のバグも自分達の責任になってしまうから
0672デフォルトの名無しさん2012/01/08(日) 10:37:11.01
>>664
明文化されているものしか理解できない人が、大規模開発で効率が悪い
0673デフォルトの名無しさん2012/01/08(日) 10:40:01.10
>>672
この主張を認めるならなんでもいいよ
↓
Perl や Ruby を仕事に使う人は C 言語の仕様にも精通して
ソースコードをダウンロードして通読して理解しておく必要がある。
それができない奴はプロジェクトに参加されると周囲に迷惑をかける。
0674デフォルトの名無しさん2012/01/08(日) 10:41:39.98
つか、さすがにRubyのソースコードがC言語だと
思わなかったでしょw

ダウンロードするもんだって言った本人は
ダウンロードしてなかったんだろうね。

まさかC言語だったとはw
0675デフォルトの名無しさん2012/01/08(日) 11:25:07.96
処理系がCで書かれてたら何か困るのか?まさかC使えないの?
0676デフォルトの名無しさん2012/01/08(日) 11:34:48.54
1.8までのRuby処理系はGC付きのCライブラリとして人気があった
Cのソースコードとしては読み易かったし
0677デフォルトの名無しさん2012/01/08(日) 11:39:43.50
>>675-676
話の流れが読めてないのか?
それとも、流れをそらすのに必死なのか?
0678デフォルトの名無しさん2012/01/08(日) 11:43:52.57
>>673
認めるも何も、当たり前でしょ
そもそも自分でC拡張書くのにも必要だしさ
JavaドカタのC恐怖症はすげーな
0679デフォルトの名無しさん2012/01/08(日) 11:44:05.88
>>675
「何が困るのか明確になってからでは遅すぎる」という口実で
問題が明確になるより先に解決策を売り込むというパターン
0680デフォルトの名無しさん2012/01/08(日) 11:45:20.94
おかしな動きや理解出来ない動きをした時
ソースコードを見ればその理由は解る。

だが、それが仕様なのかバグなのかはわからない。

結局のところソースコードがなくても
使えるように整備されていなければならない。
ソースコードは実際の動きを調べるためで
仕様を調べるものではないのだ。
0681デフォルトの名無しさん2012/01/08(日) 11:46:02.28
>>678
なぜそこで「Javaドカタ」がでてくるのかわからない。
そんな書き込みをするから、お前は頭がオカシイ人と
見られるんだよ。
0682デフォルトの名無しさん2012/01/08(日) 11:48:43.76
金と手間隙かけて仕様そのものも検証されてる委員会言語の強みはそこだな
0683デフォルトの名無しさん2012/01/08(日) 11:52:25.01
>>678
すごいな、この人。
そのうち、ワードで文章書くのも C++ 知ってないとダメとか言いそう。(w
0684デフォルトの名無しさん2012/01/08(日) 11:55:07.45
/// <summary>型からenumへマッピングするアトリビュート</summary>
[AttributeUsage(AttributeTargets.Field, AllowMultiple = false)]
class TypeMapEnumAttribute : Attribute
{
 /// <summary>比較優先順位(小さいほど早く比較)</summary>
 public readonly int Order;

 /// <summary>マッピングしたい型</summary>
 public readonly Type Type;

 /// <summary>マッピングしたい型を指定する</summary>
 /// <param name="order">比較優先順位(小さいほど早く比較)</param>
 /// <param name="type">マッピングしたい型</param>
 public TypeMapEnumAttribute(int order, Type type) { Order = order; Type = type; }

 /// <summary>型をenumにマッピングする</summary>
 /// <typeparam name="TEnum">マッピング情報 TypeMapEnumAttribute 入りのenum型</typeparam>
 /// <param name="o">型を調査したいオブジェクト</param>
 /// <param name="id">型からTEnum値にマッピングされた値</param>
 /// <returns>マッピングに成功したならばtrue</returns>
 public static bool ToEnum<TEnum>(object o, out TEnum id) { return ToEnumImp<TEnum>.ToEnum(o, out id); }
0685デフォルトの名無しさん2012/01/08(日) 11:55:32.49
おっと誤爆
0686デフォルトの名無しさん2012/01/08(日) 12:02:46.12
>>604
なんでオマエに認めてもらう必要があるの?本物の馬鹿だな。
正直、オマエ、頭おかしいぞ。
0687デフォルトの名無しさん2012/01/08(日) 12:05:09.60
>>680
バグだから使えないとか、仕様だから使えるのではない。互換性の高い方が仕様だ。
互換性のためにバグをそのままにすることもあると思う。
0688デフォルトの名無しさん2012/01/08(日) 12:08:27.49
>>686
ドカタはドカタ以外の仕事が存在するのを認めたくないんだよ
頭おかしくなるくらい自分の現状に不満があるんだよ
分かってやれよ

ていうか、>>603はポスドク上がりのプログラマには良くある経歴
0689デフォルトの名無しさん2012/01/08(日) 12:09:46.74
ということにしたくて必死w
0690デフォルトの名無しさん2012/01/08(日) 12:10:45.05
ポスドクって悲惨らしいな。
0691デフォルトの名無しさん2012/01/08(日) 12:15:01.98
>>686
はい、結局具体的には何も書けないと言う、いつものオチでした。
まあ、どう見ても口からでまかせやね。

>>688
自演乙。
0692デフォルトの名無しさん2012/01/08(日) 12:15:54.41
>>689
いいからお前が書いたコードがどこでどう使われているのか言ってみろw
他人様にクレクレばかりしていないで、少しは自分から情報を提供したらどうだ?
このままだと、お前、本物のカス人間だぞ。
0693デフォルトの名無しさん2012/01/08(日) 12:16:22.36
俺ポスドクだからポスドク上がりのプログラマの経歴詳しいもん!
0694デフォルトの名無しさん2012/01/08(日) 12:16:54.54
>>692
国家レベルのプロジェクトで使われてるよ。
0695デフォルトの名無しさん2012/01/08(日) 12:18:05.04
>>690
ポスドクが悲惨と知っている時点でお前も同類だろw
0696デフォルトの名無しさん2012/01/08(日) 12:20:25.20
>>691
普通、自分で責任ある仕事をしていたら顧客との関係から>>686以上の情報は出せないし、
ましてや2ちゃんなんかに晒したら個人割れすることぐらいわかりそうなもんだ。

その程度の常識もないなんて、お前は本物のドカタだな。

もっと情報出しても問題ないというなら、まずお前が情報出せよ。
出せないくせに、ほんと恥ずかしいカスだな、お前は。
0697デフォルトの名無しさん2012/01/08(日) 12:21:43.73
>>694
へー、何省関連のどの国プロ?
他人に詳細情報要求する以上、おまえは具体的にプロジェクト名まで晒すよな?
06986902012/01/08(日) 12:21:51.42
>>695
単にポスドクでぐぐったら、
候補に「ポスドク 悲惨」って書いてあっただけ。
年収も低いらしいし、年齢高いし
社会経験なしで、実戦レベルの話を知らない。
そんな人種みたいね。
0699デフォルトの名無しさん2012/01/08(日) 12:23:26.41
>>697
俺はお前と同等ということが言いたいだけ。

お前の経歴もそういうことだよ。
0700デフォルトの名無しさん2012/01/08(日) 12:24:45.49
>>699
いいから何省の何プロジェクトか言ってみろってw
言えないの?お前、嘘つき?カス?クズ?

いいえ、あなたはドカタ中のドカタですw
0701デフォルトの名無しさん2012/01/08(日) 12:25:14.33
>>696
まあ、落ち着け。

だれも、>>686 の情報なんて要求していない。

必死さが、漂ってきて笑えるが。(w
0702デフォルトの名無しさん2012/01/08(日) 12:26:09.98
>>696
お前話しずれすぎ。
もともと要求されているのは
どこの顧客が使ったかじゃなくて

↓そもそもコレだろ。質問は。これに答えられないわけがない。

> 604 名前:デフォルトの名無しさん[sage] 投稿日:2012/01/07(土) 17:30:44.49
> >>603
> で、そのフレームワークの特徴は?
> なぜ既存のフレームワークを使わなかったのか?
0703デフォルトの名無しさん2012/01/08(日) 12:27:04.33
というわけで、真性ドカタは他人様に情報クレクレ言うばかりで
自分からは何も言わないクソ人間、

ということが実証されました。
0704デフォルトの名無しさん2012/01/08(日) 12:27:36.99
機能の流れが素晴らしく思えるぐらいの空中レス合戦
0705デフォルトの名無しさん2012/01/08(日) 12:27:53.81
>>700
お前の理屈を素直に受け取ると、

どこで使っているか言えない奴は
ドカタという定義になるが、

じゃあ、お前のはどこで使っているのか言ってみ。
言えないならドカタという定義だぞ。
0706デフォルトの名無しさん2012/01/08(日) 12:27:59.56
>>702
それに答えたらほぼ個人割れなんだが。
0707デフォルトの名無しさん2012/01/08(日) 12:28:31.28
>>706
答えられない奴は、ドカタだそーですw
0708デフォルトの名無しさん2012/01/08(日) 12:29:02.86
>>706
割れるわけ無いだろ。馬鹿か?
0709デフォルトの名無しさん2012/01/08(日) 12:29:18.93
>>705
どこで使われているかはとっくに書いたが。固有名詞は出してないけどな。

で、あんたのコードは何省の国プロで使われたの?
俺に固有名詞を要求する以上は、お前は固有名詞を出せるよな?

さあ、どうぞ。
0710デフォルトの名無しさん2012/01/08(日) 12:29:42.44
>>696
>普通、自分で責任ある仕事をしていたら顧客との関係から>>686以上の情報は出せないし、

あれ〜? オープンソースで公開予定じゃなかったっけ?
嘘はすぐばれちゃうね。(w

で、>>652 を無視してるのは、なぜかなぁ?
0711デフォルトの名無しさん2012/01/08(日) 12:30:05.53
>>709
> どこで使われているかはとっくに書いたが。固有名詞は出してないけどな。
俺も言ったぞ。

国家プロジェクトって。
0712デフォルトの名無しさん2012/01/08(日) 12:30:44.74
>>708
この領域で、あの業界で使われていて、ペーパーが出ていると言う時点で
もう割れたも同然なの。

あんた、答えを知らないのに、どうして「割れるわけない」と断定できるの?
やっぱドカタさんは違うねえ。まさに人間のクズだよ。
0713デフォルトの名無しさん2012/01/08(日) 12:31:13.94
>>711
それ、固有名詞か?
視ね
0714デフォルトの名無しさん2012/01/08(日) 12:31:39.96
>>709

落ち着け。

出してる情報は、お前も>>705も同じだ。

だから同じように扱いましょうぜってのが流れだ
0715デフォルトの名無しさん2012/01/08(日) 12:31:40.74
面倒くさいから何億ドル稼ごうが国家プロジェクトで使われようがコード書く奴は皆ドカタぐらいにした方が平和
0716デフォルトの名無しさん2012/01/08(日) 12:32:19.66
研究関連の仕事してると、例えば某スパコン用フレームワーク書いてました(あくまで例えね)
とかになるわけで、固有名詞ぼかしても個人特定余裕すぎだよな
0717デフォルトの名無しさん2012/01/08(日) 12:32:25.09
>>713
固有名詞を出してない者どうし仲良くしろや

お前はお前が馬鹿にしている者と
同じ事しか言ってないんだからさw
0718デフォルトの名無しさん2012/01/08(日) 12:33:22.77
>>716
誰もスパコンの名前なんて要求してないだろ。

既存のフレームワークの何がダメで
自分が作った(ということにしたい)フレームワークの
特徴は何かだろ。
0719デフォルトの名無しさん2012/01/08(日) 12:34:31.66
さすがにダメなフレームワークの名前ぐらいは言えるはずだよな。

またいてい既存のフレームワークを調べもしないで
オレオレ作って満足しましたってのが研究だから
何の特徴もない無駄なもの出終わるんだけどね。
0720デフォルトの名無しさん2012/01/08(日) 12:35:45.47
あと (必要なら適当にぼやかした) サンプルもね。
0721デフォルトの名無しさん2012/01/08(日) 12:35:49.84
とむきゃっと
0722デフォルトの名無しさん2012/01/08(日) 12:36:02.82
あー、うん。車輪の再発明でいいのなら
フレームワークを作るってのも分かるよ。
練習のためにクイックソート実装しました。みたいなもんでしょ。

それくらいなら誰でも出来る。
時間の無駄だからやらないが。
0723デフォルトの名無しさん2012/01/08(日) 12:36:29.64
スパコンだと既存のフレームワークなんて無いから作るしか無い
コンパイラとLINPACKくらいはメーカが用意してくれるけどね
0724デフォルトの名無しさん2012/01/08(日) 12:38:22.18
IBMにお話して金払えばフレームワーク開発の手間もインフラも要らない
0725デフォルトの名無しさん2012/01/08(日) 12:44:38.95
つーかさ、フレームワーク書いたかどうかなんて些細なことで
何こんなにムキになってるんだろ
0726デフォルトの名無しさん2012/01/08(日) 12:46:41.36
ドカタの差がそこにあると思ってるんだろw
0727デフォルトの名無しさん2012/01/08(日) 12:47:19.40
普通のプログラマはフレームワークなんて書かないだろ。
フレームワーク書くような神がこんなスレにいるわけがない。
0728デフォルトの名無しさん2012/01/08(日) 12:47:44.90
×ドカタの差
○ドカタとの差

自分はドカタとは違う。フレームワークを作ったからだ!ってなw
あほらし。
0729デフォルトの名無しさん2012/01/08(日) 12:48:38.17
>>727
あー、うん。お前も同類だね。
フレームワークを書いたら神だって
思いたいんでしょ?
0730デフォルトの名無しさん2012/01/08(日) 12:50:28.95
ポスドクは20代後半から30代前半でも
せいぜい年収600万前後だから、給与面で言えば十分ドカタ
0731デフォルトの名無しさん2012/01/08(日) 12:50:41.49
>729
クイックソートじゃねえぞ?
本物のフレームワークなんて書けるかよ。
0732デフォルトの名無しさん2012/01/08(日) 12:54:00.61
既存の何かを超えるフレームワークなら大変だが、
何もない環境だから仕方なく作る程度の
フレームワークなら俺でも作れる。
0733デフォルトの名無しさん2012/01/08(日) 12:54:15.70
RUPとか考え付いてそれを製品の域までに完成させるのは凡人には一生費やしてもできないだろうな
0734デフォルトの名無しさん2012/01/08(日) 12:55:24.77
実際には作ったことがない人がよく言う言葉: 「…ぐらいなら俺でも作れるおw」
0735デフォルトの名無しさん2012/01/08(日) 12:55:59.65
>>732
FizzBuzzすら書けないお前には無理だって
0736デフォルトの名無しさん2012/01/08(日) 12:56:12.93
コロンブスの卵といってな。誰かがやった後なら、
他の人でも比較的簡単にできるもんだよ。
0737デフォルトの名無しさん2012/01/08(日) 12:56:37.73
>>734
実際に作ったが何か?w
0738デフォルトの名無しさん2012/01/08(日) 12:58:50.04
作ったと言いながら具体的には何も書けない人、乙
0739デフォルトの名無しさん2012/01/08(日) 12:59:04.92
「俺は〜した」というレスが無駄であるのをなぜこの流れから読めないのかと
このような匿名掲示板においては精精「オレハエライオマエバカ」ぐらいの情報量にしかならないというのにw
0740デフォルトの名無しさん2012/01/08(日) 13:01:17.48
>>739
ドカタはそう思いたいんですね、よくわかりましたw
0741デフォルトの名無しさん2012/01/08(日) 13:02:15.26
ドカタというやつがドカタって言葉知ってる?
0742デフォルトの名無しさん2012/01/08(日) 13:03:35.31
知らないな。
「バカというやつがバカ」って言う奴は大抵本人がそれ以上のバカだが。
0743デフォルトの名無しさん2012/01/08(日) 13:03:41.84
実際はそうじゃないとしても、そう思われてることを前提として書き込みするようにしていただければいいです
0744デフォルトの名無しさん2012/01/08(日) 13:19:58.53
もういい加減認めれよ,同考えたって,静的型付き言語の方がよい.
これをみとめないやつは,一生,bitでプログラムかいてろ
0745デフォルトの名無しさん2012/01/08(日) 13:28:23.25
むしろあんたが一生Haskellだけやってれば?
0746デフォルトの名無しさん2012/01/08(日) 14:13:52.57
>>745
フレームワークも所詮ライブラリの集合
0747デフォルトの名無しさん2012/01/08(日) 15:50:18.50
>>640
> >>637
> Rubyなんかは結局ブロックの中で局所変数定義してるじゃん
もっともだな。
それに、中間変数を省略するから、デバッグしにくい、修正しにくいんだと思う。
0748デフォルトの名無しさん2012/01/08(日) 16:11:49.04
ということで、VB6のwithのような構文が一番いいってことになる。

with createNantara()
 .foo()
 .bar()
end with

局所変数なしでデバッグもしやすい。
0749デフォルトの名無しさん2012/01/08(日) 16:20:00.70
このスレではフレームワークを作った人が神なの?
それではひとつ神の言葉を紹介するよ。

http://www.publickey1.jp/blog/11/javarubyjavascript.html

「Javaに未来はない」
0750デフォルトの名無しさん2012/01/08(日) 16:22:28.33
>>744
静的型付けのほうがbit操作プログラミングに近いわけだが。
型情報を持っていないデータオブジェクトなんて20世紀の遺物でしょう。
0751デフォルトの名無しさん2012/01/08(日) 16:27:41.97
>>749
> このスレではフレームワークを作った人が神なの?

そう思ってるのは馬鹿だけw
0752デフォルトの名無しさん2012/01/08(日) 16:35:35.98
>>748
それはVBの数少ない良い点だと思う
0753デフォルトの名無しさん2012/01/08(日) 16:46:16.82
Javaにもwithはあるが、残念なことにwith内でオブジェクトを操作する場合は
先頭が.(ピリオド)で始まるというルールを採用しなかったために
逆にスコープがどうとかいう問題になって、bad partsに指定された。
0754デフォルトの名無しさん2012/01/08(日) 16:56:24.28
動的言語の優位性なんてまったくないじゃないか.
いいか,待ったッくないんだよ.
0755デフォルトの名無しさん2012/01/08(日) 16:58:50.62
>>754
知ってる
0756デフォルトの名無しさん2012/01/08(日) 17:13:40.21
>>748
何が「ということで」なのかさっぱり分からん
だって、それってメソッドチェーンの代用になってないじゃん

デバッグのしやすさにも差があるとは思えないし
0757デフォルトの名無しさん2012/01/08(日) 17:14:36.70
ブレークポイントを設定できることは大きい
0758デフォルトの名無しさん2012/01/08(日) 17:32:03.71
>>749
それ、みせブラの研究してるソーシャル系の人でしょ?
0759デフォルトの名無しさん2012/01/08(日) 17:33:41.80
>>568
これ、難易度的にどうなの?俺の場合、30分以上掛かったけど、一応出来たよ。
ちなみに俺も再帰を使った。
0760デフォルトの名無しさん2012/01/08(日) 17:34:09.69
>>756
> だって、それってメソッドチェーンの代用になってないじゃん

なってるだろ。

with createNantara()
 with .foo()
  .bar()
 end with
end with

こうも書けることに気づかいない?
0761デフォルトの名無しさん2012/01/08(日) 17:54:32.89
>>760
メソッドチェーンは可読性を上げてナンボ。そのコードはただのゴミ
0762デフォルトの名無しさん2012/01/08(日) 17:56:49.75
>>761
そんなにメソッドチェーンがいいなら

createNantara().foo().bar()

VB6はこうも書けるよ。
0763デフォルトの名無しさん2012/01/08(日) 17:57:45.29
そう書けない言語って?
0764デフォルトの名無しさん2012/01/08(日) 17:58:41.82
メソッドチェーンの問題点は可読性の悪さと
デバッグのしにくさがある。

obj.aaa().bbb().ccc().ddd().eee().fff().ggg()

どう考えても見にくいし途中でエラーが起きた時
どこかわかりにくい。
0765デフォルトの名無しさん2012/01/08(日) 18:02:26.43
>>763
うん。だからwithはメソッドチェーンを
置き換えるものではなく補完するものなんだ。

メソッドチェーンは長くなる。それを短くしたい時
適度なタイミングでwithを使えばいい。
適度なタイミングとは、オブジェクトが変わる場合。

よくあるのが、自分自身を戻すというメソッド。
これをメソッドチェーンにすると、とたんに見づらくなる。
まず自分自身を返すのをやめる。その時に使うのがwith。

違うオブジェクトを返す場合は普通に返せばいい。
その時メソッドチェーンだけで繋げられるならつなげればいいし、
(自分自身を返さなくなったため)繋げられない場合はwithを使う。
0766デフォルトの名無しさん2012/01/08(日) 18:07:59.57
>>765
うん。with で書く典型は setter の羅列だよね。
メソッドチェーンで書くために、わざわざ setter が this を返すように設計するなんてのは自分も嫌い。

with の利点はそこだと思うんだ。

>> だって、それってメソッドチェーンの代用になってないじゃん
>
>なってるだろ。

言い返す必要はなかったと思うよ。代用じゃないもの。
with とメソッドチェーンは関係ないよね。
0767デフォルトの名無しさん2012/01/08(日) 18:13:26.08
代用に出来るのは正しいだろ。
0768デフォルトの名無しさん2012/01/08(日) 18:14:48.66
>>767
>>760 がゴミなのも正しいだろ。
0769デフォルトの名無しさん2012/01/08(日) 18:15:48.38
メソッドチェーンを使う場合の一部を
withに置き換えてるから
代用で合ってる。
0770デフォルトの名無しさん2012/01/08(日) 18:16:29.08
Rubyのブロックも結局のところ
メソッドチェーンの置き換えではなく、
withと同じってことか。
0771デフォルトの名無しさん2012/01/08(日) 18:16:50.77
>>768
それはお前に気づかせるための例だ。バカめ。
0772デフォルトの名無しさん2012/01/08(日) 18:17:54.97
メソッドチェーンの可読性なんて、読み手の慣れと書き手の名付けセンスに依存する問題。

y = 1 + 2 + 3 * 4 - 5

は可読性の悪さとデバッグのしにくさに問題があるかい?

a = 1 + 2
b = 3 * 4
c = a + b
y = c - 5

と書けと?
0773デフォルトの名無しさん2012/01/08(日) 18:19:32.20
>>772
それはメソッドではない。
0774デフォルトの名無しさん2012/01/08(日) 18:20:03.50
>>771
あ、俺が756だと思ってたのか。バカめ。
0775デフォルトの名無しさん2012/01/08(日) 18:20:31.25
>>773
馬鹿め。
0776デフォルトの名無しさん2012/01/08(日) 18:25:32.55
>>775
馬鹿はお前だ。

メソッドをつなげると醜くなるからそれを演算子に
置き換えたのが>>772だろ

これでは比較にならない。
0777デフォルトの名無しさん2012/01/08(日) 18:30:27.00
>>776
演算子じゃないだろ。単なる二項メッセージ式じゃねーの?

そんなことにも気付かないなんて、静的脳って本当に怖いね。
0778デフォルトの名無しさん2012/01/08(日) 18:30:32.96
>>776
演算子とメソッドの違いは名前だと気付かないのか。馬鹿め。
0779デフォルトの名無しさん2012/01/08(日) 18:32:38.67
>>778
その名前が重要なんだろw

何のために演算子オーバーロードがあると思ってるんだ?
メソッドでいいのに、演算子にするということは
その違いによって、見にくさが変わるという証明だよ。
0780デフォルトの名無しさん2012/01/08(日) 18:35:23.97
>>779
だから

読み手の慣れ
と
書き手の名付けセンス

だよね。
0781デフォルトの名無しさん2012/01/08(日) 18:37:39.54
"abcde".reverse().char_at(1)

メソッドチェーンです。読みにくいので行を分けなきゃ駄目かね?

new StringBuffer().append("a").append("b").length()

メソッドチェーンです。読みにくいので行を分けなきゃ駄目かね?
0782デフォルトの名無しさん2012/01/08(日) 18:41:25.36
メソッドチェーンもメッセージカスケードも簡単にできるSmalltalk最強ということですね。
0783デフォルトの名無しさん2012/01/08(日) 18:42:38.52
>>772
俺は、可読性は悪いとは思わないが、デバッグはしにくいだろ?

y = foo( ) + bar() + hoge( ) * fuga( ) - hage( )
0784デフォルトの名無しさん2012/01/08(日) 18:42:59.69
はい、あの言語は取っ付きやすさで言えば最強の部類だと思います
0785デフォルトの名無しさん2012/01/08(日) 18:43:02.53
$('#r2').tag('ul').tag('li').tag('a').attr('href', '/postal/digest.html').text('Postal Search Ajax API ダイジェスト').gat().gat().tag('li').tag('a').attr('href', '/postal/reference.html').text('Postal Search Ajax API リファレンス').gat().gat().gat()

メソッドチェーンです。読みにくいので行を分けなきゃ駄目かね?
0786デフォルトの名無しさん2012/01/08(日) 18:43:47.80
>>783
fooとかを定数にすればデバッグしやすくなるだろ。

論破終わり。
0787デフォルトの名無しさん2012/01/08(日) 18:45:48.10
>>772
俺が解説してやろう

> y = 1 + 2 + 3 * 4 - 5

これはメソッドチェーンのデバッグにしにくさの
反論の例としては不適切。

なぜなら、値が埋め込まれているから
途中でエラーは起きない。
だからデバッグすることもない。

実際は数値ではなくメソッドが使用される。
どこでエラーが起きるかわからない。だからデバッグしにくくなる。

ま、卑怯といわれれば否定できない例だね。
0788デフォルトの名無しさん2012/01/08(日) 18:47:13.92
>>783
それをデバッグするなら
行を分けるより呼ばれてる関数側にブレークポイント仕込むだろ常識的に。

>>785
タグを分けてインデントすりゃいいんじゃねーの?
というか

a = $('#r2')
b = a.tag('ul')
c = b.tag('li')
d = c.tag('a')
e = d.attr('href', '/postal/digest.html')
f = e.text('Postal Search Ajax API ダイジェスト')
g = f.gat()
h = g.gat()
i = h.tag('li')
j = i.tag('a')
k = j.attr('href', '/postal/reference.html')
l = k.text('Postal Search Ajax API リファレンス')
m = l.gat()
n = m.gat()
o = n.gat()

何が読みやすくなるのかわからんがw
0789デフォルトの名無しさん2012/01/08(日) 18:48:27.17
メソッドチェーン以前にメッセージ送信に.を使う時点でダメ言語だろw
0790デフォルトの名無しさん2012/01/08(日) 18:48:51.61
はげどう。. は文字列結合演算子
0791デフォルトの名無しさん2012/01/08(日) 18:49:17.30
>>787
え?引数が直値だとどうしてエラーが起きないんだ?馬鹿?
0792デフォルトの名無しさん2012/01/08(日) 18:49:44.98
>>790
馬鹿か?ピリオドは文末記号だろ。少しは英語を勉強しろ。
0793デフォルトの名無しさん2012/01/08(日) 18:49:55.11
>>788
呼ばれてる関数のどこにブレークポイント仕込むっていうんだ?
0794デフォルトの名無しさん2012/01/08(日) 18:50:54.46
>>791

foo() ← 中でエラーが起きるかもしれない
1 ← エラーが起きようがない

理解できた?
0795デフォルトの名無しさん2012/01/08(日) 18:52:58.10
>>793
どこでもいいだろ。つか
>y = foo( ) + bar() + hoge( ) * fuga( ) - hage( )

foo, bar, hoge, fuga, hage の全部がちゃんと動いていて
この行の加減乗除でバグを起こしているという状況のとき
デバッガ起動して追いかける奴とかいるの?

例題が非現実的すぎる
0796デフォルトの名無しさん2012/01/08(日) 18:53:11.40
+ や * や - でエラーが発生しないヘッポコ言語か?
0797デフォルトの名無しさん2012/01/08(日) 18:54:12.78
>>795
バグがないプログラムに
デバッガは必要なの?
と言ってるのと同じだなw
0798デフォルトの名無しさん2012/01/08(日) 18:55:21.89
>>795
あほかw

バグがないと思っていたプログラムに
バグがありましたって時に、

どこにバグがあるのかを探すのが
メソッドチェーン使って書かれたプログラムでは
面倒になるってことだろ。
0799デフォルトの名無しさん2012/01/08(日) 19:06:47.35
>>798
どう面倒になるの?
0800デフォルトの名無しさん2012/01/08(日) 19:19:55.81
>799
withが使われていれば、シングルステップで
一行づつデバッグしていける。
ブレークポイントを貼る作業なんて必要ない。

with createNantara()
 .foo()
 .bar()
 .aaa()
 .bbb()
 .ccc()
end with
0801デフォルトの名無しさん2012/01/08(日) 19:22:02.32
>>800
え?ブレークポイントはどうせ貼るでしょ。まさか main の初っ端からシングルステップ数万回押すの?
0802デフォルトの名無しさん2012/01/08(日) 19:27:49.87
>>801
該当箇所の先頭部分に1個でいいじゃん?
0803デフォルトの名無しさん2012/01/08(日) 19:33:25.68
で、シングルステップ実行で foo から ccc まで全部実行されるのが駄目で、
一つずつとまるから with を使うべきだといってる?

それメソッドチェインの問題じゃなくて、改行すりゃいいだけじゃね?
0804デフォルトの名無しさん2012/01/08(日) 19:35:00.65
改行してもメソッドチェーンだと
シングルステップで一気に抜けるだろ。
そんなことも知らんのか?
0805デフォルトの名無しさん2012/01/08(日) 19:36:52.54
public static void main(String[] args) {
 Nantara nantara = createNantara()
  .foo()
  .bar();
}

確認しながら書いてるよ。
少なくとも eclipse では抜けない。一行ずつ進む。
なんだ VB はできないのか。ザコだな。

0806デフォルトの名無しさん2012/01/08(日) 19:40:41.30
VB はやっぱり VB ということで終了ですかね。
0807デフォルトの名無しさん2012/01/08(日) 19:45:14.96
そもそもメソッドチェーンのために、インスタンス自身をメソッドの戻り値にするのが気持ち悪い
0808デフォルトの名無しさん2012/01/08(日) 19:50:08.03
なんでもメソッドチェーンにしたくなる時期ってあるね。
0809デフォルトの名無しさん2012/01/08(日) 19:53:09.85
>>807
メソッドチェーンの用途はそれだけじゃないからね。LINQ のように。
0810デフォルトの名無しさん2012/01/08(日) 19:54:31.33
パイプでつながれば無問題
0811デフォルトの名無しさん2012/01/08(日) 19:59:22.74
with createNantara()
 .foo()
 .bar()
 .aaa()
 .bbb()
 .ccc()
end with

もっと本質的な事を言うと、
こういうコードの場合 foo から ccc の関数は createNantara() で生成された
オブジェクトの状態変化に主目的があるだろ。

そこでステップ実行して意味あんのかね。
foo から ccc で変更される nantara オブジェクトのフィールドに
ウォッチポイント仕掛けて流すってのが普通じゃないのか。
0812デフォルトの名無しさん2012/01/08(日) 20:06:35.43
普通のデバッガではstep overとstep intoがあって
step overでチェーン全部抜けるようなケースでも
step intoで関数の中に潜れば何のもんだいもないはず

もちろんたとえば
x.foo().bar().bazz()
でfoo()の後で止めたいという場合、barにブレークポイントを仕掛けるという
ごく単純な方法も使える

メソッドチェーンだとデバッグが云々言ってるアホは、
デバッガを本当に使ったことがあるのか?
0813デフォルトの名無しさん2012/01/08(日) 20:10:00.39
>>812
foo() の後で止めたいなら step in -> step out でいいんじゃないの。
0814デフォルトの名無しさん2012/01/08(日) 20:10:08.52
>>812
それで、bar()の値がどうなっているかを
どうやって見るのかね?
0815デフォルトの名無しさん2012/01/08(日) 20:12:59.39
>>814

???
bar() の値に意味があるなら、そもそも with で書くのは間違いでは?
0816デフォルトの名無しさん2012/01/08(日) 20:15:37.18
>>815
バグの話だろ。

なにかおかしくなった時.bar()の戻り値が
どうなっているのかを調べたくなるだろ。
0817デフォルトの名無しさん2012/01/08(日) 20:16:40.93
with createNantara()
 .foo()
 .bar()
 .aaa()

このコードの時点で bar() の戻り値は void (か、あっても無視してる) だろ。
0818デフォルトの名無しさん2012/01/08(日) 20:17:28.43
>>813
それでおk
0819デフォルトの名無しさん2012/01/08(日) 20:18:52.64
>>814
bar()の戻り値はbazz()のレシーバ、つまりbazz()にとってのthisだから
bazz()に潜ればわかるだろ

本当に何も知らないんだな……
08208172012/01/08(日) 20:19:43.36
>>819
ああ、with 関係なく foo().bar().bazz() ならそれでok
0821デフォルトの名無しさん2012/01/08(日) 20:25:33.60
>>819
いちいち潜る時点で無駄だが、
じゃあbazz()の戻り値はどうなんだ?
0822デフォルトの名無しさん2012/01/08(日) 20:26:18.07
>>821
bazz() の戻り値は要るなら元々何かに代入してるだろうが
少しは考えてからレスしろよ
0823デフォルトの名無しさん2012/01/08(日) 20:27:51.18
bazz()の戻り値は、チェーンの最後だからチェーン云々とは関係ないぞ
x.foo()の戻り値は?という質問と同じだ

無知な割に態度がでかいやつだな
0824デフォルトの名無しさん2012/01/08(日) 20:35:40.07
関数型の言語だとあまり変数を束縛せずに、
ある関数の返値をそのまま別の関数の引数にすると思っているのだけれど、
そういうのもデバッグしにくくなるのだろうか。
0825デフォルトの名無しさん2012/01/08(日) 20:56:04.79
俺の関数型のイメージだとそういうのは関数合成をモリモリ使うと思ってる
デバグはどうなんだろ
0826デフォルトの名無しさん2012/01/08(日) 20:58:46.31
> デバグはどうなんだろ
かってにスタックフレームダンプしてくれるんじゃないのか?
0827デフォルトの名無しさん2012/01/08(日) 21:15:51.82
メソッドチェーンもクソwith文も不要。普通にカスケードすればいいだけじゃん。
0828デフォルトの名無しさん2012/01/08(日) 21:16:35.38
Rubyならブロック使うから
メソッドチェーンは不要だしね。
0829デフォルトの名無しさん2012/01/08(日) 21:19:38.63
LINQは別物に考える必要がある。
0830デフォルトの名無しさん2012/01/09(月) 02:35:43.19
>>553
マネージャがへたれ杉
さっさと辞めろ邪魔だろ
0831デフォルトの名無しさん2012/01/09(月) 03:41:58.71
レベルが低くてもシステムが作れる組織というのが大規模開発には必要なのだろう。
0832デフォルトの名無しさん2012/01/09(月) 06:40:54.06
逆だ。
本当の開発では、ドカタを選別し排除する組織が必要だ。
0833デフォルトの名無しさん2012/01/09(月) 08:34:32.78
832が正解
プログラマは生産性の差に比べて単価の差が限りなく小さいので
出来る奴に仕事を集中させてその他大勢はさっさと首を切るのが割安
プログラマがコミュ障なんてのも妄想で
出来るプログラマは上流から下流まで全部できるから
無駄に高給取って中抜きしてるだけの大勢の上流もさっさと首を切るのが割安

大規模だから出来る奴でも頭数が足りない・・・てのも妄想
出来る奴の労力の90%は出来ない奴の尻拭いだからこいつらの首を切れば
出来る奴の生産性は今の10倍になる
0834デフォルトの名無しさん2012/01/09(月) 09:16:21.32
>>759
553はRuby(笑)ではマトモに動くプログラムが
このスレで出てこない程度の難易度
0835デフォルトの名無しさん2012/01/09(月) 09:32:59.93
>>833 とか、実際の仕事したことないんだろうな…

工程によって必要人員は違うし、ちょうどいい時にそんなできる奴が都合よく
集められるなんていう妄想は、お前の日記にでも書いとけよ。
0836デフォルトの名無しさん2012/01/09(月) 09:34:25.18
>>832,833
確かに必要だな。
未だに必要性が主張されるのは、実現出来ていない事の裏返しでも有るが。
0837デフォルトの名無しさん2012/01/09(月) 09:36:57.94
政治改革が必要だ‼って、選挙の度に喚くのと一緒だな。
0838デフォルトの名無しさん2012/01/09(月) 09:42:01.88
>>834
2chで世界が判った気になり始めたら、ヤバイぞ。
0839デフォルトの名無しさん2012/01/09(月) 10:08:06.33
>>759
553はJava(笑)ではマトモに動くプログラムが
このスレで出てこない程度の難易度
0840デフォルトの名無しさん2012/01/09(月) 10:33:29.88
>>835
切られる側は大変かもしれないけど、足引っ張られると本当に迷惑なんだよ。
だからどっか新天地で頑張れ。
0841デフォルトの名無しさん2012/01/09(月) 11:30:07.52
切られる側なんてどうでもいいんだよ。

まともな奴が集まらねーって言ってるんだよ。

まあ、そんな理解力だと切られる側にも回れないかもな。(w
0842デフォルトの名無しさん2012/01/09(月) 12:00:46.53
>>839
コード出してから言えw
恥ずかしいヘタレだな
0843デフォルトの名無しさん2012/01/09(月) 12:01:07.47
マルチタスクは生産性が低いという説があるけど
工程を細かく分けるとマルチタスクになるのかな?
0844デフォルトの名無しさん2012/01/09(月) 12:03:17.85
分割統治
0845デフォルトの名無しさん2012/01/09(月) 12:13:40.20
>>841
まともな奴が集まらないのはプロジェクトに魅力がないから
0846デフォルトの名無しさん2012/01/09(月) 12:15:26.35
>>845
お前にとって魅力があるプロジェクトってどんなのだ?
0847デフォルトの名無しさん2012/01/09(月) 12:20:44.13
本職の人達が運営するぼったくりバーの会計システム
納期一ヶ月の突貫工事な上損害が出るような障害起こしたら内臓無くなる可能性があります
普通の障害ならば即呼び出し食らって強面のお兄さん達に囲まれて不眠不休で復帰させます
0848デフォルトの名無しさん2012/01/09(月) 12:39:20.75
>>846
突き抜けてるものかな
0849デフォルトの名無しさん2012/01/09(月) 12:47:33.98
>>848
それはどういう意味で?

たとえば、売れたり人気があるものでも
技術的には大したことがないプロジェクトってのはある。

そういう所に、まともな奴が来ると思う?
0850デフォルトの名無しさん2012/01/09(月) 12:51:09.06
>>849
そういうのやってるの?
0851デフォルトの名無しさん2012/01/09(月) 12:52:32.66
他人の興味を聞く時点でいまいち。自分が好きなことやってりゃいい
0852デフォルトの名無しさん2012/01/09(月) 12:53:21.89
真面目に出勤して周りの足を引っ張らない程度に仕事して対人折衡もほどほどにできるなら充分まともな奴だよ
0853デフォルトの名無しさん2012/01/09(月) 12:56:00.45
>>845
実際やってみな。

最初の方の工程はいざ知らず、コーディング工程で必要な人員集める時に
まともな奴を集めるのがドンだけ難しいか、よくわかるから。
0854デフォルトの名無しさん2012/01/09(月) 12:56:01.43
身も蓋もないが金も大きな魅力の一つだろ

>たとえば、売れたり人気があるものでも
>技術的には大したことがないプロジェクトってのはある。

その利益をエンジニアに適正に還元する会社なら
まともな奴はいくらでも集まると思う
0855デフォルトの名無しさん2012/01/09(月) 12:57:15.62
ぶっちゃけ「まともな奴が集まらない」って会社の大半は金払いが悪いのが理由
0856デフォルトの名無しさん2012/01/09(月) 12:58:24.29
>>853
それはお前が普段からドカタ仕事やってるからだ。
マトモなプログラマの周囲にはマトモなプログラマがつながっている。
お前も5-10年ぐらいマトモな仕事すれば、マトモなプログラマに顔が効くようになるかもな。

がんばれ。
0857デフォルトの名無しさん2012/01/09(月) 12:58:35.44
ケチな会社には、背に腹は代えられないという食い詰めた奴しか来ないよ。
当たり前だろ。
0858デフォルトの名無しさん2012/01/09(月) 12:59:01.39
>>853
間違えた、まともな奴じゃなくて出来る奴だった。

>>852 が言うようなまともな奴はそれなりに集まるから、それでこなすしかない。

0859デフォルトの名無しさん2012/01/09(月) 13:45:49.67
>>856
> マトモなプログラマの
意味を定義してほしいな
俺的には, 規格書が読めるのが最低条件なんだけど...

0860デフォルトの名無しさん2012/01/09(月) 13:48:57.56
俺的にはGoogle検索エンジンを作れるのが
最低条件だな。
0861デフォルトの名無しさん2012/01/09(月) 14:00:08.94
分野の偏りはありまくまくってるが,
rfc-index.txt から必要な rfcNNNN.txt を拾って来れるのが最低条件だ
0862デフォルトの名無しさん2012/01/09(月) 14:03:15.59
>>853
これはホント良く分かる。
JavaやPHPで人集めたらゴミしか集まらないんだよね。
CやSchemeやPythonやSmalltalkで集めると使える人が来るけど。

http://practical-scheme.net/trans/pypar-j.html
0863デフォルトの名無しさん2012/01/09(月) 14:12:20.84
>>862
そんなことはないなぁ。
単に数の違いじゃないか。
もしくは募集内容がすごくヘボいからだろ?
0864デフォルトの名無しさん2012/01/09(月) 17:10:39.54
>>863
ドカタが来れないようにすれば、自然と質の高いプログラマが見つかる。
いわゆるノイズ除去ってやつだ。
0865デフォルトの名無しさん2012/01/09(月) 17:14:30.04
で?
0866デフォルトの名無しさん2012/01/09(月) 17:16:53.75
Cは静的型付けというには型が弱すぎる。
SchemeもPythonもSmalltalkも動的型付けだ。

結論:やっぱり動的型付けのほうが大規模開発で効率が良い。
0867デフォルトの名無しさん2012/01/09(月) 19:00:45.05
>>866
それはないな。
大規模開発で実績が極端に少ないし。
0868デフォルトの名無しさん2012/01/09(月) 19:14:41.32
実績が出来てから/皆が使ってるから
と言ってる間はいつまでたってもドカタですわ
0869デフォルトの名無しさん2012/01/09(月) 20:48:24.05
>>868
だな。だからこそ動的型付けは今、古い。
0870デフォルトの名無しさん2012/01/09(月) 20:52:38.09
>>868
今後実績でそうにないし

と言うことぐらい理解しようよ。
0871デフォルトの名無しさん2012/01/10(火) 06:06:16.79
まずは、実績を知らないたいう事と、実績がないという事の違いを理解しようね。
0872デフォルトの名無しさん2012/01/10(火) 09:42:10.80
民主党には朝鮮人など外国人のなりすまし、スパイが約90名在籍している

野田内閣は過半数が帰化人

野田はどうだろうか
韓国人から賄賂を貰い、韓国人の集いに出席している野田は
0873デフォルトの名無しさん2012/01/10(火) 18:44:24.26
スクリプト言語をCに翻訳すれば生産性は良いだろ。
型が静的でない言語の問題は、どんな型でも入るのでバグ原因になってしまうこと。
hip-hop PHPとかがいいんでは。
0874デフォルトの名無しさん2012/01/10(火) 18:56:49.22
uyさん何してはるんすか
0875デフォルトの名無しさん2012/01/10(火) 20:26:26.85
>>873
Cだと今度は値の型の扱いが軽過ぎるからなあ
0876デフォルトの名無しさん2012/01/10(火) 20:30:38.72
Cの
ソースを出力するスクリプト言語の事だとエスパー。
0877デフォルトの名無しさん2012/01/10(火) 21:04:28.05
>>873
>スクリプト言語をCに翻訳すれば生産性は良いだろ。

意味不明???

いままでスクリプトを書くだけで解釈(interpret)してくれていたものを
わざわざ翻訳(compile)しなければならないのなら、生産性は悪化する
0878デフォルトの名無しさん2012/01/10(火) 21:26:49.64
>>873
>型が静的でない言語の問題は、どんな型でも入るのでバグ原因になってしまうこと。

Javaの問題は、型付けが静的であるにもかかわらず
キャストを使えばどんな型でも入るのでヌルポの原因になってしまうこと。
0879デフォルトの名無しさん2012/01/10(火) 21:27:57.67
いやいや、キャストなんて使わなくてもヌルポしますし
0880デフォルトの名無しさん2012/01/11(水) 00:09:09.09
>>871
> 実績を知らないたいう事

まともな日本語書けるまで ROM ってろよ、低脳。
0881デフォルトの名無しさん2012/01/11(水) 01:12:20.33
>>878
問題をぬるぽだけに限定できるといえるだろ?
0882デフォルトの名無しさん2012/01/11(水) 08:05:27.07
Cのポインタは危険だが、ポインタこそがCの強力さの源泉でもある
動的型付けは実行時型エラーの危険をはらむが、ダックタイプやオープンクラス、
本物のtraitsのような機能も提供する

上記の強力さを必要としない開発分野も存在するだろうが、
「自分が必要としないのだから、他者も必要としないだろう」と考えるのは短絡的だ

ひるがえってNullPointerExceptionについて考えると、これは危険だが何のメリットも提供しない
しかもゼロ除算エラーのように静的型システム上で排除するのが難しいわけでもない
存在意義が見当たらない
0883デフォルトの名無しさん2012/01/11(水) 08:07:56.56
おっと、一応言っとくと利便性を犠牲にすればゼロ除算エラーも排除できる
0884デフォルトの名無しさん2012/01/11(水) 09:29:38.79
じぁあ未初期化の変数には何いれるの?
Cにnullポインタがあるのはなぜ?
nullポインタはよくてNullPointerExceptionはダメと言ってるの?
0885デフォルトの名無しさん2012/01/11(水) 09:57:04.41
>>884
横レスになる(>>882ではない)けど、C(および後継としてのC++)はシステム記述言語だ
いわば超高級アセンブリ言語であり、メモリへの直接アクセスやバイナリ演算が必要
したがって、NULLポインタ、void型、そして型キャストは必須になる

しかしJavaは(システム記述言語ではなく)効率的なアプリケーション開発の為に設計された言語
だから(CやC++には欠けている)メモリの動的管理(GC)やマルチスレッドが言語仕様として存在する
問題は、Javaがそのようなアプリ開発言語であるのもかかわらず、ヌルポを排除できない点
これは言語設計における一貫性の欠如であり、Java言語仕様の欠陥と言える
0886デフォルトの名無しさん2012/01/11(水) 10:12:36.26
>>884
手続きを排除できると思ってる人だったら
「初期化する」という手続きも、初期化前と後の状態も認識できないだろうな
0887デフォルトの名無しさん2012/01/11(水) 11:57:19.05
C++コンパイラを使ってるけど、NULLと数値のゼロの区別がついてないよ。
警告でない。
ゼロで初期化してNULLの判定しても平気。
0888デフォルトの名無しさん2012/01/11(水) 12:00:52.97
ゼロとNULLが一致してるのが正しいC++のようだ。



但し、C++ではこの定義をそのまま使えない。Cは、void *を任意のポインター型に代入できるが、C++はvoid *から他のポインター型に暗黙的な変換をせず、エラーになるからである。
C++では数値の0をNULLポインターとして使うことになったため、C++では次のように定義されている可能性がある。
#define NULL 0
この場合、数値の0と、ポインターの0との区別が付かない。
http://www.wdic.org/w/TECH/NULL
0889デフォルトの名無しさん2012/01/11(水) 12:17:48.19
foo(bar)の人はbar==NULLでもfooの中で適切に処理できると考える

bar.foo()の人はbar==nullのときやる気を失い諦めてしまう
0890デフォルトの名無しさん2012/01/11(水) 14:18:01.77
         __________       |  見ろよ!                 |
       ./::::::::::::::::::ノ、ヽ     |  民主党支持者がいるよ!w  |
      ./:::::::;;;-‐‐''"´  |:::|     \____  ________/
      |:::::::|   。   .|:::|        ノ´⌒ V        _____
      .|::::/ ⌒   ⌒ ヽ:|     γ⌒´      ヽ,     / _____)
       |:::| /・\ /・\||    // ""⌒⌒\  )    | /        ヽ
げひひw .|´  ⌒_ ヽ⌒  |  .   i /   ⌒   ⌒ヽ )     | 〉 ⌒   ⌒  |
      .| :::⌒(__人_)⌒|    !゙   /・\ /・\i/      |/. /・\ /・\ヽ
⊂ ̄ヽ___ ヽ   \__| ⊂ ̄ヽ_ |  :::⌒(__人_)⌒⊂ ̄ヽ_ | ::::⌒(__人_)⌒:: |
  <_ノ_    ヽ_    _/ <_ノ_. \     \__|  / .<_ノ_ \ ´ \__|  ノ  い〜ひっひw
   
0891デフォルトの名無しさん2012/01/11(水) 16:39:16.14
型宣言が厳密だと、代入ミスを間違えない利点はあるな。
宣言するのが面倒でもあるが。
0892デフォルトの名無しさん2012/01/13(金) 13:03:35.56
ドカタってこのレベルのプログラムも書けないってマジ?
なるほど低年収なわけだ

http://www4.atwiki.jp/fsharpmaster/pages/24.html
0893デフォルトの名無しさん2012/01/13(金) 15:23:08.59
http://ideone.com/v1qlC
こんなかんじ?
0894デフォルトの名無しさん2012/01/13(金) 15:58:24.44
>>892
読解力が低い君が言うべきじゃないだろ

にしても、こういうロジックになると関数型って面白いソースになるなぁ
0895デフォルトの名無しさん2012/01/13(金) 16:32:44.24
大抵の関数型言語のコードは既出らしいのでPythonで

男はfilterを使わない
http://ideone.com/1HDH0
0896デフォルトの名無しさん2012/01/13(金) 16:50:15.95
おまえら馬鹿だな
"生産性"を問われてるんだから
全部のアルファベット列挙してから
AAGが含まれるものだけを表示したんじゃだめなんだよ
最初からAAGを含んだ文字列だけを生成するのが正解


0897デフォルトの名無しさん2012/01/13(金) 16:57:48.57
>>896
>>895のコードはそうなってる
0898デフォルトの名無しさん2012/01/13(金) 17:07:13.16
ああごめん
そうだね
>>893 見て脊髄反射した
0899デフォルトの名無しさん2012/01/13(金) 18:05:16.68
DNA + 生産性だと生殖でもしないといけないのかと思えてくる。
0900デフォルトの名無しさん2012/01/13(金) 19:13:08.49
じゃはなっからAAGで始まる文字列にすればいいな。
0901デフォルトの名無しさん2012/01/13(金) 20:11:22.95
>>900
AAGで始まる文字列を列挙するのと
AAGを含む文字列を列挙するのでは
全然違うだろ
0902デフォルトの名無しさん2012/01/13(金) 20:36:02.28
F#でfilterを使わずに(>>896方式で)実装
http://ideone.com/vXGF2
0903デフォルトの名無しさん2012/01/13(金) 20:38:57.38
>>895
lかrかどちらかにAAGが含まれる時は一方を枝狩りしてやらないとn = 6以降で重複が出てくるよ
俺もこのやり方を使ってHaskellで組んだんだけど同じ失敗をしたからわかる
0904デフォルトの名無しさん2012/01/13(金) 20:58:41.84
>>901
そうか?nが三以上ときまってんだから、最初に"AAG"入れて以外をlやrにするロジックのほうがいいんでない?
0905デフォルトの名無しさん2012/01/13(金) 21:05:06.66
AAGの左右に生成したものをくっつけるというのは
AAGを含む文字列strについて
∃l r. l + "AAG" + rが成り立つものとしてみる見方
んでlとrをスコーレム化で取り出してやってそれに対する制約を書くっていう
0906デフォルトの名無しさん2012/01/13(金) 21:18:25.11
>>903
重複が出るのはやっぱり不可なんだろうか。
0907デフォルトの名無しさん2012/01/13(金) 21:22:04.55
不可なんだ
0908デフォルトの名無しさん2012/01/13(金) 21:47:30.48
問題文のどこに重複不可だと書いてあるの?
エスパーですか?
0909デフォルトの名無しさん2012/01/13(金) 21:54:25.85
重複不可でなかったら無限に出力し続けてもいいのか。
0910デフォルトの名無しさん2012/01/13(金) 22:01:42.15
topcoderみたいなやつだと重複ありと無しが撃墜されるか否かを決めたりするんかな
09118952012/01/13(金) 22:03:57.73
>>903
なるほどバッチリミスってたわ

とりあえずsetを使うとお手軽に重複を刈れるけど、
ちゃんとlやrに対して枝刈りするのが良いよな
http://ideone.com/BSvSe
0912デフォルトの名無しさん2012/01/13(金) 23:59:25.13
野田改造内閣に早速疑惑浮上

@aritayoshifu 有田芳生
捜査当局が内偵を続けている農水疑惑。詳細な怪文書まで出回っている。3億円の
行方はどこに?

@minorucchu ジャーナリスト 田中稔
野田改造内閣を揺るがす、農水省3億円スキャンダルの怪文書。二人の議員名が浮上。
34分前 webから
https://twitter.com/#!/minorucchu/status/157687110562881537

鹿野と筒井らしい
自公は問責も視野に調査開始だって
0913デフォルトの名無しさん2012/01/17(火) 10:53:50.71
2012年1月は、C#がC++を抜いて3位につけたことが特に注目される。C++は長期に渡って
緩やかな下落傾向にある一方で、C#は上昇傾向が続いており、特にここ数年は上昇傾
向が強くなっている。

今後しばらくは、C#とC++で順位の入れ替えを繰り返すものと見られるが、最終的には
C#が3位、C++が4位に落ち着く可能性が高い。また、Objective-Cも急成長を続けており、
この傾向が続いた場合には、C#、Objective-C、C++という順位に変わっていく可能性もある。

上記のほか20位以内に入ったプログラミング言語としては、Rが19位に、Luaが20位に
入った点が注目される。

特に、統計処理や統計データのグラフィック化などに利用されるRプログラミング言語は、
ここのところ注目が高まっている。Rの機能拡張が、Googleの支援によって実現したこと
などもその一因となっているものとみられる。

 1 Java       17.479 (-0.082) 18ヵ月連続1位
 2 C         16.976 (-0.081)
 3 C#         8.781 (+0.576) 3位へ浮上。上昇傾向
 4 C++.        8.063 (-0.189) 4位へ下落
 5 Objective-C   6.919 (+0.114) 上昇傾向
 6 PHP        5.710 (-0.291) 下落傾向
 7 (Visual)Basic  4.531 (-0.226)
 8 Python.      3.218 (-0.274)
 9 Perl.        2.773 (+0.301)
10 JavaScript    2.322 (+0.123)
11 Delphi       1.576 (+0.331)
12 Ruby.        1.441 (-0.053)

http://news.mynavi.jp/news/2012/01/12/058/
0914デフォルトの名無しさん2012/01/22(日) 19:13:38.51
http://awabi.2ch.net/test/read.cgi/poverty/1327050821/3
0915デフォルトの名無しさん2012/01/22(日) 19:17:17.19
検索エンジンのヒット数なんかじゃなくて、案件の数で算出できねえかなあ
趣味でしか使われないなら意味がない
0916デフォルトの名無しさん2012/01/22(日) 20:29:51.91
>>915
そんな事をしたらドカタ言語が常に上位にくるな。
0917デフォルトの名無しさん2012/01/22(日) 20:32:30.55
多分fcobolがトップだ
0918デフォルトの名無しさん2012/01/22(日) 21:03:17.25
LLバトルスレからコピペ

http://www.seprogrammerjobs.com/job_keyword.php

> Java (629)   PHP (420)   C (268)   C++ (260)   JAVAScript (236)
> SQL (228)   C# (210)   HTML (209)   Perl (196)   PL/SQL (166)
> Visual Basic (160)   Cobol (155)   ASP (132)   Ruby (119)   VBA (112)
> XML (91)   XHTML (77)   PL/I (57)   .Net (51)   Objective-C (40)
> ActionScript (31)  Pascal (30)   CHTML (26)   HDML (25)   css (24)
> Tcl/Tk (22)  Python (15)   AJAX (13)   HTML5 (11)   SilverLight (7)

国内の求人情報サイト限定でのキーワード出現数だから、こちらのほうが実情に近いと思われ
0919デフォルトの名無しさん2012/01/22(日) 21:51:44.78
PHPとJavaScriptとVBAと汎用機臭いのが上がったのと
Objective-C、Pythonがガタ落ちしたくらいか
SQLやらHTMLやらAjaxやらは、他の何かとセットなんだろうな
0920uy2012/01/23(月) 06:04:55.53
>>893
お前はrubyを舐めてないか?
http://ideone.com/JqJ3e
0921uy2012/01/23(月) 06:07:23.95
マジお前等ソースをアップするのはいいけどレベルが低すぎなんだよ

.methodsで調べられるんだから暇なときに全メソッド調べとけ

repeated_permutationと似てるイテレータはあと2種類あるからな?
調べておけよ?
0922uy2012/01/23(月) 06:19:42.23
リファレンスを暗記することは"意味のあることだ"と、だからずっと言ってきたんだよ

マジこのレベル仕事して、プログラマ名乗ってんのかな・・・・・
はぁ。。。。
0923uy2012/01/23(月) 18:01:40.06
返す言葉も・・・ないって感じか・・・

permutation
repeated_combination
repeated_permutation


それぞれの挙動

調べておけよ・・・・・・・・・・・・・・・
0924デフォルトの名無しさん2012/01/23(月) 22:18:56.26
このスレ開いたやつはこれ見に来たんだろ

■伝説のPHP作者「Rasmus Lerdorf」名言集を聞くと嫌PHP厨がファビョる

・今のPHPを作ったのは、何十人もの開発者ですよ。私は1人目の開発者だったに過ぎません。

・問題を解くのが好きなだけで、プログラミングは大嫌いです。

・いかにプログラミングを避けるかを考えていたら、コードを再利用するためのツールとしてPHPができました。

・PHPは、歯ブラシみたいなものですね。毎日使うものですけど、だから何でしょう?誰が歯ブラシの本なんて読みたがります?

・パーザを書くのは苦手です。本当にダメなんです。今でもね。

・PHPには「protected属性」も「仮想メソッド」もありますよ。情報学科の教官が「重要だ」っていうやつは何でもね。僕自身は、こんなものどうでもいいと思ってますけど。

・プログラミングを好む人がいるのは知ってますが、全く理解できないですね。

・僕はホンモノのプログラマではありませんから、やっつけ仕事ですよ。ホンモノのプログラマは、「動いてるように見えるけど、メモリリークだらけじゃないか。直す必要があるかもね」なんて言うでしょう?僕なら、10リクエストごとにApacheを再起動しますね。

・いえ、メモリリークはちゃんと気をつけてますよ。でも、プログラミングってほんとクソだなと思いますね。

・プログラミング言語を作るつもりはありませんでした。どうやって作るのかも知りませんし。論理的に必要だと思われるものを足していっただけなんです。

・僕の発言に怒ってる人がいるようですね。僕がプログラマとしてひどいのは認めますけど、でも、多分あなたたちよりマシだと思いますよ(笑)。
0925デフォルトの名無しさん2012/01/24(火) 11:09:26.04
意識の高い言語設計者語録
0926デフォルトの名無しさん2012/01/25(水) 03:13:29.13
無言になるよなそりゃ
0927デフォルトの名無しさん2012/01/26(木) 02:07:22.19
>>924
ハッカーとしてすばらしい思想の持ち主だな。
彼にとってはPHPはツールであってプログラミング言語ではないんだろう。

VBAみたいなもんで、ちょっとしたものを作るならPHPも便利だと思うよ。
プログラミング言語じゃないから板違いだけどね。
0928デフォルトの名無しさん2012/01/26(木) 08:10:49.64
> 彼にとってはPHPはツールであってプログラミング言語ではないんだろう。

弘法は筆を選ばず、というのが大嘘って知らないの?
打ったら釘が曲がるとんかち、挽いたら曲がって切れるノコギリを使う大工は、
ただの途方もなく下手な大工でしかありません。

そんなのを「ハッカーとしてすばらしい思想」とか冗談もほどほどに。
0929デフォルトの名無しさん2012/01/26(木) 08:11:33.51
VBAを使うハッカー
0930デフォルトの名無しさん2012/01/26(木) 08:21:14.24
ドカタは道具を選べず
0931デフォルトの名無しさん2012/01/26(木) 08:35:21.55
>>927
PHPはツールであり、プログラム言語なんだよ。
違うものの例を出せばRubyは学習用教材であり、プログラム言語。

PHPというプログラム言語でアプリは作るが
Rubyというプログラム言語は、勉強するのに使うのであって
実用にするにはちょっと互換性が低すぎる。
0932デフォルトの名無しさん2012/01/26(木) 09:01:12.48
>>931 Rubyのほうがどう見てもできの良いツールなんだがw
PHP は esolang だよ、どう見ても。

esolang だろうがハッカーは使おうと思えば使える、という意味では、
PHP はハッカーのツール、という評価はすごく正しい。
0933デフォルトの名無しさん2012/01/26(木) 09:45:55.38
>>932
出来の良いツールに仕上げるのはハッカータイプの技術者がやることではないと思うよ
0934デフォルトの名無しさん2012/01/26(木) 09:47:09.81
馬っ鹿ー
0935uy2012/01/26(木) 10:00:37.48
>>933
出来の良いツールを作って(誰でも時間かければ完成するようなもの)ドヤ顔でハッカー面してる奴だって大勢いるじゃん


Rubyは、これからも仕様変更が怖いから
仕様がもうちょっと固まるまでは、あまり大規模なものをrubyで作らないほうがいいと思ってるよ
特にお仕事で使ってる人はね

railsとかRuby1.8の時代につくったんだろうに、よくruby1.9に対応させたと思うよwwwwwww
すげーがんばったんだろうな・・・
もし2.0でも仕様が大きく変わったら開発メンバー発狂して投げると思う
なので、使い捨てスクリプトや
小規模〜中規模程度のプロジェクトで
短期しか使われないようなアプリケーションだったらrubyでもいける


俺はruby信者ではあるけれど、今ruby1.9.3を使って大規模なプログラムを書くっていうのは
後先見えてない奴のすることだと思ってる
0936デフォルトの名無しさん2012/01/26(木) 10:59:34.26
客家は出来が良かろうが悪かろうが
使えるものは何でも使うんだよ
劣悪な環境でもどんな手段だろうが
結果を得られるのが客家
0937デフォルトの名無しさん2012/01/26(木) 11:01:01.00
おまいらスレ違い
0938デフォルトの名無しさん2012/01/26(木) 16:32:39.95
でかいのって 普通階層設計するよね?
0939デフォルトの名無しさん2012/01/26(木) 16:41:46.19
階層設計って言葉だけで実体知らないとか?
0940デフォルトの名無しさん2012/01/26(木) 17:28:36.99
ウイルスを不正に作成 初摘発 1月26日 16時31分

コンピューターウイルスを不正に作成して、知り合いの男性のパソコンに感染させたとして、
大阪の28歳の男が逮捕・送検されました。ウイルスを不正に作成した罪は、去年、新たに設けられ、摘発は全国で初めてです。

逮捕・送検されたのは、大阪・松原市の無職小林浩忠容疑者(28)です。
警察の調べによりますと、小林容疑者は、コンピューターウイルスを不正に作成し、去年9月、
別人を装って神奈川県の知り合いの男性にメールで送りつけて感染させたとして、不正指令
電磁的記録作成などの疑いが持たれています。このウイルスは、インターネットの掲示板に
自動的に小林容疑者を脅す内容の書き込みをするよう仕組まれていて、小林容疑者自身が
「掲示板に『家族を殺す』などと書き込まれている」と被害届を出していました。警察が
書き込み元の男性の自宅を捜索したところ、パソコンがウイルスに感染していて、小林容疑者が、
みずからウイルスを送りつけたことが分かったということです。警察によりますと、小林容疑者は、
調べに対して容疑を認めていて、掲示板の運営を巡って男性とトラブルになっていたことから、
警察は、男性を陥れようとしたとみて調べています。コンピューターウイルスを不正に作成
することは、去年6月の刑法の改正で罪に問われるようになり、摘発はこれが全国で初めてです。
0941uy2012/01/26(木) 20:14:15.74
>>936
っていう事にしていないと精神もたないところまできてんの?

最低限の努力で最大限の効果をもたらすのがそれだお
0942デフォルトの名無しさん2012/01/26(木) 23:31:24.01
>>941
>最低限の努力で最大限の効果

普通最小限って言わないか?
0943uy2012/01/27(金) 08:29:16.84
本当にマジレスすると

「病気」だよお前それ
結構プログラマには多いけど
小さな言葉の定義まで気になったらもう・・・

自然言語ってプログラム言語と違うことを学べ
0944デフォルトの名無しさん2012/01/27(金) 09:16:02.29
オレオレ用語を指摘したら病気扱いされたでごさるの巻
0945デフォルトの名無しさん2012/01/27(金) 09:25:19.61
日本語が正しく使えなくても、
他の何かに突出してるヤツとただのバカと両方いるからな。
それだけではなんともいえん
0946デフォルトの名無しさん2012/01/27(金) 09:28:12.93
941 943はただのバカの方だろう
0947デフォルトの名無しさん2012/01/27(金) 09:39:55.24
突出じゃなく凹んだほうのバカとか。
0948デフォルトの名無しさん2012/01/27(金) 10:13:20.76
バカと言うか「病気」なのかも
0949デフォルトの名無しさん2012/01/27(金) 16:47:21.14
専門用語の定義を正しく覚えられない病気ってのもあるもんだ
試験受けたことないんじゃないかな
0950デフォルトの名無しさん2012/01/27(金) 17:08:51.62
conduit
0951uy2012/01/27(金) 20:45:36.46
>>944
ダブルクオーテーションで囲って検索でもしてみれば


お前は 大小 高低 であわせないと日本語的におかしいとか思ってるんだろうけど
自然言語はプログラム言語とは違うことをさっさと学べ

じゃないといつまでたってもその病気は治らない
0952デフォルトの名無しさん2012/01/27(金) 22:20:14.73
>>951
日本語でも英語でも、正しい対の語を選ぶのが作法だよ。
ライティングの本にもよく書かれてる。
「動きゃいい」スクリプトでも作法にのっとってないのが気持ち悪いように、「意味がわかりゃいい」2chでも作法にのっとってないのは気持ち悪い。
だから、気になる自体は病気じゃないと思う。
もちろんそれをいちいち突っ込むのが意味のあることなのかは別として。
09539452012/01/27(金) 22:37:33.03
>最低限の努力で最大限の効果を
→ 少なくともこのぐらいの努力はしろよ。そうすればこんな大きな効果が!

>最小限の努力で最大限の効果を
→できるだけ少ない努力量で可能な限り大きな効果を!


ニュアンスとしたらこんな感じかな。
微妙に変な日本語を使われると話してて疲れるよねw
0954デフォルトの名無しさん2012/01/27(金) 22:46:30.85
最大限の努力とはいうのに最高限の努力とは言わない。
不思議だ。
0955デフォルトの名無しさん2012/01/27(金) 22:53:29.35
続きはこちらでどうぞ

【うゆ】uyスレ6【クソコテホイホイ】
http://kohada.2ch.net/test/read.cgi/prog/1316933376/
0956デフォルトの名無しさん2012/01/27(金) 23:03:28.66
JavaScriptの全盛のこの時代に、貴様ら何、時代遅れなことを言ってるんだ?
ダックタイピング万歳
0957デフォルトの名無しさん2012/01/27(金) 23:13:01.66
次世代JavaScript

Typed Array(型がついた配列)
http://wiki.ecmascript.org/doku.php?id=strawman:typed_arrays

2 TypeArray Objects

For each Type in the following table, a separate TypeArray constructor object, with corresponding prototype and instances as described below is available.

Type Array Name Size Description Equivalent C Type
Int8 Int8Array 1 8-bit 2’s complement signed integer signed char
Uint8 Uint8Array 1 8-bit unsigned integer unsigned char
Int16 Int16Array 2 16-bit 2’s complement signed integer Short
Uint16 Uint16Array 2 16-bit unsigned integer unsigned short
Int32 Int32Array 4 32-bit 2’s complement signed integer Int
Uint32 Uint32Array 4 32-bit unsigned integer unsigned int
Float32 Float32Array 4 32-bit IEEE floating point Float
Float64 Float64Array 8 64-bit IEEE floating point Double
0958デフォルトの名無しさん2012/01/27(金) 23:40:25.25
最低限ってのは超えるべき基準なんだよ。大小とは関係ない。
「この事業を成功させるためには最低でもこれだけの努力が必要だ」というときの最低限は結構大きい
0959デフォルトの名無しさん2012/01/27(金) 23:44:35.46
しかしその事業を成功させられる努力の中では一番小さい
0960デフォルトの名無しさん2012/01/27(金) 23:49:08.15
それはそうだな
0961uy2012/01/27(金) 23:50:10.65
病人が発狂しだしててワロタ

自分の間違いに気づいたら「ごめんなさい」と謝れる大人になりましょう
たとえ病気でも
0962デフォルトの名無しさん2012/01/28(土) 00:47:54.18
>>961
まずはお前から
0963uy2012/01/28(土) 13:36:45.10
可愛そうな奴

お前も被害者なんだよな
このすさんだIT業界に呑まれた一人の奴

俺が言えるのは、もうこれだけだよ


自分の間違いに気づいたら「ごめんなさい」と謝れる大人になりましょう
0964uy2012/01/28(土) 13:37:32.05
今、俺に謝っておけば

君は変われると思うよ

変わるべきだと、俺は言っています
0965デフォルトの名無しさん2012/01/28(土) 14:02:36.23
まずはお前から
0966デフォルトの名無しさん2012/01/28(土) 19:09:01.18
ちくわ大明神
0967uy2012/01/30(月) 10:20:07.05
>>965

自分の間違いに気づいたら「ごめんなさい」と謝れる大人になりましょう

やっぱり変われないか

お前が今まで吸い込んできた毒素は浄化しきれない
だったらお前死の目前にでも立った時にでも素直になれるといいな
0968デフォルトの名無しさん2012/01/30(月) 18:23:59.11
まずはお前から
0969デフォルトの名無しさん2012/01/31(火) 00:38:04.24
>>967
相変わらずの中二っぷりでほほえましいかぎりです
0970デフォルトの名無しさん2012/01/31(火) 00:54:50.89
>>967
あれだけ指摘されてもわからないのか。小学校からやり直せ
0971デフォルトの名無しさん2012/01/31(火) 16:54:05.27
>>970
どうやったら小学校にもう一回入れてもらえますか?
0972デフォルトの名無しさん2012/01/31(火) 17:53:08.07
入らなくても教科書と参考書で自習すれば十分なんじゃないの
公文とかオススメ
0973デフォルトの名無しさん2012/01/31(火) 21:04:20.76
コウブン ってなんだよ
0974デフォルトの名無しさん2012/02/01(水) 08:14:44.06
最近はKUMONとアルファベットで書く方が通りが良いのだろか
0975デフォルトの名無しさん2012/02/01(水) 09:35:56.07
漢字読めない方々の大量入国が続いてるからな。
0976デフォルトの名無しさん2012/02/01(水) 12:03:58.84
苦悶とかうんこ
Z会できれば四谷大塚ぐらいにしとけ
0977デフォルトの名無しさん2012/02/01(水) 14:09:23.75
漏れん時はTAPが強かったけど、内紛でメチャメチャになったらしいな。
0978デフォルトの名無しさん2012/02/03(金) 21:55:33.71
This thread will be about to close. What do you write message
you want to tell us?
0979デフォルトの名無しさん2012/02/03(金) 22:10:06.54
will be about to -> will be or is about to
what do you write message -> what message do you write
you want to tell us -> redundant
0980デフォルトの名無しさん2012/02/03(金) 22:14:36.99
errare humanum est
0981デフォルトの名無しさん2012/02/04(土) 00:08:41.50
omaera unko
0982デフォルトの名無しさん2012/02/04(土) 06:52:47.13
porco rosso
レス数が950を超えています。1000を超えると書き込みができなくなります。