動的言語で大規模開発

■ このスレッドは過去ログ倉庫に格納されています
1uy
垢版 |
2012/07/24(火) 09:10:42.04
たててみた
2014/11/27(木) 19:38:58.94ID:29V21Kp8
>>428
Unknown variable: Smalltark please correct, or cancel:
define new class
declare global
------------------------------------------------------
Smalltalk
SmalltalkImageTest
SmalltalkEditor
SmalltalkImage
SmallLandColorTheme
SmallInteger
SmallIntegerTest
SMAccount
SMCategory
SMPackageInstallationTask
------------------------------------------------------
cancel
2014/11/27(木) 20:07:16.47ID:p4BAxWMe
Python「ただのテキストエディタで出来そう…」
2014/11/27(木) 20:39:01.35ID:9Juu1ps5
そんなにイデの力が欲しいか
2014/11/28(金) 00:34:41.35ID:O/dyue/E
>>378
ゴロニャーン♪
2014/11/28(金) 09:07:58.51ID:8rVeLSla
>>419
動的型に慣れたら、大量に候補が出るような命名はしないし(凝集度)
typoすら発見できないようなチェッカーなんて使わずにマトモなチェッカーを使う。
あたりまえだろ?
2014/11/28(金) 09:09:59.36ID:8rVeLSla
>>422
なるほど、warningメッセージなんて読まない達人プログラマなんですね、
すごいなあw
2014/11/28(金) 09:13:52.73ID:8rVeLSla
ここまでの流れだと結論は
静的言語は初心者向け
静的言語使いは初心者
2014/11/28(金) 09:59:17.09ID:F5n5vmOV
処理系作ってる連中に学が無いから、型推論できるチェッカーひとつ作れない
で、仕方なく運用(命名規則)で回避ですか

駄目システムに苦しめられてるユーザと同じ図じゃん

なお、大規模開発ではどんな命名規則でもメソッド名が増えるため破綻する模様
2014/11/28(金) 11:02:52.12ID:MpXGAzGF
手元のSmalltalk環境には4万強のメソッドがあって
先にも言われているように、型推論付きとかそんな高尚な補完もないけど
使いたいメソッドが出てこなくて困ったことなんかないぞ。
2014/11/28(金) 17:18:45.17ID:8rVeLSla
>>436
まともな人がちゃんと作れば君のような目にはあわずにすむということじゃないかなあw
2014/11/28(金) 17:21:26.03ID:8rVeLSla
>>436
例えばどんなメソッド名の場合に型推論できないと見つからないんだい?
おもしろそうだから答えてみてよw
2014/11/28(金) 20:56:18.69ID:avPnRbje
>>437
Smalltalkで何作ってるの?
そっちが気になる絶滅危惧言語なんだが
2014/11/28(金) 21:02:53.61ID:pWSxBDFH
>>438
まともな人は遥か昔Smalltalkから逃げ出したし、現在進行形でRubyからも続々と逃げ出してるよね
2014/11/28(金) 23:32:57.83ID:5WZv/pSY
>>440
いろいろやるけど、主にWebアプリだな。
2014/11/29(土) 02:10:12.49ID:TbFyYdBX
>>437
> 使いたいメソッドが出てこなくて困ったことなんかないぞ。

コードを動かさないでだせる?
つまりアプリは動いておらずテキストエディタで書いている時。

コードを動かさないと出せないっていうのがダメなんだよね。
いろんな処理、例えば10分ぐらい処理してやっと実行される関数があったとする。

その関数の中にある条件分岐で真になるときのコード補完はできるだろうけど、
次に偽になる時のコード補完をしようと思ったら10分間待たないといけなくなる。

コードを動かさないでコード補完ができれば、待ち時間なしで
コード補完が出来るわけさ。
2014/11/29(土) 02:28:50.06ID:1aIidqiX
>>443
ごめん。要求仕様^^;がちょっとよくわからなかった。
PythonとかJavaとか>>443がよく知っている言語でいいから、
あと処理の重さは30秒くらいの適当な長さのsleepとかの代替で
どういうコードか書いてみてもらってもいい?
2014/11/29(土) 02:54:05.37ID:SuGYzpy/
>>443
オブジェクトが数値のときは数値関係のメソッドだけ補完に出せとか、そういう条件はあるの?
2014/11/29(土) 04:14:00.96ID:TbFyYdBX
>>444
じゃあJavaScriptで。

// ※aはMyClass型専用
// ただしJavaScriptは動的言語であり、aがMyClassという情報はどこにもない
function foo(a) {
 a. とピリオドを入力した時点で、MyClassが持ってるメソッド一覧が表示されて欲しい
}

これがJavaなら
void foo(MyClass a) {
 a. とピリオドを入力した時点で、MyClassが持ってるメソッド一覧が表示される
}
これと同じことをJavaScriptでやってほしい。

>>445
そりゃあるでしょw
447446
垢版 |
2014/11/29(土) 04:16:18.02ID:TbFyYdBX
当たり前だけど、a. の行にブレークポイントを置いて、
そこまで実行してからa.を出すのはなし。

その行のブレークポイントまで実行しないといけないから
時間がかかる。
2014/11/29(土) 08:00:05.38ID:fWl7Yvk9
>>446
なるほど
メソッド名を1文字も入力できないほど脳が不自由な人なんですね
かわいそうに
2014/11/29(土) 08:16:34.87ID:SO1yCwH9
>>446
MyClassのメソッド一覧ってどれぐらいのサイズ?

Smalltalkのように充実した標準ライブラリを持つ言語だと
Objectクラスだけでメソッドが488個あるから
MyClassのメソッド一覧は少なくとも500個ぐらいになって
aのクラスを特定する意味はあまりないな。

Smalltalkほどクラスライブラリが充実してないプアな言語だと
クラスを特定できるとうれしいかもしれないけど。
2014/11/29(土) 09:19:45.30ID:SuGYzpy/
補完候補が単純なalphabetical orderじゃなくて
使用頻度順を学習して上から並べてくれるやつもあるので
その反論はナンセンスじゃね?
MyClassとObjectでは使われるメソッドの頻度が違うから
2014/11/29(土) 09:23:05.48ID:1aIidqiX
>>446
ちょっと待ってよ。そういう話なの?

俺の理解では、
- 静的型言語は変数を型で縛っているから補完がやりやすい。
- 動的型言語で静的に同レベルを実現するのは理論的に不可能。

ということは議論され尽くされてるわけだから暗黙の了解としてよくて、
- だけど動的型言語でも型推論をしてある程度絞って出せるのはあるよね。
- Smalltalkにはそういうスマートな機能はないけど、あんまり困ったことないよ。

という流れがあったところに>>443 で、
- 実行はせず、テキストエディタで編集中のコードで問題なくメソッドは出せるのか?

ときたから、意図がよくわからないのでコードを示してくれと頼んだら、
- 実行をして a をを確定してからその情報を元にして補完をするのはナシで、
 静的型言語と同じように a の関連のメソッドだけしぼって出してみろ!

という要求だったので非常に驚いている。←イマココ
2014/11/29(土) 09:26:19.46ID:SuGYzpy/
標準ライブラリの大きさとObjectに数百個程度のメソッドがあることの
関係も良くわからない

標準ライブラリに少なくとも数百個もメソッドがあるんだぜスゲーってこと?
2014/11/29(土) 09:40:43.18ID:e6ORUEwd
>>449
> MyClassのメソッド一覧は少なくとも500個ぐらいになって
そんなもん、クラス直接のメソッドと
継承元のメソッドぐらい分けて表示するに決まってるだろ・・・。
2014/11/29(土) 09:50:35.80ID:SuGYzpy/
でも>>446をよく見たら、こんなお題だったのか

> function foo(a) {
> a. とピリオドを入力した時点で、MyClassが持ってるメソッド一覧が表示されて欲しい
> }

これは静的型付言語で型推論があっても補完は無理だw
2014/11/29(土) 10:17:11.39ID:e6ORUEwd
これなら型補完できるよ。これが静的言語でしょ?

> これがJavaなら
> void foo(MyClass a) {
>  a. とピリオドを入力した時点で、MyClassが持ってるメソッド一覧が表示される
> }
2014/11/29(土) 10:31:13.38ID:SO1yCwH9
>>453
へー、継承元のメソッドを分けて表示すれば解決する程度の貧弱なクラスライブラリが前提なんだー(鼻ホジホジ
2014/11/29(土) 10:34:40.20ID:7EP7sx63
>>442
商用で?
Smalltalkの処理系は?
2014/11/29(土) 10:35:24.90ID:SO1yCwH9
静的言語でやっているコーディングとかIDEの使い方をそのまま動的言語に持ち込んで「これができない」「あれができない」と喚きだす初心者を眺めるスレw
2014/11/29(土) 10:36:42.17ID:SO1yCwH9
>>457
そういう話はSmalltalkスレでどうぞ

Smalltalk総合 Squeak Pharo
http://peace.2ch.net/test/read.cgi/tech/1360991429/
2014/11/29(土) 10:39:51.40ID:e6ORUEwd
>>456
お前バカだろw
Objectにメソッドが多すぎて邪魔って話をしてるんだが。
2014/11/29(土) 10:40:48.12ID:e6ORUEwd
>>458
まあそうだね。あれができないこれができない。
たしかにそうだ。実際に出来ないもの。

で、そ、そんなのいらないんだから!
と言い返すw
2014/11/29(土) 10:57:41.26ID:MSvzZpAh
技術的には型推論と補完を両立できるかどうか考えればいいと思うけど
ここで悪足掻きしてるやつは技術より心理にこだわっているふしがある
補完よいよねというマインドをつくることしか考えてない
2014/11/29(土) 11:10:26.37ID:x5tELjcp
普通にいいだろw.
補完ができれば、それを応用して
さらにいろんなことができるようになるわけだし
2014/11/29(土) 11:16:43.56ID:SO1yCwH9
>>462
補完うんぬんは「静的型いいよね」というマインドのための道具でしかないでしょw
2014/11/29(土) 11:17:30.03ID:7EP7sx63
>>459
そんなこと言ったらこのスレが成り立たないだろ。
独立言語スレはSmalltalkだけじゃないぞ。

動的言語に貴賎はない、、、はず。
2014/11/29(土) 11:17:56.66ID:MSvzZpAh
>>463
補完するスタイルと補完しないスタイルの二種類があれば
一種類よりも多くのことができる
2014/11/29(土) 11:44:56.39ID:SuGYzpy/
補完するときにメソッド名を選択すると、引数や戻り値の型やドキュメントが
出てくれるのは凄く嬉しい

あと同じ機能を使うと、メソッドにカーソル当てたらドキュメントを出せるようになるから
コード読むのが捗りまくる
2014/11/29(土) 11:56:50.41ID:x5tELjcp
出来るできないで考えるからわからない。
どちらが楽にできるかどうかで考えよう。

そしてただ単に楽にできるかで考えるのもダメ一体何が楽ができるか。
つまり、書くのが楽か、読むのが楽か。

どちらを重視すべきかというと、書くよりも読むことが楽になるようにするべき。
なぜならプログラミングの作業の多くは書こに書いたコードを読んで修正することだから。

そういう時に、この変数は○○型であると書いてある方がいいわけだよ。
コメントに書くこともできるがそれだと実際のコードとコメントが
一致していない可能性がある。

コメントを書くよりも、コードでそれを表現するべき。
そうすれば人間もコンパイラも理解できる。

静的型がいいのは、そういう読むときの開発効率の高さにある。
2014/11/29(土) 11:59:47.15ID:x5tELjcp
なお、コード補完は、書くことを楽にしてくれる、
つまりタイピングを補助するものだと勘違いしている人が多いが、
実際は読むことを楽にしてくれている。

つまり、このオブジェクトにはどんなメソッドがあって、
そのメソッドがどんな機能、引数、戻り値を提供しているか
ということを確かめるために、ドキュメントやコードを
読むことを楽にしてくれる。

だから適切な補完が重要になる。
多すぎることもなく少なすぎることもなく
間違えることもない補完が重要。
2014/11/29(土) 12:11:58.32ID:nAAws2G7
>>446
ご説ごもっとも。
だから、こんな可哀想な動的大好き人間は放っておいて
静的型言語まんせースレに行って幸せを満喫してください。

>>462
型推論で静的解析が可能だとして
動的型として失うものはないのだろうか。
そういう議論なら有意義だと思う。
2014/11/29(土) 12:30:14.99ID:v2v5Wnkr
それ以前にさ、動的型付きとして
失ってほしくない機能って何さ?
失っても対して問題ない機能ばかりだと思うだが。
2014/11/29(土) 12:44:23.44ID:A4nuaoXO
標準ライブラリや他人の作ったライブラリの全てを記憶できる変態でも無い限り
コード補完によってドキュメントを含め表示して選択出来るってのは生産する
上ではかなりのアドバンテージなんだけどね。 大昔のクソなIDEや最近のでも
動的言語に対応しているのはクソなIDEしかないから、そういう技術の進歩を
知らない原始人には理解できないことなんだよ。
2014/11/29(土) 12:49:43.77ID:v2v5Wnkr
動的型付きにすることで失われていることのほうが多いと思う。
それで、動的型付きにしてまで守ろうとしているものってなに?
2014/11/29(土) 13:13:21.80ID:MSvzZpAh
ドキュメントについては仕様書が欲しいか具体例が欲しいかによる
ただちに必要ではないことまで書かれているのが仕様書
ある時点で必要だったことしか書かれていないのが具体例

具体例から仕様を想像できるような変態は全てを記憶ではなく推理している
2014/11/29(土) 13:24:38.99ID:U5ivpV2C
スタートダッシュと試行錯誤じゃないの
軌道に乗ったら捨てて作りなおせばいいのよ
2014/11/29(土) 13:24:42.22ID:7EP7sx63
>>472
コード補完で出てくるドキュメントなんて知ってるメソッドなら役に立つが
知らないメソッドをそれだけでなんとかしようなんて無理だがや
2014/11/29(土) 13:54:58.03ID:A4nuaoXO
>>476
javaならソースに書かれているjavadocが出る。いわゆるAPIリファレンスと
言われるものが表示される。visual stadioだとmsdnに書いてあるのが出る。
APIリファレンスが役に立たないとか言っちゃうような無能はプログラムを
書くのを辞めたほうがいい。

javadocが出たことによって他の言語でもソースに埋め込んだコメントを
別ドキュメントに言語の標準かそれに近いレベルで提供されることが多く
なった。ただ別ツールを使ってまでドキュメントを出力するようなところは
殆ど無かったけど、IDEで自分や他人の書いたドキュメントまで手元で
参照できるようになったことで、どのレベルでコメントを書けばよいうかと
いうことに気づけた人はそれなりにいるかと思う。

書かないと煩く言われるから書くというのから、自分で書いたコードでも
元のコードを見なくても分かるように書くというのに変われた人は多いと
思います。最低でも自分で書いたコードを自分の為にというのがやり
やすくなった。
2014/11/29(土) 14:00:18.54ID:A4nuaoXO
そういえばvisual studioだとサンプルコードを検索ダウンロード出来る機能まで
付いたんだっけかな。
2014/11/29(土) 14:06:58.21ID:7EP7sx63
>>477
javadocは、どの程度のが出るかしらんが、Visual Studioで出るような
サマリーだけじゃ役に立たんがね。

IDEで出るのはあくまでも補助的なもんで、ちゃんとしたAPIのドキュメントは
msdn見ないと駄目だろ。APIの注意書きとかサンプルコードとかはIDEでは出ないだぎゃー

最近のVisual Studioは、msdnの全文が出るんけ?
底辺土方なんで最新版は知らんのじゃ〜
2014/11/29(土) 14:07:50.21ID:7EP7sx63
>>478
マジか?
随分と進歩したもんじゃの
2014/11/29(土) 14:13:44.81ID:v2v5Wnkr
>>479
> javadocは、どの程度のが出るかしらんが、Visual Studioで出るような
> サマリーだけじゃ役に立たんがね。

サマリーでも役に立つと思うし、リンクになってるから
ヘルプ調べるのも速くなるんだが?
2014/11/29(土) 14:25:05.29ID:7EP7sx63
>>481
そういうIDEのヘルプ機能よりもGoogle先生のが役に立つ
Google先生とIDEのインテリセンスが無いとプログラムの生産性が著しく落ちるw
2014/11/29(土) 14:33:59.73ID:A4nuaoXO
>>479
ttp://docs.oracle.com/javase/8/docs/api/index.html
どのレベルも何も↑の各クラス、メソッドのがそのまま出るんだが。
これは英語だが、日本語訳のがある場合はそっちを使うことが出来る。
で、ここに書かれていなくて他に書かれているというドキュメントは存在しない
わけで、ググってどこにも無ければこれに頼るしか無い。 このリファレンスが
分からない役に立たないっていうやつは少なくてもjavaはやらないほうがいい。
2014/11/29(土) 14:36:32.05ID:v2v5Wnkr
>>482
初心者に多いね。一次ソースを見ないで、
個人のブログとかみるやつ。
英語読めないからとかなのかな。
2014/11/29(土) 14:37:24.55ID:v2v5Wnkr
で、そんな話はいいとして、動的型付け言語が
動的型付けにしてまで守ろうとしているものって何よ?
2014/11/29(土) 14:38:14.93ID:Tl+PW+FS
動的言語でも変数aをMyClass型と教えればメソッド一覧は出せるだろ
2014/11/29(土) 14:39:37.78ID:v2v5Wnkr
>>486
それで、aがMyClassだっていうのは、
人間がいちいち教えてあげるの?

aが絶対MyClassだっていうのなら
それをコードに書いておけばいいのに・・・。
2014/11/29(土) 14:40:07.50ID:SO1yCwH9
その問い自体が静的目線だってのw
視野が狭いなあw
2014/11/29(土) 14:40:46.54ID:Tl+PW+FS
いちいち変数を宣言して型を指定するのとかわらないと思う
2014/11/29(土) 14:42:05.95ID:v2v5Wnkr
その都度、MyClass型って教えないといけない手間がかかるのと
コードに仕様として書いておけるのの違いだね
2014/11/29(土) 14:42:13.42ID:SO1yCwH9
補完候補を500に絞り込むためだけに、aがMyClassのインスタンスでないと動かないような腐れコードにするわけか
ご苦労さまなこってw

こりゃ世の中からクソコードがなくならないわけだw
2014/11/29(土) 14:43:48.06ID:v2v5Wnkr
> 補完候補を500に絞り込むためだけに
補完候補を500ってなんのこと?
動的型付けだと、その500を全て覚えてるの?
意味がわからないね。
2014/11/29(土) 14:45:30.32ID:TZOpdCpR
型を書かなくても a = MyClass() や、さらにいえば
foo(MyClass()) のようなコードがあるだけでも>>446は補完できる様になる
2014/11/29(土) 14:46:28.99ID:v2v5Wnkr
逆に言えば、そういうコードがなければ
補完できないという意味である。

例えば関数の引数。これは補完できない。
2014/11/29(土) 14:48:16.54ID:Tl+PW+FS
補完ってそこまで重要か
動的言語支持者の揚げ足をとるためには必要かもしれないけど
単語単位補完で十分通用してる
2014/11/29(土) 14:49:08.68ID:v2v5Wnkr
型を書かなかったら a = MyClass() と a =YourClass()の両方があったら
補完がめちゃくちゃになる。
foo(MyClass()) と foo(YourClass()) のようなコードがあると
>>446の補完は使い物にならなくなる。
2014/11/29(土) 14:51:15.51ID:v2v5Wnkr
>>495
> 補完ってそこまで重要か

重要ですよ。

開発効率がぜんぜん違う。

・タイプ数の省略
・うろ覚え(引数の順番程度)でヘルプを引くことの省略
・ヘルプを開く場合でもその手間の省略
・コードのミスを実行せずに知ることが出来る
・リファクタリング時に自動で安全にできることが多くなる。

これらはいらないんだ!って言うかもしれないが、
それは開発効率が大きく高まることを否定する言葉じゃないからね。
2014/11/29(土) 14:54:43.83ID:TZOpdCpR
>>494
引数に型が書いてなくても、実際に関数を使ってるコードがあれば
引数に入れられた値から型推論できるよねって話なんだけど
2014/11/29(土) 14:55:43.43ID:rjWp6DMr
単語単位補完って、単にタイプ数を
少し省略することしかできないからね。
しかも補完した結果が間違っていることがある。

動的型付けにおける補完の効果って
その程度しかできないし、その程度のことしか知らないから
静的型付け言語でもその程度のことだと思ってる人が多いんだよ。

ぜんぜん違う。静的型付け言語であれば補完は
タイプ数削減以上に大きく開発効率を上げることが出来る。

明らかに開発効率を上げると証明された。
動的型付けで開発効率を上げることは出来るのか?
動的型付けにしてまで守ろうとしているものはなんなのか?
2014/11/29(土) 15:00:38.05ID:rjWp6DMr
>>498
いや、だからなければ型推論できないでしょ。
「実際に関数を使ってるコード」の方が間違っていたら
補完も間違うわけよ。foo(MyClass())って使わないといけない時に
foo(YourClass())って書いてしまったら、補完もそれに合わされてしまう。

それにさ、人間の問題はどうなるのさ?

function foo(a) {} ってコードをいきなりみせられて
aは何型でしょう? ってクイズ?(笑)

リーダブルコードってわかるかな?
ライタブルコードってはいわないんだよ。

重要なのは読む時。読む時に必要な情報が欠けてる。
もしくは間違ってる。そんな信用出来ない状態では開発効率は大きく下がるよね。

で、動的型付け言語は開発効率下がると証明されたが
あがる理由は何かあるのか?
2014/11/29(土) 15:11:36.58ID:TZOpdCpR
>>500
それは void foo(YourClass a) って間違えても同じだよね

それにクイズってなんの話?IDEがあればドキュメント見れるでしょ?
2014/11/29(土) 15:14:22.47ID:Tl+PW+FS
動的言語の方がコード量が減るから大規模になりにくい
短期記憶に入りやすいから効率も上がる
静的に見て機械的に処理しやすいのは静的片付け言語だけど
2014/11/29(土) 15:14:41.06ID:HSRgXQQV
> それは void foo(YourClass a) って間違えても同じだよね

定義は一箇所。

使う場所は沢山。

一個でも間違えたらどちらが正しいかわからなくなる。
2014/11/29(土) 15:16:15.20ID:HSRgXQQV
>>502
> 動的言語の方がコード量が減るから大規模になりにくい

重要なのは、タイプ量ではなくて読む量なんだよ。

動的言語のコード量が減るってようするに、
コードを理解するための情報が減るから
コードが読めなくなる。

少なければいいってもんじゃないんだよ。
2014/11/29(土) 15:17:16.14ID:Tl+PW+FS
少なければいいよ
機械がコードを読み書きするんじゃなくて人がするんだから
2014/11/29(土) 15:18:12.01ID:TZOpdCpR
>>503
型検査でエラーになるから分かるでしょ

エラーにならないならMyClassとYourClassは型レベルで互換性あるってことだし
2014/11/29(土) 15:20:19.64ID:HSRgXQQV
動的型付け言語では、コードを理解するための情報(定義)が減って、
実行するコード自体の量は静的型付けでも動的型付けでも変わらない。

たとえて言うならば、
文章の枠外にある注釈を書いているのが静的型付け言語で
同じ文章でありながら、枠外の注釈を取り除いたのが動的型付け言語

注釈があればいきなり変数が出てきても、これは○型だってわかるが、
注釈がなければ、この変数に値入れてるのどこだよ。
この関数を使ってるのはどこだよと

注目して呼んでいる所以外の情報を探してこなければいけない。
2014/11/29(土) 15:22:35.61ID:MSvzZpAh
>>503
これは面白い
頻度が少ない方に権威があるという不思議なルール
2014/11/29(土) 15:24:39.97ID:HSRgXQQV
>>506
無理だよ。

例えばMyClassにhogeというメソッドがあって、YourClassには無いとする。

これをfoo(MyClass()) と foo(YourClass())に渡した所でエラーにならない。
fooの中でhogeを呼び出しているから、YourClassを渡している所が間違いだ!と
思いきや、

動的にYourClassにhogeメソッドを追加するかもしれないから
エラーとは言い切れない。

つまりエラーと出る箇所はすべて、エラーではないかもしれない。
2014/11/29(土) 15:26:57.07ID:HSRgXQQV
>>508
そりゃそうだろw

たった一回気をつけてかいたものと何十回も書いたもの、
どちらが間違えやすいかなんて考えるまでもない。
2014/11/29(土) 15:37:19.95ID:TZOpdCpR
>>509
動的言語の話なら、動的にメソッド追加されるケースは多くないからワーニングを出してもOKでしょ
さらにmethod_missingが定義されてる時はワーニングを出さないという工夫もできる
2014/11/29(土) 15:44:49.77ID:TZOpdCpR
動的にメソッドを追加するケースは少ない => 補完や型検査は動的言語でも有効
動的にメソッドを追加するケースが多い => 動的言語って凄く便利だね
2014/11/29(土) 15:49:50.99ID:HSRgXQQV
>>511
> 動的言語の話なら、動的にメソッド追加されるケースは多くないからワーニングを出してもOKでしょ

俺がいいたいのはそれだよ。動的にメソッド追加されるケースは多くないのに
そのために多くのメリットを捨てるだけの意味が動的型付け言語にあるのかってこと。
2014/11/29(土) 15:58:27.80ID:SO1yCwH9
>>497
>・タイプ数の省略

つまりタイプ数を省略するために
オブジェクトが持つメソッド数が僅かしかないような
ゴミみたいなライブラリを使わされるのはいやだなあ

>・うろ覚え(引数の順番程度)でヘルプを引くことの省略

補完以外にもいろいろな手段があるが?

>・ヘルプを開く場合でもその手間の省略

補完以外にもいろいろな手段があるが?

>・コードのミスを実行せずに知ることが出来る

実行すればわかることを、いちいち型として書いた上に
コードに余計な制約をつけるなんて愚の骨頂だろw

>・リファクタリング時に自動で安全にできることが多くなる。

くだらない。リファクタリングが始まったのは動的言語からだし、
リファクタリングをIDEの機能に統合したのも動的言語から。
で、補完を使うことで、可能なリファクタリングが増えるなんて初耳なんだが?

やはり静的脳で動的言語を見て「あれが欠けてる」「これが欠けてる」と言っているだけだねw
まずは自分の視野の狭さをなんとかしたら?
2014/11/29(土) 16:02:07.42ID:SO1yCwH9
補完君の要約
「ぼくがジャバでプログラムを書くのと同じやり方ができない動的言語なんて使えない」
2014/11/29(土) 16:55:08.72ID:SO1yCwH9
補完君の最大の勘違いは、
動的言語はa.と入力して出てくるメソッド名を絞り込めない
と思い込んでいること。

実際には、動的言語ではa.と入力して出てくる膨大なメソッド名の
どれでも正当なプログラムを構成し得る。
だからその膨大な候補リストは既に十分絞り込まれたもの。

ただ、静的脳の小さな容量では言語のポテンシャルが高すぎて
マトモに使いこなせない。かわいそうに。
2014/11/29(土) 20:03:41.93ID:o/hS6qzS
補完必須派に訊きたいんだけど
コンパイル時ダックタイピングともいわれる構造部分型
http://igeta.cocolog-nifty.com/blog/2008/05/subtyping.html
をサポートする静的型言語のときは、どういう候補を出すのが正解?

これがわかると、動的型言語の補完がどうあるべきかの指標になるんでは。
2014/11/29(土) 21:05:19.38ID:7EP7sx63
>>484
オレオレOOなヤツに多いね。
自分の足りないオツムと一次ソースだけでプログラミングするやつw

個人ブログとかStackOverflowから良いコードがあればパクるのが良いねえ。
もちろん後から一次ソースで確認はする。
オレ様のゆるいオツムでは思いつかないようなクールなコードが世の中には沢山あるぞw
2014/11/29(土) 22:22:32.23ID:fN3BW3ns
>>514
リファクタリングでできることは
静的型付け言語の方がとっくに多くなってるんだよ。

始まったのは動的型付けからって
単に懐古厨なだけだろ。昔はなってw

最新のリファクタリング技術がどうなっているかを知ると驚くぞ。
http://nanananande.helpfulness.jp/wp-content/uploads/sites/2/2014/06/3164/1b000175b814e923b2ddeebcadbf4154-159x300.png

それに対して動的型付けの話って
昔の話しか出てないだろ。
2014/11/29(土) 22:25:49.85ID:fN3BW3ns
>>516
> 補完君の最大の勘違いは、
> 動的言語はa.と入力して出てくるメソッド名を絞り込めない
> と思い込んでいること。

なにマッチ・ポンプしてるんだよw

静的型付け言語では最初から絞り込めるよな?

で、動的型つけ言語は500もメソッドが出る。(ドヤっ)
そんなにたくさん候補が出たら大変だろ!(ドヤっ)

って言っておいて、今度は、

動的型つけ言語でも絞り込める時もある(ドヤっ)

ですかw

うん、大変だね。静的型付け言語では最初から絞り込めるよ?
2014/11/29(土) 22:48:51.18ID:SuGYzpy/
>>520は勘違いしているよ

>>516が言っているのは、数値オブジェクトに対して
文字列のメソッドを呼び出して実行時エラーになっても、
それは言語仕様上は正当なプログラムであるということだよ

もちろん言語仕様上正当であることは、バグじゃないことを意味しないけどね
オブジェクトの型に無関係なメソッド呼び出しは大抵バグだろう
2014/11/30(日) 00:47:09.72ID:mFsly3WX
>>517
>これがわかると、動的型言語の補完がどうあるべきかの指標になるんでは。

なぜ構造的部分型が補完の指標になりえるのか、
その理由というか関連性が説明してごらん
単なる思いつきじゃねえの?

少なくとも >>517 のリンク先blog記事では
「構造的部分型付けは公称的部分型付けとダックタイピングの間に位置する」あるいは
「構造的部分型付けは公称的部分型付けとダックタイピングとのハイブリッドである」
と主張しているけど、こんな奇妙な話は聞いたことが無い
しかも記事のネタになったソース(学術的文献)が書かれていないし、
英語版 Wikipedia の Subtyping のページでも
duck tying との関連性に対する文章に対して "citation needed" と指摘されている
おまけに記者は構造的部分型付けをサポートする言語(OCaml)を使った事が
一度も無いと正直に告白している

このblog記事はあくまで記者が型システムを勉強する過程で書き残したノートであって、
この記事を引用して >>517 が何を言いたいのか、自分には意味不明だね

なお、動的型付け言語に(形式的な型推論を基礎とした)静的型付けを導入した概念は
Soft Typing と呼ばれている
動的型付け言語の補完を検討する指標となる可能性があるのは、
どちらかといえば Soft Typing ではないかと思うね
523522
垢版 |
2014/11/30(日) 00:49:19.68ID:mFsly3WX
細かいけど訂正

X: その理由というか関連性が説明してごらん
O: その理由というか関連性を説明してごらん
2014/11/30(日) 00:51:32.07ID:uxHSis3U
ガアガアとなく人間は
アヒルである。

ダックタイピング
2014/11/30(日) 01:04:21.57ID:360iudbJ
>>519
昔の時点ですでに相当できてたって話もあるぞ。

http://web.archive.org/web/20090130061934/http://www.refactory.com/RefactoringBrowser/Refactorings.html
2014/11/30(日) 01:17:26.21ID:uxHSis3U
>>525
同じぐらい"昔"である2009年の記事出していい?Eclipse+Javaの世界の話
http://www.ibm.com/developerworks/jp/opensource/library/os-eclipse-refactoring/
2014/11/30(日) 09:02:17.22ID:360iudbJ
>>526
すまん2001年の登場当初のを貼るつもりだった。

http://web.archive.org/web/20010514165503/http://www.refactory.com/RefactoringBrowser/Refactorings.html
2014/11/30(日) 09:53:30.32ID:uRzHHhxu
520を読むと516が言う通り補完君は動的型がまるでわかってないことが明白だ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況