探検
動的言語で大規模開発
■ このスレッドは過去ログ倉庫に格納されています
1uy
2012/07/24(火) 09:10:42.04 たててみた
396デフォルトの名無しさん
2014/11/25(火) 05:48:58.67ID:0npMaebU 最近追ってなかったけど
pythonは型アノテーション導入の話題もあるのな。
pythonは型アノテーション導入の話題もあるのな。
397デフォルトの名無しさん
2014/11/25(火) 20:38:28.15ID:NsP7IFUt やっぱ大規模開発には静的型があった方が
良いんだろうな
良いんだろうな
398デフォルトの名無しさん
2014/11/25(火) 23:51:15.09ID:n1duvf0w >>397
typoですら動かすまで見つけれないのは地味にストレスだからな。
typoですら動かすまで見つけれないのは地味にストレスだからな。
399デフォルトの名無しさん
2014/11/26(水) 04:22:00.60ID:zFnj+88g400デフォルトの名無しさん
2014/11/26(水) 05:14:33.37ID:iOq+FlWm >>399
動的言語は、typoを実行前に発見できないほうが多いよ。
発見できないパターンはこれ
obj.f00 (fooの間違い)
オブジェクトのメソッドのメソッド名を間違えた時
ほぼ全ての動的言語は、実行するまでtypoを発見できない。
なぜなら後で動的にメソッドを追加するかもしれないから
実行するまでわからない。
動的言語は、typoを実行前に発見できないほうが多いよ。
発見できないパターンはこれ
obj.f00 (fooの間違い)
オブジェクトのメソッドのメソッド名を間違えた時
ほぼ全ての動的言語は、実行するまでtypoを発見できない。
なぜなら後で動的にメソッドを追加するかもしれないから
実行するまでわからない。
401デフォルトの名無しさん
2014/11/26(水) 05:24:10.98ID:iOq+FlWm 動的言語だとtypoがわかると言っても
ローカル変数程度なんだよね。
そんな近くにある目で見てもすぐわかるようなものより
ファイルをまたいだりしている遠くにあるコードの
typoを知りたいんだが。
ローカル変数程度なんだよね。
そんな近くにある目で見てもすぐわかるようなものより
ファイルをまたいだりしている遠くにあるコードの
typoを知りたいんだが。
402デフォルトの名無しさん
2014/11/26(水) 08:52:45.01ID:IUNEYOWi403デフォルトの名無しさん
2014/11/26(水) 10:27:57.07ID:lFXPwW0W >>400
その理屈はなんかおかしいぞ。
後で動的にメソッドが追加されるかもしれないから
typoかどうか実行時まで*処理系側では*判断できない
というだけの話。
書いている人間様はそれがtypoかどうかは容易に判断できる(気づきさえすれば)。
だから、パーズ・コンパイル時に単に未定義だと文字通りワーニングを出せばいい話で、
実際そういう機能を持つ処理系やIDEは1980年代のSmalltalkから普通にある。
typoでたまたま他の既存のメソッド名とかぶってしまった場合に、
型でtypoかどうか判断可能という主張ならまだわかる。
その場合でも、型まで一致していたら静的型言語でもお手上げだ。
その理屈はなんかおかしいぞ。
後で動的にメソッドが追加されるかもしれないから
typoかどうか実行時まで*処理系側では*判断できない
というだけの話。
書いている人間様はそれがtypoかどうかは容易に判断できる(気づきさえすれば)。
だから、パーズ・コンパイル時に単に未定義だと文字通りワーニングを出せばいい話で、
実際そういう機能を持つ処理系やIDEは1980年代のSmalltalkから普通にある。
typoでたまたま他の既存のメソッド名とかぶってしまった場合に、
型でtypoかどうか判断可能という主張ならまだわかる。
その場合でも、型まで一致していたら静的型言語でもお手上げだ。
404デフォルトの名無しさん
2014/11/26(水) 10:37:02.67ID:IUNEYOWi typoっつーか、メソッド名を補完してたら
ウッカリ同じprefixの別のメソッド呼んじゃってた事はあるよ
でも、その間違ったメソッドが引数の型や数、戻り値の型まで一致してたことは一度も無かった
ウッカリ同じprefixの別のメソッド呼んじゃってた事はあるよ
でも、その間違ったメソッドが引数の型や数、戻り値の型まで一致してたことは一度も無かった
405デフォルトの名無しさん
2014/11/26(水) 12:07:39.14ID:lFXPwW0W >>404
補完なら、ふつう型が一致してなかったらそもそも候補に出てこないし、
まして「呼んじゃって」(つまりコンパイルが通って実行される)なんてことは
ウッカリだろうが何だろうが基本ないことだと思うけど?
補完なら、ふつう型が一致してなかったらそもそも候補に出てこないし、
まして「呼んじゃって」(つまりコンパイルが通って実行される)なんてことは
ウッカリだろうが何だろうが基本ないことだと思うけど?
406デフォルトの名無しさん
2014/11/26(水) 12:29:05.12ID:jMc4tHhg407デフォルトの名無しさん
2014/11/26(水) 12:35:38.39ID:lFXPwW0W408デフォルトの名無しさん
2014/11/26(水) 12:59:25.21ID:jMc4tHhg409デフォルトの名無しさん
2014/11/26(水) 17:49:47.93ID:jGVOTHDh rubyのto_sとか?
410デフォルトの名無しさん
2014/11/26(水) 20:45:29.26ID:zFnj+88g >>408
へー、どの動的型付言語が言語仕様で「型」という概念が定義されているんだい?
へー、どの動的型付言語が言語仕様で「型」という概念が定義されているんだい?
411デフォルトの名無しさん
2014/11/26(水) 20:48:18.16ID:zFnj+88g 動的型付言語を使っていて型が違うのにとか型で補完できればとか言ってる人は動的型付言語の初心者。
動的型付言語を単に型宣言しない静的型付言語として使っているだけ。
動的型付言語を単に型宣言しない静的型付言語として使っているだけ。
412デフォルトの名無しさん
2014/11/26(水) 22:06:07.76ID:jGVOTHDh 初心者
413デフォルトの名無しさん
2014/11/26(水) 22:45:02.52ID:A6eFHCKj414デフォルトの名無しさん
2014/11/26(水) 22:49:59.27ID:HWidBYzd >>410
a = 1
a = "a"
a = true
一行目のaの値は数値型で二行目で文字型に変り三行目でBoolean型に
なるってことで型が無いように見えて値にはちゃんと型があると言いたいんでしょ?
a = 1
a = "a"
a = true
一行目のaの値は数値型で二行目で文字型に変り三行目でBoolean型に
なるってことで型が無いように見えて値にはちゃんと型があると言いたいんでしょ?
415デフォルトの名無しさん
2014/11/26(水) 22:52:09.61ID:HWidBYzd 柔軟だがバグの元にはなりそうだ
416デフォルトの名無しさん
2014/11/26(水) 23:01:03.31ID:gCulqy1V 重要なのは値に型があることではなくて変数に型があること。
変数に型があるからこそ、その変数の型のメソッドは何かがわかる。
変数に型があるからこそ、その変数の型のメソッドは何かがわかる。
417デフォルトの名無しさん
2014/11/26(水) 23:03:26.44ID:gCulqy1V 変数はコードに書く。コードに書くということは
静的にわかる。(変数に型がある場合)
値に型があっても、実行時にならないとわからない。
変数に入る値はいろんな型がありえるから
値に型があるだけじゃ、typoを発見することは出来ない。
いい加減「値に型がある」を反論の材料にするのはやめてくれ。
反論になってないから
静的にわかる。(変数に型がある場合)
値に型があっても、実行時にならないとわからない。
変数に入る値はいろんな型がありえるから
値に型があるだけじゃ、typoを発見することは出来ない。
いい加減「値に型がある」を反論の材料にするのはやめてくれ。
反論になってないから
418デフォルトの名無しさん
2014/11/26(水) 23:10:00.48ID:b8NKrcQ+ 変数posがあってこれが座標を表わしてるものだとしたら
list型で(x y)だったり構造体でxとyのフィールドを持ってたりy*w+xの整数だったり
色んな表現が出来るから柔軟という利点があってプロトタイプに向いてるってことじゃないの
list型で(x y)だったり構造体でxとyのフィールドを持ってたりy*w+xの整数だったり
色んな表現が出来るから柔軟という利点があってプロトタイプに向いてるってことじゃないの
419デフォルトの名無しさん
2014/11/27(木) 00:00:17.23ID:qRi3TEum >>411
動的型言語の玄人になると、値の型と無関係な(CallするとRuntime Errorになる)メソッドが
大量に候補に出てくるような補完や、typoすら発見できないようなチェッカーに
慣らされてるから疑問にすら思わなくなるってこと?
動的型言語の玄人になると、値の型と無関係な(CallするとRuntime Errorになる)メソッドが
大量に候補に出てくるような補完や、typoすら発見できないようなチェッカーに
慣らされてるから疑問にすら思わなくなるってこと?
420デフォルトの名無しさん
2014/11/27(木) 00:39:38.24ID:dibuY+0s >>418
一人で把握できる範囲でプロトタイプのようなある程度使い捨てを前提に作れる
ならそれほど問題はないが、スレタイにあるように大規模開発≒複数人開発だと
静的言語に比べて動的言語だとtypoみたいな簡単なミスでも見つけづらいよねと
いうような話だと思う。 ちょろっとしたものを作るだけなら変数は全てオブジェクト
ですっていうように抽象化されている方が楽だけど、大規模開発だとそれじゃ
ダメだよねっていう話。
一人で把握できる範囲でプロトタイプのようなある程度使い捨てを前提に作れる
ならそれほど問題はないが、スレタイにあるように大規模開発≒複数人開発だと
静的言語に比べて動的言語だとtypoみたいな簡単なミスでも見つけづらいよねと
いうような話だと思う。 ちょろっとしたものを作るだけなら変数は全てオブジェクト
ですっていうように抽象化されている方が楽だけど、大規模開発だとそれじゃ
ダメだよねっていう話。
421デフォルトの名無しさん
2014/11/27(木) 00:43:32.22ID:pDjxUsPd422デフォルトの名無しさん
2014/11/27(木) 07:05:04.04ID:zJRTpdHD そりゃ未定義がワーニングだからだろ。
ワークニング出たよ。
さて、そのワーニングは無視していいのかよくないのか?
typoしてワーニングが出た。あぁ、いつものワーニングかでスルー
結局ワーニングがあてにならないものになってるだろ。
ワークニング出たよ。
さて、そのワーニングは無視していいのかよくないのか?
typoしてワーニングが出た。あぁ、いつものワーニングかでスルー
結局ワーニングがあてにならないものになってるだろ。
423デフォルトの名無しさん
2014/11/27(木) 07:17:33.51ID:pDjxUsPd424デフォルトの名無しさん
2014/11/27(木) 07:36:00.70ID:0IKZEJch425デフォルトの名無しさん
2014/11/27(木) 08:44:42.11ID:29V21Kp8 >>424
そうだね。なんかこんなようなメソッド名(Smalltalkではセレクタと呼ぶ)だったなぁ…と
うろ覚えで適当に入れとくとコンパイラがあとでいちいち教えてくれるから、はいはいって直してく感じ。
補完が便利だなぁと感じるのは長いメソッド名の場合かな。
適当にだとしてもタイプするのが単純に面倒なのでその労力を省くことができるので。
そうだね。なんかこんなようなメソッド名(Smalltalkではセレクタと呼ぶ)だったなぁ…と
うろ覚えで適当に入れとくとコンパイラがあとでいちいち教えてくれるから、はいはいって直してく感じ。
補完が便利だなぁと感じるのは長いメソッド名の場合かな。
適当にだとしてもタイプするのが単純に面倒なのでその労力を省くことができるので。
426デフォルトの名無しさん
2014/11/27(木) 09:51:34.08ID:79rV4D1o Python「低レベルな争いだな…」
427デフォルトの名無しさん
2014/11/27(木) 10:14:33.17ID:29V21Kp8428デフォルトの名無しさん
2014/11/27(木) 17:17:05.92ID:3JRXUen2 Smalltark 厨 vs Pythonee
429デフォルトの名無しさん
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
Unknown variable: Smalltark please correct, or cancel:
define new class
declare global
------------------------------------------------------
Smalltalk
SmalltalkImageTest
SmalltalkEditor
SmalltalkImage
SmallLandColorTheme
SmallInteger
SmallIntegerTest
SMAccount
SMCategory
SMPackageInstallationTask
------------------------------------------------------
cancel
430デフォルトの名無しさん
2014/11/27(木) 20:07:16.47ID:p4BAxWMe Python「ただのテキストエディタで出来そう…」
431デフォルトの名無しさん
2014/11/27(木) 20:39:01.35ID:9Juu1ps5 そんなにイデの力が欲しいか
432デフォルトの名無しさん
2014/11/28(金) 00:34:41.35ID:O/dyue/E >>378
ゴロニャーン♪
ゴロニャーン♪
433デフォルトの名無しさん
2014/11/28(金) 09:07:58.51ID:8rVeLSla434デフォルトの名無しさん
2014/11/28(金) 09:09:59.36ID:8rVeLSla435デフォルトの名無しさん
2014/11/28(金) 09:13:52.73ID:8rVeLSla ここまでの流れだと結論は
静的言語は初心者向け
静的言語使いは初心者
静的言語は初心者向け
静的言語使いは初心者
436デフォルトの名無しさん
2014/11/28(金) 09:59:17.09ID:F5n5vmOV 処理系作ってる連中に学が無いから、型推論できるチェッカーひとつ作れない
で、仕方なく運用(命名規則)で回避ですか
駄目システムに苦しめられてるユーザと同じ図じゃん
なお、大規模開発ではどんな命名規則でもメソッド名が増えるため破綻する模様
で、仕方なく運用(命名規則)で回避ですか
駄目システムに苦しめられてるユーザと同じ図じゃん
なお、大規模開発ではどんな命名規則でもメソッド名が増えるため破綻する模様
437デフォルトの名無しさん
2014/11/28(金) 11:02:52.12ID:MpXGAzGF 手元のSmalltalk環境には4万強のメソッドがあって
先にも言われているように、型推論付きとかそんな高尚な補完もないけど
使いたいメソッドが出てこなくて困ったことなんかないぞ。
先にも言われているように、型推論付きとかそんな高尚な補完もないけど
使いたいメソッドが出てこなくて困ったことなんかないぞ。
438デフォルトの名無しさん
2014/11/28(金) 17:18:45.17ID:8rVeLSla >>436
まともな人がちゃんと作れば君のような目にはあわずにすむということじゃないかなあw
まともな人がちゃんと作れば君のような目にはあわずにすむということじゃないかなあw
439デフォルトの名無しさん
2014/11/28(金) 17:21:26.03ID:8rVeLSla440デフォルトの名無しさん
2014/11/28(金) 20:56:18.69ID:avPnRbje441デフォルトの名無しさん
2014/11/28(金) 21:02:53.61ID:pWSxBDFH >>438
まともな人は遥か昔Smalltalkから逃げ出したし、現在進行形でRubyからも続々と逃げ出してるよね
まともな人は遥か昔Smalltalkから逃げ出したし、現在進行形でRubyからも続々と逃げ出してるよね
442デフォルトの名無しさん
2014/11/28(金) 23:32:57.83ID:5WZv/pSY >>440
いろいろやるけど、主にWebアプリだな。
いろいろやるけど、主にWebアプリだな。
443デフォルトの名無しさん
2014/11/29(土) 02:10:12.49ID:TbFyYdBX >>437
> 使いたいメソッドが出てこなくて困ったことなんかないぞ。
コードを動かさないでだせる?
つまりアプリは動いておらずテキストエディタで書いている時。
コードを動かさないと出せないっていうのがダメなんだよね。
いろんな処理、例えば10分ぐらい処理してやっと実行される関数があったとする。
その関数の中にある条件分岐で真になるときのコード補完はできるだろうけど、
次に偽になる時のコード補完をしようと思ったら10分間待たないといけなくなる。
コードを動かさないでコード補完ができれば、待ち時間なしで
コード補完が出来るわけさ。
> 使いたいメソッドが出てこなくて困ったことなんかないぞ。
コードを動かさないでだせる?
つまりアプリは動いておらずテキストエディタで書いている時。
コードを動かさないと出せないっていうのがダメなんだよね。
いろんな処理、例えば10分ぐらい処理してやっと実行される関数があったとする。
その関数の中にある条件分岐で真になるときのコード補完はできるだろうけど、
次に偽になる時のコード補完をしようと思ったら10分間待たないといけなくなる。
コードを動かさないでコード補完ができれば、待ち時間なしで
コード補完が出来るわけさ。
444デフォルトの名無しさん
2014/11/29(土) 02:28:50.06ID:1aIidqiX445デフォルトの名無しさん
2014/11/29(土) 02:54:05.37ID:SuGYzpy/ >>443
オブジェクトが数値のときは数値関係のメソッドだけ補完に出せとか、そういう条件はあるの?
オブジェクトが数値のときは数値関係のメソッドだけ補完に出せとか、そういう条件はあるの?
446デフォルトの名無しさん
2014/11/29(土) 04:14:00.96ID:TbFyYdBX447446
2014/11/29(土) 04:16:18.02ID:TbFyYdBX 当たり前だけど、a. の行にブレークポイントを置いて、
そこまで実行してからa.を出すのはなし。
その行のブレークポイントまで実行しないといけないから
時間がかかる。
そこまで実行してからa.を出すのはなし。
その行のブレークポイントまで実行しないといけないから
時間がかかる。
448デフォルトの名無しさん
2014/11/29(土) 08:00:05.38ID:fWl7Yvk9449デフォルトの名無しさん
2014/11/29(土) 08:16:34.87ID:SO1yCwH9 >>446
MyClassのメソッド一覧ってどれぐらいのサイズ?
Smalltalkのように充実した標準ライブラリを持つ言語だと
Objectクラスだけでメソッドが488個あるから
MyClassのメソッド一覧は少なくとも500個ぐらいになって
aのクラスを特定する意味はあまりないな。
Smalltalkほどクラスライブラリが充実してないプアな言語だと
クラスを特定できるとうれしいかもしれないけど。
MyClassのメソッド一覧ってどれぐらいのサイズ?
Smalltalkのように充実した標準ライブラリを持つ言語だと
Objectクラスだけでメソッドが488個あるから
MyClassのメソッド一覧は少なくとも500個ぐらいになって
aのクラスを特定する意味はあまりないな。
Smalltalkほどクラスライブラリが充実してないプアな言語だと
クラスを特定できるとうれしいかもしれないけど。
450デフォルトの名無しさん
2014/11/29(土) 09:19:45.30ID:SuGYzpy/ 補完候補が単純なalphabetical orderじゃなくて
使用頻度順を学習して上から並べてくれるやつもあるので
その反論はナンセンスじゃね?
MyClassとObjectでは使われるメソッドの頻度が違うから
使用頻度順を学習して上から並べてくれるやつもあるので
その反論はナンセンスじゃね?
MyClassとObjectでは使われるメソッドの頻度が違うから
451デフォルトの名無しさん
2014/11/29(土) 09:23:05.48ID:1aIidqiX >>446
ちょっと待ってよ。そういう話なの?
俺の理解では、
- 静的型言語は変数を型で縛っているから補完がやりやすい。
- 動的型言語で静的に同レベルを実現するのは理論的に不可能。
ということは議論され尽くされてるわけだから暗黙の了解としてよくて、
- だけど動的型言語でも型推論をしてある程度絞って出せるのはあるよね。
- Smalltalkにはそういうスマートな機能はないけど、あんまり困ったことないよ。
という流れがあったところに>>443 で、
- 実行はせず、テキストエディタで編集中のコードで問題なくメソッドは出せるのか?
ときたから、意図がよくわからないのでコードを示してくれと頼んだら、
- 実行をして a をを確定してからその情報を元にして補完をするのはナシで、
静的型言語と同じように a の関連のメソッドだけしぼって出してみろ!
という要求だったので非常に驚いている。←イマココ
ちょっと待ってよ。そういう話なの?
俺の理解では、
- 静的型言語は変数を型で縛っているから補完がやりやすい。
- 動的型言語で静的に同レベルを実現するのは理論的に不可能。
ということは議論され尽くされてるわけだから暗黙の了解としてよくて、
- だけど動的型言語でも型推論をしてある程度絞って出せるのはあるよね。
- Smalltalkにはそういうスマートな機能はないけど、あんまり困ったことないよ。
という流れがあったところに>>443 で、
- 実行はせず、テキストエディタで編集中のコードで問題なくメソッドは出せるのか?
ときたから、意図がよくわからないのでコードを示してくれと頼んだら、
- 実行をして a をを確定してからその情報を元にして補完をするのはナシで、
静的型言語と同じように a の関連のメソッドだけしぼって出してみろ!
という要求だったので非常に驚いている。←イマココ
452デフォルトの名無しさん
2014/11/29(土) 09:26:19.46ID:SuGYzpy/ 標準ライブラリの大きさとObjectに数百個程度のメソッドがあることの
関係も良くわからない
標準ライブラリに少なくとも数百個もメソッドがあるんだぜスゲーってこと?
関係も良くわからない
標準ライブラリに少なくとも数百個もメソッドがあるんだぜスゲーってこと?
453デフォルトの名無しさん
2014/11/29(土) 09:40:43.18ID:e6ORUEwd454デフォルトの名無しさん
2014/11/29(土) 09:50:35.80ID:SuGYzpy/ でも>>446をよく見たら、こんなお題だったのか
> function foo(a) {
> a. とピリオドを入力した時点で、MyClassが持ってるメソッド一覧が表示されて欲しい
> }
これは静的型付言語で型推論があっても補完は無理だw
> function foo(a) {
> a. とピリオドを入力した時点で、MyClassが持ってるメソッド一覧が表示されて欲しい
> }
これは静的型付言語で型推論があっても補完は無理だw
455デフォルトの名無しさん
2014/11/29(土) 10:17:11.39ID:e6ORUEwd これなら型補完できるよ。これが静的言語でしょ?
> これがJavaなら
> void foo(MyClass a) {
> a. とピリオドを入力した時点で、MyClassが持ってるメソッド一覧が表示される
> }
> これがJavaなら
> void foo(MyClass a) {
> a. とピリオドを入力した時点で、MyClassが持ってるメソッド一覧が表示される
> }
456デフォルトの名無しさん
2014/11/29(土) 10:31:13.38ID:SO1yCwH9 >>453
へー、継承元のメソッドを分けて表示すれば解決する程度の貧弱なクラスライブラリが前提なんだー(鼻ホジホジ
へー、継承元のメソッドを分けて表示すれば解決する程度の貧弱なクラスライブラリが前提なんだー(鼻ホジホジ
457デフォルトの名無しさん
2014/11/29(土) 10:34:40.20ID:7EP7sx63458デフォルトの名無しさん
2014/11/29(土) 10:35:24.90ID:SO1yCwH9 静的言語でやっているコーディングとかIDEの使い方をそのまま動的言語に持ち込んで「これができない」「あれができない」と喚きだす初心者を眺めるスレw
459デフォルトの名無しさん
2014/11/29(土) 10:36:42.17ID:SO1yCwH9 >>457
そういう話はSmalltalkスレでどうぞ
Smalltalk総合 Squeak Pharo
http://peace.2ch.net/test/read.cgi/tech/1360991429/
そういう話はSmalltalkスレでどうぞ
Smalltalk総合 Squeak Pharo
http://peace.2ch.net/test/read.cgi/tech/1360991429/
460デフォルトの名無しさん
2014/11/29(土) 10:39:51.40ID:e6ORUEwd461デフォルトの名無しさん
2014/11/29(土) 10:40:48.12ID:e6ORUEwd462デフォルトの名無しさん
2014/11/29(土) 10:57:41.26ID:MSvzZpAh 技術的には型推論と補完を両立できるかどうか考えればいいと思うけど
ここで悪足掻きしてるやつは技術より心理にこだわっているふしがある
補完よいよねというマインドをつくることしか考えてない
ここで悪足掻きしてるやつは技術より心理にこだわっているふしがある
補完よいよねというマインドをつくることしか考えてない
463デフォルトの名無しさん
2014/11/29(土) 11:10:26.37ID:x5tELjcp 普通にいいだろw.
補完ができれば、それを応用して
さらにいろんなことができるようになるわけだし
補完ができれば、それを応用して
さらにいろんなことができるようになるわけだし
464デフォルトの名無しさん
2014/11/29(土) 11:16:43.56ID:SO1yCwH9 >>462
補完うんぬんは「静的型いいよね」というマインドのための道具でしかないでしょw
補完うんぬんは「静的型いいよね」というマインドのための道具でしかないでしょw
465デフォルトの名無しさん
2014/11/29(土) 11:17:30.03ID:7EP7sx63466デフォルトの名無しさん
2014/11/29(土) 11:17:56.66ID:MSvzZpAh467デフォルトの名無しさん
2014/11/29(土) 11:44:56.39ID:SuGYzpy/ 補完するときにメソッド名を選択すると、引数や戻り値の型やドキュメントが
出てくれるのは凄く嬉しい
あと同じ機能を使うと、メソッドにカーソル当てたらドキュメントを出せるようになるから
コード読むのが捗りまくる
出てくれるのは凄く嬉しい
あと同じ機能を使うと、メソッドにカーソル当てたらドキュメントを出せるようになるから
コード読むのが捗りまくる
468デフォルトの名無しさん
2014/11/29(土) 11:56:50.41ID:x5tELjcp 出来るできないで考えるからわからない。
どちらが楽にできるかどうかで考えよう。
そしてただ単に楽にできるかで考えるのもダメ一体何が楽ができるか。
つまり、書くのが楽か、読むのが楽か。
どちらを重視すべきかというと、書くよりも読むことが楽になるようにするべき。
なぜならプログラミングの作業の多くは書こに書いたコードを読んで修正することだから。
そういう時に、この変数は○○型であると書いてある方がいいわけだよ。
コメントに書くこともできるがそれだと実際のコードとコメントが
一致していない可能性がある。
コメントを書くよりも、コードでそれを表現するべき。
そうすれば人間もコンパイラも理解できる。
静的型がいいのは、そういう読むときの開発効率の高さにある。
どちらが楽にできるかどうかで考えよう。
そしてただ単に楽にできるかで考えるのもダメ一体何が楽ができるか。
つまり、書くのが楽か、読むのが楽か。
どちらを重視すべきかというと、書くよりも読むことが楽になるようにするべき。
なぜならプログラミングの作業の多くは書こに書いたコードを読んで修正することだから。
そういう時に、この変数は○○型であると書いてある方がいいわけだよ。
コメントに書くこともできるがそれだと実際のコードとコメントが
一致していない可能性がある。
コメントを書くよりも、コードでそれを表現するべき。
そうすれば人間もコンパイラも理解できる。
静的型がいいのは、そういう読むときの開発効率の高さにある。
469デフォルトの名無しさん
2014/11/29(土) 11:59:47.15ID:x5tELjcp なお、コード補完は、書くことを楽にしてくれる、
つまりタイピングを補助するものだと勘違いしている人が多いが、
実際は読むことを楽にしてくれている。
つまり、このオブジェクトにはどんなメソッドがあって、
そのメソッドがどんな機能、引数、戻り値を提供しているか
ということを確かめるために、ドキュメントやコードを
読むことを楽にしてくれる。
だから適切な補完が重要になる。
多すぎることもなく少なすぎることもなく
間違えることもない補完が重要。
つまりタイピングを補助するものだと勘違いしている人が多いが、
実際は読むことを楽にしてくれている。
つまり、このオブジェクトにはどんなメソッドがあって、
そのメソッドがどんな機能、引数、戻り値を提供しているか
ということを確かめるために、ドキュメントやコードを
読むことを楽にしてくれる。
だから適切な補完が重要になる。
多すぎることもなく少なすぎることもなく
間違えることもない補完が重要。
470デフォルトの名無しさん
2014/11/29(土) 12:11:58.32ID:nAAws2G7471デフォルトの名無しさん
2014/11/29(土) 12:30:14.99ID:v2v5Wnkr それ以前にさ、動的型付きとして
失ってほしくない機能って何さ?
失っても対して問題ない機能ばかりだと思うだが。
失ってほしくない機能って何さ?
失っても対して問題ない機能ばかりだと思うだが。
472デフォルトの名無しさん
2014/11/29(土) 12:44:23.44ID:A4nuaoXO 標準ライブラリや他人の作ったライブラリの全てを記憶できる変態でも無い限り
コード補完によってドキュメントを含め表示して選択出来るってのは生産する
上ではかなりのアドバンテージなんだけどね。 大昔のクソなIDEや最近のでも
動的言語に対応しているのはクソなIDEしかないから、そういう技術の進歩を
知らない原始人には理解できないことなんだよ。
コード補完によってドキュメントを含め表示して選択出来るってのは生産する
上ではかなりのアドバンテージなんだけどね。 大昔のクソなIDEや最近のでも
動的言語に対応しているのはクソなIDEしかないから、そういう技術の進歩を
知らない原始人には理解できないことなんだよ。
473デフォルトの名無しさん
2014/11/29(土) 12:49:43.77ID:v2v5Wnkr 動的型付きにすることで失われていることのほうが多いと思う。
それで、動的型付きにしてまで守ろうとしているものってなに?
それで、動的型付きにしてまで守ろうとしているものってなに?
474デフォルトの名無しさん
2014/11/29(土) 13:13:21.80ID:MSvzZpAh ドキュメントについては仕様書が欲しいか具体例が欲しいかによる
ただちに必要ではないことまで書かれているのが仕様書
ある時点で必要だったことしか書かれていないのが具体例
具体例から仕様を想像できるような変態は全てを記憶ではなく推理している
ただちに必要ではないことまで書かれているのが仕様書
ある時点で必要だったことしか書かれていないのが具体例
具体例から仕様を想像できるような変態は全てを記憶ではなく推理している
475デフォルトの名無しさん
2014/11/29(土) 13:24:38.99ID:U5ivpV2C スタートダッシュと試行錯誤じゃないの
軌道に乗ったら捨てて作りなおせばいいのよ
軌道に乗ったら捨てて作りなおせばいいのよ
476デフォルトの名無しさん
2014/11/29(土) 13:24:42.22ID:7EP7sx63477デフォルトの名無しさん
2014/11/29(土) 13:54:58.03ID:A4nuaoXO >>476
javaならソースに書かれているjavadocが出る。いわゆるAPIリファレンスと
言われるものが表示される。visual stadioだとmsdnに書いてあるのが出る。
APIリファレンスが役に立たないとか言っちゃうような無能はプログラムを
書くのを辞めたほうがいい。
javadocが出たことによって他の言語でもソースに埋め込んだコメントを
別ドキュメントに言語の標準かそれに近いレベルで提供されることが多く
なった。ただ別ツールを使ってまでドキュメントを出力するようなところは
殆ど無かったけど、IDEで自分や他人の書いたドキュメントまで手元で
参照できるようになったことで、どのレベルでコメントを書けばよいうかと
いうことに気づけた人はそれなりにいるかと思う。
書かないと煩く言われるから書くというのから、自分で書いたコードでも
元のコードを見なくても分かるように書くというのに変われた人は多いと
思います。最低でも自分で書いたコードを自分の為にというのがやり
やすくなった。
javaならソースに書かれているjavadocが出る。いわゆるAPIリファレンスと
言われるものが表示される。visual stadioだとmsdnに書いてあるのが出る。
APIリファレンスが役に立たないとか言っちゃうような無能はプログラムを
書くのを辞めたほうがいい。
javadocが出たことによって他の言語でもソースに埋め込んだコメントを
別ドキュメントに言語の標準かそれに近いレベルで提供されることが多く
なった。ただ別ツールを使ってまでドキュメントを出力するようなところは
殆ど無かったけど、IDEで自分や他人の書いたドキュメントまで手元で
参照できるようになったことで、どのレベルでコメントを書けばよいうかと
いうことに気づけた人はそれなりにいるかと思う。
書かないと煩く言われるから書くというのから、自分で書いたコードでも
元のコードを見なくても分かるように書くというのに変われた人は多いと
思います。最低でも自分で書いたコードを自分の為にというのがやり
やすくなった。
478デフォルトの名無しさん
2014/11/29(土) 14:00:18.54ID:A4nuaoXO そういえばvisual studioだとサンプルコードを検索ダウンロード出来る機能まで
付いたんだっけかな。
付いたんだっけかな。
479デフォルトの名無しさん
2014/11/29(土) 14:06:58.21ID:7EP7sx63 >>477
javadocは、どの程度のが出るかしらんが、Visual Studioで出るような
サマリーだけじゃ役に立たんがね。
IDEで出るのはあくまでも補助的なもんで、ちゃんとしたAPIのドキュメントは
msdn見ないと駄目だろ。APIの注意書きとかサンプルコードとかはIDEでは出ないだぎゃー
最近のVisual Studioは、msdnの全文が出るんけ?
底辺土方なんで最新版は知らんのじゃ〜
javadocは、どの程度のが出るかしらんが、Visual Studioで出るような
サマリーだけじゃ役に立たんがね。
IDEで出るのはあくまでも補助的なもんで、ちゃんとしたAPIのドキュメントは
msdn見ないと駄目だろ。APIの注意書きとかサンプルコードとかはIDEでは出ないだぎゃー
最近のVisual Studioは、msdnの全文が出るんけ?
底辺土方なんで最新版は知らんのじゃ〜
480デフォルトの名無しさん
2014/11/29(土) 14:07:50.21ID:7EP7sx63481デフォルトの名無しさん
2014/11/29(土) 14:13:44.81ID:v2v5Wnkr >>479
> javadocは、どの程度のが出るかしらんが、Visual Studioで出るような
> サマリーだけじゃ役に立たんがね。
サマリーでも役に立つと思うし、リンクになってるから
ヘルプ調べるのも速くなるんだが?
> javadocは、どの程度のが出るかしらんが、Visual Studioで出るような
> サマリーだけじゃ役に立たんがね。
サマリーでも役に立つと思うし、リンクになってるから
ヘルプ調べるのも速くなるんだが?
482デフォルトの名無しさん
2014/11/29(土) 14:25:05.29ID:7EP7sx63483デフォルトの名無しさん
2014/11/29(土) 14:33:59.73ID:A4nuaoXO >>479
ttp://docs.oracle.com/javase/8/docs/api/index.html
どのレベルも何も↑の各クラス、メソッドのがそのまま出るんだが。
これは英語だが、日本語訳のがある場合はそっちを使うことが出来る。
で、ここに書かれていなくて他に書かれているというドキュメントは存在しない
わけで、ググってどこにも無ければこれに頼るしか無い。 このリファレンスが
分からない役に立たないっていうやつは少なくてもjavaはやらないほうがいい。
ttp://docs.oracle.com/javase/8/docs/api/index.html
どのレベルも何も↑の各クラス、メソッドのがそのまま出るんだが。
これは英語だが、日本語訳のがある場合はそっちを使うことが出来る。
で、ここに書かれていなくて他に書かれているというドキュメントは存在しない
わけで、ググってどこにも無ければこれに頼るしか無い。 このリファレンスが
分からない役に立たないっていうやつは少なくてもjavaはやらないほうがいい。
484デフォルトの名無しさん
2014/11/29(土) 14:36:32.05ID:v2v5Wnkr485デフォルトの名無しさん
2014/11/29(土) 14:37:24.55ID:v2v5Wnkr で、そんな話はいいとして、動的型付け言語が
動的型付けにしてまで守ろうとしているものって何よ?
動的型付けにしてまで守ろうとしているものって何よ?
486デフォルトの名無しさん
2014/11/29(土) 14:38:14.93ID:Tl+PW+FS 動的言語でも変数aをMyClass型と教えればメソッド一覧は出せるだろ
487デフォルトの名無しさん
2014/11/29(土) 14:39:37.78ID:v2v5Wnkr488デフォルトの名無しさん
2014/11/29(土) 14:40:07.50ID:SO1yCwH9 その問い自体が静的目線だってのw
視野が狭いなあw
視野が狭いなあw
489デフォルトの名無しさん
2014/11/29(土) 14:40:46.54ID:Tl+PW+FS いちいち変数を宣言して型を指定するのとかわらないと思う
490デフォルトの名無しさん
2014/11/29(土) 14:42:05.95ID:v2v5Wnkr その都度、MyClass型って教えないといけない手間がかかるのと
コードに仕様として書いておけるのの違いだね
コードに仕様として書いておけるのの違いだね
491デフォルトの名無しさん
2014/11/29(土) 14:42:13.42ID:SO1yCwH9 補完候補を500に絞り込むためだけに、aがMyClassのインスタンスでないと動かないような腐れコードにするわけか
ご苦労さまなこってw
こりゃ世の中からクソコードがなくならないわけだw
ご苦労さまなこってw
こりゃ世の中からクソコードがなくならないわけだw
492デフォルトの名無しさん
2014/11/29(土) 14:43:48.06ID:v2v5Wnkr > 補完候補を500に絞り込むためだけに
補完候補を500ってなんのこと?
動的型付けだと、その500を全て覚えてるの?
意味がわからないね。
補完候補を500ってなんのこと?
動的型付けだと、その500を全て覚えてるの?
意味がわからないね。
493デフォルトの名無しさん
2014/11/29(土) 14:45:30.32ID:TZOpdCpR 型を書かなくても a = MyClass() や、さらにいえば
foo(MyClass()) のようなコードがあるだけでも>>446は補完できる様になる
foo(MyClass()) のようなコードがあるだけでも>>446は補完できる様になる
494デフォルトの名無しさん
2014/11/29(土) 14:46:28.99ID:v2v5Wnkr 逆に言えば、そういうコードがなければ
補完できないという意味である。
例えば関数の引数。これは補完できない。
補完できないという意味である。
例えば関数の引数。これは補完できない。
495デフォルトの名無しさん
2014/11/29(土) 14:48:16.54ID:Tl+PW+FS 補完ってそこまで重要か
動的言語支持者の揚げ足をとるためには必要かもしれないけど
単語単位補完で十分通用してる
動的言語支持者の揚げ足をとるためには必要かもしれないけど
単語単位補完で十分通用してる
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 ★3 [蚤の市★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★8 [蚤の市★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 ★3 [蚤の市★]
- たけし、ダウンタウン、明石家さんまを超えた! 全世代を超えて愛されるお笑い芸人ランキング! 1位決まる [牛丼★]
- 【26年度予算案】防衛費、過去最大の9兆円規模に、政府調整 [蚤の市★]
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- バイクのエンジンがかからないの…
- ドラえもんのいなかったのび太。それが俺とこのスレ見てるお前だよ [769050516]
- 【悲報】30代独身女性「結婚や成功してる友達との差は開く一方、このまま1人で生きて淘汰される人生だと気づいて絶望してる…406万いいね [483447288]
- 女の部下が俺の家に来たいって言ってくるんだが、、、
- 【画像】ドw童貞はw絶ッッッ対"1"を選ぶ卓球 J Kのお食事会の写真見つけちゃいましたwwwwwwwwwww [904880432]
- 日本(政治、司法、警察、資本腐ってます)←こいつがここから立て直す方法www
