X



次世代言語Part8[Haskell Rust Kotlin TypeScript]
■ このスレッドは過去ログ倉庫に格納されています
0520デフォルトの名無しさん
垢版 |
2018/01/01(月) 16:45:32.23ID:bFOlOWpA
バイナリイメージっつーか
結局デバッグってどの時点かで想定の値と違ってるところを探るってことになるわけで、
その評価のタイミングとか考える必要があるじゃん。
そういう評価のタイミングがわかりにくい言語だとデバッグがきついんだよ。
0522デフォルトの名無しさん
垢版 |
2018/01/01(月) 19:33:22.97ID:bFOlOWpA
解放されたいのはわかるが実際は違うんだから仕方ない。
言語でいくら定義しようが、ノイマンマシーンはそんな風には動かないんだから。
0523デフォルトの名無しさん
垢版 |
2018/01/01(月) 19:46:21.62ID:/faDXLzU
実行できない仕様記述言語の方が初心者に優しい
バイナリとかメモリとか気にする必要がないことが明確になる

実行できる機能を追加したら言語の評価が下がる
もちろん実質的な価値は上がるが、評価と実質が乖離するのは初心者には難しい
0526デフォルトの名無しさん
垢版 |
2018/01/01(月) 22:38:37.64ID:sFrCkJSv
>>524
メモリが無限にあるならサンクがどれだけ作られても気にならないけど
実際は違うから適当なタイミングでサンクを潰す必要がある
0528デフォルトの名無しさん
垢版 |
2018/01/02(火) 10:01:13.65ID:EAVq+O5u
>>468
読んでみて面白いと思ったけど、「動作する仕様書」ってのがいまいちイメージ出来ない。
参考になるURLとか知ってる人居ますか?
0529デフォルトの名無しさん
垢版 |
2018/01/02(火) 11:37:28.22ID:rfQ6c9kP
>>525
同時にそれはオブジェクト指向の謎でもある
実数と整数の間に "is a" 関係は存在しないのか?
0530デフォルトの名無しさん
垢版 |
2018/01/02(火) 12:30:30.49ID:oC5uWYs9
>>515
動的言語じゃん。
まあそれでもどう解釈されるかとか、これじゃinline展開されんな、とかはJavascriptでも考えるが。

>>518みたいにしない人はしなくても良いようなプログラム書いてるんだろうし、無駄だよ、この議論は。
0532デフォルトの名無しさん
垢版 |
2018/01/02(火) 22:00:37.83ID:EAVq+O5u
>>531
サンクス、読んでみる。
0533デフォルトの名無しさん
垢版 |
2018/01/03(水) 00:13:36.77ID:BD5Fg5Uh
本当に必要なのは、コンパイルの通る仕様書じゃないか?
動作する仕様書です!なんて出して、「それで動くんだからいいじゃん、はい保守」
なんて言われた日にゃ地獄の始まりだろ
0534デフォルトの名無しさん
垢版 |
2018/01/03(水) 00:23:34.96ID:36t783to
Smalltalkerにはソレで十分なんですよ
なんとなく動けばok。エラー?握り潰せば?の世界だから
0535デフォルトの名無しさん
垢版 |
2018/01/03(水) 00:35:45.41ID:BQWr3hBa
動作はするけどなんだか速度が遅いから最新機種の方がいいじゃん、はい購入
これがマネタイズだ
0536デフォルトの名無しさん
垢版 |
2018/01/03(水) 07:32:07.83ID:jID8SJMc
>>533
あまりに動的性を追求しすぎててインタープリタ言語と勘違いされがちだけど
Smalltalkも(VMで動くJavaがそうであると言える程度には)コンパイラ言語なので
「動く」以上はコンパイルは「通っている」んだな、一応w

もちろん533が言いたいのはそういうことじゃないことは分かっているんで、マジレスすると
型システムのチェック(のことだよね?)を通すのにコスト(主に人員や時間)をかけられる程度に
急ぎでない(つまり「仕様が固まっている」)のならSORABITOとかで求められる
「必要なら本番投入も可能な動く仕様書」的側面はきっとあまり役には立たないだろうね
0537デフォルトの名無しさん
垢版 |
2018/01/03(水) 08:02:43.84ID:jID8SJMc
>>533,534
こっちにもマジレスすると、実際そのとおりで
Smalltalkの設計者ら(アラン・ケイだけど)は
ひどいと「地獄」とまで形容されるそれ、つまり本番投入後の要求変更を必要不可避なものとして捉え
天国とまでいかずとも他言語には難しい後からの大胆な仕様変更をも支援できる動的性を
この処理系(環境を含む)に付与することに腐心し、それはある程度奏功している

「ソフトウェア工学」は矛盾語法か? -- アラン・ケイ
http://metatoys.org/oxymoron/oxymoron.html

Smalltalkの底を流れる設計思想 -- ダン・インガルス
http://web.archive.org/web/20041016084842/http:/marimpod.homeip.net/chomswiki/24

TDDの「ひどい仮実装でもとりあえずグリーンにするのを優先し、そこから重複を除去(リファクタリング)」
というとんでもない発想が生まれ得たのもSmalltalkのこの大胆な変更への追随力があったから
0542デフォルトの名無しさん
垢版 |
2018/01/03(水) 16:16:41.94ID:1ORngv96
>>540
×lamda
○lambda

>>540
Y コンビネータをすら記述できない lambda 仕様が特にコンパイル言語にも氾濫しているが、いったい何の役に立つんだ?老害避けのつもりか?
0547デフォルトの名無しさん
垢版 |
2018/01/03(水) 18:51:02.03ID:ykBugU3C
またTypeScriptか。
いい加減ちょっと落ち着いてほしいな、推しの人は。
言語仕様はごった煮、出来上がるのは微妙に汚いJavaScript。
async awaitをネイティブのasyncじゃなくてトランスパイルした結果なんて変数のライフタイム無茶苦茶長くなるし。
言語としてのTypeScriptはいろんな意味で何でもできて良いと思うけど、今の実装としてのTypeScriptって微妙だと思うんだが。
単に書く時にスッキリかけても、ちょっと違う気がする。
0549デフォルトの名無しさん
垢版 |
2018/01/03(水) 19:05:06.06ID:ykBugU3C
>>548
そうじゃなくて。だからネイティブのじゃなくてトランスパイルさせたらって前提付けたんだけどな。
なんかあそこまでやるなら、JSとの相互運用諦めてもっと汚いコード出せば良いのに、と思ってしまうんよ。
0550デフォルトの名無しさん
垢版 |
2018/01/03(水) 19:38:05.02ID:Dz+CQN9J
>>549
TypeScriptのトランスパイルコードを直接いじることは無いからなぁ。
なんでそんな状況になったの?
0551デフォルトの名無しさん
垢版 |
2018/01/03(水) 20:25:39.92ID:ykBugU3C
>>550
弄ることは無いが、あるべき姿になるようにTS側で書き分ける事はあるかな。

くっそ遅い関数がなんで遅いのかを調べにかかった時に、モヤモヤした覚えがある。
genericsとか、型ごとの関数をちゃんと作ってほしいけど、一つだったり。今違うかったらすまん。
その時は、これでJIT結果捨てる事になってる…って気づいて、素直に沢山関数を作った。

コンパイラと言うならもう少しVMの仕様を鑑みても良いと思う。
0552デフォルトの名無しさん
垢版 |
2018/01/03(水) 20:47:23.87ID:ojwn4PN+
特定のブラウザの現在のバージョンに最適化しろってこと?
お前それ自分がコンパイラ作る立場ならやろうと思うか?
やろうと思うならお前がコード書いてプルリク出してやればいい
確実にリジェクトされるだろうけどな
0553デフォルトの名無しさん
垢版 |
2018/01/04(木) 00:44:42.33ID:nu/rOVYa
wasmが普通になったら状況変わるかね?
0556デフォルトの名無しさん
垢版 |
2018/01/04(木) 10:28:15.71ID:eEA4RdWc
確かにTypeScriptは実際に書いてるとめちゃくちゃ次世代感あるが、
それはReactとかReduxとかのメジャーを作ってる奴らが関数型厨だからで、
次世代なのは、言語というよりはライブラリという感じがする。
0557デフォルトの名無しさん
垢版 |
2018/01/04(木) 11:33:00.27ID:j8WFIzPh
PHP書かされてたときは辺境の島国で首輪に繋がれて石器で木の実取ってる気分になったわ
0558デフォルトの名無しさん
垢版 |
2018/01/04(木) 11:37:57.37ID:dTmScpvt
>>552
特定のブラウザじゃなくて。そういう発想がセンス無いの。
複数の型で同じ関数を呼ぶとかストールするのはほとんど当たり前と言っても過言じゃなかったりするけど、それを「特定のブラウザの問題でしょ?それよりこんな新しい機能ついたよ」って毎回押し切ってくるのがTypeScript。
AssemblyScriptなんかは好きだけどね。
TS使うプロジェクトにはたまにプルリク送ってるけど、最終的にはTSっぽくないTSのコードになるよ。
0560デフォルトの名無しさん
垢版 |
2018/01/04(木) 13:34:10.72ID:dTmScpvt
>>559
だから、特定のどうの、ではなくて、概ね大半の処理系でJITに乗るようなコンパイル結果出せって言ってるんだけど?
無理した小奇麗なJSっぽいコード出さなくても良いじゃん、って。
V8だと何バイト以下なら関数はインライン化される、とか細かい癖も確かにあるけど、だからこそ小奇麗で無くていいと思うんだが。
0561デフォルトの名無しさん
垢版 |
2018/01/04(木) 13:38:00.17ID:dTmScpvt
もしかして、今TypeScriptでジェネリクス使っても、JITは結果破棄しないのかな?
そうならごめん。
0562デフォルトの名無しさん
垢版 |
2018/01/04(木) 13:55:58.71ID:lDvme0sw
要はTypeScriptの実装が良くないということなんだろうけど、使う側からしたら
パフォーマンスやフットプリントが許容範囲を超えない限りは気にしないかな。
0563デフォルトの名無しさん
垢版 |
2018/01/04(木) 15:47:07.60ID:dTmScpvt
実装が中途半端、かな。JSに引きずられすぎだと思う。
Cで言うとexternしない関数が関数としての形を保たなくても良いのと同じ様に、exportしてないものを似たようなJSのコードにする必要は(もはや)無いと思うんよね。
許容範囲次第なのは確かだけど。
言語としては新しくて良いと思うが、処理系として微妙ってのはそういう所。
0564デフォルトの名無しさん
垢版 |
2018/01/04(木) 19:02:23.91ID:h9oQFOEG
>>562
ジェネリックをソースレベルで展開なんかしたらフットプリントが増えて
JavaScriptで一般的に言われるパフォーマンス(つまりロード時間)は落ちるよ
0565デフォルトの名無しさん
垢版 |
2018/01/04(木) 19:07:31.76ID:a9q0dcb4
おまえらなんかよりずっと賢い連中が作ってるんだから
問題なんかあるわけねえだろ
バカか?オレオレFW作りたがり坊やのペチプァなのか?
0566デフォルトの名無しさん
垢版 |
2018/01/04(木) 19:52:37.93ID:c10UOky1
>>564
ブラウザだけで動かしたい訳でもないし、起動時のパースのフットプリントをどうこう言うのであれば、今のNodeのnode_modules自体、既に無茶苦茶でしょ。
それも、最初に一発パースするからそうなるんであって、bootstrapとその後に分ければいいんでないの?

>>565
ペチプァ言いたいだけだろうが、ペチプァ連呼して悦に入って問題を理解できないやつにゴタゴタ言われたくはない。
0567デフォルトの名無しさん
垢版 |
2018/01/04(木) 20:16:17.73ID:nTAtbfT4
ID:dTmScpvt言ってる事そんなにわけわからんくもないのになんでこんな事になってんだ?
0569デフォルトの名無しさん
垢版 |
2018/01/04(木) 20:47:32.62ID:lDvme0sw
>>564
トランスパイラである以上多かれ少なかれそういうオーバーヘッドは避けられるものじゃないと
思うけど、問題はそこでTypeScriptがBabel等と比較して出来が良くないのかどうかだね。
0571デフォルトの名無しさん
垢版 |
2018/01/04(木) 21:19:25.60ID:SwPhpZjo
いいか、喚くだけなら頭がPoorのペチPoorでもできるんだよ
わかるか?わからんやつはペチプァだけだが
0579デフォルトの名無しさん
垢版 |
2018/01/05(金) 12:50:08.59ID:WQychI9E
>>570
そろそろコンパイラと言うなら、最適化フェーズに入って欲しいわ。
ずーっと(確かに欲しいのはわかるが今でなくて良いだろうと言いたくなる)新機能つけ続けてるじゃん、
0581デフォルトの名無しさん
垢版 |
2018/01/05(金) 13:40:21.34ID:9YdInhdK
>>579
そろそろ課金するフェーズだろ
お金を払ったら悪口言っていいし、悪口言われたくないならお金稼ぐのをやめればいい
0582デフォルトの名無しさん
垢版 |
2018/01/05(金) 14:12:44.72ID:WQychI9E
>>581
課金するフェーズはまあ別に妥当な値段なら買うよ、マジで。課金して良くなるならね。
VSより高いとなるとちょっと考えるけど。
自分でプルリクせえとなっても、suggestionの段階で同じ様なパフォーマンスのためにJSの形変える系の話は、みんな却下されてたはず。
要は皆>>568の様な形で、中途半端で良いと思ってて、どん詰まりはもっと先だろと楽観視してる。

もはや単なるリンタ。
0587デフォルトの名無しさん
垢版 |
2018/01/05(金) 20:49:35.32ID:WQychI9E
無意味に計測だけしても無駄でしょ。
推論からの計測で計測からの推論かと。
どこを計測するか考えてる時点で推測しとるって事だからね。
0589デフォルトの名無しさん
垢版 |
2018/01/05(金) 21:20:50.22ID:2QFGEILP
「推測するな 測定せよ」みたいないわゆる格言に対してそんなガキみたいな屁理屈捏ねられてもね……
0594デフォルトの名無しさん
垢版 |
2018/01/06(土) 14:24:10.80ID:pmlj07ym
>>589
意味を理解しない格言や誤謬を招かんとする格言の使い方には一言言いたくなるじゃん。
そう信じて計測だけする奴が可哀想だ。
0595デフォルトの名無しさん
垢版 |
2018/01/06(土) 14:27:48.16ID:ul9KuZX2
どう考えてもV8にコミットするのが筋だわな
別にTS批判君が全ブラウザをやらなくても、効果的な改良なら他もすぐに追従するだろう
まさかJIT結果だのVMの仕様だのキリッが付きそうなレスしてるのにC++やネイティブコンパイル分からないとか言わないよね
0598デフォルトの名無しさん
垢版 |
2018/01/06(土) 16:48:12.08ID:pmlj07ym
>>595
いや違うだろ。
なんでTSのコンパイル結果がクソなのをV8が面倒見るべきかわからんが。
普通にコンパイラとして真面目にコンパイルすりゃいいのに、って話で、
トランスパイラならトランスパイラと名乗れば良いのに。
よくもまぁこういう擁護ができるなぁと思うわ。

V8や他のJSエンジンは、JavaScriptの処理系であって、TypeScriptの処理系じゃねえんだから。
それこそ、TypeScriptが吐き出した中途半端なJSに対するチューニングなんか必要ないだろ。
V8側のスタンスは「最初からJSで書きゃ良いだろ、asyncが欲しい?考えてやるよ」と機能の面では歩み寄ってきたじゃん。
そういう意味で、wasmに振って、ちゃんとコンパイルするAssemblyScriptはいい方向だと思うが、
tscの方向性は微妙としか言い切れんと思う。

TS自体がなんで未だにJSに引きずられる必要があるのかわからんが、皆がそれで良しとする理由は「中途半端で良いから」なの?
0599デフォルトの名無しさん
垢版 |
2018/01/06(土) 16:51:40.90ID:pmlj07ym
コンパイルした時点で型が消えるのに、JITに引数の型に対して何種類か載せ続けるべき関数(ジェネリクスだった関数)なのか、それともany受けてるただの関数なんか、それこそプロファイル取ること自体無駄じゃん。
最初から型ごとに吐きゃ良いのにって思っちゃいかんのか?
0600デフォルトの名無しさん
垢版 |
2018/01/06(土) 17:16:11.92ID:vE17HoYT
名前の通りbetterJS以上の認識は無いな
少なくともtscだろうとtstだろうと単なる名前に拘る奴は居ないと思う

>いかんのか?
いいと思うよ
0601デフォルトの名無しさん
垢版 |
2018/01/06(土) 18:35:08.26ID:bW7JkyTC
>>598
実行時に型ごとにJITを分けるのって割と一般的な最適化手法だろ
型ごとにjsを生成すると言っても結局それらはみんな同じコードであって型情報なんて残らないんだから、
それが適切に最適化されるかどうかなんて処理系次第だろ
jsに型アノテーションを導入しろというなら理解できるが、あんたの主張は無茶な言いがかりにしか見えないな
0602デフォルトの名無しさん
垢版 |
2018/01/06(土) 18:41:14.50ID:bW7JkyTC
補足
最適化されるかは処理系次第、といったのは、結局、型ごとにjs生成しようが
JITは実行時の型を利用して最適化することには変わりないんだから、本質的には大した違いはないという意図だぞ
ヘボいと言うなら複数の型に適切に対応できないJITがヘボいんだよ
0607デフォルトの名無しさん
垢版 |
2018/01/07(日) 12:37:05.15ID:3N9WbZKm
妄想でごちゃごちゃ言ってないで検証コード載せなさいよ
どっちが馬鹿かはっきりするでしょ
0608デフォルトの名無しさん
垢版 |
2018/01/07(日) 13:26:29.62ID:WSf4F++k
>>606
あ、そうなんだ。それは良い風に変わってるんだな。
俺が見たときはほとんど整数、たまにエラーを表すオブジェクトのときに、毎回オブジェクトの時にJIT捨ててたけど、古いといえば古い話だし。
まぁプロファイル次第なんだろうな。

>>607
どっちが馬鹿とかじゃなかろうが。
そういう発想がマウンティングとかいう発言に繋がってんの?
0612デフォルトの名無しさん
垢版 |
2018/01/07(日) 14:07:56.16ID:tEoGaVYL
x >= y または x < y などと変数でごちゃごちゃ書いてないで定数にすればわかる
変数は妄想だ
妄想するな計測せよ
0615デフォルトの名無しさん
垢版 |
2018/01/07(日) 19:02:21.52ID:KS5M1w7d
まあ個人の体験談みたいなものを根拠に主張したって賛同はされんわな
コードが出てこないと改善の有用性も見えないし抽象的な話で止まってしまうよ
0616デフォルトの名無しさん
垢版 |
2018/01/07(日) 21:38:26.68ID:BUQO0mIV
そーだな、ぜひともHaskellで書いた次世代言語らしいサンプルが見たいもんだ。
他の言語は出たのにな。
0618デフォルトの名無しさん
垢版 |
2018/01/07(日) 21:58:24.02ID:Oi0ICvXY
サンプルコードが出るとダメな言語は一目瞭然だったりするからな
Sから始まる言語とか
0619デフォルトの名無しさん
垢版 |
2018/01/07(日) 22:23:27.72ID:tEoGaVYL
ダメな言語の批判ばかりだよな
よかった言語の名前は出せない空気になってる
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況