int a = 1;
a = "a"; ← エラーになる。
型がない言語ではできない芸当です。(爆笑)
人間がやっていたことを、コンピュータにやらせる。
これが生産性を上げる最大の方法。
コンピュータは間違わない、同じ事を何度も高速に行える。
その為に、コンピュータがコードの意味を正確に
認識できる方法が必要。実行しないとわからないことは
コンピュータは認識できない。
すなわち静的型付け言語であれば、実行しなくてもわかるので
コンピュータが理解できる。そうすれば様々な
コンピュータの高度な情報支援が得られる。
コンピュータのバックアップを受け、人間の生産性は
限りなく向上する。
前スレ
静的型付け言語の潜在開発生産性は今の100倍 ×4
http://toro.2ch.net/test/read.cgi/tech/1383572174/
静的型付け言語の潜在開発生産性は今の100倍 ×5
■ このスレッドは過去ログ倉庫に格納されています
2013/11/24(日) 15:06:08.63
328デフォルトの名無しさん
2013/11/30(土) 20:34:55.44329デフォルトの名無しさん
2013/11/30(土) 20:35:58.32330デフォルトの名無しさん
2013/11/30(土) 20:36:20.71331デフォルトの名無しさん
2013/11/30(土) 20:36:51.82332デフォルトの名無しさん
2013/11/30(土) 20:39:39.32333デフォルトの名無しさん
2013/11/30(土) 20:40:02.31 >>324
いや、だからちゃんと結論を読んでくださいって。
結局静的動的関係なく単にGroovy節操なくて良いよと言いたいだけなんでw
という冗談はともかく、結局動的でもメンテナンス可能な大きなものを書くには
型とか含めてゴリゴリドキュメントを書くし、トータルな手間としては結局静的
言語と大差なくなってくる。小さなもの相手には出来た手抜きは通用しない。
ただ動的言語でもきっちり手間をかけて書かれた大きなプロダクトはいくらでも
あると思う。
いや、だからちゃんと結論を読んでくださいって。
結局静的動的関係なく単にGroovy節操なくて良いよと言いたいだけなんでw
という冗談はともかく、結局動的でもメンテナンス可能な大きなものを書くには
型とか含めてゴリゴリドキュメントを書くし、トータルな手間としては結局静的
言語と大差なくなってくる。小さなもの相手には出来た手抜きは通用しない。
ただ動的言語でもきっちり手間をかけて書かれた大きなプロダクトはいくらでも
あると思う。
334デフォルトの名無しさん
2013/11/30(土) 20:40:41.97 >>330
> そのfooを呼び出してる側のコードも読み込んで
> 解析するのが普通なので、fooを使ってる側のコードも必要
fooを使っているかどうかは、
静的型付け言語ならコンピュータが判断してくれるよ?
動的型付けではできないよね。
> そのfooを呼び出してる側のコードも読み込んで
> 解析するのが普通なので、fooを使ってる側のコードも必要
fooを使っているかどうかは、
静的型付け言語ならコンピュータが判断してくれるよ?
動的型付けではできないよね。
335デフォルトの名無しさん
2013/11/30(土) 20:42:23.74336デフォルトの名無しさん
2013/11/30(土) 20:43:49.21 >>334
動的型だと、出来る場合と出来ない場合がある
動的型だと、出来る場合と出来ない場合がある
337デフォルトの名無しさん
2013/11/30(土) 20:48:30.69338デフォルトの名無しさん
2013/11/30(土) 20:54:53.89 >>337
それに加えてfoo("hoge")みたいな呼び出しもあったらどう補完されるの?
それに加えてfoo("hoge")みたいな呼び出しもあったらどう補完されるの?
339デフォルトの名無しさん
2013/11/30(土) 20:56:40.84 遠くにあるコードを解析する言語は、全体が完成するまで解析できない
つまり、全体が完成する前に実行できる言語があれば
静的に解析するより早い時期にデバッグできるんだよ
つまり、全体が完成する前に実行できる言語があれば
静的に解析するより早い時期にデバッグできるんだよ
340デフォルトの名無しさん
2013/11/30(土) 21:02:09.63 静的な型付けの言語は別に型の推測に遠くのコードを解析する必要なんて無いけど。
そのコードを書いた時点で型が確定しているのだから当然。
そのコードを書いた時点で型が確定しているのだから当然。
341デフォルトの名無しさん
2013/11/30(土) 21:02:55.68342デフォルトの名無しさん
2013/11/30(土) 21:08:55.09 >>341
JSでそういう上等な補完を行ってくれるIDEってあれば知りたい。
動的言語のIDEの補完は影響範囲がローカルでレキシカルに型を特定できたり
ドキュメントに型情報がある場合はその型を、そうでない場合は諦めモードで
基本クラスやDOMやjQuery等のメジャーなAPIをずらずら並べるのが多い気がする。
JSでそういう上等な補完を行ってくれるIDEってあれば知りたい。
動的言語のIDEの補完は影響範囲がローカルでレキシカルに型を特定できたり
ドキュメントに型情報がある場合はその型を、そうでない場合は諦めモードで
基本クラスやDOMやjQuery等のメジャーなAPIをずらずら並べるのが多い気がする。
343デフォルトの名無しさん
2013/11/30(土) 21:11:09.53344デフォルトの名無しさん
2013/11/30(土) 21:24:41.50 JSとLispの差にくらべてJavaとHaskellの差が大きすぎる
静的型付け言語は多様性が100倍
静的型付け言語は多様性が100倍
345デフォルトの名無しさん
2013/11/30(土) 21:30:53.47 JavaとHaskellの差は手続き型か純粋関数型かの違いだと思うけど。
動的静的、関係なくない?
動的静的、関係なくない?
346デフォルトの名無しさん
2013/11/30(土) 21:48:34.09 Javaはオブジェクト指向です
347デフォルトの名無しさん
2013/12/01(日) 00:13:53.45348デフォルトの名無しさん
2013/12/01(日) 01:11:10.71 >>322みたいにドキュメントを用意して引数の型を丁寧に書くなら型を動的にするメリットがない
じゃあドキュメントを用意しない場合はどうか。
function func(attr){ ... }
int func(File.Attributes attr){ ... }
こんな関数があったら前者は怖くて使えないよね。
何を渡していいのかわからない。何が渡されるのかわからない。
後者なら型情報が全てを物語ってる
じゃあドキュメントを用意しない場合はどうか。
function func(attr){ ... }
int func(File.Attributes attr){ ... }
こんな関数があったら前者は怖くて使えないよね。
何を渡していいのかわからない。何が渡されるのかわからない。
後者なら型情報が全てを物語ってる
349デフォルトの名無しさん
2013/12/01(日) 01:13:33.60 >>348
実装見たらええやん。3行程度だし。
実装見たらええやん。3行程度だし。
350デフォルトの名無しさん
2013/12/01(日) 01:19:41.54 >>349
補完そのものを全否定かい
補完そのものを全否定かい
351デフォルトの名無しさん
2013/12/01(日) 01:19:44.84352デフォルトの名無しさん
2013/12/01(日) 01:24:07.19 動的型付け言語を好む動的人間と静的型付け言語を好む静的人間とが居るかもしれない。
353デフォルトの名無しさん
2013/12/01(日) 01:25:22.24354デフォルトの名無しさん
2013/12/01(日) 01:31:46.41 >>352
まあでもどちらも比較的変種で普通種は動的言語も静的言語も両方使うと思う。
まあでもどちらも比較的変種で普通種は動的言語も静的言語も両方使うと思う。
355デフォルトの名無しさん
2013/12/01(日) 01:47:08.21 >>348
全くそのとおりだな。
型というのは、コンパイラと人間の両方が
理解して処理可能なコメントだと思えばいい。
短いコードならコメントなしでもいいが
規模が大きくなるにつれて、コメントがあるといいよ。
しかもそれが、早くて正確なコンパイラが理解可能なコメントなら
矛盾を指摘してくれたり、コメントをもとに適切な
アドバイスをしてくれるんだよ。
全くそのとおりだな。
型というのは、コンパイラと人間の両方が
理解して処理可能なコメントだと思えばいい。
短いコードならコメントなしでもいいが
規模が大きくなるにつれて、コメントがあるといいよ。
しかもそれが、早くて正確なコンパイラが理解可能なコメントなら
矛盾を指摘してくれたり、コメントをもとに適切な
アドバイスをしてくれるんだよ。
356デフォルトの名無しさん
2013/12/01(日) 02:05:12.90 型とコメントは別のものだと思うんですよね。
357デフォルトの名無しさん
2013/12/01(日) 02:12:47.43 型に関してもコメントを残すなら書く手間は動的も静的もそう変わらんということ。
358デフォルトの名無しさん
2013/12/01(日) 02:15:02.72 別のものだと思うんですよね。
359デフォルトの名無しさん
2013/12/01(日) 02:18:36.37 別なんじゃない。
静的型付け言語の型情報にはコメント的な御利益もあるというだけであって。
静的型付け言語の型情報にはコメント的な御利益もあるというだけであって。
360デフォルトの名無しさん
2013/12/01(日) 02:19:35.15 >>356
コメントがなくてもわかるような
コードを書けってきかない?
型を含めたコード全てが
コメントのように分かりやすくあるべきなんだよ。
コードに必要な情報を埋め込められる言語
ようするに型もその情報の一つなわけだけど、
そういう言語だとコードが分かりやすくなるんだよ。
(コンパイラが理解できない)コメントは
コードに情報を埋められない言語の逃げでしかない。
コメントがなくてもわかるような
コードを書けってきかない?
型を含めたコード全てが
コメントのように分かりやすくあるべきなんだよ。
コードに必要な情報を埋め込められる言語
ようするに型もその情報の一つなわけだけど、
そういう言語だとコードが分かりやすくなるんだよ。
(コンパイラが理解できない)コメントは
コードに情報を埋められない言語の逃げでしかない。
361デフォルトの名無しさん
2013/12/01(日) 02:22:12.37 コメントにはなぜそうしたのか?という理由を書く
コードにはそうなっているという事実を書く。
型は、そうした理由ではなく事実。
この変数・引数には○○型を採用しているという事実。
事実だからコードで書く。
○○型を採用した理由を書く必要があるならば
それをコメントに書く。
コードにはそうなっているという事実を書く。
型は、そうした理由ではなく事実。
この変数・引数には○○型を採用しているという事実。
事実だからコードで書く。
○○型を採用した理由を書く必要があるならば
それをコメントに書く。
362デフォルトの名無しさん
2013/12/01(日) 02:55:44.19 他の動的言語はともかくJSerはツンデレだからね。
変数スコープがウンコと言われてそんなことないもん! と強がる一方でletを導入したり
辞書型はオブジェクトリテラルで十分なんだからねっ! と言いながらMapを準備したり
functionぐらい面倒くさがらずに書きなさいよ! となじる一方で密かにアロー記号用意したり
型情報なんか必要だなんて思っていないんだからっ! と表向きは突き放しつつ陰ではいそいそ
JSDocに型情報を書いてみたりガードが使えるようになる未来を夢想してこっそりデれたり。
で、そのことを指摘しても「ガードは・・・そういうのとは違うのよっ」と否定してみたり。
変数スコープがウンコと言われてそんなことないもん! と強がる一方でletを導入したり
辞書型はオブジェクトリテラルで十分なんだからねっ! と言いながらMapを準備したり
functionぐらい面倒くさがらずに書きなさいよ! となじる一方で密かにアロー記号用意したり
型情報なんか必要だなんて思っていないんだからっ! と表向きは突き放しつつ陰ではいそいそ
JSDocに型情報を書いてみたりガードが使えるようになる未来を夢想してこっそりデれたり。
で、そのことを指摘しても「ガードは・・・そういうのとは違うのよっ」と否定してみたり。
363デフォルトの名無しさん
2013/12/01(日) 03:14:17.32 JS利用者が導入したわけじゃないしね。
必要ないのに勝手に誰かが導入しただけだしね。
必要ないのに勝手に誰かが導入しただけだしね。
364デフォルトの名無しさん
2013/12/01(日) 03:22:20.17 >>360
たいていのアルゴリズムはコメントどころか書籍程度の説明が必要。
書籍一冊で理解させるのが困難な場合も多く、直接的な指導が必要な場合も多い。
コメントを書かなくても理解させられるコードというのは、単に手続きを
羅列したものであり、そのような手続きの羅列を強要させられることこそが
糞言語のあかしなのである。
コメントを書く必要がないのではなく、コメントを書かなくていいような
手続きの羅列を書かされている。
こういった認識を持てないのは、糞言語に調教された証左である。
つまり、君は我々人類と対等に話せる場所に既に居ない。
機械に調教された悲しき奴隷、それが今の君の姿なのである。
たいていのアルゴリズムはコメントどころか書籍程度の説明が必要。
書籍一冊で理解させるのが困難な場合も多く、直接的な指導が必要な場合も多い。
コメントを書かなくても理解させられるコードというのは、単に手続きを
羅列したものであり、そのような手続きの羅列を強要させられることこそが
糞言語のあかしなのである。
コメントを書く必要がないのではなく、コメントを書かなくていいような
手続きの羅列を書かされている。
こういった認識を持てないのは、糞言語に調教された証左である。
つまり、君は我々人類と対等に話せる場所に既に居ない。
機械に調教された悲しき奴隷、それが今の君の姿なのである。
365デフォルトの名無しさん
2013/12/01(日) 03:25:46.68 コメントを書こう、メモを残そう、テストを完璧に行おう、デバッガを捨てよう。
366デフォルトの名無しさん
2013/12/01(日) 05:11:23.08368デフォルトの名無しさん
2013/12/01(日) 06:02:23.28 >>364
くだらね。極端な例はいらん。
くだらね。極端な例はいらん。
369デフォルトの名無しさん
2013/12/01(日) 06:03:00.15 > 'コメントを書かなくても理解させられるコードというのは、単に手続きを
> 羅列したものであり
間違い。
> 羅列したものであり
間違い。
370デフォルトの名無しさん
2013/12/01(日) 06:52:56.51 間違いもそうだが、そもそもレスが論理的におかしい
自分で「コメントを書かずとも理解させるコード」と、
コメントが理解の助けになる前提で語ってる時点で
最良はコメントのように書いてあるコードしかないだろうに
自分で「コメントを書かずとも理解させるコード」と、
コメントが理解の助けになる前提で語ってる時点で
最良はコメントのように書いてあるコードしかないだろうに
371デフォルトの名無しさん
2013/12/01(日) 06:54:50.42 そもそも、型情報は
コメントとして書くものではなく
コードで書くものだという話。
コメントとして書くものではなく
コードで書くものだという話。
372デフォルトの名無しさん
2013/12/01(日) 06:55:33.92373デフォルトの名無しさん
2013/12/01(日) 07:03:35.70374デフォルトの名無しさん
2013/12/01(日) 07:19:25.63 >>373
自動車運転する人の話を聞いているんだけど。
GoogleやFBが提供するAPIを使って何かを作る人はそのバックエンド処理の仕組みを知る
必要があるの?
gzipを使う人はgzipのコードを読んでからで無いとダメ?
HTMLにマイクロフォーマットを埋め込む人はRDF Semanticsの仕様を読んで理解してから?
String.indexOfを使う人はそれがどのアルゴリズムで書かれているか知ってからでないと
使っちゃダメかな?
理解「した方がよい」のと使うのにまずコード読んで中身の理解を求めるのは全く別。
自動車運転する人の話を聞いているんだけど。
GoogleやFBが提供するAPIを使って何かを作る人はそのバックエンド処理の仕組みを知る
必要があるの?
gzipを使う人はgzipのコードを読んでからで無いとダメ?
HTMLにマイクロフォーマットを埋め込む人はRDF Semanticsの仕様を読んで理解してから?
String.indexOfを使う人はそれがどのアルゴリズムで書かれているか知ってからでないと
使っちゃダメかな?
理解「した方がよい」のと使うのにまずコード読んで中身の理解を求めるのは全く別。
375デフォルトの名無しさん
2013/12/01(日) 07:19:29.74376デフォルトの名無しさん
2013/12/01(日) 07:30:28.94 >>375
コードは書くし他の人が読んで理解しやすいように書くけどコードを提供する側としては
自分が書いたコードを使うならまず読んで理解しろとは全く考えないね。
自分で書いたコードをいろいろな人に使ってもらった経験って、ある?
コードは書くし他の人が読んで理解しやすいように書くけどコードを提供する側としては
自分が書いたコードを使うならまず読んで理解しろとは全く考えないね。
自分で書いたコードをいろいろな人に使ってもらった経験って、ある?
377デフォルトの名無しさん
2013/12/01(日) 08:13:20.34378デフォルトの名無しさん
2013/12/01(日) 11:42:22.02 型を宣言してもコメントはなくならないし、テストもなくならない
グローバルスタンダードになるつもりは最初からない
ガラパゴスの多様性を擁護する側の勢力がどんな戦い方をするのかという実験なんだよ
グローバルスタンダードになるつもりは最初からない
ガラパゴスの多様性を擁護する側の勢力がどんな戦い方をするのかという実験なんだよ
379デフォルトの名無しさん
2013/12/01(日) 12:32:35.07 >>374
駄目と入ってないが、どれも知っていたほうが理解が早い
特にWen関連APIなんてそのベンダーの仕様知ってると相当に早い
それにマイクロコードなんてSEO考えてるならまず仕様から入るし
gzやindexOfの実装にしたって
パラメタ指定が速度に関わる系なら知ってて損はない
概要すらいらないなんて考えはさすがに同意しかねるよ
駄目と入ってないが、どれも知っていたほうが理解が早い
特にWen関連APIなんてそのベンダーの仕様知ってると相当に早い
それにマイクロコードなんてSEO考えてるならまず仕様から入るし
gzやindexOfの実装にしたって
パラメタ指定が速度に関わる系なら知ってて損はない
概要すらいらないなんて考えはさすがに同意しかねるよ
380デフォルトの名無しさん
2013/12/01(日) 13:06:30.06381デフォルトの名無しさん
2013/12/01(日) 13:09:32.04382デフォルトの名無しさん
2013/12/01(日) 13:20:35.67 あれでしょ?なんだかんだ言って
関数を自分で作ったことがない人なんでしょ。
使うだけの人。
プログラマなら普通、自分が書いているコードの
中身の話をするもんだけどねぇ
関数を自分で作ったことがない人なんでしょ。
使うだけの人。
プログラマなら普通、自分が書いているコードの
中身の話をするもんだけどねぇ
383デフォルトの名無しさん
2013/12/01(日) 15:44:13.87 コメントやドキュメントに書いてある事だけ知っていれば良かったらどんなに楽だろうか
384デフォルトの名無しさん
2013/12/01(日) 15:45:54.12 >>383
コメントやドキュメントが整備されていれば実装まで調べる必要ないけど
コメントやドキュメントが整備されていれば実装まで調べる必要ないけど
385デフォルトの名無しさん
2013/12/01(日) 15:50:08.51386デフォルトの名無しさん
2013/12/01(日) 16:08:55.34 ドキュメントに具体例がないと苦労する
具体例とは、仕様書でもソースコードでもない
具体例とは、仕様書でもソースコードでもない
387デフォルトの名無しさん
2013/12/01(日) 16:18:54.90 >>386
たしかに例が載ってると助かるよね
たしかに例が載ってると助かるよね
388デフォルトの名無しさん
2013/12/01(日) 17:19:30.39 ここでD使いが参上
「Dならunittestのコードを直に埋め込めるし
ドキュメントに使用例として吐出されるよ」
シュタッミ
「Dならunittestのコードを直に埋め込めるし
ドキュメントに使用例として吐出されるよ」
シュタッミ
389デフォルトの名無しさん
2013/12/01(日) 17:56:08.53390デフォルトの名無しさん
2013/12/01(日) 18:02:55.11 >>382
誰かと一緒に作業したり他の人にコードを提供するプログラマなら中身同様にドキュメント
等を含めたコードの外面をとことん気にすると思うけれども、違うの?
ドキュメンテーションをちゃんと行うなら静的も動的も記述量はたいしたことが無いんじゃ
ないのという例を挙げたのは自分だけど、そこからドキュメントを用意しない場合という話
が出てきて実装読めば良いとかコメント無くてもわかるコードという話になったので「謎」
と言ったわけ。
いやそこ頑張るとこじゃ無いというか、頑張っても良いけどまずメソッドのシグネチャや
付随するコメントが十分に説明的になってからでないと単に効率悪いだけだから。
function func(attr)もint func(File.Attributes attr)も中身の書き方云々する前にまず
コメントから書こうよw メソッド名も書き直す。
誰かと一緒に作業したり他の人にコードを提供するプログラマなら中身同様にドキュメント
等を含めたコードの外面をとことん気にすると思うけれども、違うの?
ドキュメンテーションをちゃんと行うなら静的も動的も記述量はたいしたことが無いんじゃ
ないのという例を挙げたのは自分だけど、そこからドキュメントを用意しない場合という話
が出てきて実装読めば良いとかコメント無くてもわかるコードという話になったので「謎」
と言ったわけ。
いやそこ頑張るとこじゃ無いというか、頑張っても良いけどまずメソッドのシグネチャや
付随するコメントが十分に説明的になってからでないと単に効率悪いだけだから。
function func(attr)もint func(File.Attributes attr)も中身の書き方云々する前にまず
コメントから書こうよw メソッド名も書き直す。
391デフォルトの名無しさん
2013/12/01(日) 18:13:51.40392デフォルトの名無しさん
2013/12/01(日) 18:23:17.12 >>391
勝手に話をすり替えないように。
勝手に話をすり替えないように。
393デフォルトの名無しさん
2013/12/01(日) 18:23:48.97 話を戻そうね
360 名前:デフォルトの名無しさん[sage] 投稿日:2013/12/01(日) 02:19:35.15
>>356
コメントがなくてもわかるような
コードを書けってきかない?
型を含めたコード全てが
コメントのように分かりやすくあるべきなんだよ。
コードに必要な情報を埋め込められる言語
ようするに型もその情報の一つなわけだけど、
そういう言語だとコードが分かりやすくなるんだよ。
(コンパイラが理解できない)コメントは
コードに情報を埋められない言語の逃げでしかない。
360 名前:デフォルトの名無しさん[sage] 投稿日:2013/12/01(日) 02:19:35.15
>>356
コメントがなくてもわかるような
コードを書けってきかない?
型を含めたコード全てが
コメントのように分かりやすくあるべきなんだよ。
コードに必要な情報を埋め込められる言語
ようするに型もその情報の一つなわけだけど、
そういう言語だとコードが分かりやすくなるんだよ。
(コンパイラが理解できない)コメントは
コードに情報を埋められない言語の逃げでしかない。
394デフォルトの名無しさん
2013/12/01(日) 18:28:50.95 使うだけにしても実装を追うにしてもコメントのあるなしで大分違うからまずコメント書けってのには同意だけど
コメントが書いてあれば実装を追わなくても理解できる、とか言われると「はぁ?」って感じ
コメントが書いてあれば実装を追わなくても理解できる、とか言われると「はぁ?」って感じ
395デフォルトの名無しさん
2013/12/01(日) 18:32:04.04 経験上、コメントがないとわかりづらい部分とコメントを書きづらい部分というのがかぶっているわけで
396デフォルトの名無しさん
2013/12/01(日) 18:45:11.41 同じ手間でコードでかけることならば、コードで書いていれば良い。
引数の型とかそういうのはコードで書くべき情報。
引数の型とかそういうのはコードで書くべき情報。
397デフォルトの名無しさん
2013/12/01(日) 18:49:35.92 服着てる現代人と裸の原始人とどっちが優秀かって問題だと思う。
原始人は体が鍛えられてて個体としては優秀だが、狩猟ができず食える草が生えてない東京で絶望することだろう。
原始人は体が鍛えられてて個体としては優秀だが、狩猟ができず食える草が生えてない東京で絶望することだろう。
398デフォルトの名無しさん
2013/12/01(日) 18:50:28.76 >>393
自分が好都合なリビジョンに話をロールバックするなw
エラー発生時点まできっちり巻き戻そう。
>>348
>function func(attr){ ... }
>int func(File.Attributes attr){ ... }
>こんな関数があったら前者は怖くて使えないよね。
後者だって怖くて使えね〜w
要するに、そういうことだよ。型が合った方が良いという例としてはイマイチ無茶。
仮に実装の中身にしても同様。
int i = 0;
var index = 0 // 0..(users.length -1)
どっちが説明的?
int index = 0; // 0..(users.length -1)
と大差ある?
「コメント無くてもわかるようなコード」というのは型情報だけでは無くメソッド
名や変数名にも配慮して初めて書けるもの。型情報なんてその中の一つに過ぎない。
で、その程度は少しのコメントで補えるもの。この点で動的型が不利とは思わない。
さらに言えば「コメント無くてもわかるようなコード」の書きやすさではJava等
よりもPythonなどを押すかな。これは静的型動的型の違いと言うよりもコード中の
ノイズの多さの違い。
自分が好都合なリビジョンに話をロールバックするなw
エラー発生時点まできっちり巻き戻そう。
>>348
>function func(attr){ ... }
>int func(File.Attributes attr){ ... }
>こんな関数があったら前者は怖くて使えないよね。
後者だって怖くて使えね〜w
要するに、そういうことだよ。型が合った方が良いという例としてはイマイチ無茶。
仮に実装の中身にしても同様。
int i = 0;
var index = 0 // 0..(users.length -1)
どっちが説明的?
int index = 0; // 0..(users.length -1)
と大差ある?
「コメント無くてもわかるようなコード」というのは型情報だけでは無くメソッド
名や変数名にも配慮して初めて書けるもの。型情報なんてその中の一つに過ぎない。
で、その程度は少しのコメントで補えるもの。この点で動的型が不利とは思わない。
さらに言えば「コメント無くてもわかるようなコード」の書きやすさではJava等
よりもPythonなどを押すかな。これは静的型動的型の違いと言うよりもコード中の
ノイズの多さの違い。
399デフォルトの名無しさん
2013/12/01(日) 18:56:38.16 >>394
コメントが書いてあれば実装を追わなくても理解できる、とまではさすがに求めない。
まずは実装を追わなくても使えるべきで、そのためにコメントやドキュメントは必要と
言っているだけ。
ドキュメントを書いたのにドキュメントだけでは使い方がわからなかったとか言われた
場合はそれなりに悔しいw
コメントが書いてあれば実装を追わなくても理解できる、とまではさすがに求めない。
まずは実装を追わなくても使えるべきで、そのためにコメントやドキュメントは必要と
言っているだけ。
ドキュメントを書いたのにドキュメントだけでは使い方がわからなかったとか言われた
場合はそれなりに悔しいw
400デフォルトの名無しさん
2013/12/01(日) 18:56:46.51 > 後者だって怖くて使えね〜w
> 要するに、そういうことだよ。
どういうこと?(笑)
ほらね、理由を全く言ってない。
これなんだよ。卑怯な人はね。
> var index = 0 // 0..(users.length -1)
>
> どっちが説明的?
>
> int index = 0; // 0..(users.length -1)
下じゃねーの?
上に書いてあるint i = 0; がなんのことだかわからんけど、
誤記入だろう? 型がない言語でにはint iなんて物は存在しないからね。
> 要するに、そういうことだよ。
どういうこと?(笑)
ほらね、理由を全く言ってない。
これなんだよ。卑怯な人はね。
> var index = 0 // 0..(users.length -1)
>
> どっちが説明的?
>
> int index = 0; // 0..(users.length -1)
下じゃねーの?
上に書いてあるint i = 0; がなんのことだかわからんけど、
誤記入だろう? 型がない言語でにはint iなんて物は存在しないからね。
401デフォルトの名無しさん
2013/12/01(日) 18:57:58.20402デフォルトの名無しさん
2013/12/01(日) 18:58:58.72403デフォルトの名無しさん
2013/12/01(日) 19:01:00.31 >>401
この二つは明らかに下のほうがわかりやすいね。
上はindexって書いているけど、これが何型かわからない。
もしかしたら本の索引って意味かもしれんし。
その場合は、1.1 (一章一節)なんて数値が入るかもしれない。
後者だと整数であることが明確である。
この二つは明らかに下のほうがわかりやすいね。
上はindexって書いているけど、これが何型かわからない。
もしかしたら本の索引って意味かもしれんし。
その場合は、1.1 (一章一節)なんて数値が入るかもしれない。
後者だと整数であることが明確である。
404デフォルトの名無しさん
2013/12/01(日) 19:02:51.27 もっと具体的な型だったら
さらに意味がわかりやすいよね。
BookIndex index = 0;
さらに意味がわかりやすいよね。
BookIndex index = 0;
405デフォルトの名無しさん
2013/12/01(日) 19:03:29.40 >>401
でもHaskellのコードとか、
関数がポイントフリーになっていて引数名すら存在しない、
その関数の引数の型ぐらいしかヒントがない、
なんてことがあるし。
傾向として
静的型プログラマは型に頼って変数名はテキトー、
動的型プログラマは変数名に拘るのが多いんじゃね?
でもHaskellのコードとか、
関数がポイントフリーになっていて引数名すら存在しない、
その関数の引数の型ぐらいしかヒントがない、
なんてことがあるし。
傾向として
静的型プログラマは型に頼って変数名はテキトー、
動的型プログラマは変数名に拘るのが多いんじゃね?
406デフォルトの名無しさん
2013/12/01(日) 19:04:19.46407デフォルトの名無しさん
2013/12/01(日) 19:04:48.65 > 静的型プログラマは型に頼って変数名はテキトー、
> 動的型プログラマは変数名に拘るのが多いんじゃね?
全然違うし。変数名が適当であるという根拠は何一つ出てない。
静的型プログラマは型も変数名にもこだわってる。
動的型プログラマは変数名に拘るが型は適当。
これが事実だろ。
> 動的型プログラマは変数名に拘るのが多いんじゃね?
全然違うし。変数名が適当であるという根拠は何一つ出てない。
静的型プログラマは型も変数名にもこだわってる。
動的型プログラマは変数名に拘るが型は適当。
これが事実だろ。
408デフォルトの名無しさん
2013/12/01(日) 19:05:57.33 コメントは基本ドキュメンテーションコメントだけでいいんだよ
409デフォルトの名無しさん
2013/12/01(日) 19:07:28.59410デフォルトの名無しさん
2013/12/01(日) 19:07:47.65411デフォルトの名無しさん
2013/12/01(日) 19:08:15.68 >>404
BookIndex型に整数代入したらエラーになるんじゃないの?
BookIndex型に整数代入したらエラーになるんじゃないの?
412デフォルトの名無しさん
2013/12/01(日) 19:08:33.10 というわけで>>407はウソツキであることが確定w
413デフォルトの名無しさん
2013/12/01(日) 19:09:36.58414デフォルトの名無しさん
2013/12/01(日) 19:10:15.71415デフォルトの名無しさん
2013/12/01(日) 19:10:24.20 型があるとこういう、明らかにエラーになるべき所を
しっかり教えてくれるんだよね。
しっかり教えてくれるんだよね。
416デフォルトの名無しさん
2013/12/01(日) 19:11:25.19 >>400
下の二つのどちらが説明的なのかと
(前者は静的型で変数名に無頓着な例。
後者は動的型で説明的な変数名にコメントを付記した例)
int i = 0;
var index = 0 // 0..(users.length -1)
下の二つでは大差があるのかと説いたわけで。
var index = 0 // 0..(users.length -1)
int index = 0; // 0..(users.length -1)
要するに動的型でも適切にコメントを付記すれば十分に説明的になる以上、コメント
禁止なんて非現実的な縛りでも無い限り動的型は理解しやすいコードの書きやすさの
点で不利にはならないということ。
コメントが無いコードを書きたいの? それとも理解しやすいコードを書きたいの?
下の二つのどちらが説明的なのかと
(前者は静的型で変数名に無頓着な例。
後者は動的型で説明的な変数名にコメントを付記した例)
int i = 0;
var index = 0 // 0..(users.length -1)
下の二つでは大差があるのかと説いたわけで。
var index = 0 // 0..(users.length -1)
int index = 0; // 0..(users.length -1)
要するに動的型でも適切にコメントを付記すれば十分に説明的になる以上、コメント
禁止なんて非現実的な縛りでも無い限り動的型は理解しやすいコードの書きやすさの
点で不利にはならないということ。
コメントが無いコードを書きたいの? それとも理解しやすいコードを書きたいの?
417デフォルトの名無しさん
2013/12/01(日) 19:11:44.25418デフォルトの名無しさん
2013/12/01(日) 19:13:16.65419デフォルトの名無しさん
2013/12/01(日) 19:13:55.84 >>417
例外は発生させる分コストがかかるじゃん
例外は発生させる分コストがかかるじゃん
420デフォルトの名無しさん
2013/12/01(日) 19:13:57.19 >>416
お前さ、比較実験の原則しらねーの?
今比べるべきところは型だろ。
ならば型以外の条件は同じにするのが
原則だ。
int i = 0 // 0..(users.length -1)
var index = 0 // 0..(users.length -1)
どっちが説明的かって?
上に決まってるじゃねーか。
お前さ、比較実験の原則しらねーの?
今比べるべきところは型だろ。
ならば型以外の条件は同じにするのが
原則だ。
int i = 0 // 0..(users.length -1)
var index = 0 // 0..(users.length -1)
どっちが説明的かって?
上に決まってるじゃねーか。
421デフォルトの名無しさん
2013/12/01(日) 19:14:51.71422デフォルトの名無しさん
2013/12/01(日) 19:15:11.92 そもそも無駄にコメント書くやつがアホ
関数の説明ぐらいでいいんだよ
関数の説明ぐらいでいいんだよ
423デフォルトの名無しさん
2013/12/01(日) 19:18:00.23424デフォルトの名無しさん
2013/12/01(日) 19:18:00.87 >>403
「0」って整数リテラルがかいてあるのに
> もしかしたら本の索引って意味かもしれんし。
> その場合は、1.1 (一章一節)なんて数値が入るかもしれない。
なんてキチガイじみたこと言うなんて、
やっぱり静的型プログラマはバカなんだね。
「0」って整数リテラルがかいてあるのに
> もしかしたら本の索引って意味かもしれんし。
> その場合は、1.1 (一章一節)なんて数値が入るかもしれない。
なんてキチガイじみたこと言うなんて、
やっぱり静的型プログラマはバカなんだね。
425デフォルトの名無しさん
2013/12/01(日) 19:19:10.19 >>424
発想力のないやつだね。
0が書いてあればということは、
じゃあ0が書いていなければどうなるのさ?
もしこの値が1だったらどうなる?
0ならわかると言っているならば、
0以外ならわからないとお前は認めてるのも同然なんだよ。
発想力のないやつだね。
0が書いてあればということは、
じゃあ0が書いていなければどうなるのさ?
もしこの値が1だったらどうなる?
0ならわかると言っているならば、
0以外ならわからないとお前は認めてるのも同然なんだよ。
426デフォルトの名無しさん
2013/12/01(日) 19:20:38.91 >>423
「型がない」なんて言ってる時点で、型に関する知識が初心者レベルなのが丸わかりw
静的型言語を使っているからバカになったのか、
それともバカだから静的型言語を使っているのか。
どっちにせよ、静的厨はバカw
「型がない」なんて言ってる時点で、型に関する知識が初心者レベルなのが丸わかりw
静的型言語を使っているからバカになったのか、
それともバカだから静的型言語を使っているのか。
どっちにせよ、静的厨はバカw
427デフォルトの名無しさん
2013/12/01(日) 19:21:20.90■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★5 [BFU★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【悲報】SANA、発言撤回拒否 [769931615]
- 米シンクタンク「アメリカは台湾問題で"あいまい戦略"を取っている。高市早苗はこの方針から逸脱している」 [603416639]
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
- お前ら「サクッとオナニーするか」←何分のイメージ?
- ジャーナリストがテレビで解説「台湾問題は高市総理から言ったのではなく、立憲民主が日本の対応可能能力を暴こうとしたから」 [359572271]
- 俺性格悪いなって思った瞬間あげてけ
