次世代言語Part8[Haskell Rust Kotlin TypeScript]

■ このスレッドは過去ログ倉庫に格納されています
2017/12/01(金) 23:08:21.45ID:FxdZTiuZ
スレタイ以外の言語もok

前スレ
次世代言語Part7[Go Rust Swift Kotlin TypeScript]
http://mevius.5ch.net/test/read.cgi/tech/1508403098/
2017/12/17(日) 09:14:23.72ID:i+M+l/V2
テストすら正しく書ける気がしないドカタにはメタプログラミングなんて無理
2017/12/17(日) 09:48:44.61ID:G+5q9UaX
>>375
テストの目的は変化を検出することだよ
作って運用開始して終わりならテストなんか手動で十分
2017/12/17(日) 11:35:01.56ID:v3Bx338J
>>366
それもまぁ程度論だろ。
一部の人間があったら良いなと思ってたものが出来たから嬉しいってだけの話で、
全体に対してどうと思うほうがちょっとおかしいよ。
2017/12/17(日) 11:41:57.99ID:v3Bx338J
テストのテストを馬鹿にしてるが、書くからな。
何重まで上に上がる?というのは論点がずれてて、要件定義書でテスト仕様書をテストする。(詳細設計なんかは無視する)
紙の上でかもしれんし、直交表書くかもしれんし、色々あるが、
要件定義や詳細設計からテストだけ書いて、その妥当性も判断せずにオールグリーンこれでオッケー、ならそれは間違ってると思う。

間違えない前提ならテストは要らない、はその通りで、どの開発レイヤにも「この場ではこれは間違っていないとみなす」というブラックボックスがある程度発生していく。
単体試験なんかで担保して、レイヤがあがるにつれてブラックボックスは増えていく。

そこにワザワザ、ヒステリックテストをする必要は無い。
ブラックボックス側から数値しか出さないなら、数値以外をチェックするのは過品質に近い。
2017/12/17(日) 12:06:03.05ID:pDfY69my
>>367
細かくいうと「結局製品として必要な質を担保するのに必要なテストコードは変わらない」っていう主張な。少なくとも自分はこう思ってる
あくまで主観だし定量的に示せないんで上で上がってる通り空論といってもいいがな

少なくともコンパイルとLinter通った時点での品質は静的型が上なのは否定しない
が、自分の経験上、型チェック程度は他のテストのついででチェック進むから、そのせいでテストコードがかさむとかそういうケースはそうそうないはずなんだよな
2017/12/17(日) 12:11:02.52ID:pDfY69my
もちろん「テストコードと、一種の証明である型チェックの性質は違う」とかそういう理屈も理解してるが、
結局「製品としての質担保」という観点で見るなら、その程度の手段の差は全くもって関係なくなる、というのが自分の考え
この辺はテストに求める役割に対する考え方の違いかもしれん
2017/12/17(日) 12:14:39.63ID:pDfY69my
あとPHPディスに絡めようとしてるやつがいるが、PHPは静的型動的型の以前の部分に問題があるし、
この議論で少なくとも自分が動的型言語の念頭においてるのはPythonやRubyだからな?
383デフォルトの名無しさん
垢版 |
2017/12/17(日) 12:18:57.69ID:028c4ua0
>>368
論破じゃなく、補足になるが、特に業務でプログラミングするならコスパ考慮して選んでるからねえ。
現実の工数は、要件変動も含めその時点でのコンパイラ・インタープリタで拾えない部分の不整合によるものが大きい(まだ合理化されてないとも言えるが)。
プログラミング言語の歴史見ると判るが、静的・動的とも互いに相手のいいところを取り入れて進化してきてる。
同時に、世の中のニーズ(個人が計算リソースを持つようになった、など)に対応した形でも変わってきている。
これは適用可能な領域を広げようとした結果。
オレ個人の例で言えば、業務要件==>計算モデル==>候補言語を複数選択。
その後、プロジェクト要件(期間、要求品質、メンバースキル、関係者が蓄積しているプログラミング資産など)との組み合わせが適しているものを勧めている。
なので言語仕様やライブラリ含めた挙動だけ比較しても、それはツールとしての現在の瞬間の姿を見てるだけなので、その評価が未来にも、業務にも適用できると考えるなら早計。
2017/12/17(日) 12:57:26.41ID:v3Bx338J
>>380
静的型が上というか、帳尻があっている、と言うことはわかるから、一つの方向としては正しいと思う。
ただ、本当にあっているか?小数は桁落ちしてないか?まで考えると、静的型でも、どの道ピアレビューなんかで担保するしかない。

これは言うとおり、ついでに型が充分かも見る、という動的言語のピアレビューと工数としては変わらん。
2017/12/17(日) 13:01:33.13ID:2YAiyrnb
静的型のメリットで最も大きいのは依存関係が静的にほぼ完全に把握できることでしょ
自社事業の開発で常に動いているものを弄るなら、これ以上に心強いものはない
2017/12/17(日) 13:10:12.04ID:v3Bx338J
依存関係はどっちでも同じ程度じゃないの?
RoRみたいに、そのディレクトリに置いたら勝手に使用される、を想像してたら違うのかもしれんけど。

動的型も静的型も、リテラルでのimportやrequire、参照設定とusingでそれなりに決まる部分もあれば、
Node.jsだと変数でのrequireや、CなんかでのLoadLibraryなんかでも動的ロードなんかで全く決まらん事もあるんだし。

依存関係の解決はちゃんとそれ用に何か用意した方が良いと思うけど。
2017/12/17(日) 13:23:12.52ID:qBUEKR93
モジュールの依存関係は型と関係ないね
「モジュール=型」とかいう超怪しい等式に依存するのは嫌だね
2017/12/17(日) 14:46:20.78ID:x6mh3PiV
テストコードはテスト対象のコードより明快なものが一般的で、明快であれば人の目で判別しやすいってのも考慮すべきよ
テストを重ねるほど品質が上がるってのは空論だし、1重しかテストしないのは妥協してるからというわけでもないよ
2017/12/17(日) 15:54:09.19ID:F+iLZcQ1
>>386
IDEのメソッド呼出元の検索とか使ったことないのか?
規模が大きくなるとあれがないとやってられなくなるぞ
2017/12/17(日) 16:41:56.81ID:PjBbAu1N
>>368
形式手法でコード自動生成しててもやっぱり高信頼性のためにはテストは必須だぜ?
2017/12/17(日) 17:52:05.86ID:v3Bx338J
>>389
なんだ、そんな事か。長々書いて損した。
動的言語のIDE使ったことある?
いや、IDEじゃなくてもいいや。VSCodeと適当なNode.jsのプロジェクトでさえ、それなりに効くだろ。

>>388
テスト自体は1重でも良いとして、何らかの方法でテストの正当性は担保しないの?
それじゃただ書いたコードが書いた意図どおり動いてる確認で、意図が正しいかのテストにはなってない気がする。
意図が正しいかの証明は要件定義と設計書の間でのみ行われる、ってのが普通なのかな。
2017/12/17(日) 19:31:01.08ID:AwDJJh6p
要件に寄らず、テストは最低8重ないとダメ
スレのレベルが低すぎる……��‍♂
2017/12/17(日) 23:06:04.33ID:lzYKowQo
>>389
良く訓練されたPHPerは超力Grepを使いこなすから問題ないんだよなぁ
2017/12/17(日) 23:23:38.60ID:qBUEKR93
メソッド呼出元検索、、今回ほど仕様バグが沸き起こる思いをしたことが無い…
2017/12/17(日) 23:39:30.09ID:LyzNAsst
>>391
> 意図が正しいかのテスト

って何だよ意味不明。
必要なテストがされているかが重要だろ。
数だけ多くたってダメなんだよ。
2017/12/17(日) 23:57:38.71ID:lzYKowQo
つまり、動的型言語は山ほどテスト書かないとダメって言いたいんだろw
397デフォルトの名無しさん
垢版 |
2017/12/18(月) 00:07:07.45ID:oET30lFX
一応確認なんだけど動的言語じゃなく動的型付け言語の話なんだよね?
2017/12/18(月) 00:58:28.12ID:9GZmy5yv
>>396
テスト書く量は同じだよ
2017/12/18(月) 04:30:42.74ID:p9HDlb+0
>>398
ねーよ
2017/12/18(月) 08:13:16.77ID:9GZmy5yv
>>399
強い型付けの動的型言語なら、値に対するテストを書けば型に対するテストは不要です
assert(x > 0) というテストを書いたのに、さらにxが文字列かどうかテストする必要ははありませんね

反論するなら反例を出してくださいね
クソくだらない長文はいらないので
2017/12/18(月) 08:13:41.10ID:UBkq3PS9
>>395
わからんならしたことがないって事だ。
402デフォルトの名無しさん
垢版 |
2017/12/18(月) 08:28:29.94ID:9Kb0ajxH
>>400
型ってのを、CPUのプリミティブでしか考えなくて良い業務プログラムならそうだな。
問題は、今時そんなトイプロジェクトが少ないって事。
2017/12/18(月) 09:01:45.44ID:yq3smURe
>>400
自演乙
2017/12/18(月) 10:20:33.66ID:/BfrEM8a
>>402
つまり、幽霊型とか依存型あたりを使い倒さないと今時のプロジェクトはまわらない、という認識でいいのか?
そりゃその辺りを使い倒さないと回らないプロジェクト前提なら、動的型付けでは無理な話になるが
それが必須な状況が、動的型付け言語のメタプログラミング並みに思い付かないぞ
2017/12/18(月) 12:43:07.93ID:h27G1UNw
>>400
用途による。
弱い型付け言語でも、型無言語でも値に対するテストで充分な場合もあるし(要は、不正値が渡されてる時点で異常であって、その場合の動作は不定として構わないという要件の場合。よくある)
逆に強い型付け言語でも、強い磁界やノイズ源の間際で使われるようなものを書くときにはキチガイじみたテストもする。
a=170,b=85,a+b==255みたいなアサーションすら稼働コードにも並ぶし、それが成立しなかったらリセットかかるようにする。
2017/12/18(月) 12:54:00.44ID:mr3x/gYU
ちなみにvscodeでnode.jsのコード補完が効くのはtypescriptの型情報の恩恵を得てるから
407デフォルトの名無しさん
垢版 |
2017/12/18(月) 21:36:27.12ID:9Kb0ajxH
>>404
むしろ動的型付けの出番が増えるけどな。
昔ながらの単純なOAアプリには不要だが。
2017/12/19(火) 01:10:12.61ID:lENhGj5D
>>405
長文書かずに反例を出せ、って書き込みにアンカーつけてまで
反例無しの長文書いててワロタ
2017/12/19(火) 02:45:28.87ID:4MuASRxE
具体例がなくても、長文を書けば何か言った気になれるからなwwwwww
2017/12/19(火) 04:16:57.53ID:6mJgSo5a
>>404
幽霊型や依存型って動的型付けなら普通にコードでやっていることを
静的な型で表現しようとしてがんばってる例のあれのこと?
411デフォルトの名無しさん
垢版 |
2017/12/19(火) 07:49:40.76ID:yvsoeKM9
>>410
>静的な型で表現しようとしてがんばってる例

まあそういう事になるよね。
もともと計算モデルが違う(=問題解決へのアプローチが違う)
プログラミング言語同士を比較すれば、「一方は率直に実装できる」
フィーチャーが有るのは当たり前だしね。
理想はプロジェクト毎に最適の計算モデル、言語、スキルを揃える事だが
現実には、そういう要素が有ることを知らなかったり、教育投資を捨てたく
ないって理由で、合っていないモデルで無理やり進めてるのが現実。
2017/12/19(火) 08:55:34.79ID:9wTQQ92p
>>408
反例じゃん?
2017/12/19(火) 09:24:51.77ID:ngbi4CU2
>>400「強い型付け言語である場合、値のテストをすれば型のテストはいらない」

>>405「弱い型付け言語でも型のテストがいらない場合がある。また、強い磁場中の利用であればa=170,b=85,a+b==255のようなキチガイじみたテストをする」

あガガイのガイ
2017/12/19(火) 13:04:54.40ID:lG4ryEsW
>>410
動的型で項書き換え最適化や実行前の証明が普通になされているというなら、まあそうだね
2017/12/19(火) 13:08:42.98ID:9wTQQ92p
うん、反例の一つかと。
〜あるし、〜する(こともある)。
前者は言う通りにそれ以下のテストだけど、後者は型テストももちろんするし、その周辺のメモリの値すらテストする、って事なんだが。
カナリア知らんとかはやめてくれよ。
2017/12/19(火) 13:20:03.85ID:/xuMeQeJ
次世代で証明されると期待される定理を今使う
クレジットカードみたいなやつ
動的型付けってそういう仕組みなんだね
2017/12/19(火) 13:22:38.78ID:ngbi4CU2
ID:9wTQQ92p
こいつくせえな話が通じてねえ
例のガイジか
2017/12/19(火) 13:31:22.89ID:xjqFNtfj
ガイ・スティール・ジュニア略してガイジ。
2017/12/19(火) 14:57:09.50ID:9wTQQ92p
通じてないのはそっちだと思うけど。
理解できければ全部レッテル貼って理解を放棄するクセはいかがかと思うが。
2017/12/19(火) 15:34:54.93ID:xjqFNtfj
人に理解してもらえることが当たり前だと思ってるようでは人生経験浅すぎるな。
現実とはそういうものだよ。
2017/12/19(火) 18:04:10.11ID:9wTQQ92p
そこまでは言ってないがな。
まぁ、どうおかしいか理解させられない時点で同じ穴の狢かそれ以下なんだろ。
理解させる、という側の能力だけを評価するなら。
そこまで卑下しなくても良いのに。
2017/12/19(火) 18:52:02.43ID:ngbi4CU2
>どうおかしいか理解させられない時点で同じ穴の狢

あDHDには何回か丁寧に説明してやったし、その度に「そういうことか。理解してなかった」って言われて来た
もううんざりだ。おまえであることがわかった以上もう説明せんよ
2017/12/19(火) 19:28:03.33ID:cqTye8WP
「AならばB」に対して「Aでないときには〜」って話をして
反例になってると思う>>415ってプログラマとしてヤバない?
2017/12/19(火) 19:54:56.57ID:/xuMeQeJ
ヤバい人がいても最近は誰も批判しない
批判は建設的じゃないと考えられているから
425デフォルトの名無しさん
垢版 |
2017/12/19(火) 20:05:56.79ID:XSrelQ4n
>>424
それが実現すれば理想的なんだが現実はそう上手くはいかない。
こんな会話が発生している時点で建設的じゃない批判が起こっているという悲しい事実。
2017/12/19(火) 20:47:02.26ID:dep2iFkQ
現実もほったらかしにしてるわ。
だからまともにテストのないコードがあちこちにある。。
2017/12/19(火) 21:09:05.12ID:+t5AZThl
>>422
ほら、理解させられないw
428デフォルトの名無しさん
垢版 |
2017/12/19(火) 21:45:39.68ID:hKOvQSVX
次世代言語の話をしろよ…
2017/12/19(火) 22:19:39.18ID:IFsKBc84
次世代言語は静的型か動的型か?
2017/12/19(火) 22:22:03.65ID:VYW2hLxr
静的型に決まってるやろ…
2017/12/19(火) 22:42:35.74ID:ngbi4CU2
動的言語Clojureさん
2017/12/19(火) 22:47:01.55ID:Vp6Wk3js
暗黙的な静的型付けが主流になると思う
頭の良い人間が多相を明示的に駆使して必死に辻褄合わせするんじゃなく、
コンパイラがフロー解析を頑張ることで人間に負担をかけずに厳密な静的型付けを実現する
メジャーどころだとTypeScriptはそういう方向へ向かいつつあるね
2017/12/19(火) 23:52:06.32ID:LaOLTVhQ
型無し旧世代ガイジどもは死ね
2017/12/19(火) 23:55:12.83ID:IFsKBc84
ドカタ部門やハッカー部門など、部門ごとに次世代言語を決めた方が良さげ
2017/12/20(水) 01:24:03.63ID:fcm+RWAl
HaskellのIOモナドみたいのが主流になってきたら
実行時型付けも局所的に使えるけど
全体としては静的型付け、みたいな感じになりそう
2017/12/20(水) 01:28:01.05ID:HrNa8kdY
コードのどの部分で静的型チェックするのかってのが争点になるかもね。
2017/12/20(水) 01:40:49.86ID:RSIhrBYE
>>433
動的型付け言語の方が新しいんだよなあ
2017/12/20(水) 02:07:25.86ID:KBs5e3Jn
新しければ常にいいなら世の中楽だな
2017/12/20(水) 02:08:13.16ID:yTANvvcN
新しいものが良くないのは地獄すぎる
2017/12/20(水) 06:17:59.95ID:megjw+LT
2世議員とかな
2017/12/20(水) 07:55:10.76ID:YSR/eiRE
>>437
プッ 恥ずかしい子・・・
2017/12/20(水) 08:39:38.13ID:ODk3G9Dt
>>439
単に新しいものでは地獄がまだ見えてないかもしれないだけかもしれんぞ。
2017/12/20(水) 08:44:51.44ID:megjw+LT
人間万事塞翁が馬ということだな。
2017/12/20(水) 22:58:07.90ID:HrNa8kdY
とりあえず言っとくが
cobol だって perl だって vba だって php だって当時は新しかったんだよ。
2017/12/23(土) 01:16:52.24ID:t3UiuX8x
多重ディスパッチ
2017/12/24(日) 00:50:02.64ID:g6gmcbUh
Lispは神の言語
2017/12/24(日) 01:04:50.15ID:WikwUycQ
>>446
lisp のどのような特徴が、あなたをして神の言語と判断させるのか?
2017/12/24(日) 03:09:03.29ID:zxcNg14q
LISPは神がかってるけどSmalltalkはゴミ
2017/12/24(日) 12:09:04.21ID:L0WbVZsM
神さまが話していたので神の言語です
2017/12/24(日) 14:00:03.00ID:Em2lfTvP
もう30年くらい前なのか、むかし16M位のメモリーのワークステーションで
LISPやってた連中は、メモリが足りないからLISPは流行らないんだみたいな言い訳言ってたけど、
個人用PCに32Gのメモリーが詰める時代になっても同じこと言ってるんだろうな。
2017/12/24(日) 14:10:43.44ID:g6gmcbUh
実は俺はsetqとか嫌い
2017/12/24(日) 15:59:57.85ID:On/fo7aB
アンアン
      o
    o_ /)
     /<<


12月24日の午後9時から翌25日の午前3時までの6時間は
1年間で最もセックスをする人の多い「性の6時間」です。

貴方の知り合いや友人ももれなくセックスをしています。
普段はあどけない顔して世間話してるあの娘もセックスをしています。
貴方が片想いしているあの綺麗な女性もセックスをしています。
貴方にもし年頃の娘さんや姉・妹がいて、いま家にいないのでしたら間違いなくセックスしてます。
貴方と別れたあの娘も貴方がその娘にやってきたことを別の男にやられています。
貴方の将来の恋人や結婚する相手は、いま違う男のいちもつでヒィヒィ言っています。
すべてを諦めましょう。そして、ともに戦いましょう。
2017/12/24(日) 20:13:00.27ID:cn7uv5Fd
lisp が流行らんことから導ける唯一のことは結局algol系のシンタックスじゃないと
流行らんということ。
2017/12/25(月) 00:45:32.17ID:KmZOPanU
やっぱり括弧が辛かったのか
2017/12/25(月) 01:01:15.56ID:0H4Emls0
意識高そうに見えてしまったとか
2017/12/25(月) 01:22:46.82ID:LEWwY/wL
彼らは意識高い系じゃない、自意識高い系だ
2017/12/25(月) 01:59:00.89ID:qFggHRB9
かっこつけすぎなんだよ
2017/12/25(月) 03:56:16.62ID:lJA7pJsS
括弧がわかりにくいからインデントで分かりやすくする。
だから括弧にはほとんど意味は無い。
それパイソンやん。
2017/12/25(月) 07:03:51.04ID:0H4Emls0
実際最古のPythonと言っても過言ではない
2017/12/25(月) 12:03:25.79ID:kkhOzk4j
Lispの系譜にあるPythonが生き残って
Smalltalkの系譜にあるRubyが死んだのは
必然だったな
2017/12/25(月) 13:04:23.59ID:kMbU4vvz
今時(2017)のSmalltalkの始めかた
https://medium.com/@newapplesho/%E4%BB%8A%E6%99%82-2017-%E3%81%AEsmalltalk%E3%81%AE%E5%A7%8B%E3%82%81%E3%81%8B%E3%81%9F-93c044820e1b
2017/12/25(月) 19:46:02.89ID:eOxdg9cU
rubyって「お前はもう死んでいる」状態なのに、
それは言わない御約束なのかな?
2017/12/25(月) 20:02:13.61ID:P1YyQnZH
Rubyの元はPerlだろ。
2017/12/25(月) 22:50:10.19ID:Z5v7fEWF
多重継承やぞ
2017/12/25(月) 23:39:38.77ID:qFggHRB9
インデントもまともにつけられないクズペチパー以下のゴミ屑は論外として、
括弧は多少あった方が見やすい
pythonはちょっとクセがある
2017/12/26(火) 00:51:10.57ID:Qxp4eKO0
松本さんはlisp の影響がでかいと言ってはいる
http://gihyo.jp/news/report/01/rubykaigi2013/0001
467デフォルトの名無しさん
垢版 |
2017/12/26(火) 01:50:36.25ID:sagFdw2O
smalltalkは実開発前における分析設計用ツールとしていいんでないかと個人的には思う。
2017/12/26(火) 10:35:41.47ID:Hd2qVaf/
サービスやどのくらい急ぐかにもよるけど「動作する仕様書」としてそのまま本番投入って荒技も使えるしね

スタートアップ界の異端児!産業機器 x IT x SmalltalkのSORABITO株式会社
https://thepedia.co/article/1068/
2017/12/26(火) 12:42:11.47ID:9JscEoEu
そして負の遺産になるわけですね
2017/12/27(水) 00:30:29.97ID:AqtANtDH
>>469
コレメンサスンゴなんだよなぁンゴ
2017/12/27(水) 09:48:57.79ID:X35AiWNh
Smalltalkのコードって死ぬほど読みにくいよね。
やっぱり古臭い言語はダメだな。処理系もなんかモッサリしてて古臭いし
2017/12/27(水) 11:00:24.41ID:gUZ1SoEG
次世代言語スレで旧時代の死体蹴りは感心しない
2017/12/27(水) 12:07:11.37ID:V4t27acZ
>>471
Haskellのほうがひどいぞ
2017/12/27(水) 12:36:42.15ID:P2OckTcS
こんな話題にまでHakellぶち込んで来て
どんだけHaskell嫌いなんだ……
2017/12/27(水) 16:45:18.19ID:bNHoEe3v
嫌いってのは対等な関係だから割とうまくいってる
もっと差別的な感じになったらやばい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。