次世代言語Part8[Haskell Rust Kotlin TypeScript]at TECH
次世代言語Part8[Haskell Rust Kotlin TypeScript] - 暇つぶし2ch2:デフォルトの名無しさん
17/12/01 23:25:59.72 zV3aJam4.net
スレ立て乙だけど…Haskell?

3:デフォルトの名無しさん
17/12/01 23:27:25.27 taGRKU1H.net
SwiftがなくなってHaskellが復活とか笑っちゃいますね!

4:デフォルトの名無しさん
17/12/01 23:31:17.55 FxdZTiuZ.net
Haskell好きやねん

5:デフォルトの名無しさん
17/12/01 23:33:22.55 79R00kdr.net
結局Haskell批判してたのエアプだけだったし、実のある批判が出るまではええじゃろ

6:デフォルトの名無しさん
17/12/01 23:40:21.46 8Ef9tVvd.net
まぁランダムでスレタイに入れる言語を4つ選ぶプログラムとか書いちゃえばいいのよ

7:デフォルトの名無しさん
17/12/01 23:40:21.94 FxdZTiuZ.net
モナドかわいいよモナド
あとRustも好き

8:デフォルトの名無しさん
17/12/02 00:01:37.22 IJ6GXagf.net
つまり毎回スレたて人の好みで言語が決まるのですね。
乙。だがGo入れろ

9:デフォルトの名無しさん
17/12/02 00:09:24.28 SCTVwGxx.net
Haskellは前の議論で次世代から落ちたはずだけど?
あとRustなんて言語未満いれるな

10:デフォルトの名無しさん
17/12/02 01:15:27.47 sEwFCJtO.net
面接でたまに、特定の言語けなす応募者が居るけど、
じゃあどんな言語が好きですか?なぜその言語が
良いと考えるのですか?と聞くとダンマリ。

11:デフォルトの名無しさん
17/12/02 01:45:05.81 H6Gj4fb5.net
いいんじゃねーの?
特定の言語をマンセーしてる奴よりか、
言語の問題点を把握してる奴のがプログラマとしては信用できるし。

12:デフォルトの名無しさん
17/12/02 01:54:29.37 Xx8KInD+.net
不満がない、見つけられないのが良い所だろうしな

13:デフォルトの名無しさん
17/12/02 02:11:44.76 WmrP00A3.net
このスレは特定の言語をマンセーする人は少ないな
その代わり知らない言語を批判する人はいるけど

14:デフォルトの名無しさん
17/12/02 02:18:08.08 vHUqozHI.net
sから始まる言語を批判すると、気持ち悪い信者がワラワラと湧いてくるよ

15:デフォルトの名無しさん
17/12/02 03:12:15.72 UE7qzU9L.net
漏れなら面接で、Rust, Elixir, Kotlin, Haxe の良い点を聞く

16:デフォルトの名無しさん
17/12/02 09:18:47.22 sEwFCJtO.net
>>11
ダンマリは社会人として不味いよ。

17:デフォルトの名無しさん
17/12/02 09:28:01.01 H6Gj4fb5.net
>>16
まあ好きだって言った言語に対して狙い撃ちされる会話の流れを
理解してるって意味ではいいんじゃねーの。
結局、自分が不愉快だったってだけの話だろそれ。

18:デフォルトの名無しさん
17/12/02 11:08:11.50 pAxOhb0h.net
TypeScript 入れるくらいなら PureScript 入れたらいいのに

19:デフォルトの名無しさん
17/12/02 11:48:08.89 72s6oBNC.net
そもそも次世代言語とかいうものそのものが、大企業の広告塔でしかないからな
GoとかTypeScriptとかRustとかモロそれ
コンパイラがGPLでライセンスされて活発に開発されて、特定の企業集団に開発が握られてない言語だけを数えるべきでは
この点でオレオレ実装と、政治でねじ込んだクソ古いgcc実装しかないGoや、llvmバックしかないRustは除外される
Typescriptもアウト。まともな次世代言語は存在しないと言ってもいい

20:デフォルトの名無しさん
17/12/02 11:52:14.94 3VmXWZxS.net
言語の仕様ではなくて成り立ちを問題視しちゃう子

21:デフォルトの名無しさん
17/12/02 11:57:58.87 mYy0y04S.net
勝手に規則を決めて全部アウトとかオモロイ奴やな

22:デフォルトの名無しさん
17/12/02 12:00:04.17 pAxOhb0h.net
>コンパイラがGPLでライセンスされて
なんだろうこの臭気

23:デフォルトの名無しさん
17/12/02 12:00:59.26 TzW9B0ui.net
「批判」とか「政治」とか大雑把なジャンルしか認識できない奴はいっぱいいる
記憶力が足りないのか
そもそもリアルタイムで論破すれば記憶力いらないのに、反射神経が足りないのか

24:デフォルトの名無しさん
17/12/02 12:05:29.85 72s6oBNC.net
言語の成り立ちっつーか、誰が開発しててどこが意思決定権持ってるかは重要だぞ?
Javaコンパイラのバグを握りつぶしたOracleの記憶はまだ新しい
言語はプログラムを作るものなのに、その言語がブラックボックスかしてたら、そんなもん使うべきではない
どんなリスクがあるか分かったもんではない

25:デフォルトの名無しさん
17/12/02 12:16:13.40 72s6oBNC.net
GPLはクサイと言われるが(実際面倒な話なのは承知してるが)、
GPL以外のライセンスでは、後付けでブラックボックスかできてしまう
だからGPLのコードベースで開発がすすんでいることは重要

26:デフォルトの名無しさん
17/12/02 12:22:00.15 mYy0y04S.net
じゃあ何を推すのさ

27:デフォルトの名無しさん
17/12/02 12:24:56.17 pAxOhb0h.net
BSDやAPLでコンパイラをリリースしたら「次世代言語じゃない!」ねえ ┐(´д`)┌

28:デフォルトの名無しさん
17/12/02 12:26:49.92 PRegk6Y6.net
Vala?

29:デフォルトの名無しさん
17/12/02 12:32:50.98 JadDCVYU.net
ID:72s6oBNC
今日のガイジ
便所ブラシことペチプーでも書いてればええんやないか?

30:デフォルトの名無しさん
17/12/02 12:54:07.38 72s6oBNC.net
>>29
なんで次世代言語のGPLライセンスは重要って言っただけで肥溜めに頭から突っ込まれなきゃいけねえんだよ
土人かよ

31:デフォルトの名無しさん
17/12/02 13:01:57.78 qE46CGT4.net
>>30
よお土人

32:デフォルトの名無しさん
17/12/02 13:03:37.01 TzW9B0ui.net
Haskell Rustあたりは仕様を知ってるだけで嫉妬されるレベルなんだろ
そりゃ実装はブラックボックスでもいいかなってなるだろ

33:デフォルトの名無しさん
17/12/02 13:05:02.42 72s6oBNC.net
>>32
いかにも実際の仕事をしらないお偉いさんが机の上でこねくりまわした感がある

34:デフォルトの名無しさん
17/12/02 13:17:40.53 TzW9B0ui.net
言語が何であろうと使ったことがないアプリはソース読めないぞ
読む前に使い込むべきだ
使う前に読めると思う方が机上なんだよ

35:デフォルトの名無しさん
17/12/02 13:18:04.32 JVkL85Me.net
やっぱHaskell入ったんだな。
よっぽど悔しかったんだろうなあ。推しなのに。
AKB総選挙かよw

36:デフォルトの名無しさん
17/12/02 13:23:56.16 ugnQ3p4B.net
労力が見合うかは分からないけれど、
大抵のコンパイラはソースも公開されてない?

37:デフォルトの名無しさん
17/12/02 13:25:37.97 pAxOhb0h.net
>>33
>いかにも実際の仕事をしらないお偉いさんが机の上でこねくりまわした感がある
その評言が当てはまるのはHaskellでもなくRustでもなく Go 言語

38:デフォルトの名無しさん
17/12/02 13:26:42.90 72s6oBNC.net
>>36
まさかMITやAPLとGPLの違いが分からん奴がこのスレにいるとは

39:デフォルトの名無しさん
17/12/02 13:27:52.88 pAxOhb0h.net
>>30
>なんで次世代言語のGPLライセンスは重要って言っただけで
違うだろ
お前さんが >>19 で言ってるのは、コンパイラがGPLでなければ
次世代言語には数えられないってことだったろうよ

40:デフォルトの名無しさん
17/12/02 13:30:13.04 72s6oBNC.net
>>39
そうだが?
ないと次世代として認めがたいっていうのは要素として重要ってことと矛盾するのか?

41:デフォルトの名無しさん
17/12/02 13:32:42.01 pAxOhb0h.net
あとな、言語屋の端くれとして言わせてもらうと
まあ成果物(特に公的研究機関)の公開の際にGPL採用するって選択肢はほぼないんだわ

42:デフォルトの名無しさん
17/12/02 13:34:31.51 pAxOhb0h.net
>>40
はあ?
>>30 の「言った『だけ』」の「だけ」の部分が大嘘だろうがよ

43:デフォルトの名無しさん
17/12/02 13:35:34.51 pAxOhb0h.net
PHPが相応しいかどうかは知らんが、まあガイジ乙ってこった

44:デフォルトの名無しさん
17/12/02 13:37:18.57 72s6oBNC.net
結局このスレの住民も、ジョブスの作った快適な牢獄で永久に囚われる方がお好みってか
ほんとディストピアになったな

45:デフォルトの名無しさん
17/12/02 13:40:52.41 72s6oBNC.net
>>41
HaskellはともかくGoやRust、Typescriptは研究機関の成果物じゃなくて単なる企業の広告塔だろうが……

46:デフォルトの名無しさん
17/12/02 13:44:29.43 Jtrxh33g.net
成果物ではなくて広告塔でもなくて自社製品を作るためにできた副産物だろ。

47:デフォルトの名無しさん
17/12/02 13:54:09.27 TzW9B0ui.net
Rustが研究しているのはジョブズではなく静的型付け
牢獄になるとすれば静的型付けが牢獄になるんだよ

48:デフォルトの名無しさん
17/12/02 13:55:36.52 pAxOhb0h.net
>>44
>結局このスレの住民も、ジョブスの作った快適な牢獄で永久に囚われる方がお好みってか
>ほんとディストピアになったな
あ、ガイジというよりはキチガイのひとだったか

49:デフォルトの名無しさん
17/12/02 13:58:37.03 pAxOhb0h.net
>>47
>牢獄になるとすれば静的型付けが牢獄になるんだよ
一部のLISPer除いてRustの型システムでは型が付かない正当なコードが書きたいのに書けない!なんてやつ殆どいないだろ

50:デフォルトの名無しさん
17/12/02 14:36:48.87 TzW9B0ui.net
静的型付けはQBみたいな奴だ
牢獄と契約は似たようなものと思うか全然違うと思うかは人それぞれ

51:デフォルトの名無しさん
17/12/02 15:29:44.21 JadDCVYU.net



52:じゃあどんな言語が好きですか?なぜその言語が 良いと考えるのですか?と聞くとダンマリ。



53:デフォルトの名無しさん
17/12/02 15:37:46.07 Jtrxh33g.net
そんなやついないだろ

54:デフォルトの名無しさん
17/12/02 16:02:09.41 ugnQ3p4B.net
>>38
ソース読めれば、ブラックボックス化は
防げるんじゃないの?
あなたが上げてるライセンスで、
ソースを読んではダメってモノは
ない気がするんだけど。

55:デフォルトの名無しさん
17/12/02 16:16:44.09 Jtrxh33g.net
仕様と実装は分けて考えるべき。

56:デフォルトの名無しさん
17/12/02 16:25:11.46 Dl6HEW0V.net
厳密に言えば配布されているソースと配布されているバイナリが違う可能性は存在するけどな
わかりやすい罠でも仕込まれてない限り検証不可能だろ、GPLであっても

57:デフォルトの名無しさん
17/12/02 17:35:29.54 /D9bpJpS.net
ライセンスは個人ならMIT、企業ならApacheが主流
緩いライセンスの上で企業が主導するというのが、昨今のオープンソース界隈
オープンソース同士の競争や発展が当たり前になって、落ち着くべきところに落ち着いた
GPLの衰退、寛容なオープンソースライセンスの興隆
URLリンク(japan.zdnet.com)
URLリンク(redmonk.com)
URLリンク(redmonk.com)
URLリンク(redmonk.com)

58:デフォルトの名無しさん
17/12/02 17:48:55.03 wMBa/T9i.net
>>53
GPLでない限り、どこかの瞬間にソースをクローズドにできてしまう
その違いくらい分かっとけ
>>56
そういうものは単にソースが公開されているだけで、企業にとって都合の悪いコードは入らない
開発姿勢の問題

59:デフォルトの名無しさん
17/12/02 17:54:11.74 wMBa/T9i.net
コードのソースが公開されていることと、プログラムに対する自由が保証されていることは全く違う
ちょっとは勉強しろ
URLリンク(www.gnu.org)

60:デフォルトの名無しさん
17/12/02 17:54:42.99 8J+E3A3v.net
クローズドにされた派生物は元のオープンソースにその企業なりの変更を加えたものだろ。
他の人はクローズドにされる前のオープンな方を使い続ければいいだけ。

61:デフォルトの名無しさん
17/12/02 18:00:12.16 wMBa/T9i.net
>>59
元コードのライセンス自体を変えられたらアウト。MITやAPLなら不自由なライセンスに変更することが可能
GPLならそういうことは不可能

62:デフォルトの名無しさん
17/12/02 18:05:29.89 9Vn/PEwl.net
今時、GPL真理教のご登場とは、驚きだな。
そういう人は、次世代言語がgccに組み込まれるまで、待ってたらいいと思うよ。

63:デフォルトの名無しさん
17/12/02 18:22:10.64 8J+E3A3v.net
新しく配布するライセンスを変更することはできても、一旦ライセンスされたものを過去に遡って
変更するなんてことはそのライセンス自体にそのような規定がない限り無理。
新しく配布するライセンスを変えるって話なら(その権利がある者なら)元がGPLだろうが可能なのは同じ。

64:デフォルトの名無しさん
17/12/02 20:05:49.99 u0grZgHmQ
そもそも、後からやっぱりライセンス変更してクローズドにしたら、
周りから強烈に反発されると思うんだよなぁ。
わざわざ周りから反発されてまでクローズドにするような
アホみたいな企業はたぶんいないんじゃないかな。
GPLのほうが良いというのは分かるが、それほど拘ることでもないと思う。

65:デフォルトの名無しさん
17/12/02 19:42:01.02 H6Gj4fb5.net
GPLも違反の場合の措置は国の法律に従うとかそんな規約だった気がするから、
国によっては過去に遡って棄却とかあるんじゃねーの?

66:デフォルトの名無しさん
17/12/02 20:00:19.24 JVkL85Me.net
言語屋の端くれって何者なんだ。
工学博士の端くれぐらいまではギリギリ言ってみようかとも思えるけど、言語屋って凄いな。

67:デフォルトの名無しさん
17/12/02 21:01:20.98 JadDCVYU.net
こんなところで喚くしか能のないゴミ屑が
ライセンスうんぬんで不利益被るほどの立場なわけないだろ
大人しくプェチピィで下痢糞プリプリしてろよ

68:デフォルトの名無しさん
17/12/02 21:01:40.00 /D9bpJpS.net
>>1
前スレ終盤でも名前挙がってたが、Elmバズってるな
本スレがない言語(Elm Nim Crystal他)もスレタイ候補でいいか
ElixirからElmの流れで、いよいよオブジェクト指向に対する懐疑心が無視できないレベルに達した2017年冬。
URLリンク(ubiteku.oinker.me)

69:デフォルトの名無しさん
17/12/02 21:16:27.51 vrpISaZz.net
OOを批判するのはいいけど消去法で関数型とか思うのは大間違い
消去法するくらいなら対案を何も出さない方が正しい

70:デフォルトの名無しさん
17/12/02 22:37:35.51 mYy0y04S.net
関数型の定義はよく分からんけど、第一級関数は欲しいな

71:デフォルトの名無しさん
17/12/02 23:58:45.47 IJ6GXagf.net
redux(react)触ったやつがelmに流れてるんだろうな。
js+redux+immutable.jsの組み合わせだったらelmってことかね

72:デフォルトの名無しさん
17/12/03 02:09:05.69 Ct3m3qtO.net
「じゃあお前はどんな言語なら満足なんだ」ってしつこく聞かれてるから言うが
次世代言語かって言われたら微妙だからあんま挙げる気はなかったんだが、理想はVala
Cにトランスパイルされるから速度は良好、コンパイラのライセンスはLGPL、構文は比較的モダン
ただ今時の他言語と比較するともう一声ほしい

73:デフォルトの名無しさん
17/12/03 02:59:41.58 Hpu25AWg.net
バラ、初めて聞いたわ
よくそんなマイナー言語知ってるな

74:デフォルトの名無しさん
17/12/03 03:18:35.47 Xzro6gH8p
>>71
ValaってC#に似てるというのは聞いたことがある。
前にサンプルコードを見たときに確かにC#っぽいなと思ったわけだが、だったらC#でいいじゃんと思ってしまう。
今ではXamarinとかUnityとかのおかげでC#あれば割と何でもできちゃうんだよな。
特に最近は.net coreとかでIL(中間言語)じゃなくてnativeコード吐けるようにさえなってきてるし。
俺の個人的意見だが、C#は文法が少し古臭いことを除けば超優秀言語なんだよ。
つまり構文的なメリットがないとC#から乗り換える気は起きない。そしてValaにはそれがないと感じる。
Cにトランスパイルされるメリットは分かるが「それだけじゃなぁ」って思った。
他にメリットがあるならもう少し詳しく説明してほしい。

75:デフォルトの名無しさん
17/12/03 09:08:16.53 J28DlChh.net
GNU狂儲じゃない人にとってはValaなんてC#の劣化コピー未満だし、
C#は現世代言語だから次世代には不適格だろう

76:デフォルトの名無しさん
17/12/03 12:08:02.85 7jfP6ZRC.net
その性能を見せてくれたら変わるかもしれんけどな
.NETのメモリを食い尽くす糞戦略GCが無いというならまあ……
Cにトランスパイルされて性能良好という点ではnimと丸かぶりな上
基本的にnimのほうが融通がききそうな気はするけど
GObject互換が有利に働くケース(例えばcairo呼ぶとか)ではValaの方がいいんだろう、たぶん、知らんけど

77:デフォルトの名無しさん
17/12/03 15:33:23.03 Es8BrMdC.net
まあだからValaが次世代言語とは一言も言ってない
例えばNimのコンパイラが(L)GPLになってくれてれば全力で推すよ。でも現実はMITだ

78:デフォルトの名無しさん
17/12/03 16:03:56.50 Cfl2NYpj.net
>>60
Linuxなど極一部の例外を除いて、今時のまともなOSSは基本的に全て企業様が開発しており、
寛容にも乞食に対して提供してくださっているものである
GPL信者が主張する、企業が成果物をGPL化するメリットとして、
「コミュニティからの協力を受けられる」というのがあるが、(乞食共の協力がどれだけ役に立つかは別として)これには落とし穴がある
GPLで公開してるものに対して乞食がプルリクを出し、これが本家にマージされた時点で、本家のソースがGPLに感染するということだ
これは企業にとって到底受け入れられるものではない
GPLは企業のオープンソースへの参加の障害になるんだよ

79:デフォルトの名無しさん
17/12/03 16:11:23.39 Cfl2NYpj.net
>>77
補足
本家のソースがGPLに感染するというのは、開発元の企業自身が、ソースの使用にあたりGPLに従わなければならなくなるという意味な
成果物をドブに捨てるようなもんだ

80:デフォルトの名無しさん
17/12/03 16:16:53.98 ySR1wv1e.net
そういうものはデュアルライセンスで公開するんじゃないか普通。知らんけど。

81:デフォルトの名無しさん
17/12/03 16:17:53.46 LB13FI05.net
逆に考えれば自分がただで作ったものが企業の金もうけに使われるのを防いでるわけだろ。
そういういみでGPLは必要。

82:デフォルトの名無しさん
17/12/03 16:32:50.74 Cfl2NYpj.net
>>80
そう。つまりこういうことだ。
ユーザーからのコミットを受け入れるというポジティブな理由でオープンソースを採用するならGPLは不適切。
オラクルのように、有償契約への誘導を前提としてオープンソース版を撒き餌にするなら、
成果物の盗用を防ぐ意味でGPLが適切。
本来OSS信者が批判すべきなのはどちらだろう?
一度落ち着いて考えてみよう。

83:デフォルトの名無しさん
17/12/03 16:46:21.13 Es8BrMdC.net
だから「自由ソフトウェア」と「オープンソースソフトウェア」は違う概念って話だよな
そもそも企業が主導してる開発は、企業の恣意が入るわけで、自由ではない
今は乞食に恵むことが点数になるからそうしてるだけ
乞食に甘んじるならそれでいいかもしれんがな
一念発起して自分の畑を開墾することになったときに、GPLがないと企業に土地を盗まれたり、いつのまにか乞食に占拠されたりするんだよ
だからGPLの言語は重要なんだよ

84:デフォルトの名無しさん
17/12/03 16:47:34.26 Cfl2NYpj.net
もっというと、
・プロジェクトにコミットした個人乞食にとって、そのプロジェクトの最新の成果物を継続的に利用できる利益を守るのがGPL
・開発元の企業にとっての利益を守るのが「寛容なライセンス」
ということだ。そして、下記の理由から、後者を優先したほうがOSS全体にとっての利益が大きい。
・一般に、個人より企業の方がOSS遥かに多くの貢献をしているから、企業の参入を促したほうがOSSは拡充する
・当たり前だが、利用者にとっては寛容なライセンスの方が利用しやすい

85:デフォルトの名無しさん
17/12/03 16:50:27.91 MdLc4Lg3.net
>>80
別にGPLは金もうけに使うことを防ぐためにあるわけじゃないよ。
実際、金もうけだろうがなんだろうが単純使用については制約を設けることを禁止してるわけだし。

86:デフォルトの名無しさん
17/12/03 16:52:07.39 dv78RNI3.net
個人で出来る開発なんて限られてるから企業が参入してくれたほうがいいし、企業は慈善団体じゃないんだから利益考えるのは当然だろ
企業がーステマがーって気持ち悪すぎる

87:デフォルトの名無しさん
17/12/03 16:54:31.97 dv78RNI3.net
これだからワッチョイつけろと言ったのに

88:デフォルトの名無しさん
17/12/03 16:58:46.31 FoZg6mpZ.net
この板ってワッチョイあるの?

89:デフォルトの名無しさん
17/12/03 17:00:11.80 Q+UzJ2jP.net
わざわざ次世代言語スレに来て、
「俺ルールにより、全ての言語は次世代ではない!!」
ってマ?

90:デフォルトの名無しさん
17/12/03 18:06:19.80 vwbP6I+a.net
GPLは自分が作ったものだけじゃなく使ったものにも影響を及ぼすからなあ
LGPLが一番マトモなんじゃないかと思ってるんだが

91:デフォルトの名無しさん
17/12/03 18:39:22.73 sBoz0VTg.net
>>83
OSSが拡大しても自由ソフトウェアは拡大しない
まあ言語スレでやるべき話題ではそろそろなくなってきてるのはすまん

92:デフォルトの名無しさん
17/12/03 18:44:51.43 n/4R2J1f.net
望まれてないから拡大しないんだ、ってのが分からないところが儲

93:デフォルトの名無しさん
17/12/03 18:51:18.78 9khz2s/N.net
>>88
いつもの事だよ

94:デフォルトの名無しさん
17/12/03 19:06:01.80 Hpu25AWg.net
>>88
次世代ガイジ

95:デフォルトの名無しさん
17/12/03 19:07:55.59 fDoYnNZt.net
>>19
まあ、大企業がサポートしてるからこそ信頼性が増すんだけどね。
弱小勢力の作ってる言語なんざいつやる気が無くなってサポート停止するかわからんのに
使ってられないよ。

96:デフォルトの名無しさん
17/12/03 20:15:24.10 GYPu5Uwk.net
サポートを永久に続けさせたいとは思ってないんじゃないかな
ただ、無料版だけサポート停止して有料版に移行させる手口を防ぐだけでいい

97:デフォルトの名無しさん
17/12/03 20:40:28.46 T5z0rd35.net
このガイジの言葉を全否定するが、別に言語の処理系のライセンスがGPLだろうと非GPLだろうと
その言語で書かれたプログラムのライセンスには何も影響しない
Javaの処理系がクローズドソースだった時にJavaコードがオープンソースにできなかったかってことを考えればすぐ分かる
言語の仕様がオープンなら、もしこのガイジの懸念どおり処理系をオープン→クローズドソースにされたところで
本当にその言語が有用だったらクローンの処理系が出てくるだけのこと。open-jdkやらmonoが良い例だ
要するにこのガイジ、ライセンスのことを何も分かってない知ったか

98:デフォルトの名無しさん
17/12/03 20:46:25.36 T5z0rd35.net
ガイジを殴るだけのレスだと何なので
Haxeみたいな「書いた端からあらゆる言語にトランスパイルして使う言語」ってやっぱりコンセプトとして駄目なのかね?
最近のいわゆる次世代言語って、おおむねネイティブ(もしくはJavaマシンコード)にコンパイルする系ばっかのはず
例外はTypescriptとHackくらいか?

99:デフォルトの名無しさん
17/12/03 20:55:26.88 GYPu5Uwk.net
93,94をまとめると
GPLなコードを再利用しつつ有料版に移行させるのは無理
コードを捨ててクローンするならOK

100:デフォルトの名無しさん
17/12/03 21:05:47.23 RLNGue2S.net
>>96
Javaに関しては、openjdkを勝手にフォークして改変したものを出回らせたら特許侵害でオラクルに訴えられるよ
特許の利用はあくまで公式にリリースされたopenjdkに対して認められてるもので、
弄ったらJavaとは認められなくなり即訴訟

101:デフォルトの名無しさん
17/12/03 21:19:08.36 T5z0rd35.net
>>99
すまん、open-jdkっていうのは不正確だったな。IcedTeaって言った方が正確だった
まあ厳密にはIcedTeaも当時のSunの協力あってのことで、勝手フォークでやった訳ではなかったんだが……

102:デフォルトの名無しさん
17/12/03 21:19:33.27 7jfP6ZRC.net
>>97
中間言語のせいで遅くなってる直接アセンブリ(機械語より広い意味で)にできるなら効率的なのにグギギギギ
というのを気にしなければトランスパイラでもいいんじゃね
Typescript→Javascriptぐらいなら気にならんだろ
Scalaとか思いっきりJVMに足を引っ張られてた例と思う
ちょっと話は違うけど可変長配列を値返しできる言語を主にC系のことしか考えてないバックエンドで実装すると
mallocして返すかForthみたいにデータスタックをもう一つ用意するかぐらいしか方法がない、みたいな

103:デフォルトの名無しさん
17/12/03 21:29:59.69 7jfP6ZRC.net
書いてからもっといい例を思いついた
トランスパイル先に選ばれそうな言語(CとかJVMとかJavascriptとか)って
どれも末尾呼び出し最適化が保証されてないから関数型言語なら避けたいはず

104:デフォルトの名無しさん
17/12/03 21:51:34.72 XVQ9VXzY.net
末尾再起最適化なんかトランスパイルの段階でできるだろ
自分でやってみりゃわかるけど、別の言語への変換って細かい仕様のすり合わせが難しくて
どう頑張っても変換結果は綺麗なコードにはならんよ

105:デフォルトの名無しさん
17/12/03 22:16:35.41 7jfP6ZRC.net
>>103
自身への末尾「再帰」は変換できるが、末尾「呼び出し」一般はかなり難しい
特にモジュールをまたぐとまず無理

106:デフォルトの名無しさん
17/12/03 22:18:35.13 2u990JKW.net
臭い消しもできないのかID:7jfP6ZRCは

107:デフォルトの名無しさん
17/12/03 22:31:58.75 7jfP6ZRC.net
なんだ?誰と間違えられてるんだ?

108:デフォルトの名無しさん
17/12/03 23:20:51.54 8Yd/vHN3.net
トランスパイルする時点で全部gotoにしちゃえばいいんじゃねえの?
ヒープは馬鹿でかい配列切り出して貸してやりゃ良いじゃん。
一番現実的だと思うけど。
と言うか間違えられてかわいそうだな。

109:デフォルトの名無しさん
17/12/03 23:24:33.80 8Yd/vHN3.net
トランスパイラだから、トランスパイル先の言語の作法を守らにゃならん、なんてトランスパイラは
どっちつかずのゲテモノになるなんてのが歴史的にある程度わかってきたんだから、諦めて超高級マクロアセンブラとして使うべきだと思うが、
やっぱそのトランスパイル先の美しさって必要なのかねぇ。

110:デフォルトの名無しさん
17/12/03 23:25:29.18 Q+UzJ2jP.net
くっさ

111:デフォルトの名無しさん
17/12/03 23:27:40.12 8Yd/vHN3.net
>>92
は臭くなかったのに面白いな。

112:デフォルトの名無しさん
17/12/03 23:52:53.39 7jfP6ZRC.net
>>107
ありがとうありがとう
で、goto式だと呼び出し先も含めてひとつの関数にまとめないといけないので
他の関数をtail callしているのがつながって爆発的にコードサイズが膨れ上がる
JVMだと64kbの壁があるとかないとか URLリンク(togetter.com)
またモジュールを超えるとアクセス制御にかかったりもする

113:デフォルトの名無しさん
17/12/03 23:52:56.38 H7G92E6b.net
>>102
javascripというかecmascriptは末尾再帰の最適化は仕様になってる。

114:デフォルトの名無しさん
17/12/04 00:00:49.77 bhxDUAa4.net
>>112
うお本当だ、俺の情報が古かった

115:デフォルトの名無しさん
17/12/04 04:42:05.46 76LtUM8J.net
Cにはlongjumpがある。
これを使えば親の関数へどこへでも飛んでいける。
末尾再帰もオプションで設定できる。

116:デフォルトの名無しさん
17/12/04 08:25:09.89 USho8dw3.net
>>111
JVMだとgotoが相互に飛んでない奴らで一つの関数にまとめるしかないな。
ただ、一つの関数が64kbまで、ってそこそこ余裕あると思うよ。
関数に関数をおさめようとするから爆発的に長くなるというか、実質、関数の後ろにおまけ付いたコードが量産される事になるんだと思う。
呼び出してる側まで全部展開してしまうと割と短くなる。
昔、ホントにそういうトランスパイラ作ったけど、割としっかり動いた。
動的なメモリ確保をほとんどさせられなかったからそうなっただけだけど。
>>114
ホントに高級アセンブラだよなぁ。

117:デフォルトの名無しさん
17/12/04 08:30:55.17 8gND/ZcP.net
くっさNG回避すんな

118:デフォルトの名無しさん
17/12/04 09:02:24.71 dvJUWhXs.net
jsへのトランスパイラは現状、
jsが、webにおける機械語的な立ち位置
だからというのはわかる。
でもcへのトランスパイラってどんな意味があんの?手抜きとしか思えない。

119:デフォルトの名無しさん
17/12/04 09:38:18.50 76LtUM8J.net
手抜き出来ることはメリットだろ。
実装と仕様は分けて考えるべきだからな。

120:デフォルトの名無しさん
17/12/04 10:10:11.02 1pGzw3aP.net
手抜きっつーか、Cに変換しておけば、おおむねどんなlibcでも石でも対応するコンパイラがあるってことでは
GoみたくあらゆるものをGo内で完結させるための車輪の再発明だとか
Rustみたく欲しい環境のtripleがあるかとかtierがいくつだとか
そういう言語機能と直接的には関係ない部分のサポートに関する労力をまるっと切れるのがでかい
一時期のaltJavaやaltJSの乱立を見てると、その分言語の質が上がるかって言われたら怪しいけどな
あとllvmの台頭で、ある程度その辺を再利用できる環境が整ったから、直接機械語吐いた方がよくなりつつあるのもあるか

121:デフォルトの名無しさん
17/12/04 10:54:56.82 dvJUWhXs.net
>>119
自分で言ってんじゃん。
llvmだったら中間コードまでのトランスパイラ作れば最適化とバイナリはくまでやってくれるしそこまでやりゃ良いのに。
あとgoの車輪の再発明はありだと思う。
画像変換したくてimagemagicのlibに依存する羽目になるとか勘弁。

122:デフォルトの名無しさん
17/12/04 11:02:06.37 HnGSLV9z.net
車輪の再開発はありとか自分が作る立場でも同じこと言えんの

123:デフォルトの名無しさん
17/12/04 11:02:26.62 USho8dw3.net
>>117
最適化とかそういう所にそれほど苦労しなくなるかな
手抜きといえば手抜きなんだけど
gccをバックエンドにするなら変な石対応が簡単だし
vc++でも食えるように書けばWindowsでも余計なもの要らないし
intelのコンパイラでゴリゴリに最適化かけたりとか、
静的ビルドでワンバイナリ作りたいからCの方のコンパイルオプションでリンクしよう、とか
既存の処理系に乗っかるのはメリット多いと思う

124:デフォルトの名無しさん
17/12/04 11:39:21.16 1pGzw3aP.net
>>120
llvmが台頭してきたから相対的にCトランスパイルの魅力なくなってきたよなって話で、
昔はCトランスパイラで既存のコンパイル環境に乗っかるのがよく行われてたって歴史的な話な
gccが中間言語仕様を意図的に隠してた弊害とも言える

125:デフォルトの名無しさん
17/12/04 13:22:03.65 s0HrNGdY.net
手抜きを批判する奴おるw

126:デフォルトの名無しさん
17/12/04 23:23:47.01 IjdODrQV.net
実質的にはトランスパイルだろうが何だろうが、とりあえずは関係ないが
今時ライブラリ構築を0からするというのは自分一人が使う自分専用言語だと考えても
汎用言語としてはあり得なくて、何か既存の言語のソレにフリーライドせざるを得ないわけで
となれば何に乗っかるかという部分から考えるし
それが決まってから具体的な実装方を考えるし、なんだったら自動的に決まってくるわけで
余談だが、良くある乗っかり先としては、CとJavaと.NetとJSがあるが・・・
ただ、例えばネイディブコードが良いと考えてC言語系のライブラリに乗っかるとして
C言語のABIはかなり古臭いわけで、あと、ヘッダファイルの存在がかなりエグイわけで
(windows.hをそのまま読み込める自作コンパイラとか書ける気がしない)
その言語で何かCのライブラリを使いたいときCヘッダファイルを適切に移植したのち
使いやすくするためにラッパークラスまで書くとしたら
これはもう多少気に入らない部分があってもC++を使ったほうが楽だし
ヘッダを移植するツールで自動生成する方針でも古臭いCのAPIを直接叩くのなら
何のための新言語か分からないし、だからといってラッパー書く�


127:フはバカらしいし 大概のCライブラリにはC++のヘッダも付いてることを考えるとそのままC++使ったbルうがマシ もしC言語のヘッダを直接読めるように言語を設計するとなるとマクロなども考えると C言語と文法的に互換性が有るように言語を作らなければならないということで これまたあまり作る意味が無い、というか多分C++



128:デフォルトの名無しさん
17/12/04 23:36:03.78 IjdODrQV.net
なんで、素晴らしい言語仕様を考えることは出来るかもしれないし
頑張ってコンパイラを作ることも可能かもしれないが
結局ライブラリをどうするのかという部分が一番の問題で
0から構築するのはあり得ないから何かに乗っかるわけだが
当然乗っかり先の制約を受ける
特にネイティブコード系は一番普及しているABIがC言語のソレであり
気に入らないのでひたすらラップしまくる日々か
諦めて次世代言語の機能を生かせずアンセーフとか言っちゃって直接叩くか

129:デフォルトの名無しさん
17/12/05 07:59:12.87 8RhNw6Wh.net
次世代言語はコレだろ
URLリンク(arstechnica.com)

130:デフォルトの名無しさん
17/12/05 08:02:00.55 hRLlSr5E.net
M$サーバでしか動かない言語はNG

131:デフォルトの名無しさん
17/12/05 11:01:11.59 NtWJrTYb.net
Win鯖で運用されない = Win鯖で使えない
だからな
リーナスが死んだら終わりな言語とかよく使えるな

132:デフォルトの名無しさん
17/12/05 11:03:08.63 wKllXbtS.net
リーナス死んだらUnixサーバー終了ってマ?

133:デフォルトの名無しさん
17/12/05 14:15:20.69 3OMBWQX7.net
どうでもいいが長すぎる文章は読まないからな。もっと要約して話せ

134:デフォルトの名無しさん
17/12/05 14:25:30.36 wKllXbtS.net
あのスペースホルダー邪魔だよな

135:デフォルトの名無しさん
17/12/05 15:43:17.12 V+NdjayN.net
AutoMLが次世代言語らしいな。

136:デフォルトの名無しさん
17/12/05 19:36:47.33 ueMa998Y.net
>>129
君の言っている意味がよくわからない。
言語?

137:デフォルトの名無しさん
17/12/05 21:42:34.05 uUkZwDzW.net
>>130
今のリーナスは、リリース担当兼広報。
実際のリリーススケジュールとか開発機能とかは
スポンサーの企業が決めている。

138:デフォルトの名無しさん
17/12/05 21:54:34.45 XBgkE6Xw.net
リリリリリリリリリリリリリ

139:デフォルトの名無しさん
17/12/05 21:56:16.41 wKllXbtS.net
リーリスリリースリーリリスリリリリリーリスリー
リーリナリリーナリーリリナリリリリリーリナリー

140:デフォルトの名無しさん
17/12/05 21:56:27.08 TliYC8gy.net
Elixir から Elm の流れで、いよいよオブジェクト指向に対する懐疑心が無視できないレベルに達した2017年冬。
URLリンク(ubiteku.oinker.me)

141:デフォルトの名無しさん
17/12/06 00:55:40.02 5Fm3uunR.net
ブログ記事は信用しない
マウント取るためだけの批判の連鎖がよくあるんだと、フロントエンド界隈で学んだ

142:デフォルトの名無しさん
17/12/06 01:45:10.28 TwrP1kt8.net
でも2ちゃんは信用しちゃいまつw

143:デフォルトの名無しさん
17/12/06 01:47:25.25 6LacDPiL.net
OCamlをやるとプログラム中でオブジェクト指向を使った抽象化が必要な場所はほとんど無いことに気付くよ

144:デフォルトの名無しさん
17/12/06 02:00:40.62 9Cl2Q0EY.net
オブジェクト指向って抽象化なのか?
プログラミングで扱うのは本質的には「操作」だが、それは人間にとって抽象度が高く理解しづらい(と考えられていた)から、
仮想的なモノに見立てることで具象化したのがオブジェクト指向だろ

145:デフォルトの名無しさん
17/12/06 02:19:19.87 EoxkbCFV.net
メモリとかハードウェアまわりを触るのが具象で
オブジェクトのような仮想的なものを扱うのが抽象だと思っていた

146:デフォルトの名無しさん
17/12/06 02:38:24.20 TwrP1kt8.net
>>143
コレメンサスンゴな

147:デフォルトの名無しさん
17/12/06 03:37:41.63 s/vk2t6t.net
>>141
OCamlのOの意味を考えたことあるかい?

148:デフォルトの名無しさん
17/12/06 08:37:01.32 omJYBD6x.net
>>145
名前に入ってようがなんだろうが OCaml で 殆ど誰もOO しないのは端的な事実

149:デフォルトの名無しさん
17/12/06 08:38:30.89 KSpOhWT+.net
OCamlだからこそでしょ

150:デフォルトの名無しさん
17/12/06 08:43:46.19 omJYBD6x.net
OCaml ではまず OO なんかしない件についての説明
URLリンク(d.hatena.ne.jp)
URLリンク(d.hatena.ne.jp)

151:デフォルトの名無しさん
17/12/06 08:58:33.91 LlbO+WJR.net
正確にはocamlに文法として用意されたclass/objectを誰も使わないという話で、代わりにモジュールを使って抽象型も多態もするわけでそれはそれでOOの一種だとは思うな

152:デフォルトの名無しさん
17/12/06 09:03:36.38 mFUG6oMG.net
関数型言語をやたら持ち上げてるけど
OSを関数型言語で書いてみてよ。それでバグか少なかったら関数型言語の優位性を認めるよ。

153:デフォルトの名無しさん
17/12/06 09:06:07.69 omJYBD6x.net
>>149
>代わりにモジュールを使って抽象型も多態もするわけでそれはそれでOOの一種だとは思うな
ぜんぜん違うから
だがそこから説明すんの面倒くさいのでもういい

154:デフォルトの名無しさん
17/12/06 09:09:24.32 omJYBD6x.net
>>150
>OSを関数型言語で書いてみてよ。それでバグか少なかったら関数型言語の優位性を認めるよ。
高水準言語でOS書けって頭悪すぎないか
Rustを関数型と認めるゆるい基準なら Redox がある

155:デフォルトの名無しさん
17/12/06 09:22:35.91 mhTOyNgr.net
>>148
言語の糞さと、周りの人間が糞だからってことばかりで、全然説明になってないな

156:デフォルトの名無しさん
17/12/06 09:45:25.42 enrVe2xz.net
>>139
>マウント取るためだけの批判の連鎖
これなくすだけでよくなるプロジェクトって世の中に大量にありそう。

157:デフォルトの名無しさん
17/12/06 09:59:23.03 26uEwiQD.net
>>151
俺も書いてからしまった面倒くさくなる話やと思った
やめとこう

158:デフォルトの名無しさん
17/12/06 11:07:54.33 YJV2uZev.net
オブジェクト指向ってそんなにだめかな?
そのオブジェクトに対する操作をそのオブジェクトに持たせるってわかりやすくていいけど。
immutable.jsのレコードみたく、
メソッドは新しいインスタンスを返す関数と強制すれば関数型とも共生できると思うんだけど。

159:デフォルトの名無しさん
17/12/06 11:16:45.83 enrVe2xz.net
別に悪いってことはないだろ。
結局、状態や依存をどう管理するかって話なわけで、極論言い始める奴の
いうことなんて話 2 割くらいにきいてりゃいいと思うけど。

160:デフォルトの名無しさん
17/12/06 12:05:10.45 MKeQWAFs.net
JavaScriptのようにハッシュテーブルとラムダを使う言語は関数型と共生できる
じゃあハッシュテーブルを使わない言語はなんで使わないのか?
その答えは、関数型とオブジェクト指向の対立とは全然関係ないところにある

161:デフォルトの名無しさん
17/12/06 21:34:09.17 iLCXc0pa.net
DOMをデータと関数に分離してくれ

162:デフォルトの名無しさん
17/12/06 22:04:59.32 FKF62WXq.net
まずデータをどれだけ圧縮できるか考えるといい
次に圧縮されたデータを展開する関数を作る

163:デフォルトの名無しさん
17/12/06 23:57:54.56 omJYBD6x.net
>>153
>言語の糞さと、周りの人間が糞だからってことばかりで、全然説明になってないな
はははははははwwww
ま、がんばれw

164:デフォルトの名無しさん
17/12/07 00:47:57.07 Z/mKUUkc.net
>>141
SML#でもいいですか?

165:デフォルトの名無しさん
17/12/07 01:34:26.91 F4+mjT1z.net
自分PHPいいっすか?

166:デフォルトの名無しさん
17/12/07 09:58:12.13 hv/QEVwp.net
語りたいことがあるんならいいんじゃない?

167:デフォルトの名無しさん
17/12/07 10:03:56.61 xdMp5osr.net
typescript使っててasync awaitが便利なんだけど煩わしい。
mapとか関数呼び出しを伴う操作で非同期処理に戻るのが、
たまにミスって放置しがち。
lintツールで指摘するなり監視する機能が欲しい。
先行してるC#とかはうまくやってるの?

168:デフォルトの名無しさん
17/12/07 11:18:40.20 9qRtkK/n.net
ミスを指摘するしか能がない批評家に存在価値はあるのだろうか

169:デフォルトの名無しさん
17/12/07 11:39:07.45 v/1e0blE.net
>>166
ミスを作り出す無能に価値はあるのだろうか

170:デフォルトの名無しさん
17/12/07 12:08:44.81 hv/QEVwp.net
何がミスなのかもわからず客が文句言ってるからで判断するバカ営業よりは価値がある。

171:デフォルトの名無しさん
17/12/07 22:26:33.23 4FM+mzbe.net
This Woman Created a Programming Language with Privacy Baked In
URLリンク(www.youtube.com)

172:デフォルトの名無しさん
17/12/09 02:52:58.92 Fh8F1Mjo.net
Haskellの型クラスって凄く良い機能だと思うんだけど、地味に数学感足りないよな
NumってなんだよNumって。もうちょっと分解しろよって感じだ
Numeric preludeあんまり使われてないみたいだし

173:デフォルトの名無しさん
17/12/09 11:23:01.73 /ZpR40F0.net
HaskellはStrictData拡張とStrict拡張が入った事で
実用的な次世代言語になる可能性が出てきた

174:デフォルトの名無しさん
17/12/09 23:10:56.50 OmTdA8EX.net
正格も遅延も使える言語と化したHaskell先輩

175:デフォルトの名無しさん
17/12/10 02:42:38.28 a6n4XEL6.net
型なし能なしのゴミ屑言語の何がいいんだろうな
ペチパーは論外、ルビーもガイジだわ

176:デフォルトの名無しさん
17/12/10 04:06:55.10 Cg9x5qL1.net
動的型付けというだけで別に型がないわけではないので注意

177:デフォルトの名無しさん
17/12/10 05:03:18.54 cDa6l0J8.net
>>170
あれはSmalltalkってゴミ言語がヒントになった機能だからね
なぜ最初から高階多相にしなかったんだろう

178:デフォルトの名無しさん
17/12/10 05:14:36.81 7QrhdqaC.net
ハスケルは実用性重視で機能を絞ってるからな。

179:デフォルトの名無しさん
17/12/10 05:53:37.29 g4Avn4JH.net
自己書き換えもできないハスケルはプログラム言語と呼ぶに値しない
純粋関数型プログラム言語(自称)ハスケルw

180:デフォルトの名無しさん
17/12/10 05:56:33.48 of8IRKO8.net
Haskellは+や-といった演算子がNumに取られてるせいで
オーバーロード的なことが非常にやりにくいのが不便
<+>みたいな演算子は独自定義できるがなんかダサい

181:デフォルトの名無しさん
17/12/10 10:16:20.55 a6n4XEL6.net
>>174
そういう詭弁はいらないから

182:デフォルトの名無しさん
17/12/10 10:28:42.10 dcXB++ys.net
>>179
ガイジ

183:デフォルトの名無しさん
17/12/10 10:35:00.41 IzGEuZzn.net
詭弁でもなんでもないだろ
静的言語の型こそまやかしだと思うが。
特にそれがただの「コンパイラだけが知っているメモリへの格納方法」である言語は、動的言語の型よりも型がないと言えると思うけど?

184:デフォルトの名無しさん
17/12/10 11:12:55.67 mFrbF+Wk.net
はいはいペチパーはPHPスレから出てくんなクソが
君の大好きな肥溜めPHPみたいな動的型付け言語に型はねーから

185:デフォルトの名無しさん
17/12/10 11:14:50.34 a6n4XEL6.net
ほらな
型なし能なし詭弁あり(藁)

186:デフォルトの名無しさん
17/12/10 11:33:37.68 ATSfYuOI.net
まあいくら静的型でも本物のコンパイラはこんな性格悪くないから気にするな
ここにいるやつはコンパイラの守護霊だ

187:デフォルトの名無しさん
17/12/10 12:16:37.53 OZ32lk+t.net
動的でも静的でも最近は型は強くする方向にはあるかもね。
c とか perl に比べれば java でも python でも十分型を強くしてる印象。

188:デフォルトの名無しさん
17/12/10 12:39:27.35 1f8aW6Mh.net
真に型がない言語とはfortran77みたいな言語のことだと思う

189:デフォルトの名無しさん
17/12/10 13:03:02.46 IzGEuZzn.net
PHPだとは言ってないのにな。
そもそもPHPと口に出すのこいつぐらいじゃね?

190:デフォルトの名無しさん
17/12/10 13:04:01.49 IzGEuZzn.net
>>186
あるいはlispか。

191:デフォルトの名無しさん
17/12/10 13:44:56.60 H+wQ5ZRg.net
>>175
Smalltalkは自身がゴミ言語であるだけでなく
後世の言語にも負の影響を与えてるので
本当に害悪だな

192:デフォルトの名無しさん
17/12/10 13:58:51.02 a6n4XEL6.net
>>187
はいはい
サボってないで早く保守作業に戻ってくださいね(藁)

193:デフォルトの名無しさん
17/12/10 14:14:10.45 ATSfYuOI.net
型情報に限らず情報ってのは冗長な部分が省略される
省略したからといって必ずしも情報が失われるわけじゃない

194:デフォルトの名無しさん
17/12/10 14:59:04.47 harEA0jS.net
逆に考えよう。「型がある言語」とは何だろうか

195:デフォルトの名無しさん
17/12/10 15:25:19.15 Hk+Muhn7.net
皮肉も理解できないペェチピィコンパイラ並の低脳ガガイノガイがおりゅってマ?w

196:デフォルトの名無しさん
17/12/10 15:49:43.53 cU10YPQo.net
市民、PHPコンパイラとはなんですか?

197:デフォルトの名無しさん
17/12/10 15:51:27.08 ATSfYuOI.net
>>192
型情報があるだけでなく情報を取得するアルゴリズムがある言語
アルゴリズムがあればモンティホール問題みたいに計算を間違えるやつが続出しない

198:デフォルトの名無しさん
17/12/10 16:07:22.03 1f8aW6Mh.net
>>188
多重ディスパッチ出来る言語が型なしってことはないだろ

199:デフォルトの名無しさん
17/12/10 16:49:06.60 g4Avn4JH.net
>>182
君が型理論を知らないことはよくわかった
ばーかw

200:デフォルトの名無しさん
17/12/10 17:16:26.74 cU10YPQo.net
>>197
ぺちぱーがwwwwww
型理論をwwwwwww語るwwwwwwww
今年一番笑ったわwwwwwwwwwwwww

201:デフォルトの名無しさん
17/12/10 18:08:14.35 7rwMCdFh.net
PHPをけなしてるだけのやつって、ほかの言語知らないから、PHPをdisって心の平穏を保ってる、可哀想なやつなんだろうな。
頑張れよ。

202:デフォルトの名無しさん
17/12/10 18:09:23.94 7rwMCdFh.net
因みに、俺もPHPerは害悪だから滅びろって、思ってるけどな。

203:デフォルトの名無しさん
17/12/10 18:31:37.52 W721E1OC.net
>>199-200
声に出して読みたい日本語

204:デフォルトの名無しさん
17/12/10 19:17:10.74 g4Avn4JH.net
>>198
おだいじにね

205:デフォルトの名無しさん
17/12/10 19:23:08.38 1f8aW6Mh.net
自己書き換えできるかどうかでプログラム言語と呼ぶかを決め奴がなんか言ってる

206:デフォルトの名無しさん
17/12/10 19:50:19.80 Hk+Muhn7.net
けなすってーかただの事実言うてるだけやん
ゴミ言語のペチプァ~さんは何をそんなに怒ってるだ今さら?

207:デフォルトの名無しさん
17/12/10 20:53:52.22 OZ32lk+t.net
興味ない人間からすれば
いやもうわかったから。。
という感想しかない。

208:デフォルトの名無しさん
17/12/10 21:04:11.85 Hk+Muhn7.net
ほんとそれな
ペチプァさんは巣に帰って、どうぞ

209:デフォルトの名無しさん
17/12/10 21:57:41.07 a22e0iM0.net
PHPをdisっても顔真っ赤にして反論してくるヤツが居ないからツマラナイ

210:デフォルトの名無しさん
17/12/10 23:14:49.80 IzGEuZzn.net
PHPを必死に否定すること自体がよくわからんけどな。
そもそも作者が全部認めてるレベルのテキトーな言語なんだから、
PHPやってる奴ほど「そうだね、だから何なんだろう?」って思うような気がする。
よほど無念な思いをしたんだろうか。

211:デフォルトの名無しさん
17/12/10 23:17:46.82 1f8aW6Mh.net
くっさ

212:デフォルトの名無しさん
17/12/10 23:43:18.17 IzGEuZzn.net
出た、くっさ

213:デフォルトの名無しさん
17/12/10 23:55:28.34 Hk+Muhn7.net
くさ

214:デフォルトの名無しさん
17/12/11 00:44:55.69 LKeaMz/q.net
便器ブラシさんに草ひとまぶし・・・w

215:デフォルトの名無しさん
17/12/11 01:02:30.73 MQI53TiX.net
型話の荒れかたが凄いな
静的型付けの言語は実行時前に型の整合性を検証し
動的型付けの言語は実行時に型の整合性を検証する
で、前者はRTTIを基本的に必要とせず、したがってわざわざ保持しないので
(とはいえHaskell含め多くの言語でトリックが用意されているのだが)
メモリ空間についてオーバーヘッドが減り、型検査も事前に済ませておいて
実行時にはしないので、速度についてオーバーヘッドが減る。
ていうか、トイ言語でもいいから動的型の言語の処理系を実装したことがあれば、こんなのは間違えるはずのない話でな。

216:デフォルトの名無しさん
17/12/11 01:06:54.76 MQI53TiX.net
ホットにパッチ当てたいとかそういうごく特殊な要求がある場合には
動的型検査の方が優位性を持つことがあるけど、そうじゃない場合で
(たとえばH-Mくらいの範囲内で)静的に型のつかないコード書く必要なんて
まあまず実際にお目にはかからないよね

217:デフォルトの名無しさん
17/12/11 09:01:07.32 FO1afGiG.net
だけどその程度のことは皆わかっててやってることだから
いちいちドヤらなくてもいいと思う

218:デフォルトの名無しさん
17/12/11 16:48:07.12 ckqehrxf.net
型なんて捨ててビット列を毎回解釈しろ

219:デフォルトの名無しさん
17/12/11 17:16:22.00 SuGHSbgO.net
なんだかんだ言ってweb系はjava以外はphpかrubyが大半を占めてるんだから
静的言語最強とはならない気がする。

220:
17/12/11 17:21:22.26 maeT9tJH.net
静的型言語の安心感には満足している、つまらないミスを弾いてくれるから、頭の弱い私にはぴったりだ。
動的型言語の「綴りミスも許さない」方針にはついていけない
それとも動的言語でも option explicit な使い方が可能なのでしょうか?

221:デフォルトの名無しさん
17/12/11 17:56:27.18 RiNfuleo.net
option explicitにしたとしても、variantで宣言したら無意味だよね、Dictionaryのキーにあらぬものを使ったら落ちるよね、ってところでゴタゴタ言ってる。
ホントに宣言してないレベルの変数アクセスは大体の言語の静的解析で見つけられるんじゃないかな。
PHPの$$変数とかは無理だろうけど。

222:デフォルトの名無しさん
17/12/11 18:12:17.71 lStv0Fkk.net
てか普通にそのコード通るテスト書けよ。

223:デフォルトの名無しさん
17/12/11 19:33:23.48 MQI53TiX.net
テストは型検査みたいな静的検査と違って本質的に安全性を保証できないのでお門違い

224:デフォルトの名無しさん
17/12/11 19:40:27.25 Clwu9sNW.net
型検査を有り難がるのはテスト書かないドカタだけって結論出てるけどな

225:デフォルトの名無しさん
17/12/11 19:52:37.78 lStv0Fkk.net
お門違いの型の変数投げ入れて、
型エラー例外をトラップするようなテストかけばいいじゃん。
まあ手間なのはわかるけど、少しは頭使えばいいのに。

226:デフォルトの名無しさん
17/12/11 20:02:58.37 aR07dvjT.net
テストかかなくても、ソースを書いていること自体テストもかね、入力補完強化も兼ねるからいいんじゃないの?

227:デフォルトの名無しさん
17/12/11 20:05:57.20 FO1afGiG.net
それで動的型にする見返りがあるんなら良いんだが、何もないからなぁ
邪悪なことがしたい、以外のメリットが無い
少なくとも次世代言語の土俵に上がれないのは確かなので
このスレでミソカスな扱いになるのは仕方がないだろうな

228:デフォルトの名無しさん
17/12/11 20:14:05.81 lStv0Fkk.net
サクッとプロトタイプとしてフロントエンド作るなら圧倒的に動的のがラクだけどね。
規模が大きいんなら確かに静的でないと厳しいかなと思うけど。

229:デフォルトの名無しさん
17/12/11 20:29:57.04 wkifU5nK.net
プロトタイプで作って流行ったら作り直すならいいけどね
規模大きくなっても使い続ける企業多すぎ

230:デフォルトの名無しさん
17/12/11 20:30:14.73 pZMHEF9P.net
多重ディスパッチが好き

231:
17/12/11 20:42:49.31 maeT9tJH.net
>>219
variant 型を使うなんて、まるで void * だけでコーディングしろ、と強要しているようなもの
型の恩恵を自ら捨てる選択には疑問、Java の嘘嘘 generics にしてもありがたいくらいだ

232:デフォルトの名無しさん
17/12/11 20:45:00.55 FO1afGiG.net
俺なんかは型を書くのがそんなに面倒か?と思うし
あちらさんは型のテストを書くのがそんなに面倒か?と思うのかもしれないが
仮に、この二つが同程度の面倒臭さだったと仮定したら
その時点でバランスしてしまってるわけで・・・あとはもう自明
ただこれは昔の話で、今は型推論も普及してるから、更に
シンプルに考えて、型のテストはどこかの段階で絶対にやらなければならない
避けて通れないものとしたとき、じゃー何処でどのようにやるかという事で
どうせ不可避なら静的型のアプローチの方が良いだろうとなるだけで
システムでサポートせず人力でテストするって方向はまるで
アセンブリのようで逆行しているわ

233:
17/12/11 20:52:19.53 maeT9tJH.net
ただ、動的型付け言語の御大将は、あの lisp 族だからな…奴らには勝てない…

234:デフォルトの名無しさん
17/12/11 20:55:22.07 pZMHEF9P.net
Land of lispにHaskellのが良いって書いてあるから静的片付けの勝ち

235:デフォルトの名無しさん
17/12/11 21:45:07.08 wkifU5nK.net
ローカル変数→型推論があるので型を書く必要はない
公開関数などの型→動的型付けでもコメントなど何らかの形式で型を書くので静的型付けだから書かないといけないという事はない
よって静的型付けの勝ち

236:デフォルトの名無しさん
17/12/11 21:52:39.67 lRj3KQ4V.net
型でコーディングは出来んし、証明でビジネスは動かん
結局きちんと動くものをいかに速く作るかってだけの話だろ
本当に静的型が「きちんと動くものを速く作る」ことができるなら、とっくにYesodがRailsを駆逐してる
そうじゃないってことはRailsの方が、強い動的型の方が優秀なわけだ
まあPHPみたいな弱い型付けの言語は論外だが

237:デフォルトの名無しさん
17/12/11 21:55:13.37 If11Xzom.net
Railsなんて駆逐されるほど使われてるの?
Google、Microsoft、Amazon、Facebook、twitterなど、有名な会社で使われてるのを聞いたことないが…
正直技術力のないベンチャーが使ってるイメージしかない

238:デフォルトの名無しさん
17/12/11 21:55:35.93 lStv0Fkk.net
rust は別に好きじゃないんだが型に関するアプローチに関してはいいと思う。
関数の引数では型を気にするけど、内部は型推論で暗黙的に設定されるっていう。

239:デフォルトの名無しさん
17/12/11 21:56:58.82 VlIg6iVt.net
>>229
Option Explicitとはその程度のもの。
あと、Variantを器用に使ってるシステム見たことあるぞ。
バカとハサミは使いよう。

240:デフォルトの名無しさん
17/12/11 21:59:51.45 xzgxDEt/.net
>>234
Railsって言語だったの?

241:デフォルトの名無しさん
17/12/11 22:01:59.46 lRj3KQ4V.net
>>235
初期のTwitterはRailsだぞ?
顔本はPHPだ

242:デフォルトの名無しさん
17/12/11 22:03:18.72 lRj3KQ4V.net
>>238
脳内でHaskellとRubyに対応付けてくれよ……

243:デフォルトの名無しさん
17/12/11 22:03:39.46 Ai9DBAI/.net
>>239
Railsなどという負債を抱えていたいい例やね

244:デフォルトの名無しさん
17/12/11 22:04:41.80 pZMHEF9P.net
初期

245:デフォルトの名無しさん
17/12/11 22:05:55.17 If11Xzom.net
>>239
いや知ってるけど、それはその2つが駆逐された話じゃねーかw

246:デフォルトの名無しさん
17/12/11 22:09:18.64 lStv0Fkk.net
twitter は erlang に移って、その後やっぱ性能出ないから他のにしたって話じゃなかったっけ?
こうみると言語にこだわるのは技術力のない証拠に思えるけどね。

247:デフォルトの名無しさん
17/12/11 22:10:51.69 su83dlbx.net
まあ十分な技術力があればJavaを使うからなwww

248:デフォルトの名無しさん
17/12/11 22:17:40.59 lStv0Fkk.net
goroutin は意外とリークがめんどい、
erlang の軽量プロセスはそこまで性能が出ない
scala の互換性はひどすぎる、
では、この領域をカバーする言語は?
ってのはあるかもね。

249:デフォルトの名無しさん
17/12/12 00:43:04.64 du4SRE14.net
自称 言語屋

250:デフォルトの名無しさん
17/12/12 01:28:41.64 nM55x1pa.net
同期的にかけるasync awaitの良さを知ってから
gorutineもしんどくなってきたわ。
見た目命令順になるのが一番分かりやすい

251:デフォルトの名無しさん
17/12/12 07:29:46.32 Ye0RkKUS.net
>>248
デバッグとスタックトレースが難点だけど、メリットの方が大きいからお世話になってます

252:デフォルトの名無しさん
17/12/12 12:57:32.06 jaMzqj4w.net
元からイベントの投げつけ合いで書いてたからどっちも便利だと思うけどな。

253:デフォルトの名無しさん
17/12/12 21:14:39.58 u/ODDP+M.net
lambdaの中にlambdaを書くのを繰り返すと大量のインデントと括弧が出てくる
インデントと括弧が不要になるのが一番重要

254:デフォルトの名無しさん
17/12/12 21:25:39.50 Z8olEYsj.net
>>251
それって Python 限定の話だろ
Python は公式ドキュメントで関数型プログラミングには不適切と
表明しているくらいなんだから、それくらい我慢するのが Pythonista だよ

255:デフォルトの名無しさん
17/12/12 21:37:47.02 u/ODDP+M.net
コールバック地獄は何故地獄かって話だからPython限定ではないと思うが

256:デフォルトの名無しさん
17/12/12 22:28:11.33 qokAxyHY.net
>>251
引数とかにlambdaを直接書くスタイルはそれが苦にならない人達がやっているだけで、
それが読みにくいと感じるならフラットに展開しちゃえばいいんだぜ?
Promiseやasync/awaitでcallback地獄解消なんて書いている記事の大半も
本質的な部分はこっちだったりして。
ただ>>248の言うように上から実行順に書けるというメリットはある。

257:デフォルトの名無しさん
17/12/12 22:28:51.50 jXjdcIPT.net
Promiseパターンがすべてを解決した認識

258:デフォルトの名無しさん
17/12/12 23:30:52.82 GdvZGdbs.net
コールバック地獄は、JS の、co, Koa などのジェネレータランナー。
iterator, generator を使ったもの
yield Promise.all
みたいな書き方

259:254
17/12/12 23:35:15.82 GdvZGdbs.net
try{
yield Promise.all(非同期の並行処理)
}catch(err){
}
ジェネレータランナーは、非同期処理を同期的に書けて、
非同期処理を、try/catch できる

260:デフォルトの名無しさん
17/12/13 14:46:46.99 4nENptHR.net
Promiseは何度も帰ってくるものや、一度も帰ってこないかもしれないものが書きづらいんだよなぁ。
名前の通りだから仕方ないんだけど。
Promiseとawaitで解決できるのはcallbackを使うものの中でもとても限定的なパターンだと思う。
無いよりマシだけどね。

261:デフォルトの名無しさん
17/12/13 16:16:33.50 NPzuRHB+.net
コールバック地獄は慣れれば天国だろ。
実行速度もコールバック地獄のほうがプロミスより速いしな。

262:デフォルトの名無しさん
17/12/13 18:37:50.43 sjTFpswL.net
>>259
おう、高級言語よりアセンブリの方が速いし一生アセンブリ使っとけよ

263:デフォルトの名無しさん
17/12/13 18:38:50.92 sjTFpswL.net
>>258
何度も返ってくる物:rxjs
一度だけ返ってくるもの:Promise+async/await

264:デフォルトの名無しさん
17/12/13 20:43:44.45 VZwg/vs9.net
>>261
借りてきすぎて統一感ゼロ。
いっそコールバック書くか、全部イベントでこなすかや全部rxか、全部Reduxのほうが潔い。
awaitで延長される変数のライフタイムが勿体無さすぎる。

265:デフォルトの名無しさん
17/12/13 20:52:20.95 4nENptHR.net
>>260
そういう世界もあるので一概に笑えんし、少なくとも取ってつけたで満足して「これがあるから問題ない」と開き直るよりは、
コントロールを保ってモノ作ってると思うけどな。
ポリフィル(笑)

266:デフォルトの名無しさん
17/12/13 22:30:27.71 sjTFpswL.net
>>262
いやいや適材適所だろ

267:デフォルトの名無しさん
17/12/14 00:54:59.81 R6Bq4sFz.net
rxもかなりめんどくさい。概念はシンプルなのに
操作メソッドあんなにいるもんか?って思うわ。

268:デフォルトの名無しさん
17/12/14 02:18:11.50 YzSVtILw.net
Advent見てても人気ねぇし、Rxは流行らんな。

269:デフォルトの名無しさん
17/12/14 07:59:53.12 NBF/BshK.net
時代はBlack

270:デフォルトの名無しさん
17/12/14 08:03:


271:21.17 ID:cqXlNk/G.net



272:デフォルトの名無しさん
17/12/14 08:04:38.89 cqXlNk/G.net
>>218
>動的型言語の「綴りミスも許さない」方針にはついていけない
変数宣言の有無と型付けを区別できない人はプログラム書かないほうがいいと思う

273:デフォルトの名無しさん
17/12/14 08:05:20.86 cqXlNk/G.net
>>218
>動的型言語の「綴りミスも許さない」方針にはついていけない
変数宣言の有無と型付けを区別できない人がプログラムを書くのは型エラーです
大事なことなので3回書きました

274:デフォルトの名無しさん
17/12/14 08:07:43.17 cqXlNk/G.net
>>225
>それで動的型にする見返りがあるんなら良いんだが、何もないからなぁ
>邪悪なことがしたい、以外のメリットが無い
こういう人って
邪悪なことって具体的にリストアップしてよ
と言うと二度と帰ってこないw

275:デフォルトの名無しさん
17/12/14 08:22:58.23 hzCFy3Z8.net
Yコンビネータ書きたいとかだろ

276:デフォルトの名無しさん
17/12/14 08:29:14.79 cqXlNk/G.net
Yコンビネータは再帰型で静的に型付くだろ

277:デフォルトの名無しさん
17/12/14 08:29:49.77 vWSIvs9F.net
>>264
適材適所なのかなぁ。
目下の問題を解決するためにこうなっちゃいました、いい感じなんで標準クラスにするべき!に見える。
どーせwebworkerとかserviceworker、webdsocketにイベントの投げ合いなんだし、もとのようにイベントで制御するのが一番に見えるけどな。
一度きりならonce、何回も呼ばれるからon。
eventEmitterってブラウザでも使えなかったっけ?
無けりゃそれぐらい書いても良いけど。

278:デフォルトの名無しさん
17/12/14 08:31:59.97 GokG4kFP.net
連投ガイジ

279:デフォルトの名無しさん
17/12/14 10:21:22.17 vseOcHr4.net
動的型付けの恩恵を一切受けないコードを書くなら
動的型でも型推論で補完が効くし、
補完が効かないなら動的型の恩恵を受けるようなコードを
知らないうちに書いてるってことだよ

280:デフォルトの名無しさん
17/12/14 12:16:59.44 vWSIvs9F.net
なんでもガイジだなぁ

281:デフォルトの名無しさん
17/12/14 12:51:31.09 rvUZFKGD.net
なんでもガイジというか、ガイジがいっぱい沸いているだけ

282:デフォルトの名無しさん
17/12/14 13:13:13.86 kS2O37CV.net
同じ人間でも脳の構造の違いにより考え方が全然違う。
つまり生まれつき脳の仕組みが全く違う人達がいる。

283:デフォルトの名無しさん
17/12/14 16:27:32.32 w0b2qkK/.net
仕組みが全く違うというのがもし本当なら
速度のみを測定するベンチマークが信用できなくなる
だから仕組みは同じで速度だけが違うと考えるのが無難である

284:デフォルトの名無しさん
17/12/14 19:49:58.30 ZmHWuRBr.net
>>274
rxはSubject使い始めると一気に邪悪化するからな

285:デフォルトの名無しさん
17/12/15 00:41:45.52 8bhjGnw1.net
型無しガイジどもは死ね
迷惑なんじゃ

286:デフォルトの名無しさん
17/12/15 07:01:30.05 18KhAamS.net
型推論より要件推論ください。

287:デフォルトの名無しさん
17/12/15 07:10:42.24 lXr5oGUf.net
プロミスってモナドだよな。いい意味で。

288:デフォルトの名無しさん
17/12/15 08:27:21.30 TYCzXsyM.net
型があれば解決するかのように思ってる人が生き方を改めてほしいな。
実際問題、それだけに頼って地雷踏んだときはコアダンプ読む型なんて飾りですみたいなオッサン呼ぶ事になるんだし。

289:デフォルトの名無しさん
17/12/15 08:32:03.35 onuFSj3r.net
だがそれは型による静的検証をしない理由にはまったくならない

290:デフォルトの名無しさん
17/12/15 09:26:28.87 y+u48ms5.net
別にやればいいじゃんとしか言いようがない。
大抵糞どうでもいいキャストを付け加えるどうでもいい作業に時間を追われるだけだけどな。

291:デフォルトの名無しさん
17/12/15 09:27:43.95 onuFSj3r.net
底辺凄いな(こなみかん

292:デフォルトの名無しさん
17/12/15 09:41:39.57 TYCzXsyM.net
型による静的検証で満足する理由にもならん。

293:デフォルトの名無しさん
17/12/15 09:51:32.76 KrZVgz++.net
静的型があれば全て解決するとは誰も言ってないが
動的より良いというだけだぞ

294:デフォルトの名無しさん
17/12/15 10:01:44.25 EYhpAKtT.net
そらフレームワークに乗っかって用意された関数を呼ぶだけのドカタには
静的型の制約なんて関係ないだろうね
メタプログラミングなんてした事ないでしょ?めんどくさいよ静的型だと

295:デフォルトの名無しさん
17/12/15 10:19:01.73 CUNT7XlU.net
こいつ相手をドカタかつメタプログラミングをしたことない奴と決めつけて何がしたいんだ……

296:デフォルトの名無しさん
17/12/15 10:29:03.83 Wavcz0jA.net
なんで静的型のほうが動的型より良いって前提で話を進めるんだこいつらは……
そんなに静的型が好きならYesodでRailsレベルのシステム構築してみろっつーの

297:デフォルトの名無しさん
17/12/15 10:44:03.14 CUNT7XlU.net
そんな面倒なこと要求するならお前も何か動的言語でRails並のもの実装しろよな

298:デフォルトの名無しさん
17/12/15 10:47:18.85 Wavcz0jA.net
静的型なら動的型より生産性高いって主張してる側が実装しろよ
なんで実証をこっちがやんなきゃいけないんだよ

299:デフォルトの名無しさん
17/12/15 10:49:44.96 CUNT7XlU.net
実証責任を押し付ける上にテーマまで押し付けんなよ
テーマ量子化学で良ければ無限に実証してやるがやるか?

300:デフォルトの名無しさん
17/12/15 10:55:43.94 Wavcz0jA.net
静的型の言語はいちいちキャスト書いたり無駄にコード量がかさむ抽象クラス書いたりしてコード当たりの生産性低くなるし
メタプログラミングがかなり面倒になるしで、動的型と比べて工数が倍以上かかる
型チェックで検出できる程度のエラーなんて単体テスト書きゃ確認できる程度のモン
テスト書きたくないクソプログラマ未満には魅力的に映るんだろうがな

301:デフォルトの名無しさん
17/12/15 10:57:08.06 Wavcz0jA.net
>>297
ってこっちは主張してて、その実例として、RailsとYesodを提示してる
静的型を優位に推したいなら、逆の事例でも提示してみろって話だ

302:デフォルトの名無しさん
17/12/15 11:06:17.66 lXr5oGUf.net
動的と静的は兄弟のようなものでお助けあっていきているんだね。

303:デフォルトの名無しさん
17/12/15 11:23:17.29 CUNT7XlU.net
おぅん?
なんだその妄想。静的型でもテスト書くぞ
それにJavaじゃあるまいしちゃんと書いてりゃキャストはいらんしょ
メタプログラミングはともかく、その二つは言語の問題じゃない
言語の問題じゃない所を挙げて優位を主張すれば良いなら
↓みたいなこと書けばいいのか?
動的型は引数の型情報をちゃんと書かないから人のコード読むのめっちゃしんどくて生産性が低くなるし、テストが足りずにいざ動かしたら意外な所で引っかかるボケコードも存在する(しかも型があれば引っかからないような所)
いちいちクラスのメタ的なマニアックな機能を使って書いた本人以外の読解がそれなりにしんどいコードにして拡張性を下げたりし始めるし
コードを読む時間が倍以上かかる
実例としては動的型付けとしてaseとpyquante、静的型付けとしてvaspとbigDFTでも提示しておこうかな
こんな感じでええんか?

304:デフォルトの名無しさん
17/12/15 11:27:03.08 CUNT7XlU.net
挑発に乗って色々滅茶苦茶書いたものの実は俺は静的信者では無かったりする

305:デフォルトの名無しさん
17/12/15 11:52:43.43 Wavcz0jA.net
>>300
コードリーディングの過程で型情報がほしいって言うのは一理あるな。そのために間違った方のハンガリアン記法使うのもアホ臭い
ちゃんと設計してればキャストはいらないっていうのは、静的型言語では整数と浮動小数点数の組み合わせで四則演算すらできないって問題がある。OCamlがわかりやすいな
これを無理矢理できるようにHaskellみたくNum型クラスみたいなのを導入するとオーバーヘッドがかさむ
テストについては、結局型が通るか通らないか程度はテスト書く過程で見れるだろって話で、きちんとテスト書けばその程度の差は優位性にはならないんじゃないかってことな
そりゃテスト書かないと静的型でも動的型でも壊れたコードだ

306:
17/12/15 12:14:1


307:9.47 ID:kyib3K1A.net



308:デフォルトの名無しさん
17/12/15 12:18:48.75 Wavcz0jA.net
OCamlは今時の静的型付け言語ではないのか?

309:デフォルトの名無しさん
17/12/15 12:21:43.33 Wavcz0jA.net
Scalaはこの問題を暗黙の型変換で対応してるが、これはこれで闇を醸造してるよな

310:デフォルトの名無しさん
17/12/15 12:26:18.04 yHEncU/L.net
演算子オーバーロードを嫌う人がいるのは事実
演算子オーバーロードすると実行時にオーバーヘッドがかさむというのは嘘八百

311:デフォルトの名無しさん
17/12/15 12:26:29.05 Q6E9xMBX.net
組み込みの数値型は自動変換する言語が多いし
静的・動的と関係ないね

312:デフォルトの名無しさん
17/12/15 12:39:33.81 TYCzXsyM.net
>>290
そうでもなかろう。
蛇足という言葉もある。
生産性ってのはもう少し厳密に扱われるべきだと思う。○○の場合は、とか。

313:デフォルトの名無しさん
17/12/15 12:41:17.66 TYCzXsyM.net
>>302
間違ってない方のハンガリアンならば、型なんてどうでも良いと言う事もわかると思う。
ユーザ定義型に出来れば言う事無いけどね。

314:デフォルトの名無しさん
17/12/15 12:50:20.64 Wavcz0jA.net
>>309
そうだな。正しい方のハンガリアン記法なら、静的型のコンパイラに頼るよりはるかに健全な運用ができる
別に静的型でもやりゃいいと思うが、コンパイラに頼るのに慣れると面倒に感じるのかね?

315:デフォルトの名無しさん
17/12/15 12:56:07.91 Wavcz0jA.net
静的型でチェックできることは、単体テストを書く過程で自然とチェックできる
静的型のチェックにより、メタプログラミングが書けなくなり、本質的でない型合わせのための余計なキャストも増える
結局この二点なんだよな

316:デフォルトの名無しさん
17/12/15 12:58:02.72 Wavcz0jA.net
可読性についてはまあわからんでもない。正しい方のハンガリアン記法でも、接頭辞の管理はコード上にないからな
IDEのサポート込めば確かにリーディング速度は上がると言える

317:
17/12/15 13:19:56.65 kyib3K1A.net
>>311
>静的型でチェックできることは、単体テストを書く過程で自然とチェックできる
逆だ、
単体テストでのチェック内容の一部は、テストを書くまでもなく静的型でチェックできる、だ
テストを書くまでもなく、成果物の品質を一定のレベルまで引き上げるのが静的型の特徴だ
メタプログラミングはそれようの総称型を使えばよい
本質的でないキャストは総称型(ジェネリクス)で基本的に全廃できる

318:デフォルトの名無しさん
17/12/15 13:45:16.34 Wavcz0jA.net
>>313
>テストを書くまでもなく、成果物の品質を一定のレベルまで引き上げる
だからって単体テスト書かないって訳でもなかろう
その単体テストを書く過程で型検査などは自然とテストされるということ
型チェックをテスト書かない言い訳にするのはそれこそ最悪

319:デフォルトの名無しさん
17/12/15 13:46:32.11 Wavcz0jA.net
ジェネリクスで不要なキャストが撤廃できるなら、それはそうなんだろう
上で挙げた四則演算問題がジェネリクスでなんとかなるとも思えんが

320:デフォルトの名無しさん
17/12/15 13:59:37.30 6UtRgQBN.net
>>313
ジェネリクスをきちんと使えばキャストはほぼ全てなくせるが、
メタプロはジェネリクスだけじゃどうにもできないだろ。
あと、ジェネリクスとC++のテンプレートは似ているようで全然違う。
メタプロに関しては動的言語のほうが簡単なのは事実。
ただ、本当にメタプロが必要になるケースになんてあまりないと思うんだが。
>>314
別にテストを書かない言い訳とかじゃなくて、
静的型なら動的型に比べてテストを書く量を減らせるということだろ。
テストを全く書かなくなることはないけど、テストの量を減らせるというだけでも
そこには立派な価値があるということが言いたいんだ思うが。

321:デフォルトの名無しさん
17/12/15 14:00:37.68 U+kqpzL7.net
四則演算問題って何?

322:デフォルトの名無しさん
17/12/15 14:07:11.13 6UtRgQBN.net
>>317
たぶん>>302
>静的型言語では整数と浮動小数点数の組み合わせで四則演算すらできないって問題がある。
てやつのことだろ。
それって、単に言語の性格の違いのような気がするんだが。問題と呼ぶほどのものか?

323:デフォルトの名無しさん
17/12/15 14:58:25.54 57xWWF8w.net
走らせないとわからないテストより前に、コンパイルでエラーが検出できたほうがいいやろ
テストについて�


324:黷ゥら勉強しなおしなさい



325:デフォルトの名無しさん
17/12/15 15:13:05.84 yHEncU/L.net
静的型と動的型の対立をいくら勉強しても新しい発見はない
次世代の静的型を考えてるやつらは現在の静的型と対立するのだ
静的型と静的型を対立させる
どっちが勝つか全く予測できないから全く新しい成果を出せるのだ

326:デフォルトの名無しさん
17/12/15 15:50:55.50 y+u48ms5.net
コンパイラがバグもなく絶対的に正しければな。
コンパイラにそこまでの期待を背負わせた結果がc++の現状なわけだ。
ユーザーの仕様要求にはぼろくそ文句言う奴に限って、
コンパイラに理不尽な要求してる奴が多いってのはほんとなんなんだろうな。。

327:デフォルトの名無しさん
17/12/15 15:54:40.37 Wavcz0jA.net
>>319
コンパイルだって走らせないと動かないとおもうんだが
結局テスト走らせるのもコンパイル経由するんだからかわんねえだろ

328:
17/12/15 15:59:44.12 kyib3K1A.net
>>322
かわるねえ、テストはテスト書かなければならないし、すると書いたテストが間違っている可能性も否定できない
コンパイル時の型チェックは、つまるところソースの矛盾をつくのだから、それだけでソースの検証になりうる
ただ、型情報はコンパイル結果には含まれないのが普通だから、いうなれば無駄を書いているわけだ…

329:デフォルトの名無しさん
17/12/15 16:03:06.34 Wavcz0jA.net
>>323
結局「型チェックあるからテストの手が抜ける」論者か。話にならんな

330:
17/12/15 16:10:07.80 kyib3K1A.net
>>324
それはお前の思い込み、テスト不要とはひとこともいっていないだろう?

331:デフォルトの名無しさん
17/12/15 16:17:12.00 85mmUd/p.net
動的型付け言語でメソッド先頭に引数型チェックをずらずら書いてるコードを見た時は心底アホだなと思いました

332:デフォルトの名無しさん
17/12/15 16:19:20.03 6UtRgQBN.net
>>324
その言い方は「手を抜く」ことに関して批判しているのように聞こえるな。
プログラマなら手を抜くことに積極的なのはむしろ褒められるべきことだと思うが。
手を抜かないことを美徳とするなら伝統工芸の職人さんにでもなれば。
少なくともそんな考え方をするような人間はプログラマには向いていないよ。

333:デフォルトの名無しさん
17/12/15 16:28:14.91 Tb7zQwK9.net
>>326
そんなに自分のバカさを自慢しなくても…皆よくわかっているから

334:デフォルトの名無しさん
17/12/15 17:07:38.29 WQPs5rl9.net
>>302
javaの場合はクラス間のキャストと整数、小数間のキャストが同じ構文だから分かりにくいけどあれ全くの別物だから
後者はどちらかというと関数に近い
例えばStringをObjectにキャストしても変数の値(=メモリアドレス)は変わらない
でもlongをdoubleに変換したら変数の値自体が変わる
これは大きな違い

335:デフォルトの名無しさん
17/12/15 17:10:15.06 WQPs5rl9.net
静的型付けでもテストはいるけど数を減らせる
わざわざ機械がチェック出来る事を人がやる意味は?
あとオーバーヘッドどうのこうのって動的型付けの方がオーバーヘッドでかいやん

336:
17/12/15 18:14:48.74 kyib3K1A.net
>>326
いや、それが、Java の本番コードでは執拗な null チェックはかかせないようですよ、はじめてみたときは目をうたがったな…

337:デフォルトの名無しさん
17/12/15 19:17:26.70 Tb7zQwK9.net
>>330
静的型はより少ないテストデータで同等の品質を確保できるという実証データはある?

338:
17/12/15 19:24:35.38 kyib3K1A.net
>>332
URLリンク(developers.srad.jp)
あまり参考にならないかもしれない

339:デフォルトの名無しさん
17/12/15 19:39:38.59 57xWWF8w.net
>>331
今時NotNullアノテーションで対応するけどな

340:デフォルトの名無しさん
17/12/15 19:42:37.27 Q6E9xMBX.net
スレタイの言語はどれも静的型付けやなw

341:デフォルトの名無しさん
17/12/15 20:07:05.04 6UtRgQBN.net
>>332
説得力のある実証データはたぶんないだろうな。



342:だが逆説的に、動的型でも静的型と同等のテスト量で同等の品質を確保できる という実証データがないだろうこともやはり同じだ。 「型付け」と「テスト量と品質」に関係性は「あるかもしれない」し、「ないかもしれない」。 そのことについて議論する価値はあるかもしれないが、 説得力のある実証データがないことが静的型付けを批判する理由にはなり得ない。



343:デフォルトの名無しさん
17/12/15 20:17:29.09 6UtRgQBN.net
ちなみにあまり説得力のない実証データなら腐るほどある。
何故それらに説得力ないかというと、
テストの品質というものを正確に数値化できないからだろうな。
つまり、品質を正確に数値化する方法がない限りはそのことについては誰も実証はできない。
まずは品質の数値化について誰もが納得できるような方法を考えることからだ。
そして、それが簡単にできれば苦労はしていない。

344:デフォルトの名無しさん
17/12/15 21:49:32.08 HGhk3PLi.net
静的型と動的型の言語で、同程度の品質を担保するために必要なテストの量が変わらないと仮定するなら、
メタプログラミングのしやすさとコードリーディングの難易度を天秤にかけるだけの話になりそうだ
キャストについては、さすがにGoのinterfaceやらJavaのObjectは別として、それが本当に「本質的でない」場面があるとはどうしてもピンと来ない
上で例に出されてるOCamlの浮動小数点数と整数の演算だって、本来この2つを四則演算した結果が
浮動小数点数になるか整数になるかは本来非自明だから、どっちかに明示的に型を揃えろっていうのは
静的型動的型関係ない問題だと自分は思う
メタプログラミングについてはこれももう出てるけど、本当にそれが必要かって言われるとなあ
確かに記述量自体は短くなるけど、間違いなく可読性とトレードオフになる

345:デフォルトの名無しさん
17/12/15 22:40:22.38 19GjPIYk.net
「ノコギリと刺し身包丁の優劣」みたいな無意味な話はつまらん。

346:デフォルトの名無しさん
17/12/15 23:34:56.14 WQPs5rl9.net
メタプログラミングみたいなのは型システム関係なくunsafeみたいな感じで一部分に閉じ込めて使うのが普通だからな

347:デフォルトの名無しさん
17/12/15 23:53:14.51 /50W1d3E.net
最近は、Pythonでも型アノテーション書くようにしてるよ。
見返した時に、コメントで型情報を書くよりは
楽なんで(;´∀`)

348:デフォルトの名無しさん
17/12/16 00:22:41.60 ocig5iu9.net
>>335
TypeScriptは動的だよ。

349:デフォルトの名無しさん
17/12/16 00:39:35.88 TWnq2dTt.net
>>342
静的型でもあり動的型でもある不思議な言語

350:デフォルトの名無しさん
17/12/16 00:56:52.03 puMNteBt.net
TypeScriptは静的な型検査をしたいから作ったんじゃないんか?

351:デフォルトの名無しさん
17/12/16 01:22:56.08 TZZbndKv.net
新しい言語の新しい議論でもあるのかと思って開いてみたら
20年前くらいの動的vs静的の罵り合いしかなかった
5ch死んでるな

352:デフォルトの名無しさん
17/12/16 01:34:19.93 fQ+nYBte.net
そう思うなら貴方にはこのスレは向いていなかったのでしょう。どうぞ卒業なさいませ

353:デフォルトの名無しさん
17/12/16 07:38:33.30 g6YeJGmB.net
20年は言いすぎだが確かに今更な話題だな

354:デフォルトの名無しさん
17/12/16 07:39:24.99 0YcySKum.net
>>336
>説得力のある実証データがないことが静的型付けを批判する理由にはなり得ない。
完全に同意するし、同様に、
説得力のある実証データがない以上は動的型付けを批判する理由にはなり得ない。
と思うね。

355:デフォルトの名無しさん
17/12/16 10:07:20.76 pj2GdbCH.net
説得力のある実証データが無いとは限らない得ない。
発見されてない可能性のあるものを存在しないと断定し得ない。

356:デフォルトの名無しさん
17/12/16 11:54:08.21 0YcySKum.net
>>349
信頼できる具体的なデータを出してから出直してきな、ばーか!

357:デフォルトの名無しさん
17/12/16 12:02:59.86 pj2GdbCH.net
信頼できる具体的なデータがないことはなり得ない。
完全に同意するし、同様に、
信頼できる具体的なデータがない理由にはなり得ない。

358:デフォルトの名無しさん
17/12/16 14:57:13.50 GPVNoJ1v.net
そういう白いカラスを探すような真似をせんでも。
動的静的、どちらも良いものだし、どちらにも反対側に寄せるような機能も


359:今時はある。 そういう意味では「静的型付け言語だから間違いが少ない」と言う発想は明後日というか「間違うなと言うだけの話」として扱われても仕方ないっちゃ仕方ない。 今まで一回もキャストやポインタデリファレンスを使ったコードを書いたことがない奴だけがギリギリ石を投げても良いと思うが、そんなやつはごく少数だろ。 チェックが厳しくなるのは良い事だが、それがないと物が作れない(はず)なんて言うのは補助輪付きの自転車を指して「これが至高の自転車だ、なぜなら倒れないからだ!」って言うのと同じくらい暴論。



360:デフォルトの名無しさん
17/12/16 14:58:31.90 GPVNoJ1v.net
そういう奴がRustのコンパイラにバタバタと倒れていくのは至極愉快だけどな。
最初からそれぐらい考えて作っとけよ、と。

361:デフォルトの名無しさん
17/12/16 15:18:00.92 4mgESDS3.net
数値を引数にとる関数作ったら
境界値やゼロ値をテストするのが静的型
数値文字列オブジェクト思い付く限り全てテストしないと発狂するガイジが型無し池沼
こういうことでしょ?

362:デフォルトの名無しさん
17/12/16 15:28:08.68 Dp1B/626.net
>>354
境界値やゼロ値をテストするコード書けば、文字列オブジェクトが入ってきたらエラーになるから
動的型でもそんなテストは必要ありません。
そんな当たり前の事も分からないなんて、君は本当に低脳だな。

363:デフォルトの名無しさん
17/12/16 15:32:04.21 GPVNoJ1v.net
逆の発想でしょ。
数値以外で呼んでなけりゃいいんだから、呼び出し箇所で引数が数値と推論できなければエラーにしときゃいいじゃん。解析上で。
仕様として数値しか取らないなら、数値に対するテストで十分でしょ。
静的言語でも数値以外を渡す方法が無いわけでも無い。程度論。
静的言語でもヒステリックなチェックが必要な案件もやっただけに、ホントに夢見てるんだろうなって思うわ。
引数を手当り次第にチェックする、という解法しか出て来ないのがそもそもキチガイじみてる。

364:デフォルトの名無しさん
17/12/16 15:34:15.25 GPVNoJ1v.net
スタックもメモリも疑え、みたいなプログラム書いたこと無いんだろうな。

365:デフォルトの名無しさん
17/12/16 15:41:18.50 4mgESDS3.net
お前も頭がパーエッチパーなのか?

366:デフォルトの名無しさん
17/12/16 15:47:08.12 0YcySKum.net
>>358
おまえはまず自分がバカであることを自覚しろ
話はそれからだ

367:デフォルトの名無しさん
17/12/16 17:20:40.73 4mgESDS3.net
型無し能無し糞バカパーエッチパーのバカがなんだって?
早く10年熟成のウリジナル社内フレームワーク保守する作業に戻れよ

368:デフォルトの名無しさん
17/12/16 20:13:15.10 GPVNoJ1v.net
どーやっても無関係のPHPをけなしたいんです!
というある種の精神的ハンディキャップを持ってるみたいだから仕方あるまい。

369:デフォルトの名無しさん
17/12/16 20:18:13.50 GPVNoJ1v.net
考えてみたけど、むしろPHPの問題は型があったとしても多分変わり無く問題としてあり続けると思うな。

370:デフォルトの名無しさん
17/12/16 20:50:00.94 GPVNoJ1v.net
QCやると>>337は痛感するがな。
品質保証しなかった物が万一起こす損害と、品質保証したから避けられた損害はイコールじゃないし、
品質保証してしまった時点で、避けた損害の計上は机上の空論になってしまう。
避けるも何も起こらなかったんじゃないの?と過剰な心配とみなされがち。
起こっていたに違いない、と言うのは確かに空論だからな。
「改善できている品質」自体を点数化(そしてある程度これは王道もある)しても、「改善しなかった場合の品質」が見積値のままなので、恣意的と言われても仕方が無い。
同様の問題にコストカットもあるが、これも最初から織り込んで当初目的を果たしてしまうと話がややこしくなる。対費用効果が品証と同様に、実績値と見積値の比較になる。正しい


371:比較じゃないのは確か。 一番、営業部や企画部や、ことによると開発部とも喧嘩になる数字。 なので、これに関して実証値を出せと言うのは、同じ事を、2つの方法で、全く同じ能力の人間が、二の轍を避けるというバアイスをかけないために初見で行った場合、の数値を出せと言う、無茶苦茶な要求になる。 パラレルワールドが発生してそれが一つの状態として観察出来る神が存在しない限りイチャモンのつけ放題。 要は無意味。



372:デフォルトの名無しさん
17/12/16 20:53:09.27 GPVNoJ1v.net
バイアスがどう間違ったかバアイスになってるわ。以外に読めるもんだな。ごめん。

373:デフォルトの名無しさん
17/12/16 22:08:20.37 /LKsQL98.net
>>355
phpでも?

374:デフォルトの名無しさん
17/12/16 22:37:18.69 ocig5iu9.net
>境界値やゼロ値をテストするコード書けば、文字列オブジェクトが入ってきたらエラーになるから
それをテストで確かめるんだろうが

375:デフォルトの名無しさん
17/12/16 23:57:56.53 g6YeJGmB.net
間違えない前提ならテストもいらんなw

376:デフォルトの名無しさん
17/12/17 00:07:22.96 lzYKowQo.net
>>362
当たり前やン
PHP7になって型サポートが入った!!とか嬉ション漏らしてるペチパー見て
心底あの界隈のレベルの低さに辟易した

377:デフォルトの名無しさん
17/12/17 00:17:16.85 w0yPK3Np.net
>>366
そこなんだよなぁ。
>>355は、動的静的どちらでも同じようにテストを書くことになるんだから
「結果、テストを書く手間(量)は一緒だろ」と言いたいんだろうが、
型については「テスト時に確かめるのが動的」、「コンパイル時に確かめてくれるのが静的」という違いがある。
「テスト時だろうがコンパイル時だろうがきちんと確かめることには変わりないんだからいいだろ」
という意見が動的派の主張のような気がするんだが(俺の勘違いだったら指摘してくれ)、
個人的にはテスト自体にバグが含まれる可能性があるという点で違うので、静的のほうが好ましいと思う。
コンパイラにバグがない保証はないがその可能性はかなり低いし、
まして、どこの誰が書いたかも分からないテストと比べればどちらが信用できるかは明らか。
静的でもテスト自体にバグが紛れることはもちろんあるが、型についてはコンパイル時にチェックされるので、
型チェックだけに焦点を絞ってみれば、やはり静的言語の方が信頼性は上だろう。

378:デフォルトの名無しさん
17/12/17 00:30:03.31 w0yPK3Np.net
>>367
すごく良い意見だと思う。
そもそもテストがあるのは人間は間違えるからというのが前提だからで、
そしてそのテストを書くのも人間なのでテスト自体も間違えている可能性がある。
それでもテストを書くのはチェックによって間違いを完全になくすことはできなくても
ある程度まで減らすことはできるという考えがあるからだろう。
そして、その考え方でいくとテストを重ねれば重ねるほど信頼性は上がるということになる。
つまり、テストのテストを行えば2重チェックとなりさらに信頼性が上がることになるが、
テストのテストを書くというのはあまりにもアホらしいので普通そんなことはしない。
つまり、通常のテストでのチェックは1重のチェックまでが限界となる。
それに対してコンパイラはコンパイラ自体がしっかりとテストされている。
つまり、コンパイラによる型チェックは言い換えればコンパイラ自体によるチェックと
コンパイラのテストによるチェックの2重チェックを同時に受けていることになる。
この考え方でいけば、ただのテストは1重のチェックだが、コンパイラによるチェックはそれだけで2重チェックとみなせる。
つまり、コンパイラによるチェックのほうが信頼性が高いということになるはずだ。
一応理論はしっかりと通っているはず。
自分で書いといてこんなこと言うのもなんだが「なんだかこじつけな気がして、あまり気に入らない」。
誰か論破してくれ。

379:デフォルトの名無しさん
17/12/17 01:33:04.30 DD3iPSz/.net
コンパイラにバグはないとかさ。。
とりあえずvcを一通り使ってみてから言ってほしいな。
浅はかすぎる。
まあしかし静的チェックと動的チェックを両方やるならいいと思うよ。
これは結局、仕様と実際の動作のどっちもしっかりチェックする必要があるってこと。

380:デフォルトの名無しさん
17/12/17 02:06:25.44 an2T/Jmb.net
一般的な話をvc固有の問題で批判する方が浅はかと言わざるを得ない

381:デフォルトの名無しさん
17/12/17 02:24:22.59 lzYKowQo.net
型も書けないような奴が
正しいテストを書けるだろうか?(irony)

382:デフォルトの名無しさん
17/12/17 08:41:58.60 cjnEvY5x.net
それ以前に、めんどくさいからって型書きたがらないような奴は現実にはほとんどテストなんか書いてないんだよ
動的型でテスト書けば問題ないだの必要なテストが増えるだのテストの正しさだのというのははっきり言って机上の空論
そもそも彼等はテストを書かない

383:デフォルトの名無しさん
17/12/17 08:51:42.24 ROemoGKg.net
そんなこというと、動的型付け言語を使っているから型を書いていないって人より
auto/varを使って意識的に型を書かない人の方がテストを書かない傾向があるって
言っているように聞こえるけど。

384:デフォルトの名無しさん
17/12/17 09:04:39.97 cjnEvY5x.net
>>375
そりゃ静的型でも型書かない奴は山ほどいるだろ
テストを書いているということを議論の前提にしていることが全くもって非現実的だと言ってるんだよ

385:デフォルトの名無しさん
17/12/17 09:06:12.54 qBUEKR93.net
テストの目的は実装のバグを探すことだけか?
むしろ仕様をチェックすることが最も重要だよ
バグは直せばいいだけだが、仕様はうっかり変更されたら直せない
死んだ人が帰ってこないのと同じ
動的型の言語仕様を捨てて静的型に移行するのが難しい理由もその辺にありそうだ

386:デフォルトの名無しさん
17/12/17 09:14:23.72 i+M+l/V2.net
テストすら正しく書ける気がしないドカタにはメタプログラミングなんて無理

387:デフォルトの名無しさん
17/12/17 09:48:44.61 G+5q9UaX.net
>>377
テストの目的は変化を検出することだよ
作って運用開始して終わりならテストなんか手動で十分

388:デフォルトの名無しさん
17/12/17 11:35:01.56 v3Bx338J.net
>>368
それもまぁ程度論だろ。
一部の人間があったら良いなと思ってたものが出来たから嬉しいってだけの話で、
全体に対してどうと思うほうがちょっとおかしいよ。

389:デフォルトの名無しさん
17/12/17 11:41:57.99 v3Bx338J.net
テストのテストを馬鹿にしてるが、書くからな。
何重まで上に上がる?というのは論点がずれてて、要件定義書でテスト仕様書をテストする。(詳細設計なんかは無視する)
紙の上でかもしれんし、直交表書くかもしれんし、色々あるが、
要件定義や詳細設計からテストだけ書いて、その妥当性も判断せずにオールグリーンこれでオッケー、ならそれは間違ってると思う。
間違えない前提ならテストは要らない、はその通りで、どの開発レイヤにも「この場ではこれは間違っていないとみなす」というブラックボックスがある程度発生していく。
単体試験なんかで担保して、レイヤがあがるにつれてブラックボックスは増えていく。
そこにワザワザ、ヒステリックテストをする必要は無い。
ブラックボックス側から数値しか出さないなら、数値以外をチェックするのは過品質に近い。

390:デフォルトの名無しさん
17/12/17 12:06:03.05 pDfY69my.net
>>369
細かくいうと「結局製品として必要な質を担保するのに必要なテストコードは変わらない」っていう主張な。少なくとも自分はこう思ってる
あくまで主観だし定量的に示せないんで上で上がってる通り空論といってもいいがな
少なくともコンパイルとLinter通った時点での品質は静的型が上なのは否定しない
が、自分の経験上、型チェック程度は他のテストのついででチェック進むから、そのせいでテストコードがかさむとかそういうケースはそうそうないはずなんだよな

391:デフォルトの名無しさん
17/12/17 12:11:02.52 pDfY69my.net
もちろん「テストコードと、一種の証明である型チェックの性質は違う」とかそういう理屈も理解してるが、
結局「製品としての質担保」という観点で見るなら、その程度の手段の差は全くもって関係なくなる、というのが自分の考え
この辺はテストに求める役割に対する考え方の違いかもしれん

392:デフォルトの名無しさん
17/12/17 12:14:39.63 pDfY69my.net
あとPHPディスに絡めようとしてるやつ�


393:ェいるが、PHPは静的型動的型の以前の部分に問題があるし、 この議論で少なくとも自分が動的型言語の念頭においてるのはPythonやRubyだからな?



394:デフォルトの名無しさん
17/12/17 12:18:57.69 028c4ua0.net
>>370
論破じゃなく、補足になるが、特に業務でプログラミングするならコスパ考慮して選んでるからねえ。
現実の工数は、要件変動も含めその時点でのコンパイラ・インタープリタで拾えない部分の不整合によるものが大きい(まだ合理化されてないとも言えるが)。
プログラミング言語の歴史見ると判るが、静的・動的とも互いに相手のいいところを取り入れて進化してきてる。
同時に、世の中のニーズ(個人が計算リソースを持つようになった、など)に対応した形でも変わってきている。
これは適用可能な領域を広げようとした結果。
オレ個人の例で言えば、業務要件==>計算モデル==>候補言語を複数選択。
その後、プロジェクト要件(期間、要求品質、メンバースキル、関係者が蓄積しているプログラミング資産など)との組み合わせが適しているものを勧めている。
なので言語仕様やライブラリ含めた挙動だけ比較しても、それはツールとしての現在の瞬間の姿を見てるだけなので、その評価が未来にも、業務にも適用できると考えるなら早計。

395:デフォルトの名無しさん
17/12/17 12:57:26.41 v3Bx338J.net
>>382
静的型が上というか、帳尻があっている、と言うことはわかるから、一つの方向としては正しいと思う。
ただ、本当にあっているか?小数は桁落ちしてないか?まで考えると、静的型でも、どの道ピアレビューなんかで担保するしかない。
これは言うとおり、ついでに型が充分かも見る、という動的言語のピアレビューと工数としては変わらん。

396:デフォルトの名無しさん
17/12/17 13:01:33.13 2YAiyrnb.net
静的型のメリットで最も大きいのは依存関係が静的にほぼ完全に把握できることでしょ
自社事業の開発で常に動いているものを弄るなら、これ以上に心強いものはない

397:デフォルトの名無しさん
17/12/17 13:10:12.04 v3Bx338J.net
依存関係はどっちでも同じ程度じゃないの?
RoRみたいに、そのディレクトリに置いたら勝手に使用される、を想像してたら違うのかもしれんけど。
動的型も静的型も、リテラルでのimportやrequire、参照設定とusingでそれなりに決まる部分もあれば、
Node.jsだと変数でのrequireや、CなんかでのLoadLibraryなんかでも動的ロードなんかで全く決まらん事もあるんだし。
依存関係の解決はちゃんとそれ用に何か用意した方が良いと思うけど。

398:デフォルトの名無しさん
17/12/17 13:23:12.52 qBUEKR93.net
モジュールの依存関係は型と関係ないね
「モジュール=型」とかいう超怪しい等式に依存するのは嫌だね

399:デフォルトの名無しさん
17/12/17 14:46:20.78 x6mh3PiV.net
テストコードはテスト対象のコードより明快なものが一般的で、明快であれば人の目で判別しやすいってのも考慮すべきよ
テストを重ねるほど品質が上がるってのは空論だし、1重しかテストしないのは妥協してるからというわけでもないよ

400:デフォルトの名無しさん
17/12/17 15:54:09.19 F+iLZcQ1.net
>>388
IDEのメソッド呼出元の検索とか使ったことないのか?
規模が大きくなるとあれがないとやってられなくなるぞ

401:デフォルトの名無しさん
17/12/17 16:41:56.81 PjBbAu1N.net
>>370
形式手法でコード自動生成しててもやっぱり高信頼性のためにはテストは必須だぜ?

402:デフォルトの名無しさん
17/12/17 17:52:05.86 v3Bx338J.net
>>391
なんだ、そんな事か。長々書いて損した。
動的言語のIDE使ったことある?
いや、IDEじゃなくてもいいや。VSCodeと適当なNode.jsのプロジェクトでさえ、それなりに効くだろ。
>>390
テスト自体は1重でも良いとして、何らかの方法でテストの正当性は担保しないの?
それじゃただ書いたコードが書いた意図どおり動いてる確認で、意図が正しいかのテストにはなってない気がする。
意図が正しいかの証明は要件定義と設計書の間でのみ行われる、ってのが普通なのかな。

403:デフォルトの名無しさん
17/12/17 19:31:01.08 AwDJJh6p.net
要件に寄らず、テストは最低8重ないとダメ
スレのレベルが低すぎる……��‍♂

404:デフォルトの名無しさん
17/12/17 23:06:04.33 lzYKowQo.net
>>391
良く訓練されたPHPerは超力Grepを使いこなすから問題ないんだよなぁ

405:デフォルトの名無しさん
17/12/17 23:23:38.60 qBUEKR93.net
メソッド呼出元検索、、今回ほど仕様バグが沸き起こる思いをしたことが無い…

406:デフォルトの名無しさん
17/12/17 23:39:30.09 LyzNAsst.net
>>393
> 意図が正しいかのテスト
って何だよ意味不明。
必要なテストがされているかが重要だろ。
数だけ多くたってダメなんだよ。

407:デフォルトの名無しさん
17/12/17 23:57:38.71 lzYKowQo.net
つまり、動的型言語は山ほどテスト書かないとダメって言いたいんだろw

408:デフォルトの名無しさん
17/12/18 00:07:07.45 oET30lFX.net
一応確認なんだけど動的言語じゃなく動的型付け言語の話なんだよね?

409:デフォルトの名無しさん
17/12/18 00:58:28.12 9GZmy5yv.net
>>398
テスト書く量は同じだよ

410:デフォルトの名無しさん
17/12/18 04:30:42.74 p9HDlb+0.net
>>400
ねーよ

411:デフォルトの名無しさん
17/12/18 08:13:16.77 9GZmy5yv.net
>>401
強い型付けの動的型言語なら、値に対するテストを書けば型に対するテストは不要です
assert(x > 0) というテストを書いたのに、さらにxが文字列かどうかテストする必要ははありませんね
反論するなら反例を出してくださいね
クソくだらない長文はいらないので


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch