15/12/18 15:28:16.80 47x3yklW.net
>>126
エディット コンティニュはデバッグ ビルドでのみ動作します。wwwww
129:デフォルトの名無しさん
15/12/18 15:31:00.77 7Erpdy7Z.net
常にデバッグビルドにしてればいいやん?
Smalltalkも似たよ
130:うなものなんだし。
131:デフォルトの名無しさん
15/12/18 15:35:37.08 47x3yklW.net
開き直ったなー
132:デフォルトの名無しさん
15/12/18 15:39:32.17 7Erpdy7Z.net
>>129
手段と目的がごっちゃになってるからねw
エディットコンテニューなんて開発時やればいい話であって
実運用中に使うことなんてない。
こんなこともできる。何に使うかわからないけど凄いでしょ!じゃ
なんの説得力もないわけでw
133:デフォルトの名無しさん
15/12/18 15:55:49.76 47x3yklW.net
いよいよ本腰入れて開き直ったな。w
実際役立って使う必要とされる機能なんだから「何に使うかわからない」はないだろ。さすがに。
端からSmalltalkや動的遅延結合性を貶めるのが目的だろうから言っても無駄だろうけど、
Smalltalkでのデバッグ時の思考を中断させない疾走感(と、他言語での隔靴掻痒感)は、
Smalltalkのデバッガが何かを知って解って使ってみないことには
特に他言語処理系の手練れにはなかなかわからないと思う
必ずしも機能の多寡ではないんだよね。
Live Debugging in Smalltalk
URLリンク(www.youtube.com)
134:デフォルトの名無しさん
15/12/18 16:01:44.79 7Erpdy7Z.net
>>131
はぁ? お前話をごちゃ混ぜにしすぎ。
最初に言ったよな?
「至れりつくせりのデバッガが全力でサポートしてくれる」
とは具体的に何かって? あれだけだろ?
ほぼすべて静的言語+IDE+デバッガで実現できてるじゃないか。
Smalltalkのデバッガ機能、全然すごくない。
135:デフォルトの名無しさん
15/12/18 16:05:29.03 7Erpdy7Z.net
自己レス
> はぁ? お前話をごちゃ混ぜにしすぎ。
何をごちゃ混ぜにしているかを書いてなかったな。
デバッガ機能は便利だよ。どの言語であっても。
Smalltalk特有のこともあるよ。
ただ、このふたつをごっちゃにして、Smalltalkのデバッガ機能は凄いって言うなよ。
どの言語でもデバッガ機能はすごい便利なんだよ。
デバッガだけじゃなくてIDEも思考を中断させない開発ができる。
別にSmalltalkのデバッガだけが凄いんじゃないんだよね。
そして静的言語+IDEの凄さはSmalltalkのデバッガでできること以上のことができる。
136:デフォルトの名無しさん
15/12/18 16:06:19.19 47x3yklW.net
わかった。わかった。もういいよ。おまえちょっと痛いよ。
137:デフォルトの名無しさん
15/12/18 16:06:29.32 SLQY/0qq.net
IDEじゃなくて静的解析のことを言っているのかな?
138:デフォルトの名無しさん
15/12/18 16:10:16.47 7Erpdy7Z.net
動的言語だと動的じゃないと出来ないことが静的にできる。
これはすごく便利な機能で、実行すればいいじゃないか?って
思うかもしれないが、それはぜんぜん違う。
実行するということは、その場所に来なければいけない。
プログラム実行コードは何万行、何十万行とあるわけで、その場所に来るだけなら
簡単でも、変数の中身まで考慮して「その行にそういう変数の中身で来る」場合を
考えると組み合わせは膨大な量になる。
実行しないでできるっていうことは、それがどれだけ膨大な量であっても
わかるということ。
139:デフォルトの名無しさん
15/12/18 16:12:07.58 47x3yklW.net
多少窮屈でも安心して過ごせる静的型の世界で安寧を得ることが今すごく重要なんだろ。わかるよ。
型には反対しないが、複雑さに悩まされない型システムを見たことはない。動的型付けはまだマシだ。
URLリンク(d.hatena.ne.jp)
だから我々は我々でSmalltalkを使ってヒャッハーしつつ、
型システムが今より賢くなって動的遅延結合性を許容するようになったら喜んでそっちに行くよ。
140:デフォルトの名無しさん
15/12/18 16:12:44.71 7Erpdy7Z.net
>>134
さいようならw
>>135
IDEは静的解析の情報を元に、実行すること無く情報を判断している。
これは極めて重要で、実行するまでの時間を大幅に削減することができる。
Smalltalkが実行した後のデバッガ機能を強化して
後手対応の幅を増やしたのとは逆で、
静的言語はIDEを強化することで、実行すること無く
根本的な解決ができるようになっている。
141:デフォルトの名無しさん
15/12/18 16:14:02.81 7Erpdy7Z.net
>>137
自分の言葉で説明できないから、他人の言葉を使って
自分が間違ってないと思い込んでるねw
その人は完璧人間でもないというのに。
142:デフォルトの名無しさん
15/12/18 16:15:11.62 SLQY/0qq.net
結局javaScriptが最強なわけだけどね。
143:デフォルトの名無しさん
15/12/18 16:15:40.07 7Erpdy7Z.net
ここまでの結論としては、Smalltalkのデバッガで何ができるのか?と聞いたら、
何も便利なことを言うことは出来なかったということだよ。
144:デフォルトの名無しさん
15/12/18 16:20:21.05 c5QtSCUZ.net
なんだこの品のない煽り合いは
145:デフォルトの名無しさん
15/12/18 16:20:53.12 47x3yklW.net
>>138
> 実行するまでの時間を大幅に削減する
また他人の言葉を鵜呑みにしてって言うだろうけど、実感があるから言うと
ソフトウェアシステムにおいて全コストの85% は成功裏に導入された後で必要になる
URLリンク(metatoys.org)
んだよね。だから実行するまでの時間を大幅に削減したところで(そのときは幸せかもしれないけれど)
結局、動かしてみて解ることのほうが多いから、全体から見たら誤差の範囲じゃない?
146:デフォルトの名無しさん
15/12/18 16:26:26.18 7Erpdy7Z.net
>>143
他人の言葉を鵜呑する以前に全然レイヤーが違う話をしてる。
システムをリリースした後で分かることがあるからなんだって言うんだ?
Windowsだって、リリースした後のユーザーのフィードバックを元に
改良しているだろ。
っていう話は全然レイヤーが違う。
147:デフォルトの名無しさん
15/12/18 16:26:54.71 47x3yklW.net
>>140
> 結局javaScriptが
おまえじゃねぇwww すわってろwww
URLリンク(pbs.twimg.com)
148:デフォルトの名無しさん
15/12/18 16:27:38.49 BjfgvjAr.net
オブジェクト指向は愚かな考え。この世は計算式 ★2
スレリンク(tech板)
149:デフォルトの名無しさん
15/12/18 16:29:03.31 7Erpdy7Z.net
「動かしてみてわかる事が多いから」という一言だけが(笑)
言語の話に関連しているから、ここだけ抜き取るにしても
動かしてみて(=動かすのには時間がかかる)わかることが多いからこそ
「時間がかかることが多い」ではなく、動かさないでわかるようにすることが
「時間がかかることを少なくする」ことにつながる。
150:デフォルトの名無しさん
15/12/18 16:30:07.85 tbWYHKuT.net
>>107
>そんなのは他の言語でもできるし。
ダウト。それは言語の問題ではなく開発環境の問題だ。
そしてそんなことをしている開発環境はSmalltalkぐらいしか見当たらない。
151:デフォルトの名無しさん
15/12/18 16:31:55.76 7Erpdy7Z.net
>>148
開発環境が実現可能な機能は言語によって決まるのだから
無関係ではない。
開発環境と言語を切り離して考えてるから、
開発環境が強化できないんだよ。
目的は何? 開発環境を使わないという縛りありで頑張ることではない。
使えるものはなんでも使って開発することだ。
152:デフォルトの名無しさん
15/12/18 16:33:50.41 SLQY/0qq.net
静的解析って実はコンパイラと同じ技術を使っていて実は実行してないように見せかけて実行してるんだよね。
153:デフォルトの名無しさん
15/12/18 16:41:48.59 SRTwlmwS.net
>>150
IDEの静的解析がコンパイラと同じ技術を使っているのは当たり前
構文解析するんだからな
しかし
「実はコンパイラと同じ技術を使っていて実は実行してないように見せかけて実行してる」
これはおかしな言い回しだな
だって、コンパイラはソースコードをコンパイルするだけで実行はしないからな
コンパイラと同じ技術==プログラムを実行
ってのはおかしな発想だ
もう少しまともな言葉で指摘すると
構文解析や意味解析をすることと、プログラムを実行する事は別物だ
154:デフォルトの名無しさん
15/12/18 16:43:35.89 7Erpdy7Z.net
>>150が言ってるのは
構文解析や意味解析を実行する事 = プログラムを実行する事
どちらも実行してるでしょ?
ねー、一緒だよ。(*´・ω・)(・ω・`*)ネー
155:デフォルトの名無しさん
15/12/18 16:48:32.95 SRTwlmwS.net
全然違うし
プログラムを実行するためには明確なインスタンスを与えなければならない
かたや、構文解析にはインスタンスはいらない
インスタンスがなくてもわかる、言い換えればプログラムを実行しなくてもわかる、エラーがあるから
コンパイルエラーというものが存在している
156:デフォルトの名無しさん
15/12/18 16:54:10.35 SRTwlmwS.net
a+b という式があったとして
この式がどういう構造になっているか静的に構文解析することと
実際にa+bを計算するために実行することとは
全くの別物ということがわからない知能のままで32スレも書き込んでいたのかと思うと
頭が痛くなるな
157:デフォルトの名無しさん
15/12/18 16:54:12.86 SLQY/0qq.net
コードを見て頭の中で実行できなかったらプログミングなんて出来ない。>>153 は一行ずつコンパイルしてプログラムを書いているのかな?
158:デフォルトの名無しさん
15/12/18 17:00:07.74 SRTwlmwS.net
言っていることが全く意味不明
コンパイルと出来上がったプログラムを実行することは別物なのは当たり前
構文解析や意味解析は対象のプログラムを実行してはいない
このことは、コンパイルエラーとランタイムエラーという2つのエラーが有ることからも明白
コンパイルエラーはプログラムを実行せずともわかるエラー
ランタイムエラーはプログラムを実行しなければわからないエラー
2つに分かれているということは、別物だということ
159:デフォルトの名無しさん
15/12/18 17:02:58.30 SLQY/0qq.net
部分実行はしてるよ。完全実行はしてないだけで。しかも専用のインタープリターで実行するからリンカとかコンパイラーとか無関係なんだよね。
160:デフォルトの名無しさん
15/12/18 17:14:17.63 SLQY/0qq.net
>>156 あなたはちょっと文章が長いから馬鹿だと思われたくなかったら短く縮めたほうが良い。
161:デフォルトの名無しさん
15/12/18 17:42:12.82 SRTwlmwS.net
そもそもからして>>150は自分で「静的解析」と言っているわけで
静的解析なのに実行していたらそれは動的解析の手法だから
そもそも言葉の定義が怪しいんだよね
162:デフォルトの名無しさん
15/12/18 18:03:20.55 i13cEfwD.net
まあ、ランタイムエラーよりコンパイルエラーの方が尊い、で言い尽くされるな。(個人の感想です)
163:デフォルトの名無しさん
15/12/18 18:08:17.19 V1Ii3Ho8.net
静的も動的も適材適所だけど、入力補完の快適さはどうしても静的言語の勝ちだからなぁ
あの気持ちよさはやみつきになる
164:デフォルトの名無しさん
15/12/18 18:12:08.05 OysfGD3G.net
>>161
これ本当に同意
静的言語から入ると動的言語の補完の無能さに恐れ入る
165:デフォルトの名無しさん
15/12/18 18:19:29.16 47x3yklW.net
>>162
後学のため、実際に試してPharo Smalltalkとも比較したいので、
どの静的言語のなんというIDEから入って、
どの動的言語のなんというIDEの補完の無能さに恐れ入ったか教えてもらうことできます?
166:デフォルトの名無しさん
15/12/18 20:03:52.18 7Erpdy7Z.net
動的言語でも補完はできるよ(笑)
できるできないの話じゃなくて、
できることの量、正確さが、動的言語では圧倒的に少ない。
そういう話だからね。
補完以外もそうだけどさ。
167:デフォルトの名無しさん
15/12/18 20:04:50.48 7Erpdy7Z.net
あと、補完ができるにしても、実行時にしか出来ない。
という欠点も有るよね。
実行時にしか出来ないから、補完するためだけに
実行しなければいけない。
168:デフォルトの名無しさん
15/12/18 20:06:22.22 ZY6DzZKi.net
>>163
数値オブジェクトに対して文字列オブジェクトのメソッドまで補完候補に出てくるようなゴミは論外なんだよ引っ込んでろ
169:デフォルトの名無しさん
15/12/18 20:27:55.99 47x3yklW.net
>>166
ひどいなぁ…。で、試したのは Pharo Smalltalk のどのバージョン?
ちなみに手元の Pharo 4.0 だと
| num |
num := 1.23.
num
まで入れて as と打っても文字列オブジェクトのメソッド名は出てこないけど?
170:デフォルトの名無しさん
15/12/18 20:29:21.85 47x3yklW.net
>>165
え、どういうこと? コードをパーズして抽象構文木にするのも実行なの?
171:デフォルトの名無しさん
15/12/18 20:40:03.63 ZY6DzZKi.net
>>167
意地悪に書けばこういうことだよ
実行すれば分かるのは165も書いてるだろ
function foo() {
if (false) { bar(1) }
}
function bar(num) {
num.ここで補完
}
172:デフォルトの名無しさん
15/12/18 20:43:48.66 ZY6DzZKi.net
別に169のコードに意味があると言いたいわけじゃなくて、
あれでも数値メソッドだけ補完できるなら実行しなくても補完できてると言えるだけだぞ
勘違いすんなよ
173:デフォルトの名無しさん
15/12/18 21:31:26.55 7Erpdy7Z.net
>>168
(静的な)コードをパーズして抽象構文木にするだけで
なんで動的に決まるオブジェクトの中に関する補完ができると思うのか?
静的に補完できないから、動的に補完するしかないんだろ?
174:デフォルトの名無しさん
15/12/18 21:32:07.91 DSnroAdk.net
>>131
お前の言ってることは「本番中に発生したらダメ」っていわれてんの分からんのかな?
175:デフォルトの名無しさん
15/12/18 21:33:48.00 SLQY/0qq.net
パース
176:デフォルトの名無しさん
15/12/18 21:34:19.00 DSnroAdk.net
本番ってのはお前の言ってることは「解決済み」でなければならないし、デバッグ中なら他の手段でなんとかなるレベル
実にくだらんし、そんなことを高らかに言ってると他のユーザーにも迷惑千万
177:デフォルトの名無しさん
15/12/18 21:51:31.46 k38RLsj8.net
えーと、静的型付けの言語を使ってる奴は、単なる土方ってことでOKって話しなのか?
178:デフォルトの名無しさん
15/12/18 22:00:03.43 7Erpdy7Z.net
>>175
理由は? キッチリした仕事をやる=土方という定義なのかね?w
179:デフォルトの名無しさん
15/12/18 22:04:15.15 47x3yklW.net
>>169
たしかにそれは意地が悪い。w
180:デフォルトの名無しさん
15/12/18 22:09:28.58 k38RLsj8.net
>>176
ここまでで書かれている内容を要約すると、「静的型付けの言語では、typoをチェックしてくれる」って事だけなんだが?
181:デフォルトの名無しさん
15/12/18 22:20:39.15 ZY6DzZKi.net
静的型ならコンパイラがあればメモ帳でもできるtypoチェックと
IDE等のサポートが必要な補完を一緒にするなんてセンス無さすぎ
182:デフォルトの名無しさん
15/12/18 22:21:45.22 7Erpdy7Z.net
>>178
いや、だからなんでtypoをチェックしてくれる道具を使うと土方なのさ?
typoをチェックしてない道具を使って、typoと格闘する俺凄いとかそういう話?w
あと、それからtypoってよくあるミスであり、typoが原因で
大きなバグになることも有る。そして静的型が調べてくれるのは
typoだけじゃないからね。他にも説明しろっていうのなら説明するけど。
183:デフォルトの名無しさん
15/12/18 22:28:26.64 LnB+58/e.net
静的型と動的型っていいとこ取りはできないの?
オブジェクト指向と関数型ならできるのに。
184:デフォルトの名無しさん
15/12/18 22:32:25.87 7Erpdy7Z.net
>>181
できるよ。
ただし、有る情報を捨てるのと、無い情報を補完するのを比べると、
無い情報を補完するのは大変。
静的型で動的型風にするには、オブジェクト型で扱って
特定の型に強制的にキャストすればいい。
あとリフレクションの機能を使ったり、
Javaだとバイトコードを変更したりもできるね。
185:デフォルトの名無しさん
15/12/18 22:43:59.79 7Erpdy7Z.net
ぶっちゃけ動的型のメリットってタイプ数が少ないってだけで、
そもそもタイプ数の違いなんて、大した事じゃないし
その減ったタイプ数は、静的型の可読性の高さ+補完で相殺される程度だろう。
動的にクラスをいじれるというけれど、それってソースコードがあれば
ソースコードにパッチを当てれば良い程度の話だったりする。
186:デフォルトの名無しさん
15/12/18 22:44:30.19 LnB+58/e.net
>>182
うーん、あまりいいとこ取りとは思えないな...
187:デフォルトの名無しさん
15/12/18 22:47:37.08 k38RLsj8.net
>>180
ごめん、typoで困ったことがないから全く理解ができん
188:デフォルトの名無しさん
15/12/18 22:55:36.10 7Erpdy7Z.net
>>185
> ごめん、typoで困ったことがないから全く理解ができん
それが上級者と初心者の違いだね。
静的型のありがたさがわからないのは、経験が足りないからだって
分かったじゃないかw
URLリンク(cpplover.blogspot.jp)
> このコミットは、Makefileの中で、OpenSSLでheatbeatを無効にするマクロを定義するよう、
> コンパイラーオプションを指定するものだ。ただし、無効にするマクロは、
> OPENSSL_NO_HEARTBEATSなのに、このコミットで定義されているマクロは、
> OPENSSL_NO_HEARTBEATだ。なんと、typoをしている。これでは何の意味もない。
189:デフォルトの名無しさん
15/12/18 22:56:39.43 47x3yklW.net
たしかに
Smalltalk でも typo で困ることはない
190:デフォルトの名無しさん
15/12/18 22:58:14.53 7Erpdy7Z.net
困ることがないのは、単に経験不足ってだけなんだよね。
巨大なシステムを複数の人で作る。最初に開発した人以外がいじる。
そうなってくると、些細なミスでも、原因の調査に時間がかかるんだ。
数百行程度の小さいスクリプトをいじっている程度なら、
大して時間もかからず、困ると感じないだろうけどさw
191:デフォルトの名無しさん
15/12/18 23:08:19.10 k38RLsj8.net
Option Explicitをtypo対策に使う事を推奨する馬鹿と同じ匂いがする...
192:デフォルトの名無しさん
15/12/18 23:10:41.85 qLDL3KKH.net
「静的言語のメリットはIDEのおかげでtypoがないことなのだぁ!どぉだぁ!?」
「…」
「動的言語はいっぱいタイプするからタイプミスが多いんだろ?ん!ん?」
「…」
ギャグ漫画日和かこれ。
193:デフォルトの名無しさん
15/12/18 23:13:51.90 XVaxeCrB.net
>>189
そんなにおかしなことじゃないと思うけどなあ
194:デフォルトの名無しさん
15/12/18 23:14:23.82 XVaxeCrB.net
>>190
タイプミスは重要だよ
195:デフォルトの名無しさん
15/12/18 23:14:54.43 6PgNGDd6.net
プログラマはMacを使ってるってマジ?
スレリンク(news板)
196:デフォルトの名無しさん
15/12/18 23:29:42.98 k38RLsj8.net
>>192
タイプミスは、ロジックを追えば必ず見つかるミス
怖いのはタイプミスではないtypo
197:デフォルトの名無しさん
15/12/18 23:43:17.54 XVaxeCrB.net
>>194
そりゃいつかは見つかるだろうが、それにかける労力が大きいだろ。
198:デフォルトの名無しさん
15/12/18 23:47:14.07 7Erpdy7Z.net
だいたい、動的言語でも「できる」という話に持って行こうとするんだよなw
重要なのは「簡単に」できるかどうかであって。
199:デフォルトの名無しさん
15/12/18 23:48:52.66 XVaxeCrB.net
>>196
だねー。
200:デフォルトの名無しさん
15/12/18 23:54:41.63 k38RLsj8.net
タイプミスを調べるのに大した労力なんていらんがな...
リレーシーケンスの配線ミスを探す方が遥かに大変だよ
201:デフォルトの名無しさん
15/12/19 00:00:09.78 APSLa6hA.net
> タイプミスを調べるのに大した労力なんていらんがな...
な、経験が全然足りないんだよw
202:デフォルトの名無しさん
15/12/19 00:05:06.20 EQ0D2wf/.net
俺タイプミスしねーからわかんねーなその気持ち。静的だからね。
203:デフォルトの名無しさん
15/12/19 00:15:43.81 APSLa6hA.net
静的でも手抜きして、例えばyaml形式の設定ファイルを読み込んで、
アプリの全体から文字列でyamlファイルのデータにアクセスするような
コードを書いていると同じようにタイプミスすることあるよ。
こういうのは、設定オブジェクトを作って、内部ではyamlでもjsonでも
対応可能な設計にしておくと、アプリからは設定オブジェクトのメソッドや
プロパティを参照するだけになるから、間違いが無くなる。
(正確にはタイプミスが起こりえる場所を設定オブジェクトに押し込められる)
更に設定オブジェクトのリファクタリングで名前や階層を変えたり
単一値を複数値扱えるような変更があっても、設定オブジェクトを変更すると
それに依存する場所全てを明らかにしてくれる。
204:デフォルトの名無しさん
15/12/19 00:46:06.06 u/d4wrI0.net
適当な範囲でのテストを書いてないからタイポがどうとかこだわるんだろう。
たしかにテストがない場合の静的チェックは相当嬉しいものがあるが。
テストがまともにある場合に動的と静的の違いなんて 5 %以下だよ。
205:デフォルトの名無しさん
15/12/19 01:17:50.15 APSLa6hA.net
テスト万能説はやめろよw
どんなテストを書くっていうのか?
タイポしてないことを確かめるテストは書けない。
できるとしたら、何かのテストのついでとして、エラーが起きれば
タイポではないか? ということになるが、エラーが出たあとに、
ん? なんでエラーになった? バグかな?ってコードを調べるのも馬鹿らしい。
タイポしていてもエラーにならないことだってある。
そもそも、完璧なテストは書けるのか?って話もある。
適当な範囲のテストを書いてないからというが、タイポはミスだ。
人間はミスをする。ならばテストを書くことに対してもミスするだろう。
ミス無くテストを書いたという保証は得られない。
プロトタイプ的な実験コードに対してもテストを書くのか?という話もある。
テストを書く=時間がかかる だ。
テストは誰かが勝手に作ってくれるものじゃない。
テストを書く時点でコストがかかっている。
206:デフォルトの名無しさん
15/12/19 01:21:33.29 +ddvqKbr.net
出来なくても悔しくないもんって意見ばかりのところ恐縮ですが
Pythonはtypoも補完も静的解析できるからね(eval除く)
一緒にしないでね
207:デフォルトの名無しさん
15/12/19 01:24:52.39 nEJLJZaD.net
むしろ、できるの普通だから動的だとできねぇ!って言ってる人の仮想敵がわからんw
208:デフォルトの名無しさん
15/12/19 01:26:24.39 dNXWfsX0.net
そもそも静的型言語なら最近はIDEが偉いから
typoぐらいならコンパイルするまでもなくIDEが教えてくれる
VSなら間違っているところのコードの下にリアルタイムで赤の波線が出る
これでもかってぐらいわかりやすく教えてくれる
コンパイルする前の、まさに編集している段階でエラーがわかるから
その場でサクっと直せば良いだけ
コンパイルして、さらにテストして初めてtypoが分かるのと比べると
生産性が段違いだ
209:デフォルトの名無しさん
15/12/19 01:28:40.84 APSLa6hA.net
今はタイポの話をしたが、型チェックに関して言えば、
型チェックはテストでは検出できない。
なぜならば、これは関数の呼び出し方の間違いだからだ。
テストとは通常、関数が与えられた引数で正しい答えを返すことをテストする。
与える引数は正しいことが前提となっている。
例えばある関数の引数の数が変わったとしよう。テストも引数の数を変えるだろう。
しかし、実際のコードの呼び出し部分、ここの引数を変えるのを忘れたら、
テストは通るのに実際のコードでエラーが発生することになる。
もちろん呼び出し側のテストがしっかり書かれていればそちらでエラーが出るだろう。
つまり、Aという関数の仕様を変えた時、その関数を使用している場所全て、
関数B、C、D、E・・・でエラーが発生する。さあ大変なデバッグ作業の始まりだ!
もし、これらの関数でテストに見逃しがあったりしたならば、バグになるのは明白だ。
これは適当な範囲でのテストを書いてないからという程度ですむ話じゃない。
完璧なテストを書かないかぎり、呼び出し方が間違っていないかどうかはわからない。
完璧なテストを書けばいい?もし世の中に完璧なテストが有るならば、バグは一切無いだろうなw
210:デフォルトの名無しさん
15/12/19 01:29:47.38 APSLa6hA.net
>>204
> Pythonはtypoも補完も静的解析できるからね
できるできないの話じゃない。
できる量が違うという話。
静的で出来ることの「一部」が出来たからって
何も凄くはないんだよ。
211:デフォルトの名無しさん
15/12/19 01:36:22.40 P/E9W26M.net
>>204
どうやんの?
212:デフォルトの名無しさん
15/12/19 01:47:54.86 +ddvqKbr.net
>>208
出来ないコード出してみ
>>209
jedi-vim
213:デフォルトの名無しさん
15/12/19 02:13:01.48 APSLa6hA.net
>>210
Java
void func(String str) {
str. ← 補完できる
}
Python
def func(str):
str. ←補完できない
214:デフォルトの名無しさん
15/12/19 02:38:39.06 wzwqX1ml.net
>>211
それは無理だけど、動的型は関係なかったね
静的型でも型推論に必要な情報ないからね
def func(str: str) なら出来るよ
215:デフォルトの名無しさん
15/12/19 02:42:51.49 VdM6quSm.net
それはwww
216:デフォルトの名無しさん
15/12/19 02:45:46.18 APSLa6hA.net
>>212
型推論っていうのは、型が断定できるときに記述を省略できる
"追加機能" であって、型推論を持ち出す意味が無いんだが。
で、動的型むりでしょ?w
静的型はできるでしょw
ほら、言ったとおり。
217:デフォルトの名無しさん
15/12/19 02:55:03.23 APSLa6hA.net
動的型の「できる」っていうのは、ローカル変数など
大概狭い範囲での話なんだよね。
どちらかと言えば、狭い範囲のものは、その場所だけ
注意してみればいいからそこまで必要ない。
静的型の型チェックが便利なのは、広い範囲の依存関係の矛盾を暴き出すことだから
こういうのは単体テストが主である自動テストではテストがしづらい部分。
つまり、関数の引数とかクラスの継承関係とかオブジェクトのメソッドとか
そういう「インターフェース」に関わる部分の矛盾のテストができる。
218:デフォルトの名無しさん
15/12/19 02:58:01.15 OdWxPmQd.net
haskellやocamlでは、取り敢えず関数名と引数だけ書いて(型は書かない)
中身はundefinedやassert falseにしておき(つまり、まだ実装しない)
関数を呼び出す側を先に実装する手法をとる事が良くある。
いわゆるトップダウン型の実装ね。関数型と相性が良いけど、仕様が明確な大規模開発にも向いてる。
で、そのときは呼び出し側の使われ方から型推論できるから
引数の型を書かなくても型推論できる。
ドカタ言語使いには想像も出来ないだろうけど、そういう世界もあるってこと。
219:デフォルトの名無しさん
15/12/19 02:59:35.78 APSLa6hA.net
Javaでは、取り敢えず関数名と引数だけ書いて(型はObjectにしておく)
関数を呼び出す側を先に実装する手法をとる事が良くある。
それと何も変わらないNE!
220:デフォルトの名無しさん
15/12/19 03:01:04.70 OdWxPmQd.net
>>217
それObjectのメソッドだけしか補完出来ないけど?
221:デフォルトの名無しさん
15/12/19 03:02:59.96 APSLa6hA.net
>>216
その文章から、どういった理由でドカタ言語なのかわからないのは、
お前が、ドカタということで心の安定を保つためだと思ってるYO!
222:デフォルトの名無しさん
15/12/19 03:05:24.53 APSLa6hA.net
>>218
呼び出し側の使われ方から推論できるよ?
正確には「呼び出し側が使われた時」っていうのは
呼び出し側の型も決定したってことだから、
関数の実装をするときにその型に書きなおすだけでいい。
関数の実装するんだから、すぐ上の行を編集するだけ。
223:デフォルトの名無しさん
15/12/19 03:06:46.74 OdWxPmQd.net
>>219
どういった理由かも分からないのに、ドカタ言語と言われて
君はJavaを連想してしまったんだね。
話の流れ的にpythonでもsmalltalkでもおかしくなかったのに。
224:デフォルトの名無しさん
15/12/19 03:09:08.23 APSLa6hA.net
>>221
へ? Javaの話を今までしていたその続きをしただけだけどw
うわー、やっぱりこう他の言語をディスることで
心の安定を(笑)うわーwww
225:デフォルトの名無しさん
15/12/19 03:09:11.65 OdWxPmQd.net
>>220
計算機が正しく自動的にやってくれることを
手で書くのはアホのする事ですよ
typoしてIDEに赤線引かれちゃうかもよ?
226:デフォルトの名無しさん
15/12/19 03:10:20.46 APSLa6hA.net
>>223
> 計算機が正しく自動的にやってくれることを
呼び出し側を間違えたら、計算機は間違いますよw
計算機は、書いた通りに動く。
何が正しいかはプログラマが決めるもの。
227:デフォルトの名無しさん
15/12/19 03:12:18.93 APSLa6hA.net
呼び出し側から推論すると言っても、
呼び出し側が矛盾することだってあるしね。
fooという関数をintを引数にして呼び出している場所と
stringを引数にして呼び出している場所があったらどうなるのか。
定義は一箇所にするもの。
関数の定義こそが一箇所に絞り込める唯一の場所。
使ってる場所で、決めるっていうのは
間違いの元にしかならないよ。
228:デフォルトの名無しさん
15/12/19 03:15:03.21 OdWxPmQd.net
>>224
コンパイラが型推論して自動生成した型を見ても間違いに気がつかないなら
手で書いても間違ってるだろうね
229:デフォルトの名無しさん
15/12/19 03:16:20.72 OdWxPmQd.net
あ、もしかして型推論した結果を出力できるって知らなかったかな?
ゴメンね分からない話して。
230:デフォルトの名無しさん
15/12/19 03:20:44.63 APSLa6hA.net
静的型の型推論って機能はコンパイラが推論して
型が決定できた時に、記述を省略してくれる機能。
だから(推論が)正しいか、推論できないかの2つに別れる。
推論できた時、それは正しい。
だけど動的型の場合、推論は本当に推論でしか無いんだよね。
こうじゃないか?って思いました。コンパイラがいう。
だから、計算機は正しく自動的にやってくれるわけじゃない。
所詮、推論でしかない。
231:デフォルトの名無しさん
15/12/19 03:21:26.48 APSLa6hA.net
>>227
やっぱり正しく自動的にやってくれるんじゃないんですねwwww
232:デフォルトの名無しさん
15/12/19 03:24:05.57 srVmyYNw.net
>>228 静的型の型推論は推論できた時、それは正しい と 動的型の場合、所詮、推論でしかない この二つは整合するのかい?
234:デフォルトの名無しさん
15/12/19 03:30:45.67 OdWxPmQd.net
>>228
最後まで書き込んでたら勝ちってゲームしてるつもりかな?
もうちょっと中身のある事を書こうね。
関数型言語の型推論だと、複数の場所で矛盾する型を書いたら即座にエラーになるから間違いを早く発見できるし(>>217は型を書く段階まで発見できない)、
間違っていたときも型推論の出力を見ながら修正できる。
たしか、早くより少ない労力でエラーを発見できる方が優れてるんだよな?
235:デフォルトの名無しさん
15/12/19 04:45:37.26 ysM2oFx/.net
動的型の場合、型が矛盾することはない。
なぜなら、どんな型でも入れることが可能だからだ。
なお型が矛盾しないからといって、正しく動くわけじゃないw
236:デフォルトの名無しさん
15/12/19 05:08:30.90 srVmyYNw.net
型って厳密には何の型の話をしてる?
入れるって書いてるから変数型かな
237:デフォルトの名無しさん
15/12/19 05:20:10.46 ysM2oFx/.net
変数もだけど、それ以上に重要なのは
関数の引数の型。
238:デフォルトの名無しさん
15/12/19 06:11:42.29 uwvw3g3I.net
>>232
一方、静的型付言語でも、型が矛盾しないからといって、正しく動くわけでもないw
239:デフォルトの名無しさん
15/12/19 06:13:31.81 uwvw3g3I.net
>>231
静的型付関数型言語で型エラーの本当の原因を探すよりも
Smalltalkで実行時エラーの本当の原因を探すほうが遥かに簡単で間違えにくい。
240:デフォルトの名無しさん
15/12/19 07:30:05.05 TW2fFhuS.net
そもそも静的型付けのヒトは、コンパイルが通れば
型の不整合によるエラーはぜったい起こらないという前提なの?
そんなちゃんとした型システムの言語、あんたら使ったことないだろ
241:デフォルトの名無しさん
15/12/19 07:51:26.41 ysM2oFx/.net
>>237
1か0じゃない。出来る限りコンパイル時に解決してくれれば
動的に解決する問題が減る。
静的型で型の不整合が起きるコードなんて限られてるんだから、
その影響範囲を小さくすることで、動的なものを静的に
解決できるように設計するんだよ。
静的に解決するのと動的に解決するのとの差は大きく、
動的だとすべての実行パスを、実際に実行しないと信頼出来ないが
静的だと実行する必要が無いから、すべての実行パスを実行するコストが0になる。
242:デフォルトの名無しさん
15/12/19 09:07:04.58 P/E9W26M.net
>>210
俺もJedi-vim使ってるけどこれってどうやって配列の中身に補完かけんの?
何回やっても出来なくてPythonゴミだと思ってた
243:デフォルトの名無しさん
15/12/19 09:33:28.96 TW2fFhuS.net
>>238
> 1か0じゃない。
あんたらの言ってることは1か0かでしかないよ。w
ここでもすでに2つもやってる
> すべての実行パス
> コストが0
244:デフォルトの名無しさん
15/12/19 09:33:42.26 QugsHy5+.net
typo、typo言ってる奴が何を言ってるのか分かってきた
オブジェクト指向とか、関数型とかいう前に、構造化プログラミングが出来てないからtypoで困るのか
245:デフォルトの名無しさん
15/12/19 09:34:15.15 u/d4wrI0.net
>203
こいつまじでテスト書かないんだろうな。。
適当にその型のオブジェクト生成して引数で突っ込んでメソッドなり関数なり呼べばいいだけだろ。
型があってなけりゃ大概まともになんて動かんわ。
>そもそも、完璧なテストは書けるのか?って話もある。
テストでもプログラムでも「完璧な」なんてありえないんだよ。
確率や効率をいかにあげるかって話だ。
>テストを書く=時間がかかる だ。
当たり前だ。それなりの精度のもの作るならそうなる。
プロトで作るくらいの規模のもので型エラーでほとんど動かんもの作る奴なんてどっちにしろ
まともなものなんて作れんわ。
246:デフォルトの名無しさん
15/12/19 09:35:02.37 ysM2oFx/.net
なんで構造化プログラミングとtypoが関係有るんだ?
無関係なものを結びつけたがるよなw
まるで、そういう印象をあたえるのが目的かのようだwww
247:デフォルトの名無しさん
15/12/19 09:36:58.29 ysM2oFx/.net
>>242
> 適当にその型のオブジェクト生成して引数で突っ込んでメソッドなり関数なり呼べばいいだけだろ。
> 型があってなけりゃ大概まともになんて動かんわ。
わかってないねw
適当にその型のオブジェクト生成して突っ込むというテストコードを書いたからといって、
そのテストコード以外の部分には、当てはまらないんだよ。
テストコードだけがうまく動作するwww
> 型があってなけりゃ大概まともになんて動かんわ。
問題はそこからだな。まともに動かない。原因は何か?
デバッグ大変だぁw
248:デフォルトの名無しさん
15/12/19 09:38:45.80 ysM2oFx/.net
引数が違うっていうのは、呼び出し元と呼び出し先の
インターフェースの問題なのだから
単体テストでは見つけることが出来ないんだよ。
これは結合テストの範疇。
249:デフォルトの名無しさん
15/12/19 09:41:53.19 TW2fFhuS.net
結局、静的型付けのヒトの主張は
- 動的型付けで静的型付けのような完全なチェックは不可能
- 完全なチェックを妨げる言語機能は自分達には無価値
- 静的型付きはすばらしい。だからおまえ等が使わない理由が分からない。バカなの?
ただこれだけのこと
250:デフォルトの名無しさん
15/12/19 09:45:53.67 P/E9W26M.net
あと補完が素晴らしい
251:デフォルトの名無しさん
15/12/19 09:47:41.17 8SzZHE5V.net
動的型はダックタイピングを期待して故意に複数の型を許すこともある
だから、仕組み的に静的型付けより正確な補完ができることはありえない
>>216
戻り値にShowとかCloseとかのよくあるメソッド呼ぶだけだとどうしても補完は不足する
C#とかの補完は、加不足なく表示されるのがポイントで、リファレンスを参照する手間がないのがありがたい
>>181
dynamic型とかでできるよ
でも補完が効かないし、遅くなって静的コンパイル言語の利点を潰しちゃうからあんまり使われない
252:デフォルトの名無しさん
15/12/19 09:49:18.71 ysM2oFx/.net
>>246
> 結局、静的型付けのヒトの主張は
なるほどw 動的型の人の主張はそういう反論しかできないから
話をこれだけにしてくださいってことだなw
253:デフォルトの名無しさん
15/12/19 09:50:10.54 ysM2oFx/.net
この3つ以外の点には反論しなかったなーw
面白い反応だwww
254:デフォルトの名無しさん
15/12/19 10:09:02.79 QugsHy5+.net
>>243
typoが発見できないような広い範囲をテストするなんてことは基本的に有り得ない
255:デフォルトの名無しさん
15/12/19 10:10:22.76 l6AIqaac.net
静的型のヒトはいったい何が目的なんだ?
自分が理解できない動的な考え方の排斥か?
自分たちの土俵での優位性を主張したいだけなのか?
256:デフォルトの名無しさん
15/12/19 10:13:36.72 uwvw3g3I.net
>>248
>動的型はダックタイピングを期待して故意に複数の型を許すこともある
>だから、仕組み的に静的型付けより正確な補完ができることはありえない
ちがうなw
特定の型の引数しか扱えないような低性能な静的型と違って、
動的型は任意の型を取る能力を持っているから、
動的型のほうがより「正確に」可能な型に関係した補完が可能なんだよ。
257:デフォルトの名無しさん
15/12/19 10:21:30.79 8SzZHE5V.net
>>253
え?どういう補完を指して優れてるって言ってるの?
型にしばられすぎないことが利点の動的言語で静的言語並の補完したら良さを潰してるとしか思えないんだが
258:デフォルトの名無しさん
15/12/19 10:26:19.12 dtnFGkzr.net
補完なんて必要ない。IDEを使っていたころ補完にばかり頼っていたらforの書き方さえ分からなくなってた。漢字と一緒で読めるのと変換するのと、漢字を書けるのとは
全く別のことだと言うことがわかったよ。それ以降、補完に頼ることを止めて以来コードの質が上がったということは言うまでもない。
259:デフォルトの名無しさん
15/12/19 10:51:48.54 oOYHp+m9.net
補完に助けられてコンパイラの型エラーをつぶしつぶしでないとまともにコードすら書けない、それが土方。
260:デフォルトの名無しさん
15/12/19 10:56:29.09 P/E9W26M.net
補完ないとクラスのメソッド名全部覚えないといけないじゃん……
261:デフォルトの名無しさん
15/12/19 10:59:35.33 eeFVwRM7.net
補完とかタイポにそこまで拘る人って
一日二万行くらいコード書いてるのかな?
プログラミングの本質はタイピングじゃなくて設計なんだけどな
俺はemacsとabbrevだけで十数年食ってるよ
262:デフォルトの名無しさん
15/12/19 11:07:06.94 t89iAcrU.net
職業プログラマが2chに来て議論している...
263:デフォルトの名無しさん
15/12/19 11:07:11.55 l6AIqaac.net
>>249
読解力 and/or 論理的思考 も欠如して、かわいそうに…
ただ煽るだけしか能がないのか。そんなんでよくまともなコードを書けるな。
それともあれか、俺たちも我慢して型情報を書いて、それと引き替えに型安全と補完というメリットを得ている
お前らそれを馬鹿にして否定したり、あまつさえ俺には必要ない別のメリットを享受することなど許さないってか
264:デフォルトの名無しさん
15/12/19 12:35:58.10 wzwqX1ml.net
>>239
普通に配列の中身も補完できたよなーと思って試したらやっぱり出来たから、
そっちの環境がおかしいんじゃね?
265:デフォルトの名無しさん
15/12/19 13:21:35.87 dNXWfsX0.net
>>212のような機能は動的型言語が静的型言語から輸入した機能だから静的型の機能なわけだけど
動的型界隈においても静的型のメリットが評価されてきたってことでもあるが
それはともかくとして、>>212のような書き方をするとfuncはstrと派生クラスしか受け付けなくなるから
動的型の柔軟性が全く損なわれるわけだけどね
動的型言語なのにメタプログラミングもクソもないC言語レベルのコーディングを強いられるのはなんとも
一方で静的型言語で>>211のような型を指定しない書き方をするときは
ジェネリックやテンプレートを使うわけだけど、この場合コード補完こそ効かないけれど
静的に解決するので少なくとも型のミスやtypoのミスはコンパイルエラーになる
静的型言語のタイプセーフはジェネリックでも健在ということ
これは動的型言語の取ってつけたような貧弱な静的型システムでは実現できていない
しかし静的型のジェネリックは静的に解決するので動的なダックタイピングは出来ない
でも、動的なダックタイピングのような危険な行為は本当に必要なのかどうなのか
殆どの場合は静的なダックタイピングだけで十分だし、コンパイルエラーで検出できたほうが良い
動的な多態をしたければ、インターフェースを介して行ったほうが安全
266:デフォルトの名無しさん
15/12/19 13:24:08.37 dNXWfsX0.net
> >そもそも、完璧なテストは書けるのか?って話もある。
> テストでもプログラムでも「完璧な」なんてありえないんだよ。
> 確率や効率をいかにあげるかって話だ。
そこで静的型言語の出番
少しでもバグを減らすためには静的型言語が有用
267:デフォルトの名無しさん
15/12/19 13:38:36.46 a/6r0NiU.net
静的型付け言語の潜在開発生産性は今の100倍 ×5
スレリンク(tech板)
もうこっちでよくないか?
268:デフォルトの名無しさん
15/12/19 13:41:55.99 XdSebzRf.net
マイナンバー制度は受け取り拒否をすることで、破壊できます。
任意である通知カードの受け取りを政府広報が受け取れとCM
URLリンク(www.youtube.com)
マイナンバー通知カードを受け取ってしまっても、市町村に送り返そうURLリンク(www.youtube.com)
311東日本大震災は人口地震テロ さゆふらっとまうんど(平塚正幸)URLリンク(m.youtube.com)
マイナンバー通知カードの受け取りを拒否しようURLリンク(www.youtube.com)
269:デフォルトの名無しさん
15/12/19 13:43:56.73 a/6r0NiU.net
>>265
拒否する理由がない。
拒否するだけじゃただの反抗期。
すごくダサい。
270:デフォルトの名無しさん
15/12/19 13:54:09.76 dNXWfsX0.net
ここまで来て静的型言語のメリットは散々語られているが動的型言語のメリットはあまり語られていない事実
大体は動的にクラスを書き換え出来る、とかといった危険なメリットが有るぐらい
最近は動的型言語にも静的型の機能(の中途半端なもの)が
どんどん導入されてきていることから考えると
動的型言語界隈の人にとっても静的型のメリットは大きいということ
ただし、取ってつけたようなものなので、ジェネリックが無いわけだが・・
人間は完璧じゃないのでテストも完璧とは限らない
機械的に検出できるエラーは多ければ多いほどよい
俺らはコンピュータを使って普段色々なことを自動化するためにプログラムを書いているわけだから
我が身自身のエラーの検出も出来るだけ多くコンピュータで自動化しようというのは当然の事の流れ
他人の仕事は自動化しているのに、自分たちの仕事のエラー検出を自動化しないのは変な話
動的型言語は時代に逆行しているわけだ
最先端と勘違いしていた人たち、可哀想
271:デフォルトの名無しさん
15/12/19 14:06:24.99 srVmyYNw.net
できるだけ良い設計をしたいから動は静の機能を取り込む
できるだけ早く動作を確認したいから静は動の機能を取り込む
動作の確認はどう設計されたかの確認とも言える
272:デフォルトの名無しさん
15/12/19 14:08:42.41 a/6r0NiU.net
>>267
ruby on railsとか一時期流行ったよねー。
これからはlightweight languageだとか言ってね。
人力で型チェックのコード書くのだりーってことに気がついて下火になった。
273:デフォルトの名無しさん
15/12/19 14:19:06.48 6Pr5+KRd.net
動的なんて局所でスクリプト組み込めばいいだろ。
全部動的言語とか初心者かよ。
274:デフォルトの名無しさん
15/12/19 14:26:41.75 srVmyYNw.net
全部静的言語も設計が甘いと仕様変更に弱いところがある
静的言語でしっかり設計して動的に仕様に追従できるようにしたいものだ
275:デフォルトの名無しさん
15/12/19 16:05:53.13 QugsHy5+.net
ここまでで分かった静的言語の利点typo
276:デフォルトの名無しさん
15/12/19 17:18:06.84 TmayNbxK.net
javascriptはエラーを放置するからストレスなくインターネットをモザイク出来るんだよ
277:デフォルトの名無しさん
15/12/19 17:40:05.11 ysM2oFx/.net
> ここまでで分かった静的言語の利点typo
意訳
静的言語の利点はtypoだけなんだって思い込みたい
だって、それ以外の利点に反論することが出来ないんだもん。
278:デフォルトの名無しさん
15/12/19 17:58:11.97 xOPNzksg.net
なぜそう解釈したいの?w
279:デフォルトの名無しさん
15/12/19 18:11:56.47 ysM2oFx/.net
静的言語の利点はいろいろ出てるのに、
typoしか指摘してないからだよw
280:デフォルトの名無しさん
15/12/19 18:44:52.65 OdWxPmQd.net
smalltalkのような動的言語もhaskellのような静的型付け関数型言語も、
設計上のトレードオフで異なる方向性に進んだだけであって、
どちらにも良いところは一杯あるよ。それで良いじゃないか。
もちろんJavaにも良いところはある。ドカタでもコードらしき物が書けるところとか。
281:デフォルトの名無しさん
15/12/19 18:49:17.24 a/6r0NiU.net
>>277
Javaが普及した理由って文法がシンプルだから?
282:デフォルトの名無しさん
15/12/19 18:54:52.90 dNXWfsX0.net
VMのおかげ
283:デフォルトの名無しさん
15/12/19 18:55:37.15 srVmyYNw.net
たくさん使われたから普及しただけだし
たくさん使われたからドカタが生まれたよ
284:デフォルトの名無しさん
15/12/19 18:56:01.89 ysM2oFx/.net
能力が劣る人でも使える言語=その言語は優れている
こういう矛盾があるんだよなw
285:デフォルトの名無しさん
15/12/19 18:57:07.90 ysM2oFx/.net
>>280
その理屈だと、たくさん使われてる言語を使ってる人=ドカタってことになって
なぜドカタなのか?の理由がなくなるぞw
286:デフォルトの名無しさん
15/12/19 18:58:09.44 ysM2oFx/.net
自分が好きな言語が普及しないと悔しいだろう?
自分が嫌いな言語が普及すると悔しいだろ?
悔しかったら、叫べばいいんだよ。
お前のカーチャンデーべそ!
287:デフォルトの名無しさん
15/12/19 19:02:44.62 99cf/LSi.net
Windowsを使ってる奴はドカタ
それでいいじゃないか。
288:デフォルトの名無しさん
15/12/19 19:04:44.99 ysM2oFx/.net
本来のドカタの定義からは外れて、
低能な悪口になってしまってるよなw
ドカタとする理由はない。
単にドカタと呼ばれれば気分悪いだろう?
っていう気持ちだけで言ってるw
やーい、ドカタ(笑)、ドカタ(笑)
俺はドカタじゃないもん!
289:デフォルトの名無しさん
15/12/19 20:54:40.24 9zezTTvK.net
>>274
静的言語の利点はコードコントラクト
URLリンク(monobook.org)
290:デフォルトの名無しさん
15/12/19 21:32:04.90 VDGaUBLZ.net
スレタイの議論は興味あるし読みたいのだが、
静的か動的か(やっぱり静的サイキョ)みたいな
議論は適材適所という話でしかないしどうでもいいや。
291:デフォルトの名無しさん
15/12/19 22:54:29.05 9zezTTvK.net
学習コストとシングルスレッド性能でいえばオブジェクト指向
副作用の低減とマルチスレッド性能でいえば関数型
大事なのはバランス感覚。
中間が素晴らしい。
オブジェクト指向で関数型で基本静的で動的も使えunsafeも使えるC#が最強なんだな。
292:デフォルトの名無しさん
15/12/19 23:15:07.87 0/RlvyV4.net
Objective-Cはクソ
これだけは間違いない
293:デフォルトの名無しさん
15/12/19 23:15:59.92 25MZJC6Y.net
純粋関数型ってstaticオジサンと何が違うの?
294:デフォルトの名無しさん
15/12/19 23:46:59.99 99cf/LSi.net
C#なんてマイナー言語誰が使ってんだよ
295:デフォルトの名無しさん
15/12/19 23:55:31.17 GM3q6wlH.net
そらMS系とUnityユーザあたりでしょ
296:デフォルトの名無しさん
15/12/20 01:22:59.25 ei3pb2OR.net
クリスマスなのでXamarinが無料らしいぞ
URLリンク(realtime.search.yahoo.co.jp)
297:uy ◆Qawu9.2l1E
15/12/20 01:23:00.97 I1JEaeeo.net
>>288
バランスwwwwwwwwwwwwwwwww?WwWWWwWw
低能特有の曖昧でふわふわした表現ワロタwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
298:デフォルトの名無しさん
15/12/20 01:27:54.27 ei3pb2OR.net
基本はキッチリカッチリだろうけJSONなんかを扱う場面ではアホくさいしバランス感覚は重要じゃね。
299:デフォルトの名無しさん
15/12/20 02:21:28.75 IuSUOMsB.net
バランス大事だよほんとw
求められてる範疇で都合
300:よく使えるいいんだ。百点の理想郷なんかなんかいらんのよ クライアントないし上長の要望に立ち向かうってこと自体、曖昧でふわふわしたところにやんわりと釘を刺し続ける行為だしね 90点もいらない、10点の仕事を最安で求められたなら10点できっちり済ませるのが土方クオリティ
301:デフォルトの名無しさん
15/12/20 02:24:10.18 jqjYNF9z.net
曖昧な要望で10点なんてきっかり分かるわけ無いだろ。
矛盾したこと言ってるなよ。
302:デフォルトの名無しさん
15/12/20 02:39:17.80 IuSUOMsB.net
おお済まない。クライアントじゃなく、こちらの想定上の理想を100点という意味で書いてたつもりだった。
303:デフォルトの名無しさん
15/12/20 07:15:36.12 2L75ZkE+.net
いまだに「関数型はマルチスレッド(マルチプロセス)に強い」と思い込んでいる人がいるんだな。
20年前にはそんなものは神話だということがバレているわけだが。
304:デフォルトの名無しさん
15/12/20 07:17:27.87 2L75ZkE+.net
>>286
もしかして、動的型言語では契約プログラミングができないとでも思い込んでいる?
305:デフォルトの名無しさん
15/12/20 07:54:40.31 jqjYNF9z.net
なんでもそうだが、動的言語のできるは、
静的言語でできることの「一部」しかできない。
いっつもできるできないの話に持ち込んで
同じことができると錯覚させようとするんだよなぁw
306:デフォルトの名無しさん
15/12/20 08:43:25.14 gr0U1KS4.net
>>299
神話じゃなくってそれはどうすればいいのか知らないだけのことで、少なくとも完全にパッケージングされていれば
きにならないことだ
307:デフォルトの名無しさん
15/12/20 08:49:50.37 fsY0id6u.net
C# + EF使うとSQLのtypoすらほとんど無くなる
あれは感動
308:デフォルトの名無しさん
15/12/20 09:30:42.11 hK9ny108.net
なんでもそうだが、静的言語の「動的」にできるは、
動的言語でできることの「一部」ですらないまがいもん。
いっつもできるできないの話に持ち込んで
同じことができると錯覚させようとするんだよなぁw
それでそのことを指摘すると、動的な機能なんていらないとか
typoの修正が完全じゃなくなるとか、補完の精度が落ちるとか
挙げ句の果ては、動的だと動かさないと型チェックできないとか
0か1かの極論を展開して煙に巻こうとするんだよなぁw
で、さらにそれを指摘すると、それしか反論がなかったからとか開き直る。
さんざん動的のメリットを言ってもユースケース想像できなくて頭ごなしに拒否。
ドカタは世界が狭いから、静的型だとダメだから動的に移る人もいるって
わかんないんだよね
309:デフォルトの名無しさん
15/12/20 09:35:11.37 jqjYNF9z.net
それで言い返したつもりなんだろうけど、
静的言語でなんでも動的にできるなんて言ってないがねw
逆に静的に決めることが利点なわけで、動的でやろうとは思わない。
そりゃ動的にすることも出来なくはないけど、できればやりたくない。
310:デフォルトの名無しさん
15/12/20 10:57:03.24 bx1tuSu0.net
そうなんだよね
C#には動的型言語みたいな機能のdynamicがあるけど
静的型言語を使っておいて全部の変数をdynamicで書こうとは思わないよね
キャストもなるべくしないようにすべし、というのが静的型の文化
一方で最近の動的型言語は静的型の機能を吸収していっているが
とても中途半端でジェネリックが無い
まさに、動的型の静的機能は静的型言語でできることの一部ですら無いまがい物だね
311:デフォルトの名無しさん
15/12/20 11:15:20.03 NKmQ5FTU.net
>>304
想像はできてない、かも分からんが
お前も言えてないよ
312:デフォルトの名無しさん
15/12/20 11:29:25.89 OjtiikyN.net
動的の利点はプロトを素早く書けるってところだろ。
あとは稼働を止めずにリプレースできるとか。。
静的言語の問題点は
静的解析してりゃテストはいらんとか言い出す馬鹿が発生し易いってことかな。
313:デフォルトの名無しさん
15/12/20 11:47:57.68 jqjYNF9z.net
> あとは稼働を止めずにリプレースできるとか。。
"その方法" は、クラウドの時代になって様変わりしたけどねw
今はサーバーにログインして、一台一台ソースコードを更新なんて
危険なやり方でリプレースしたりしませんw
新しいバージョンにしたVMを作成して最終確認した後
接続先を新しいVMに切り替えるんですよ。
このやり方に動的の利点なんかありません。
314:デフォルトの名無しさん
15/12/20 11:49:22.93 jqjYNF9z.net
× 静的言語の問題点は静的解析してりゃテストはいらんとか言い出す馬鹿が発生し易いってことかな。
○ 静的言語の問題点は静的解析してりゃテストはいらんとか言い出すんでしょう?
とかいいだす、動的馬鹿が発生し易いってことかなw
静的だとテストはいらんと言ってるのは動的厨だけ。
315:デフォルトの名無しさん
15/12/20 11:56:38.95 ZootpjTa.net
静的でも値に対するテストはするよな?それは型チェックで分からないからな
で、値に対するテストに通れば、型チェックも通ってると思うんだけど、
なぜか静的ドカタは動的だと型のテストコードも必要と思い込んでるみたいなんだよね
なんで?
316:デフォルトの名無しさん
15/12/20 12:49:50.49 jqjYNF9z.net
>>311
いろいろと勘違いしてるねw
重要なのは、テストも含めた開発のコスト。問題点は早く見つかる方がコストは低くなる。
そしてもう一つ。型チェックというのは正確にはインターフェースのチェック。
引数(シグネチャ)が正しいこと。クラスの継承関係などが正しいこと。
インターフェースのチェックだけに限れば、静的型はほぼ完全にテストできている。
(ほぼというのは意図的に静的型の型安全性を捨てた場合を除くから)
テストコードというのは、単体テストが主で、これはインターフェースのテストではない。
単体テストでインターフェースのテストを静的型と同等レベルまで動的型でテストするには
漏れがないといえるレベル(少なくともカバッジ100%)の完全なテストが必要になる。
しかし漏れがないことを証明する方法はないし、そもそもテストに問題がないことを証明する方法もない。
ちなみに、カバレッジ100%を目指せと言うと、それはやめろと言われる(笑)
テストを書くというのはコストがかかる。メンテナンスするのにもコストは掛かる。
テストを書かなくてもテストを書いたのと同じ効果が得られるのであれば、それに越したことはない
それがテストの一部であったとしても、テストのコストを下げることになる。
テストはどれだけやっても十分とはいえないんだから多ければ多いほどいい。コストがかからない方法(静的)ならなおさらだ。
動的型は完璧なテストがあれば十分だというが、そのような完璧なテストは存在しない。
TDD再考 (1) ? テストファーストとユニットテストへの死刑宣告 ( URLリンク(ubiteku.oinker.me) )
TDD再考 (2) ? 何故、ほとんどのユニットテストは無駄なのか? ( URLリンク(ubiteku.oinker.me) )
テスト駆動開発(TDD)はもう終わっているのか? ( Part 1 URLリンク(postd.cc) )
テスト駆動開発(TDD)はもう終わっているのか? ( Part 2 URLリンク(postd.cc) )
317:デフォルトの名無しさん
15/12/20 12:51:46.50 akw4ximt.net
なんだかよくわからんがVisualC#™️を信仰するおっさんが
自分がVisualC#™️推しだってことは隠して
Microsoft™️ .NETフレームワーク専用言語の
「静的言語(=Visual C#™️)は世界一なんだぞぉ!」
って主張するスレってことでいいかね?
318:デフォルトの名無しさん
15/12/20 12:55:58.25 Ava23gur.net
>>312
あ、ドカタ界隈ではインターフェースのテストはしてないんだ
なるほどね
319:デフォルトの名無しさん
15/12/20 13:00:45.19 jqjYNF9z.net
>>314
インターフェースのテストをしてるんだw
書いてみてよ。
320:デフォルトの名無しさん
15/12/20 13:05:09.23 jqjYNF9z.net
インターフェースのテストの意味がわからないお馬鹿さんがいるようなので
具体的に説明する。
foo(TypeA a, TypeB b, TypeC c) という関数がある。
この関数を使っている所がソースコードのあちこちに存在する。
静的型付けであれば、このインターフェース、つまり引数の型が違うものを
全て教えてくれる。
>>314はこのインターフェースのテストを書くらしいw
俺は実行して見る以外のやり方を知らないよ。
実行すればわかる? そうだね。”漏れがなく完璧なテストがあればね"
さあテストを書くお仕事だ。テストを書くのはコストは掛かるぞ。
テストをメンテナンスするのにもコストは掛かるぞ。
静的型付けでは、このインターフェースのテストにはコストはかからない。
321:デフォルトの名無しさん
15/12/20 13:10:54.30 hK9ny108.net
>>312
> インターフェースのチェックだけに限れば、静的型はほぼ完全にテストできている。
逆だろ
静的型ではほぼ完全にチェックできることしか書けないように、
本来ソフトウエアにできることに制限を設けてるだけ
322:デフォルトの名無しさん
15/12/20 13:11:34.10 Ava23gur.net
>>316
ドカタ界隈ではその関数を使ってるソースコードの単体テストはしないんだ
なるほどね
323:デフォルトの名無しさん
15/12/20 13:22:25.74 jqjYNF9z.net
>>317
> 静的型ではほぼ完全にチェックできることしか書けないように、
> 本来ソフトウエアにできることに制限を設けてるだけ
プログラミングの進化に伴い、なんでもできるアセンブラから制限をかけることで、
より安全なコードが書けるように進化しているという事実をどう考えてるのか?
>>318
> ドカタ界隈ではその関数を使ってるソースコードの単体テストはしないんだ
だからいったろ?
静的型のインターフェースのテストと同等レベルのテストを行うには
完璧なテスト(カバレッジ100%)が必要。だがテストが完璧だと保証する方法はない。
テストにバグがないことを保証する方法もない。
そしてカバレッジ100%を目指せというと、それはやめとけと言われる(笑)
もちろんカバレッジ100%では完璧ではない。特に動的型付けでは
コードパスによって引数は大胆に変わる可能性があるし、コード自体も変わる可能性がある。
あるコードを実行したら、オレオレパッチで関数のシグネチャが変わることさえも。
テストはどれだけやっても確実にはならない。ソースコードの単体テストに加えて
静的型付けのコンパイルチェックがあれば、単体テストだけよりもさらに完璧になる。
鬼に金棒ってやつだ。
所詮お前は、単体テストがあれば十分だって考えてる
あまちゃんってこと。
324:デフォルトの名無しさん
15/12/20 13:43:19.63 GK0ijEpp.net
>>319
つまり値に対するテストはロクにやらずに
本番でエラーが出ないことをガクブルしながら祈ってるわけね
なるほどね
325:デフォルトの名無しさん
15/12/20 13:44:12.09 dp1zfJIT.net
動的型付けに於いて、継承は不要
326:デフォルトの名無しさん
15/12/20 14:52:31.49 hK9ny108.net
>>319
> より安全なコードが書けるように進化しているという事実をどう考えてるのか?
抽象化=制限 じゃあない。
327:デフォルトの名無しさん
15/12/20 15:56:38.30 +uShK3RK.net
JavaScriptが最強のプログラミング言語。全ての言語はJavaScriptを模範として構成されるべきである。
328:デフォルトの名無しさん
15/12/20 16:28:07.52 bx1tuSu0.net
>>322
自動車にも自動ブレーキがつく時代だぞ
ファンヒーターやコンロも付けっぱなし防止機能が付いているし
電車なんかの制御も安全機能だらけだろ
初めから危ない動作はしないように制御されている
セーフティーは重要
お前らの書くプログラムも明らかに矛盾した入力は受け付けないようにしているだろ
ユーザーは何を入力するか分からんからな
普段そういう安全機能がついたものを使っておいて、また、作っておいて
どうしてそういう安全に関する考えを自分の
329:使う言語にまで発展させて考えられないの? 頭硬いの?どうして安全装置が無いことでドヤ顔できるの?
330:デフォルトの名無しさん
15/12/20 16:31:01.73 +uShK3RK.net
競輪選手の自転車にはブレーキついてないよ。
331:デフォルトの名無しさん
15/12/20 16:38:13.00 bx1tuSu0.net
あれはレース用だろ
そういう意味ではメガデモをアセンブリで作るような場合は安全は関係ないだろう
仕事で使うもの、あまたある業務用装置に
安全装置がついてないとでも言うか?
なまじ危ないことをするから安全装置だらけだぞ
ただし業務用装置にはコストの関係もあるから付いてない場合もあるが
それは劣っているというだけで、コストかけられるなら安全装置はついていたほうが良いのは当たり前
安全装置がついていないことをドヤ顔する人はいない
332:デフォルトの名無しさん
15/12/20 16:41:55.89 +uShK3RK.net
プロの使うコンロには安全装置ついてないよ。
333:デフォルトの名無しさん
15/12/20 16:46:14.53 0rzi2y0b.net
今後も0か1かの議論に固執するなら、他者の立場を理解することなんて永久にできないよ。
まあ、する気もないんだろうけど。
動的遅延結合性を大事にする人間は別に型は否定してない。
たまたま今の型システムは不自由だから、次善の策として動的型を使っているだけだ。
334:デフォルトの名無しさん
15/12/20 16:51:13.35 bx1tuSu0.net
お前らが普段作っている業務ソフトetcには安全装置がついてないのか?
誤った入力が有ってもそのまま実行するのか?
それか初めから誤った入力は出来ないように
無効なボタンは灰色表示にして押せないようにしているんじゃないのか?
当たり前だよな?
普段そういうものを作っておいて、作らされておいて
どうして自分の使っている言語に安全装置が足りてないことに気づかないの?
335:デフォルトの名無しさん
15/12/20 16:55:40.40 +uShK3RK.net
別に死ぬわけじゃないんで、プログラムに安全装置いらない人でも綱渡りするときは命綱は付けるでしょ。
336:デフォルトの名無しさん
15/12/20 17:27:57.19 9YX+2XWA.net
完璧を求めるなら依存型言語とか証明駆動開発をやってみるといいんでないか。まだ未開拓部分が多いんで人が増えると面白い。
正直、smalltalkはlispやprologと同じくらい極北なイメージがある。
Cのマクロしか知らずにマクロを批判してたらLisperに囲まれてボコボコにされるのと同じように、
Javaのオブジェクト指向しか知らずにOOPを批判してたらSmalltalkerにボコボコにされる雰囲気がある。
そして誰か、「この世は計算式」ってどういう意味なのか教えてください。
それがオブジェクト指向とどう対立するのかも分からん。
337:デフォルトの名無しさん
15/12/20 17:48:36.25 m7Ghdsbn.net
>>328
"型がわかんねぇから食えないもの食って死ぬ"ってぇなら
「おまえ誰だよ?」って型に聞けば「俺はこういう構造だよ」って
答えるようにすればいいだけだよなー
338:デフォルトの名無しさん
15/12/20 17:54:30.03 m7Ghdsbn.net
>>331
>そして誰か、「この世は計算式」ってどういう意味なのか教えてください。
建てた奴はオブジェクト指向vs関数型にしてやろうと思ってたけど
C#ジハードおじさんが来て「俺がいるところこそが唯一絶対の真理である!」って
やってるから皆でテキトーにそれつついて遊んでんじゃないの。
339:デフォルトの名無しさん
15/12/20 18:17:46.11 noY3begs.net
>>326
安全装置はついていれば便利なことも多いけど、必ずしもよいことばかりではないよ。
不完全な安全装置や安易な判断で設置された安全装置は、人の命を奪うことすらある。
もちろん程度問題で、すべてが悪と言う気はないよ。たぶん、それで助かる人は困る人より
はるかに多いだろうし。でも、それでいいと思う人ばかりじゃないことは理解をしないと。
現状の静的型が目的以外の使用を許さないところは、車に例えれば、安全装置のせいで
セルモーターを使った踏み切り脱出ができなくなったと嘆く教習所の教官の言葉を思い起こさせる。
340:デフォルトの名無しさん
15/12/20 18:22:06.62 rV5TNjST.net
あなたはだんだんずれていく...
341:デフォルトの名無しさん
15/12/20 19:19:03.42 +uShK3RK.net
安全装置のついた人生なんて何も面白くないからな。人生を危険に晒せだよな。
342:デフォルトの名無しさん
15/12/20 19:37:44.93 Ava23gur.net
Javaドカタはヌルポ例外を見過ぎたせいで
例外を必要以上に危険視する傾向があるという
343:デフォルトの名無しさん
15/12/20 19:39:46.66 +uShK3RK.net
素人が扱うM4ライフルとかよりMP5的なサブマシンガンのほうが殺傷率高いって事だろうな。
344:デフォルトの名無しさん
15/12/20 20:02:45.31 IBlQGaN+.net
>>304
>>なんでもそうだが、静的言語の「動的」にできるは、
>>動的言語でできることの「一部」ですらないまがいもん。
一部ですらって、何ができないの?
大方の動的言語に近いことはできるとおもってるんだけど・・・
345:デフォルトの名無しさん
15/12/20 20:32:36.37 jqjYNF9z.net
>>332
> 「おまえ誰だよ?」って型に聞けば「俺はこういう構造だよ」って
> 答えるようにすればいいだけだよなー
型に聞く必要があるのなら、なおのこと、
型があったほうがいいんじゃないの?w
346:デフォルトの名無しさん
15/12/20 20:52:12.77 hK9ny108.net
静的型でも構造的部分型とかならだいぶマシなんだけどね。
347:デフォルトの名無しさん
15/12/20 21:01:07.39 ILSUiSxT.net
>>301
>なんでもそうだが、動的言語のできるは、
>静的言語でできることの「一部」しかできない。
逆。原理的に静的型言語は動的言語の「一部」しかできない。
ばか?
348:デフォルトの名無しさん
15/12/20 21:05:03.98 ILSUiSxT.net
>>319
おまえは本当にばかだなあ。
静的型言語は型検査を通らないと型安全を確保できないが、
動的型言語は型検査などなくても型安全を確保できているんだよ。
349:デフォルトの名無しさん
15/12/20 21:11:05.33 IBlQGaN+.net
>>342
C#、VB.NETだと必要なところにだけ動的型を導入できる
TypeScriptではjavascriptに合わせて動的型にする場面も多い
Javaでもバイトコードでは対応したみたいだから、将来的に導入されるかも?
C/C++ではそんな不自然な機能には対応しない
350:デフォルトの名無しさん
15/12/20 21:12:53.77 HeaJTNm+.net
型が重要な箇所があるなら、その部分で型チェックすればいいじゃない
351:デフォルトの名無しさん
15/12/20 21:34:01.48 +uShK3RK.net
クッキーじゃないんだから型々いうなよ。日本人なら餅を食え。
352:デフォルトの名無しさん
15/12/20 21:37:01.46 eaGEBgum.net
煎餅食う
353:デフォルトの名無しさん
15/12/20 21:59:10.73 ywvYIxL3.net
C/C++でもポインタをフルに使ったら動的と同じ処理を出来なくもないけどな
354:デフォルトの名無しさん
15/12/20 22:09:54.59 akw4ximt.net
そりゃそうだ。オブジェクト指向も関数型もアセンブラでできるんだよ!なんだから。
355:デフォルトの名無しさん
15/12/20 22:13:03.00 hK9ny108.net
チューリングの泥沼に注意せよ。それは何事も可能であり、何事も容易に非ず
356:デフォルトの名無しさん
15/12/20 22:15:16.86 l3TBRkh9.net
クッキーの型で煎餅を焼くことも出来るわけですね!
357:デフォルトの名無しさん
15/12/20 23:15:04.42 3zlmhSVS.net
テストのコストとかビジネスライクなこと言うなよな
358:デフォルトの名無しさん
15/12/20 23:24:35.18 JMy37Egb.net
このリストがマストだ
359:デフォルトの名無しさん
15/12/20 23:46:56.43 akw4ximt.net
エビデンスを示したまえ
360:デフォルトの名無しさん
15/12/21 00:05:30.65 K9YQZ40/.net
319 みたいな馬鹿のいるプロジェクトは大変だろうな。。
ことあるごとに 100% じゃねーからとか言い訳してテストしなさそうだ。
361:デフォルトの名無しさん
15/12/21 00:20:21.16 wKrNpYiO.net
>>342
> 逆。原理的に静的型言語は動的言語の「一部」しかできない。
> ばか?
話の流れがわかってないw
原理的に動的言語は静的型言語でわかることの「一部」しか「静的に」判断できないできない。
静的型言語はなんでもできる動的言語の危険性を抑えるために
実行時にできることが制限されている。それが安全性につながる。
362:デフォルトの名無しさん
15/12/21 00:21:30.20 wKrNpYiO.net
>>343
> 動的型言語は型検査などなくても型安全を確保できているんだよ。
じゃあ、TypeAしか入れられない型にTypeBを入れて
それでどうやって静的に(実行せずに)型安全性を確保しているか教えて。
実行して落ちるのは型安全じゃないからねw
363:デフォルトの名無しさん
15/12/21 00:23:07.92 wKrNpYiO.net
>>345
> 型が重要な箇所があるなら、その部分で型チェックすればいいじゃない
それだと、どんな型を渡しても正しく扱えることはまず無いから、
殆どの部分で型チェックが必要になるぞw
特定の型固有のメソッドを呼んだ時点で、落ちてしまう。
364:デフォルトの名無しさん
15/12/21 00:48
365::12.97 ID:wV5Rx1o6.net
366:デフォルトの名無しさん
15/12/21 00:59:07.29 qoXEI4gu.net
静的型のチェックの「完全さ」が本当なら、このコンパイルが通る理由が分からん
import java.util.*;
class Hoge {
public static void main (String[] args) {
Collection<Number> nums = new ArrayList<Number>();
nums.add(new Integer(1));
nums.add(new Long(1));
Integer[] ints = nums.toArray(new Integer[nums.size()]);
for (Integer integer : ints) {
System.out.println(integer);
}
}
}
367:デフォルトの名無しさん
15/12/21 01:48:05.01 B3EXamn3.net
正直に白状するが、Javaは静的型付け言語としては貧弱で、たぶんSmallTalkerから見たらOOPの機能も貧弱。
nullはあるわisInstanceOfはあるわ後方互換性のせいで汚いメソッドがあるわで、潔癖な人にはおすすめできん。
現在に至るまでの資産が無ければ触りたくもならんです。
自分はML系の型システムでようやく静的型付けの有り難みが分かるようになった。
368:デフォルトの名無しさん
15/12/21 02:47:46.56 wKrNpYiO.net
>>360
IntegerとLongは共にNumberを継承しているから
369:デフォルトの名無しさん
15/12/21 04:14:30.72 7dJZ8TPE.net
>>357
本物のバカ?
まともな動的型言語なら、そもそもTypeAしかいれられない型なんて存在しないから。
メソッドが見つからなければ言語仕様通りに「正しく」例外を投げる。
例外ハンドラが設定されていなければ終了する。
静的型言語で例外を投げた時にハンドラがなければ終了するのと同じだ。
言語仕様通りに動作しているのだから、型安全は確保できている。
もし「実行したらメソッドが見つからないだけで落ちた」のは型安全じゃないというのなら、
URLリンク(ja.wikipedia.org)
でも読んでろバカ。
わかりまちたか、おばかちゃん?
静的厨はほんと型システムに関する知識が薄いね。だからバカなんじゃないかなあ。
370:デフォルトの名無しさん
15/12/21 04:52:19.75 wKrNpYiO.net
> メソッドが見つからなければ言語仕様通りに「正しく」例外を投げる。
言語仕様通りに「正しく」例外を投げる。
だけど、これはアプリの仕様からしたらバグだ。
話の前提わかってる?
言語を作る側の話じゃなくて
言語を使ってアプリを作る側の話をしてる。
371:uy ◆Qawu9.2l1E
15/12/21 05:10:51.36 ouS7hqFY.net
イライラジャップw
372:デフォルトの名無しさん
15/12/21 05:36:24.60 7dJZ8TPE.net
>>364
例外を捕捉しないのはアプリのバグであって言語のバグじゃないよw
自分のバカさを動的型のせいにするなってww
話の前提どうこう以前に、まずは自分のバカさを自覚しろw
373:デフォルトの名無しさん
15/12/21 05:39:43.68 wKrNpYiO.net
>>366
あんたは動的言語では例外が出るといった。
実行されるまでわからないということだ。
静的言語だと静的にメソッドが無いことを調べられる。
だからアプリのバグを減らすことができる。
少なくとも実行しなくてもわかるから、
早くバグを修正できる。アプリ開発のコストが下がる。
374:デフォルトの名無しさん
15/12/21 05:45:26.20 YADl95dr.net
なんだかすげえなw
375:デフォルトの名無しさん
15/12/21 06:16:48.64 7dJZ8TPE.net
>>367
そうでちゅね、静的型言語ではアプリをテストせずに開発できちゃうんでちゅね、すごいでちゅねwww
バカ丸出しw
376:デフォルトの名無しさん
15/12/21 06:19:38.14 7dJZ8TPE.net
こういうバカな静的厨に限って、
普通にレコード定義すればいいところでMap型を使って
アプリがキーエラーで落ちるw
377:デフォルトの名無しさん
15/12/21 06:39:28.24 G65zLFaz.net
>>362
すげーな。
コンパイルが通るってことは、このコード、ランタイムエラー吐かずに正しく動くんだな?
378:デフォルトの名無しさん
15/12/21 06:50:22.82 7dJZ8TPE.net
>>367
>少なくとも実行しなくてもわかるから、
>早くバグを修正できる。アプリ開発のコストが下がる。
HM型検査を実行するのと、ほんの数個の単体テストを実行するのと、
どちらが早くバグを修正できるでしょうかね?
ばーかw
379:デフォルトの名無しさん
15/12/21 07:01:32.16 wKrNpYiO.net
静的言語のテストは、単体テスト+静的解析からなる。
単体テストだけの動的よりも信頼性が高い。
380:デフォルトの名無しさん
15/12/21 07:02:38.27 wKrNpYiO.net
単体テストは完璧ではない。全てをテストするわけではない。
単体テストでテストできなかった部分も静的解析でテストできる。
鬼に金棒
381:デフォルトの名無しさん
15/12/21 07:03:44.31 wKrNpYiO.net
>>371
すげーな。単体テストさえあれば、バグは一個もない。
他にテストは要らないと思ってるのかw
382:デフォルトの名無しさん
15/12/21 07:18:53.80 7dJZ8TPE.net
バカだなあ…
メソッドがあるかないかぐらい単体テストでC0カバレッジで十分わかることじゃないかw
本物のバカだなw
383:デフォルトの名無しさん
15/12/21 07:19:42.76 7dJZ8TPE.net
ねえ、静的厨ってみんなこんなバカなの?
384:デフォルトの名無しさん
15/12/21 07:22:03.68 wKrNpYiO.net
> メソッドがあるかないかぐらい単体テストでC0カバレッジで十分わかることじゃないかw
カバレッジ100なのかい?
URLリンク(d.hatena.ne.jp)
> ■ コードカバレッジ 100 % の難しさ
> マイクロソフトの面接試験とかいう噂の問題。のバリエーション。
>
> 水槽に 100 匹の魚がいます。98 % はグッピーです。
> では水槽にいる魚の 99 % をグッピーにするには、何匹のグッピーを水槽に足せばいいでしょう?
> 知らない人は一瞬だけ考えてみてください。
>
>
>
>
>
> 答えは「100 匹」です。直感より多いですよね?
>
> これは、コードカバレッジ 100 % の難しさに似ています。グッピーがテストされた行で、
> パーセントがその割合 (カバレッジ) だと考えてください。カバレッジが 98 % のプロジェクトがあれば、99 % にするにはおよそ倍の労力が必要なわけです。
>
> 自分でテストを書かない人は、したり顔で「C0 カバレッジは 100 % で当然 (キリッ)」などと
> 言うのですが、世の中そんなに甘くないんですよね。
385:デフォルトの名無しさん
15/12/21 07:24:23.17 wKrNpYiO.net
C0カバレッジを100%にしてもバグは0にはならない。
これぐらい常識だろう?
386:デフォルトの名無しさん
15/12/21 07:41:17.41 wZBXbgJl.net
バグがゼロになるっていう話だっけ…
387:デフォルトの名無しさん
15/12/21 08:30:07.58 dc09zofZ.net
値エラー以外でテストするのはめんどくさいな。
メソッドがあるかないかで動的に条件分岐するところのテストなんてやりたくない。
388:デフォルトの名無しさん
15/12/21 08:36:09.75 dc09zofZ.net
型エラーの「可能性」まで事前に検知したいのか、
型エラーの「発生」をその時に検知できればいい、
というスタンスの違いってことか。なら理解できる。
389:デフォルトの名無しさん
15/12/21 09:01:27.79 7dJZ8TPE.net
>>379
メソッドがみつからない問題はC0カバレッジ100%で解決できるよ。
実際にはメソッドを叩いてる箇所のみが問題だから、厳密にはC0カバレッジ100%いかなくても網羅できるよ。
そんなことも知らずにテスト手法を叩いてたの?ばか?
390:デフォルトの名無しさん
15/12/21 09:03:29.84 7dJZ8TPE.net
>>382
正確には、コンパイラによる静的型検査では「事前に」検知できないよ。
型検査という一種の証明手続きの「実行」によってしか検知できない。
にもかかわらずバカな静的型厨は「実行前」「実行前」とバカのように連呼する。
バカだから仕方ないけど、バカ丸出し。
391:デフォルトの名無しさん
15/12/21 09:08:42.38 G+qBG4+k.net
ゴキブリ韓国(ゴキ韓) 日本は国交断絶せよ
民主主義は無理 世界一民度低い国
URLリンク(goo.gl)
392:デフォルトの名無しさん
15/12/21 09:10:23.98 dc09zofZ.net
>>384
>型検査という一種の証明手続きの「実行」
それは一般的に言うところの「コンパイル」もしくは「リンク」に相当するもの?
393:デフォルトの名無しさん
15/12/21 09:22:48.80 +DYxsHCL.net
動的型付けでオブジェクトを作ったら使用者がそのオブジェクトのクラスを覚えていたら手動の静的型付けなんだよね。だから忘れなければいけない。
次にそのオブジェクトを使おうとするとき、それが何か忘れてるから、そのオブジェクトがどういうメソッドを持っているかなどの
チェックをするから絶対間違えることはない。すなわち動的型付けが悪いという批判の全ては実は
手動静的型付けという名の静的型付けが悪いということだったんだね。
394:デフォルトの名無しさん
15/12/21 09:26:23.10 K9YQZ40/.net
>単体テストは完璧ではない。全てをテストするわけではない。
>単体テストでテストできなかった部分も静的解析でテストできる。
>鬼に金棒
正しいこと言ってるけれど、こいつは絶対テスト書いてないと思わせるところが凄いw
395:デフォルトの名無しさん
15/12/21 10:04:08.74 XjOZdx5G.net
動的言語でもテストすれば問題はないだろうけど、入力するときにメソッド名を確実に補完してくれたほうが書くときもテスト作る時も快適
その程度の違い
javascriptでブラウザのコンソールで補完使いながら書いてると実感する
あんまり触れられてないけど、スクリプトと比べて静的に型を解決してコンパイルする言語のほうが速度面で圧倒有利というのもでかいと思う
396:デフォルトの名無しさん
15/12/21 10:29:34.55 7dJZ8TPE.net
>>387
ポエムはお花畑板でどうぞ。
397:uy ◆Qawu9.2l1E
15/12/21 10:36:36.12 vg4j58Ti.net
ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
398:デフォルトの名無しさん
15/12/21 10:42:30.54 atu8DMrc.net
>>375
静的型付けでコンパイル通っても「型に関する」バグも有り得るって言われてるの分かってる?
馬鹿だから分かってないんだろうなぁ
399:デフォルトの名無しさん
15/12/21 10:51:13.05 x6st9rMu.net
動的でも問題ないって言っている人たちは
最近の動的型言語がどんどん静的型の型チェックの機能を取り入れているのは
どう考えているんだろうね
メリットがないなら導入する意味ないよね
でもどんどん導入されていっているよね
あのRubyですら3.0で静的型を導入したいと言っているよね
この事実をどうするの?
400:デフォルトの名無しさん
15/12/21 10:52:41.41 +DYxsHCL.net
ruby3以外に例を挙げてみろよ
401:デフォルトの名無しさん
15/12/21 11:05:22.17 x6st9rMu.net
URLリンク(qiita.com)
動的型言語の型システムしょぼー
>Python 3 の型アノテーション構文の組み合わせが Python における型付けの標準になると宣言されました。
>正直なところ、多くの理由でこれはまったく良い決断ではないと私は考えています。
>その最大の理由は Python は優れた型システムをまさに持っていないことに苦しんでいるからです。
>静的型付けが意味をなすには、型システムが良いものである必要があります。
こういったショボい使いものにならない静的型システムは
なまじ有るだけ使わないと行儀が悪いような気がするが
使いまくるとジェネリックも何もないので汎用性が落ちてCレベルのコーディングになって苦しい
使えば使うほどそういう矛盾が浮き彫りになって、もやもやしてくるだろう
この型システムしょべーって
なまじ有るから使わないと行儀が悪いような気がするってのもポイントだな
プログラムを書いてる本人が気持ち悪くなってきて、動的型言語宗教から改心する
きっかけになるのであれば、中途半端な静的型を導入することにも意味があるっちゃ意味がある
402:デフォルトの名無しさん
15/12/21 11:08:23.42 x6st9rMu.net
>>394
URLリンク(hrnabi.com)
>一方、最近出てきた言語であるScalaやDart、Goといったプログラミング言語は静的型付け言語に分類される。
>そして、Rubyとは色々な面で似た言語と言えるPythonでアノテーションを付ける文法の導入が検討されているなど、
>動的言語でも静的型付けの良さを取り入れる動きがあるという。
URLリンク(gihyo.jp)
>一方で,ScalaやTypeScript,Dartなど最近生まれた言語はスクリプト言語のような
>使い方をされながらも静的な型を持っています。
>このことについて,まつもとさんは「悔しいからRubyに静的な型を導入してみようか」
ほらよ
403:デフォルトの名無しさん
15/12/21 11:09:20.16 wV5Rx1o6.net
>>392
ないよ。マヌケ。
なぜなら、コンパイラによりタイプセーフを保証されているから。
まず、例を出せよ??
静的でもリフレクションとか動的機能使えるからそれ使った時だよね。
でもそれは、動的のバグだよね。
404:デフォルトの名無しさん
15/12/21 11:10:39.25 +DYxsHCL.net
インターネットの日本語の記事ばっか観てると馬鹿になるよ。英語の記事の誤植とか意訳ばかりだからな。最近日本語読んだのはこのスレくらいかな。
405:デフォルトの名無しさん
15/12/21 11:10:46.95 atu8DMrc.net
>>395
pythonの型は動的型の中では出来損ないの部類だが、そいつにはジェネリックくらいある
無知が批判するとポイントがボヤけるからやめれ
URLリンク(docs.python.org)
406:デフォルトの名無しさん
15/12/21 11:11:54.59 atu8DMrc.net
>>397
>>360
407:デフォルトの名無しさん
15/12/21 11:14:11.40 x6st9rMu.net
新しく言語を作るとき、静的型システムをどういう風に発展させていくかというのが一つの大きな見どころであり
一番手間のかかる部分だ
今は最低でも型推論とジェネリックが当たり前で、これからもっと発展していくかもしれない
タイプセーフでありながら柔軟性も持たせ、記述量も減らす方向へね
安全性と柔軟性を両立させるという、ある種矛盾しているかのような命題へのチャレンジだ
動的型言語はそれを放棄してしまっているのだから、全く面白みがないね
408:デフォルトの名無しさん
15/12/21 11:27:11.60 +DYxsHCL.net
日本語が不自由なようで
409:デフォルトの名無しさん
15/12/21 11:27:25.95 wV5Rx1o6.net
>>400
ごめんjavaはクソだから使ってねーんだわ。
やめてくれよ、そんな欠陥言語持ち出してくるの。
c#以外の言語は静的と呼ぶほど完成度高くねーんだわ。
410:デフォルトの名無しさん
15/12/21 11:30:16.62 dc09zofZ.net
動的言語使うなら受け取る側で型チェックはしないなー。
型による分岐はそれが直接目的に適うならばあり。
411:デフォルトの名無しさん
15/12/21 11:32:36.19 dc09zofZ.net
静的言語ならC++でいいじゃんか
412:デフォルトの名無しさん
15/12/21 14:09:45.86 7dJZ8TPE.net
>>396
>>一方で,ScalaやTypeScript,Dartなど最近生まれた言語はスクリプト言語のような
>>使い方をされながらも
Scalaをスクリプト言語に分類するような記事を信じるバカですか?
413:uy ◆Qawu9.2l1E
15/12/21 14:29:58.27 2nRQSJGH.net
Matzが静的型の導入を~
って、あれ10年くらい前から言ってる事が二転三転してる戯言だからスルーしたほうが良いよ
浅い信者はMatzの寝言と本音が見極められないようで
414:uy ◆Qawu9.2l1E
15/12/21 14:41:43.33 E4VHpoC/.net
実際この手の問題は多数決のようなもので未来が確定してしまう類のものでは?
動的言語が勝つなら、世界が「動的言語で作られたもので満足」するように作り替えられていく
例えば電子機器のすべてを
プログラムにバグがあろうと後から無線で修正可能なようにすればいいんだよ
動的言語は静的言語以上にバグが入ることは確実だ
しかし「バグっても問題にならない状況作り」が出来るのであればそれで良い
415:デフォルトの名無しさん
15/12/21 16:46:29.69 FpThLLao.net
>>403
> javaはクソだから
具体的に
416:デフォルトの名無しさん
15/12/21 16:56:57.21 +DYxsHCL.net
基本的に企業が作り出した言語はJavascriptを除いてすべて糞。
417:デフォルトの名無しさん
15/12/21 17:20:52.96 XjOZdx5G.net
javaは実行環境というか、バイトコードに手を加えずにジェネリックを実装したせいで、パフォーマンスやら型安全を失ってる
静的型言語とかではなく、互換性重視から生まれた言語の欠陥
418:デフォルトの名無しさん
15/12/21 17:33:12.08 atu8DMrc.net
>>403
一緒や!c#も!
URLリンク(ideone.com)
419:デフォルトの名無しさん
15/12/21 17:40:24.04 qIaAVv7y.net
しかしホントーに"静的言語なら~"って言ってる奴って
『プログラムは自分の身内で組んだもので完結する』前提なのな。
おれらの決めた内々の決まりを組む奴が徹底すれば問題は生じないはず!(キリッ)って…
オブジェクト指向はsmalltalkのむかしから
多くのコンピュータプログラムが相互の通信する未来ではそんなことはできないと看破して
オブジェクトが自分の属性を答える機能とかを基底クラスに組み込んでるってのに
偽オブジェクト指向たちは最初から間違ったところより始めてるせいで
いつまで経っても偽のオブジェクト指向から抜け出せない。
420:デフォルトの名無しさん
15/12/21 18:43:03.63 mofV3EhK.net
> しかしホントーに"静的言語なら~"って言ってる奴って
> 『プログラムは自分の身内で組んだもので完結する』前提なのな。
そんな前提に立てるものを教えてほしいぐらいなんだが(笑)
他人が使るものを使うからこそ、決められたインターフェースを守り
それらを動的に書き換えないようにするんだよ。
勝手にクラスとか書き換えたら動作保証ないからな。
バージョンアップしたらすぐに動かなくなる。
自分で作る部分は動的に変えなくても、ソースコード変えればいいわけだから
動的である必要はない。
421:デフォルトの名無しさん
15/12/21 19:24:39.60 qIaAVv7y.net
>自分で作る部分は動的に変えなくても、ソースコード変えればいいわけだから
メンテ地獄は楽しいか。
つべがflvやめてhtml5にしたり通信先が小変更する度に
システムフル再コンパイルしてそうだなおまえら。
422:デフォルトの名無しさん
15/12/21 19:25:06.67 dWRO7mc6.net
しかしなんでこのスレってこんなにsmalltalkerいるんだ
本スレすら過疎ってるオワコン言語やぞ
423:デフォルトの名無しさん
15/12/21 19:45:02.82 dc09zofZ.net
なんでこんなことにこだわっているんだ?
424:デフォルトの名無しさん
15/12/21 19:51:20.56 wV5Rx1o6.net
>>412
あー共編性、反変性使わない人かー。
例えば、家の玄関に土足で上がらないでくださいって注意書きしないのはなぜだと思う?
そんなことする馬鹿な人に会ったことないからだよ。
425:デフォルトの名無しさん
15/12/21 19:55:46.35 B3EXamn3.net
OCamlをやるんだ。
JavaやC#じゃ法螺扱いされる「コンパイルが通ればランタイムで型に関するエラーは起きない」世界が待ってるぞ。
426:デフォルトの名無しさん
15/12/21 20:28:52.54 7dJZ8TPE.net
動的型付言語でも「ランタイムで型に関するエラーは起きない」世界が実現されているが?
というとメソッドが見つからないとか言う厨房がいるが、
それは静的型付言語で空リストの先頭要素を取り出そうとして例外が発生するのと
どう違うのだ?
ゼロ除算して例外が発生するのとどう違うのだ?
結局、静的型言語ユーザがいう「ランタイムで型に関するエラーは起きない」というのはマッチポンプでしかない。
427:デフォルトの名無しさん
15/12/21 20:41:15.90 mofV3EhK.net
>>415
> つべがflvやめてhtml5にしたり通信先が小変更する度に
> システムフル再コンパイルしてそうだなおまえら。
分割コンパイルって知ってる?
依存関係を小さく保つから、影響があるところも局所化され
実際にはシステムフル再コンパイルではなく、依存しているところのみ
再コンパイルが必要になるだけ。
そういったことも知らずに叩くんだよなぁ(笑)
428:デフォルトの名無しさん
15/12/21 20:42:13.79 etCoLxJ5.net
そもそも"型"ってなにかね?
なんか静的おじさんはintとかstrとかそういうプログラム言語規約上の取り決めぐらいしか想像できてないみたいだけれども
実際はデータ構造そのもの、構造体やクラスが受け渡されてくるのだからその種類の数だけ型がある。
pictureというクラスの型はBMPだから!と決め打ちして、jpgが追加されたら俺にもjpgの展開エンジン教えろ
pngが追加されたら俺にもpngの展開エンジン教えろと言って毎回自分のプログラムを再コンパイルして備えるつもりか。
そうしないと自分が食えなくてバグ吐いて止まるから。
そういうくだらない車輪の再発明を防ぐためにオブジェクト指向は生まれてpictureオブジェクトに
展開エンジンが含まれてるから、受け手は考えなくていい。そして、すべての型はオブジェクトだから
"世界のすべてオブジェクトの名前と内容を予め知るのは不可能"なので動的に処理するしかない。
動的に処理することで作ったものをいちいち毎度メンテして弄り回すプログラマーのメンテ無限地獄を回避してるっつーのに
「おれらのやり方はあらかじめ世界のすべてを知ってからその決まりでやってるから問題は生じない!」とかバカか。
なんでネットワーク関連で動的が主流で、ちんまりした閉システムでしか静的が流行らないのかちゃんと理解しろ、ジジイ。
429:デフォルトの名無しさん
15/12/21 20:46:53.08 mofV3EhK.net
>>420
> それは静的型付言語で空リストの先頭要素を取り出そうとして例外が発生するのと
> どう違うのだ?
図にすればわかる? わかりやすく簡略化して書くけど
| 型の問題 | 空リストの問題 | ゼロ除算の問題 |
静的 | なし | あり | あり |
動的 | あり | あり | あり |
問題が多いのはどっち? 答え 動的
重要なのは、問題がどれだけ "多いか" だからさ。
静的・動的、両方に発生する問題を持ってきても、
動的だけにある問題がある以上、動的のほうが問題が多いわけで
430:デフォルトの名無しさん
15/12/21 20:49:47.79 mofV3EhK.net
>>422
> そもそも"型"ってなにかね?
インターフェースの取り決めだね。
巨大なシステムは複雑にならざるをえない。
だから、公開している部分と、公開してない部分をしっかりわけ、
公開している部分は仕様をきっちり明確にする。
その仕様がインターフェースであり型なんだ。
LinuxもWindowsも仮想マシンもコンテナも
大きなシステムは静的言語を使って作られている。
431:デフォルトの名無しさん
15/12/21 20:52:58.26 mofV3EhK.net
>>422
> 毎回自分のプログラムを再コンパイルして備えるつもりか。
だから毎回全部を再コンパイルしてないってばw
Linuxの動的ライブラリの仕組みとかドライバの読み込みとか
Apacheのモジュールの仕組みとかしらないの?w
インターフェース(≒型)をきっちり決め、そのインターフェースに合わせることで
再コンパイルすること無く組み込み可能にしている。
こういったことを知らないんだもんなぁ(笑)
432:デフォルトの名無しさん
15/12/21 21:01:51.63 7dJZ8TPE.net
>>423
だーかーらー、動的型付言語に型の問題なんてないんだって。
コンパイル時型検査なんてしなくても型安全を確保できているから。
型エラーではないものを勝手に静的型では型エラーとして扱われるからといって
勝手に「型の問題」扱いしないでもらえるかなあ?
433:デフォルトの名無しさん
15/12/21 21:04:46.50 mofV3EhK.net
>>426
静的型は型エラーであるもの、つまりアプリのバグ。
そのアプリのバグを静的型は実行すること無く検出できる。
それに対して動的型では、アプリのバグが見つからない。
アプリのバグが見つからないが型安全なんだから、
いいじゃないか。って言ってるわけだよね?
型安全=アプリのバグがない
ということではないよ?知ってる?
434:デフォルトの名無しさん
15/12/21 21:05:35.35 7dJZ8TPE.net
>>425
そうだね、静的型情報をリンカに渡せば静的型でも必ずしも全てを再コンパイルする必要はない。
そもそも動的型ならば全く再コンパイルする必要ないんだがなw
そうやって動的型ならそもそも問題が存在すらしていないものを
静的型では問題になるからといって「静的型では解決できたスゲー」しないでくれる?
435:デフォルトの名無しさん
15/12/21 21:07:13.91 mofV3EhK.net
> そうだね、静的型情報をリンカに渡せば静的型でも必ずしも全てを再コンパイルする必要はない。
> そもそも動的型ならば全く再コンパイルする必要ないんだがなw
全く再コンパイルする必要ない!?それは大変だ。
インターフェースに不整合があったとしても、
その不整合を検出できないじゃないかw
436:デフォルトの名無しさん
15/12/21 21:07:55.23 7dJZ8TPE.net
>>427
で、「動的型ではアプリのバグを見つけることができない」という珍説はどこから湧いて出てきたのかね?
静的型付言語と同じ方法で見つけるわけではないというだけの話を、
どうして「見つけることができない」なんて捏造をするんだね?
437:デフォルトの名無しさん
15/12/21 21:08:48.82 7dJZ8TPE.net
>>429
静的型付と違って、インターフェースが必ず適合するから問題ないんだよ。ぷ
438:デフォルトの名無しさん
15/12/21 21:09:52.92 mofV3EhK.net
> そうやって動的型ならそもそも問題が存在すらしていないものを
意味不明。
インターフェース不整合があってエラーで例外を吐いてシステムが
正常に動かなくても型安全だから問題がない。
そう言ってるわけだよね?
そう、ユーザーにさんに言ってるわけだよね?
Q. ある機能を実行すると、エラーで例外を吐いて落ちます。機能が使えません。
A. 型安全なので不具合ではありません。言語仕様通りです。なので修正しません。
うははははw
439:デフォルトの名無しさん
15/12/21 21:12:34.78 GVmX1WAG.net
列車とトラックの比較にしか思えない
440:デフォルトの名無しさん
15/12/21 21:12:49.27 7dJZ8TPE.net
>>432
だーかーらー、
動的型付言語の世界ではインターフェイスに不整合が発生しないの。
引数がいくつあっても、引数の中身がなんであっても、機能名が何であっても、
必ず同じ形式でメッセージとしてパッケージングされるの。
静的型システムについては多少知っているようだけど、
動的型付言語の仕組みはまるでわかっていないようだね。
441:デフォルトの名無しさん
15/12/21 21:13:39.02 7dJZ8TPE.net
例のおバカさんよりは若干マシだと思っていたが、買いかぶりすぎていたようだ。
442:デフォルトの名無しさん
15/12/21 21:15:10.99 mofV3EhK.net
>434
> 引数がいくつあっても、引数の中身がなんであっても、機能名が何であっても、
> 必ず同じ形式でメッセージとしてパッケージングされるの。
その後は? 重要なのはパッケージングされた後でしょう?
例外吐いて落ちるんでしたねw
うははははw
443:デフォルトの名無しさん
15/12/21 21:15:36.10 7dJZ8TPE.net
静的型付言語を使っていると、動的型付言語を静的型付言語のメカニズムでしか理解できなくなってしまうらしい。
まさにバカ製造機だな。
444:デフォルトの名無しさん
15/12/21 21:16:30.67 mofV3EhK.net
Q. ある機能を実行すると、エラーで例外を吐いて落ちます。機能が使えません。
A. 型安全なので不具合ではありません。言語仕様通りです。なので修正しません。
これを否定しないのは、否定出来ないからだろうなw
445:デフォルトの名無しさん
15/12/21 21:16:44.57 B3EXamn3.net
まずどの動的型付け言語について喋っているのか言及しなよ。
実行時で型に関するエラーが起きないってのは、起きないよう注意を払ってプログラムを書くことができる、じゃなくて、
原理的に起こせない、っていう意味で言ったんだけど、分かる?
やたらと例外とエラーを別物にしたいみたいだけど、そんなはっきり区別して扱っている界隈ってあるの?
全然メジャーな使い分けじゃないからちょっと説明してよ。
「例外を投げる動作は言語仕様通りだから、wikipediaでいうところの型安全」っていうは、
関数型言語に言及している中での型安全より遥かに低いレベルの安全性であることは分かってる?
全体的に卑怯者だよ。「ボク間違った言葉遣いしてないもん!」以外全部間違っているよ。
446:デフォルトの名無しさん
15/12/21 21:17:03.21 7dJZ8TPE.net
>>436
落ちないけど?
どうして例外が投げられると落ちると思い込んだの?
たとえ例外ハンドラが設定されていなくてもアプリケーションが異常終了しない言語/環境は普通に存在するよ?
自分の無知を動的型付のせいにしないでくれる?
447:デフォルトの名無しさん
15/12/21 21:17:58.88 7dJZ8TPE.net
>>438
ぜーんぶ君の無知からくる妄想。正直言って、出てくる感想は「バカ」。