[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2ch.scのread.cgiへ]
Update time : 12/03 03:58 / Filesize : 278 KB / Number-of Response : 765
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【JavaScript】スクリプト バトルロワイヤル55【php,py,pl,rb】



1 名前:デフォルトの名無しさん mailto:sage [2016/10/01(土) 23:40:48.89 ID:FvOeAcfn.net]
前スレ

【JavaScript】スクリプト バトルロワイヤル54【php,py,pl,rb】
echo.2ch.net/test/read.cgi/tech/1458955459/

443 名前:デフォルトの名無しさん mailto:sage [2017/01/04(水) 09:11:36.00 ID:u2CyXKSE.net]
なんつう亀レスだ…はずかしい

444 名前:デフォルトの名無しさん mailto:sage [2017/01/04(水) 10:10:34.13 ID:B3jxZHKh.net]
Haskellはまだ趣味の範囲であらゆる分野で使える言語だよ。だって純粋関数型言語じゃないから。

445 名前:デフォルトの名無しさん mailto:sage [2017/01/04(水) 11:41:28.60 ID:P9CxkEKM.net]
>>444
貴方の思う純粋関数型言語の定義とその例を述べなさい(100字以内)

446 名前:デフォルトの名無しさん mailto:sage [2017/01/05(木) 06:21:07.40 ID:sTWjNqOn.net]
やだなぁ、やめてくれよ。
ただの皮肉だよん。

447 名前:デフォルトの名無しさん mailto:sage [2017/01/08(日) 01:51:52.58 ID:+qBxgbmJ.net]
このスレのお前らがどう思っているかが一番重要なんだよ
多くのヒントになるから
時代は常にこのスレで言われていた事の反対に進んだだろ?

今は静的型全盛で動的型プッって感じだし
さんざんな言われようだったJSはむしろメジャー言語になったし
今JSが糞って言われているのは主に動的型だからだし
主要スクリプト言語もどんどん静的型の機能を取り入れているし
2000年代にはオブジェクト指向をやりたいならRubyをやれって言ってたのに
今Rubyはどうなった?静的型の機能はいつ追加されるの?Ruby3.0はいつ?

超ド近眼
ほんのちょっとの目先の手間を惜しんで
より面倒なハメにあう動的型信者らしいっちゃらしいがな

昔に動的型がブームになっていた頃から
糞だってはっきり言っていた人たちもたくさんいたし
単にお前らがド近眼ってこと

448 名前:デフォルトの名無しさん mailto:sage [2017/01/08(日) 02:15:46.05 ID:+qBxgbmJ.net]
どうでも良いことばかりに着目しているド近眼ってこと

449 名前:デフォルトの名無しさん mailto:sage [2017/01/08(日) 16:59:24.13 ID:zEIuJeGz.net]
何も分かってないなぁ。
このスレの奴らは静的型アンチでもないし、動的型信者でもない。
昔ながらの静的型と動的型のデメリットとメリットを比較した時、
動的型が肌に合ってた奴は多いが前提が変わるんなら勿論話は変わってくる。

そもそもスクリプト言語の奴らは良いものは何でも大歓迎で取り入れるのが好きだから、
言語に型表記機能が入れば喜んで使う。
動的型に慣れているからこそ、エンジンに型を理解してもらう大切さが良く分かってるからだ。
そこは全く矛盾したり対立したりすることではない。

それとJSが糞と言われていたのは、クラスベースでなく馴染みにくいとことと、便利ライブラリの欠如だ。
でも、ぶっちゃけ欠点のない言語は無いのに、JSがそこまで言われてた理由は、
実はJSの仕様の問題ではなく、DOM APIの仕様とブラウザの実装が酷かったからだ。

そこはむしろ糞って言われていたからこそ、様々な改善が試みられて、今これほどまでに良くなったんだよ。
けしてJSの周りの環境が本当は糞じゃなかったわけではない。
もう一度言うが糞だったから良くなれたんだ。そこは勘違いするな。

450 名前:デフォルトの名無しさん mailto:sage [2017/01/09(月) 13:29:10.71 ID:tlAVTCLv.net]
いいわけ乙

451 名前:デフォルトの名無しさん mailto:sage [2017/01/09(月) 15:50:51.64 ID:NcQuvnbl.net]
assertは書きたいことを大体書けるが、型表記機能とやらは書けないことの方が多い
型名はただの名詞だから
コミュ力が低下する薬を飲まされて名詞しか話せなくなったような面倒臭さがある



452 名前:デフォルトの名無しさん mailto:sage [2017/01/09(月) 17:41:15.96 ID:+XRGLqqZ.net]
それは当たり前だろうよ、縛りを設ける代わりに、主にIDEから恩恵を受けようというものだからね。
機械を自在に動かしたいというスクリプター的には、機械のために書いてるようで合わないだろうよ。

453 名前:デフォルトの名無しさん mailto:sage [2017/01/17(火) 03:06:44.47 ID:lw1Zwsst.net]
Pythonは素晴らしいけどPythonが素晴らしいのではなく、
Python周りのネイティブライブラリ環境が大変素晴らしい。
道具としては最高だけど、プログラミング言語大好き人間としては不満。
もっと速度を上げ柔軟になってくれたら嬉しいんだけど、もうそっち方面は目指してないみたいだね。

454 名前:デフォルトの名無しさん mailto:sage [2017/01/17(火) 06:39:50.13 ID:rIfocs2Z.net]
必要以上に手をかけると処理系のメンテが困難になり結果的に進化の足を引っ張ることになる
Rubyなんかまさにそうで、オタク共がよってたかって好き勝手にいじくり回したせいで詰んでる

455 名前:デフォルトの名無しさん mailto:sage [2017/01/17(火) 07:09:05.55 ID:lw1Zwsst.net]
でもPythonみたいにCythonで割り切るのもねぇと思う。
割り切ってもJSとどっこいどっこいの速度しか出んが。

456 名前:デフォルトの名無しさん mailto:sage [2017/01/17(火) 19:48:56.56 ID:jfonssfd.net]
>>454
具体的にどう詰んでるのか解説を

457 名前:デフォルトの名無しさん [2017/01/18(水) 12:29:49.23 ID:RtvJVUCC.net]
るびいは作者の頭とユーザーの頭と言語仕様が詰んでるって先生が言ってた

458 名前:デフォルトの名無しさん mailto:sage [2017/01/18(水) 12:36:00.48 ID:FlJR5GPR.net]
キチガイ

459 名前:デフォルトの名無しさん mailto:sage [2017/01/18(水) 13:10:26.31 ID:jc+edUai.net]
結果論だがPerlを批判するだけで勝てたんだよな
Pythonは本当にそれだけで勝った
Rubyは批判したいのか擁護したいのかはっきりしなかった

460 名前:デフォルトの名無しさん mailto:sage [2017/01/21(土) 23:28:19.21 ID:sMDuy5hJ.net]
2017年 JavaScript★71.9%ものサイトがjQueryを利用 [無断転載禁止]©2ch.net
tamae.2ch.net/test/read.cgi/prog/1485008061/

461 名前:デフォルトの名無しさん mailto:sage [2017/01/22(日) 14:38:27.08 ID:hBhrTyQG.net]
https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AAng/mbgdnfmdelffjdhkdggilmphfdihnmcj?hl=ja



462 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 01:30:06.94 ID:GY40xFBu.net]
gihyo.jp/news/report/01/rubykaigi2014/0002?page=2
古い記事だけどやっぱ面白いね
何が嫌なのか知らないけど、静的型から逃げ回って
無駄に複雑なことになっていく感覚、本当にすごいわ
型さえ書けば済むことを、よくもここまで複雑にね〜
Unixの思想に反するわ

で、最新の情報ではRuby3.0はどうなることになっているの?
静的型は導入されるの?

でもま、今更導入するぐらいなら初めから導入しておけばよかったのにね
当時から静的型はあったでしょ、C言語とか静的型だし
そんでRubyはCで書かれてて自分は静的型の恩恵を受けてRubyを開発したはずなのにね
十分知ってたはずなのに、今更導入とか、それって筋悪いんじゃないの?何周遅れww
それを認めたくないから静的型の導入に対して渋々なんだろうけど
そんな詰まらないプライドで言語使用が決定されたらRuby使いはたまったもんじゃないね
でもそんな事(タイプセーフの重要性)は周りから見れば分かりきっていたことで
だから俺はRubyには近づかなかったわけでさ
微妙に消極的に静的型のメリットを語ってて、何をいまさらって感じなんだけど
本当に複雑怪奇だね

463 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 07:33:26.80 ID:m5ydKowW.net]
>>462
スクリプト言語のほとんどは静的型じゃないけど、このスレ全体にケンカ売ってるのかな…?w

464 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 12:26:11.03 ID:FleTjgpE.net]
スクリプト言語っていろんなものの橋渡し、
間に入り込む接着剤のような役目なんだから動的型で間違っていない
ただそれだけでしっかりしたものを作ろうとすると大変だねってだけ

465 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 12:33:41.17 ID:GY40xFBu.net]
俺が思うにRubyは夢を売る商売なんじゃないかと思う
ディズニーランドとか宝くじとか
あるいは漫画やアニメの専門学校と
同じようなモノなんだろう

466 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 13:05:30.50 ID:GY40xFBu.net]
Rubyは意図的に静的型の機能を外したわけでしょ?
当時からC言語はあったし、RubyはC言語で開発されているんだから
知らなかったわけないんだよ
知ってて明確な意図をもって外したわけでしょ
それをいまさら導入とか意味不明だよね
だったら初めから導入していればよかったわけで
あとから導入するの大変でしょ
これが何か目新しい概念とかだったら時代背景とかと合わせて
あとから導入はわかるんだけど
静的型って大昔からあって、むしろスタンダードだったわけで
今更検討とか今もう2017年だよ?何やってんだよ
まったくの迷走だよ

467 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 14:33:53.15 ID:OL5emEw+.net]
結論としてJuliaってことだね

468 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 15:55:48.82 ID:iFkNWUjs.net]
無知の長文

469 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 16:21:28.87 ID:k95nzBVS.net]
crystal もよろしく

470 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 23:42:14.51 ID:JZiPjSZc.net]
>>466
動的型は実装が簡単なんだよ

471 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 03:21:52.12 ID:oJ3jWx7w.net]
>>470
逆だが…動的型の方が面倒くさい
>>466 はただの荒らしだからまともに取り合うとロクなことないよ



472 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 07:12:07.86 ID:4qcBtzlj.net]
>>471
動的型信者が静的型をdisるときによく言う「静的型の方が型が決まってるから実装が楽だが〜」
みたいなのを真に受けてるのかな
自分で簡単な言語を実装してみたらわかるよ
問題は型が静的か動的かよりも静的コンパイルの実装コスト

473 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 12:07:08.08 ID:ivKlbKhz.net]
静的コンパイルはコンパイル系と実行系で処理系が2重になるのが複雑
あらかじめ仕様をきっちり決めておかないと手戻りが多発するからスクリプターのノリで適当に作るのは困難

474 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 12:34:26.64 ID:IT/QqIXj.net]
コンパイラも自作しちゃえばいいのよ

475 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 17:08:10.47 ID:bWq8JKgn.net]
仮に動的型のほうが静的型のよりも
最適化を含めるとなると難しいんだったとしても
それはまったく無駄な努力だからな
あと、動的方言語を静的に解析してエラーを見つけるのは難しいんだけど
それも無駄な努力だからな
静的型にすれば済む話
問題を直接解決しようとせず、周りをウロウロして何とかしようとするのは無駄
最近の言語に静的型が多いのは、誰も無駄な意味のない努力をしたくないから
動的型は、何か、ズレてるんだろう
砂糖と塩を輸送するのにブレンドして輸送する感じ
もしかしたら輸送費は安くなるかもしれないが
後で分離する手間考えたら分けて輸送したほうが良い
動的型の型を静的に解析するのはまさにそれに等しい行為
手間が増えるだけ

476 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 17:15:56.85 ID:bWq8JKgn.net]
静的型言語の実装の難易度を基準とすると
動的方言語は、とりあえず動けばよいってレベルなら超楽勝
しかし実用になるレベルにするのに
まじめに最適化を実装しようと思うと途端に難易度は跳ね上がり超絶難易度になる
間は無い
うま味がないってこと
誰も手を出さなくなったわけだ

477 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 17:18:10.38 ID:GTe30Tvn.net]
糖質なフレンドだね

478 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 17:28:09.10 ID:bWq8JKgn.net]
GoogleのV8エンジンとかは、技術的に本当に興味深く凄いなぁと思う反面
あんな苦労は絶対したくないし
言語仕様のほうをどうにかしたほうが手っ取り早いのは確実
本当に動的型言語は何するにしても無駄に壮大で大変だなぁ
静的型言語が全ての答えなのにね

479 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 18:31:58.34 ID:BNfiYHeO.net]
V8はC++で書かれているけど、
Chrome含むGoogleのC++はマクロで魔改造されてる。
C++のマクロだけじゃなく、Pythonも使ってソースコード置き換えをしてる。
結局「全ての答え」などというものはない

480 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 21:12:00.24 ID:wq3/hASM.net]
全ての答えおじさんは自分で言語作ったりするの?
ただのユーザだったらうけるんだが

481 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 21:45:28.70 ID:aYsFsxPN.net]
動的言語を速くする努力なんて無駄だっていうけど
Javaが速くなったのはV8と同じ技術の流用だろ?



482 名前:デフォルトの名無しさん mailto:sage [2017/03/04(土) 13:07:22.03 ID:TytE5WQL.net]
むしろJavaが先駆者というかJIT技術の長年の代表者かな
でもJavaとV8は実際やってることは全くと行っていいほど違う

何故かと言うとJavaは結局コンパイルしてバイトコードにした時点で実際の最適化の殆どは済んでいる、実際はJITはオマケのコンパイル言語だ
そこから少しだけプロファイルを取ったり、各環境向けに最適化するが、微々たるもの
そもそもバイトコードにした時点で情報が結構失われるからそこからJITするのに限界がある構造

でも静的なのでそんなチャレンジングなことをしなくても大体のケースで十分に最適化できるので
バイトコードサイズを小さくする方を取ってるが、実際幾つかのケースでV8含む完全ソースが手元にあるJITに負ける
一方V8は実行時というか実行前から実行中までずっと最適化し続けるJITをやや超えるもの

483 名前:デフォルトの名無しさん mailto:sage [2017/03/04(土) 15:50:13.16 ID:W8crb5iK.net]
Javaなんかコンパイラがどんなに良質なバイトコードを吐いたところでJITを切ったら使いものにならないよ

484 名前:デフォルトの名無しさん mailto:sage [2017/03/04(土) 20:30:51.92 ID:TytE5WQL.net]
動的コンパイル≠JITコンパイル

485 名前:デフォルトの名無しさん mailto:sage [2017/03/04(土) 20:49:23.65 ID:9zDoQRRc.net]
JITコンパイル≠HotSpot技術≒V8の技術=anamorphic

486 名前:デフォルトの名無しさん mailto:sage [2017/03/04(土) 21:09:43.19 ID:9zDoQRRc.net]
>>482
オマケのわりにはクリティカルじゃね?
blog.cybozu.io/entry/2016/04/13/080000

487 名前:デフォルトの名無しさん mailto:sage [2017/03/04(土) 22:43:59.15 ID:W8crb5iK.net]
Animorphic Smalltalk VMやね

488 名前:デフォルトの名無しさん mailto:sage [2017/03/05(日) 01:08:23.00 ID:MrlX2Uoe.net]
>>486
2倍は全くクリティカルではない
JSだとJITは数十から数百倍のスケールで恩恵がある

489 名前:デフォルトの名無しさん mailto:sage [2017/03/05(日) 07:40:06.85 ID:c4lSj3ER.net]
>>488
それベンチマークに特化したコードでの話じゃね?
それならJavaでも似たような差がでるよ

490 名前:デフォルトの名無しさん mailto:sage [2017/03/05(日) 19:03:52.33 ID:ONGjQtv5.net]
>>489
良いことなのかも知れないけれど、昔のインタプリタの頃のとてつもない低速度忘れちゃったんだな

491 名前:デフォルトの名無しさん mailto:sage [2017/03/05(日) 20:03:49.77 ID:tiOeAN9d.net]
>>490
Java VMは今も昔と変わらずバイトコードインタプリタだよ?



492 名前:デフォルトの名無しさん mailto:sage [2017/03/05(日) 21:02:12.11 ID:xrJm/RDc.net]
THE アスペ

493 名前:デフォルトの名無しさん mailto:sage [2017/03/05(日) 21:12:38.66 ID:ONGjQtv5.net]
いいんやで、もうどうでも

494 名前:デフォルトの名無しさん [2017/04/13(木) 09:59:12.88 ID:z2xiyw8y.net]
TypeScriptの採用が増えそうで俺歓喜

Google社内の標準言語としてTypeScriptが承認される。ng-conf 2017
www.publickey1.jp/blog/17/googletypescriptng-conf_2017.html

Google、社内標準言語の一つとしてTypeScriptを採用
https://developers.srad.jp/story/17/04/11/0718244/

495 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 23:41:19.57 ID:Af1/s0zG.net]
gihyo.jp/news/report/01/rubykaigi2016/0001
まったく往生際が悪いというかなんというか、何の意味があるの?
一方ロシアは鉛筆を使ったって感じ
「負けたんだよ」ってだれか言ってあげて

496 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 00:02:02.80 ID:AmA5ei6y.net]
大体型を書くのが面倒ってのも良くわからないし、型推論とかもあるのにな
あと型が書いてあったほうが読みやすい場面も多々あるし
機械にもわかりやすくて人間にもわかりやすくて、丁度よいじゃないか
あとほか宣言があると・・・宣言は型だけじゃなくスコープの宣言でもあるわけでして
宣言なし言語はスコープが気持ち悪いことになってるのが多いよなw

それからダックタイピングは本当に必要なのかどうなのか
静的型であってもジェネリックやテンプレートやオーバーロードがあれば
静的なダックタイピングは可能なわけで、しかもタイプセーフだし
動的なダックタイピングなどという危険極まりないものが本当に必要なのか?
ダックタイピングは静的に解決できる範囲で楽しめばよいだろうよ
それですら黒魔術とか言われるのにな

あと、WebAssemblyな、結局C++などの静的型言語を中間言語にしたものを
ブラウザで読み込んで機械語に変換して実行しようよっていう
どこまで行っても結局型が判明しているほうが最適化しやすいよね
CPUの進化が鈍化してきているし、物理的限界が近いことも考えれば当然の流れだな

497 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 05:04:24.13 ID:O+EWztiU.net]
WASMでDOM操作とか夢のまた夢だし、
そもそもJavaでのDOM操作も実情はきつかったし
別にWebで無くてもいいような1つのアプリケーションを作るんなら
型は有用だけど、何かと何かをくっつけたり、加工したりするための
スクリプト言語としては全くの不要だよ

498 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 07:06:11.63 ID:aIkdKg/w.net]
>>496
> それからダックタイピングは本当に必要なのかどうなのか
> 静的型であってもジェネリックやテンプレートやオーバーロードがあれば
> 静的なダックタイピングは可能なわけで、しかもタイプセーフだし

ダックタイピングのこと分かってないだろ

499 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 09:52:33.87 ID:SqhlDt4o.net]
ダックタイピングはそれをプログラマが活用するのではなく
動的言語における多態性の(安易な)実装手法にすぎない

500 名前:デフォルトの名無しさん [2017/04/16(日) 10:22:58.46 ID:XyqfpBE9.net]
という完全に誤った理解が蔓延しているというお話し

501 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 10:23:01.86 ID:AmA5ei6y.net]
>>495のURL先は皆読んでくれたかわからんが
掛け違えたボタン感が本当にすごくて
最初の一歩を間違えるとこんなにも面倒なんことになるのかって感じ
北朝鮮はどこまで進化しても北朝鮮ってことなんだろうよ
うすら寒い理想の未来を語るところもよく似ている
過去に生きて、未来を語って、現在に生きてないって感じ
まさに掛け違えたボタンで、「現実」のボタンをスキップして飛ばしている
胡散臭い宗教とかもそんな感じだよね
たぶん「現実」に不満がある人を集めるのが目的だから
過去の技術を使って、未来を語ってみせて、騙くらかすって事なんだろうな
これがまさしく、走り続けないと終わる、の意味だろう
でももう流石に誰も騙されないよね
麻疹みたいなものだから、学生さんは一度はそういう目に合うかもだが



502 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 10:25:51.21 ID:AmA5ei6y.net]
もしくは、ボタンを掛け違えていることに本人だけが気付いていなくて
誰も追いついてこないな〜なんて思っていたら
実はみんなもっと遠いところで高度なことをやっていた、ってパターンか
誰も追いついてこないんじゃなくて、フォロワーが居ないってことなんだけどね

503 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 11:27:58.86 ID:cCOM2/u0.net]
ダックタイピングというのは、(人間が)ガーガーと
アヒルのモノマネをすれば、アヒルとみなして扱おう
という発想から生まれたもの

504 名前:デフォルトの名無しさん [2017/04/16(日) 15:33:13.73 ID:aIkdKg/w.net]
>>501
ダックタイピングのことを何も分かってない人間がいくら言おうと説得力はゼロだよ

505 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 16:41:45.39 ID:AmA5ei6y.net]
残念ながら>>499が正解なんだな〜
俺も、もし何かの都合で自分で言語を作る必要性に駆られたら
そうするだろうね、実装が圧倒的に楽だから

つまり、自分で言語を作って、自分で使うんなら
現代においてもなお、動的型はありうるんだよ、これが
言語を作る手間と時間もコストとして換算して
トータルで労力を最小にしたいから
どこでバランスするかの問題

もしくは自分はもっぱら言語を作るのがメインで、使うのは他のやつって場合も
自分だけが楽できれば良いという身勝手な発想に行き着いたのなら、ありえる
自分は静的型言語でその恩恵を十分に得ながら言語開発して
他人は自分の作った言語で苦しむっていう
人として最悪な感じにはなるけど、まぁ最終的には良心の問題
金もうけのためだったり仕事って事なら仕方ないけど
人生の目標にしたら只の嫌がらせだな

それはそれとして、既存の言語を使うだけなら
わざわざ手抜きな言語をあえて選択する意味はないよ

506 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 16:43:12.44 ID:aIkdKg/w.net]
>>505
ダックタイピングをジェネリクスで代替できると思ってる人間の論理に説得力はない

507 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 16:45:25.04 ID:cCOM2/u0.net]
ダックタイピングはジェネリクスではなく
インターフェースで代替するもの

508 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 16:49:53.76 ID:aIkdKg/w.net]
>>507
その通りだね

そしてインタフェースをいちいち付けてまわるのは非常に面倒臭いこと
自分で作るクラスならまだ何とかなるが、使ってるライブラリのクラスだとそうもいかない

509 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 16:54:54.02 ID:cCOM2/u0.net]
> そしてインタフェースをいちいち付けてまわるのは非常に面倒臭いこと

めんどくさい? ダックタイピングではインターフェースがないから
代わりにコメントで同じ情報を書かないといけないじゃん。

インターフェースの情報(コメント含む)を書かないで
それが仕様かどうか分かってもらえると思ってんの?

510 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:00:32.58 ID:aIkdKg/w.net]
>>509
コメントなら書くか書かないかは開発者が選べる
それを「低レベルコード生産要素」と見るか「プログラマの自由を保証」と見るかは
ポジションによる

Matzなんかは後者の立場なんだろうし、日本のSIのような人月計算でレベルはおかまいなしのような
プロジェクトに関わってるような人から見れば前者になるんだろうね

511 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:01:19.16 ID:AmA5ei6y.net]
「静的な」ダックタイピングはジェネリックとオーバーロードで実現可能
という風に書いたのにこれが理解できないのではどうしようもない
きっと静的と動的の違いも理解できてないんだろう
静的なダックタイピングはタイプセーフだし
本当にうまい落としどころだなぁって思う
何もかもが静的型に都合がよいように回ってて、ちょっと怖いね
とはいっても俺も何でもかんでも型で解決しようってのはあまり好きじゃなくて
一つのアイデアが上手くいくと一気に乗っかっていく感じは何か過剰というか
ただ、そうはいってもダメなものがダメなことには変わりないんだけどね



512 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:01:47.01 ID:cCOM2/u0.net]
>>510
> コメントなら書くか書かないかは開発者が選べる

言い換えると、
コメント書きたくない、仕様書を書きたくない。
コード読まないとわからない。
というコードを書きたいってことか?

ひどいな。だから可読性が下がるんだよ。

513 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:03:04.51 ID:aIkdKg/w.net]
>>511
ぜんぜん違う
ほんとダックタイピング分かってないんだな
ID:cCOM2/u0 なんかはその辺分かってるから議論になるけど、お前にゃ無理だよ

514 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:07:46.06 ID:aIkdKg/w.net]
>>512
Matz の有名な言葉に「ソースがドキュメントだ.バグも完全に記述されている」ってのがあるからねぇ
冗談半分だとしても、思想としてそういう方向なんだろう

本気半分の言い分としては、ソース読んだだけでちんぷんかんぷんなコードはその時点で怪しいと思え
って感じだろうか

515 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:08:31.24 ID:cCOM2/u0.net]
インターフェースは契約プログラミングの一種でもあるんだよ。
インターフェースを定義することは事前条件を定義することにあたる。
事前条件を記述することで、予め(プログラムを実行しなくても)バグがあることがわかる。

実行パスは無限と言ってもいいほどあるから、実行しなければ
わからない問題を検出するのは時間がかかる。

だけど、条件を満たすかどうかを調べるために、
実行そのものが必要なければ、短時間で問題が検出できる。

コンピュータが理解できる方法で、しかも実行せずにわかることと
コメントという人間しか読めない方法で書くのとでは全然意味が違う

516 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:09:43.45 ID:AmA5ei6y.net]
静的型において動的な多態にインターフェースを使うのは当たり前
動的なことは危険な香りがするから、インターフェースで制約する
これも丁度よいぐらいの落としどころなんだよ

静的な多態はジェネリックとオーバーロードでダックタイピングも可
動的な多態はインターフェースを通して安全に
どちらの場合もタイプセーフ

よくできているよね〜

517 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:10:37.85 ID:aIkdKg/w.net]
>>515
そういう方向でバグを減らすというのもひとつの方向性としてはいいんじゃない?
単なる思想の違いというだけで、そういうのが嫌いな人が作った言語だって別に悪いわけじゃない

518 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:12:57.07 ID:aIkdKg/w.net]
>>516
だからお前はダックタイピング分かってないんだからもういいよ
staticおじさんのように、分かってない機能は全部けなす方向性の人間と議論になんかならんからな
まずお前にすすめるのはリーベルGの「高慢と偏見」を読めってことだ

519 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:13:47.39 ID:cCOM2/u0.net]
>>517
> そういう方向でバグを減らすというのも

そういう方向で"も" な

バグを減らすテクニックはいくつもある。
静的言語なら、そのテクニックが増えるわけだ

動的言語でできるバグを減らすテクニックは、静的言語でも使える。
さらにプラスして、静的言語ではコンパイル時に実行することなく
バグを減らすことが可能になる。

これは明らかにバグを減らすために追加された機能といえるだろう

520 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:15:16.10 ID:aIkdKg/w.net]
>>519
そのために生産性やプログラマの自由が減るというトレードオフがあるけどね
そのトレードオフのどっちを取るかはポジションで決めればいいだけの話

521 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:16:58.16 ID:AmA5ei6y.net]
ちなみにダックタイピングは、ダックのように振舞うものは、ダックとして扱える
って言ってるだけで
静的に解決するか、動的に解決するかは、別の問題であり
当然静的なダックタイピングは、ある

>ダック・タイピング
>https://ja.wikipedia.org/wiki/%E3%83%80%E3%83%83%E3%82%AF%E3%83%BB%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0
>C++のtemplateはダック・タイピングの静的版である

残念だったなwww
それともWikiを書き直すか?



522 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:18:10.05 ID:aIkdKg/w.net]
>>521
俺はテンプレートに関しては何も言ってないが?
ジェネリクスはちゃうやろって言ってるんだが

523 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:20:02.41 ID:cCOM2/u0.net]
>>520
> そのために生産性やプログラマの自由が減るというトレードオフがあるけどね

減ってないよ。逆に高くなっている。
っていうか、あんた書くときのことしか考えてないでしょ?w

プログラミングっていうのは書くよりも読むことのほうが遥かに多い。
だから、可 "読" 性 が重視される。

読みやすいコードは生産性を大きく上げる

524 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:27:15.74 ID:0ImhO/qF.net]
>>521
× C++のtemplateはダック・タイピングの静的版である
○ C++における型消去はダック・タイピングの静的版である

明らかに間違ってるから直しとけよ

525 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 17:29:05.78 ID:aIkdKg/w.net]
>>523
それは違うな
コメントなら引数を「与えられる方」だけ書けばいいが、インタフェースは引数を「与える方」にもそれを強制する
そしてこれは結構面倒な作業だ

もちろん、引数として変なものを与えてしまう可能性も出てしまうが、それと上記の面倒さをどっちを取るかは
それぞれの人が決めればいい

526 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:04:26.80 ID:AmA5ei6y.net]
現代に生き残りし貴重なサンプルだとは思うが
「何が面倒か」までは書かないんだよな
結局、何でもかんでも渡すわけにはいかないのは同じこと
どのみち仕様を満たさなきゃならん
ダックならダックの仕様を満たさなきゃならん
ダックの仕様を満たすように書かなきゃならないのと
ダックのインターフェースを満たすように書かなきゃならないことは
実質問題大差ない
大差ないか、むしろインターフェスがあった方が何をすべきかよくわかるぐらいだ
仮にこのケースでほんの少しだけ動的型が便利だったと仮定しても
静的型の、型安全性、リファクタリングのしやすさ、タイポなどの些細なミスの検出
型が書いてあることによるドキュメンテーション、最適化のききやすさ
あと宣言があることによるスコープの細かさ
これらすべてを投げ捨てるほどの差はない
動的型のメリットといえばもはや動的なメタプログラミング的な何かぐらいしかないが
そんな黒魔術はどうでもよいし、はっきり言ってgoto文と変わらない

527 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:10:54.82 ID:AmA5ei6y.net]
こういうと彼はきっとこう思う
静的型は互いに別々の出どころのライブラリ間で
インターフェースに互換性がないから困る、と
しかし、そんなことは動的型でも同じこと

528 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:14:22.59 ID:cCOM2/u0.net]
>>525
クラスだけ与えられて、
さてこのクラスはどこで使えるでしょう?
みたいなクイズして楽しいか?

このクラスが持っているインターフェースは何かって
ちゃんと書いていれば、そのインターフェースを使える場所も
明確にわかるだろ

529 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:15:43.11 ID:cCOM2/u0.net]
>>526
> 「何が面倒か」までは書かないんだよな

それだよなw
ほんと何が面倒なのか。

530 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:20:36.92 ID:aIkdKg/w.net]
>>528
アプリケーションの全クラスが自分の管理下にあればそれも可能かもしれんな
でも実際は様々なライブラリを使うことは避けられないし、各ライブラリのクラスに後から自分が欲しい
インタフェースを追加することはできないことがほとんど

C#やScalaなんかはそういうこともできるみたいだが、今度は可読性が落ちるのでここぞというときの
秘密兵器扱いだな

531 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:26:41.26 ID:cCOM2/u0.net]
>>530
各ライブラリのクラスに後から自分が欲しいインターフェースを追加して、
正しく動く保証はあるのですか?

そもそもそんなことする必要ありませんよね?



532 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:29:04.31 ID:cCOM2/u0.net]
手段が目的になってしまってるんだよなw

何がしたいのかは言わない。
ライブラリのクラスに後からインターフェースを追加することが
目的なんだって臆面もなく言ってしまうw

533 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:34:11.12 ID:aIkdKg/w.net]
>>531
あるよ

たとえばあるライブラリがAというクラスのオブジェクトを返したとする
これを別のライブラリか自分で作ったクラスのの引数として使いたいけど、その引数はBという
インタフェースを要求する

Aというクラスは字面の上ではBというインタフェースを満たしているのだが、Bというインタフェースを
implement しているわけではない

さてどうしよう
Bというインタフェースを持つクラスを自分で定義してコピーする?こんな余計なことしなきゃいけない
のは生産性の低下以外の何物でもないわな

これは一例であって他にも同様の例はいくらでもある

534 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:43:08.06 ID:cCOM2/u0.net]
>>533
なんでAというクラスが、Aとは全く関係のなく作られたBというインターフェースを
たまたま運良く満たすなんて自体が起きるんだよw

ありえないだろ。

それよりか引数が違うのに、同じ名前のメソッドを定義してしまっていた
どうしようって思うほうが可能性高いわw

535 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:46:33.36 ID:cCOM2/u0.net]
Aというクラスは字面の上ではBというインタフェースを満たしているのだが、
Bのバージョンアップでインタフェースが変わってしまった。

だけど、Aというクラスがたまたま古いBのインターフェースと
一致していたという前提をどこにも書いていなかったので、
動かなくなる原因の判明に時間がかかった。

そのためにコメントをしっかり書くようにした。

A は B interface を implements しているよと

536 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:50:50.79 ID:aIkdKg/w.net]
>>534
ありえるんだよ、これが
しかもしょっちゅう
(俺は静的型言語でも開発してるからよく出くわすよ)

たとえば、Serializable なんか典型じゃないかな
そのまま Serialize したいのになんで Serializable インタフェース持ってねぇんだよ!
みたいなのはほんといくらでもあるよ

537 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:53:05.94 ID:cCOM2/u0.net]
このようにダックタイピングを使うとその場しのぎで直ぐに対応できるように思えるけど
長い目で見れば、可読性の低下を招き、メンテナンス性、生産性を下げることになってしまう。

書いたら終わり、メンテナンスが不要な書捨てのプログラムぐらいにしか
使わない方がいい。

そして、書捨てのプログラムをよく書くのはインフラ系が多い。
インフラ系で必要とされるのはオブジェクト指向も必要ない
数行程度のスクリプト。シェルスクリプトよりは書きやすいぐらいの
理由しか持ち合わせてない

アプリの開発には長期間メンテナンスされるので可読性が重要

538 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:56:36.72 ID:cCOM2/u0.net]
>>536
> そのまま Serialize したいのになんで Serializable インタフェース持ってねぇんだよ!

そのクラスがSerializeする機能を実装してないからだろ?

539 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 19:04:01.20 ID:cCOM2/u0.net]
rubytips86.hatenablog.com/entry/2014/03/19/184940

Rubyでこのシリアライズとデシリアライズを担うライブラリがMarshalモジュールだ。
注意点としてMarshal.dumpでは、無名のクラス・モジュールのオブジェクト、
システムがオブジェクトの状態を保持するIOなど、
Procなどいくつかのインスタンス、特異メソッドを定義したオブジェクトはシリアライズできない。

540 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 22:32:15.20 ID:AmA5ei6y.net]
第一だよ
全然関係ないライブラリ同士でたまたま字面の上で
メソッド名が一致しているクラスがあるっていう
偶然の一致があったとしても
その動作振る舞いまでもが完全に一致していて
動作的にコンパチブルかどうかは分からないよ
想定してないんだからさ
おおよそ慣例というか習慣というか、その言語ではふつうそうするって
何らかの決まり事みたいなものがあるのなら問題ないかもしれないが
そういう場合は言語側やファウンダメンタリーなライブラリが
インターフェースを定義してくれているから、それ使えばよいわけで
やっぱり関係ないんだよ

そういうメソッド名と振る舞いの両方が偶然にも一致
っていう奇跡偶然に頼るってのが
まさにおまえ自身が>>530で言ってる

>アプリケーションの全クラスが自分の管理下にあればそれも可能かもしれんな

そのものなんだよ、まったくのブーメラン

541 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 22:54:49.91 ID:aIkdKg/w.net]
>>540
ダックタイピングのことを知らないお前が言っても説得力はないよ



542 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 23:27:02.64 ID:f4lMQoiy.net]
言い争いの起点がどこにあるのかわからん

543 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 23:30:25.86 ID:aIkdKg/w.net]
>>542
>>496 >>498






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<278KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef