次世代言語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/31(日) 10:22:23.79ID:rHg6Qc+M
>>506
そうだけどなにか
510デフォルトの名無しさん
垢版 |
2017/12/31(日) 11:09:20.17ID:OUK6bPn9
>>506
優劣の基準によるだろ。
2017/12/31(日) 13:25:14.78ID:G5F8BPZR
いろんな言語の悪口言ってるw

Debunking Myths About Programming Languages (and More)
https://www.youtube.com/watch?v=rZeTdi7en6A
2018/01/01(月) 12:19:03.55ID:bFOlOWpA
>>508
マクロを追ってくのは面倒ではあるが
一つ一つ展開してけばそこまで無理ゲーではない。
しかしhaskellみたいに正格評価でない言語はバイナリイメージが描きにくいし
やっぱり辛いんじゃないかな。
2018/01/01(月) 12:39:18.50ID:/aa2tlFp
Haskellのバイナリはイメージ出来んな
でも出来る必要あるか?
2018/01/01(月) 12:49:38.56ID:UOCN9gps
する必要がない人が使うんだろ。
良いじゃん、バイナリサイズが大きかったり、メモリ消費が多かったり、動作が遅ければ計測すれば。

大きくなるだろうな、メモリたくさん使うだろうな、これじゃ遅いだろうな、なんて気づきは無駄らしい。計測が全てらしいわ。
また半狂乱になって必要性の無さを説くのを眺めるのもめんどくさいし、そういう言語だって理解でいいんじゃねえの?
2018/01/01(月) 12:55:17.85ID:/aa2tlFp
どうせPythonとかでもバイナリイメージ描かんじゃろ?
2018/01/01(月) 13:07:46.20ID:/aa2tlFp
Haskellは動的言語以上にそっちの方向いっとる
そっちの極みやね
2018/01/01(月) 14:34:14.61ID:aCS5pbMF
くすくす
2018/01/01(月) 15:17:11.09ID:2Vcmk2Ln
おまえら、いつも「これはどんなバイナリ」とか考えながらコーディングしてんの?
バカじゃないの?
2018/01/01(月) 15:18:05.17ID:ry7dOet7
俺も数学科出身なんだけど、層の理論ってプログラムと関係ないと思う。
だけど、↓みたいに数学的基礎付けが欲しい人はいるのもわかるが。

Haskellと層
https://qiita.com/makoraru/items/ab891a60d4dfe4bbf649
2018/01/01(月) 16:45:32.23ID:bFOlOWpA
バイナリイメージっつーか
結局デバッグってどの時点かで想定の値と違ってるところを探るってことになるわけで、
その評価のタイミングとか考える必要があるじゃん。
そういう評価のタイミングがわかりにくい言語だとデバッグがきついんだよ。
2018/01/01(月) 18:17:03.86ID:/aa2tlFp
一応、タイミングという概念から解放されるための参照透過性なのでは?
2018/01/01(月) 19:33:22.97ID:bFOlOWpA
解放されたいのはわかるが実際は違うんだから仕方ない。
言語でいくら定義しようが、ノイマンマシーンはそんな風には動かないんだから。
2018/01/01(月) 19:46:21.62ID:/faDXLzU
実行できない仕様記述言語の方が初心者に優しい
バイナリとかメモリとか気にする必要がないことが明確になる

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

>>518みたいにしない人はしなくても良いようなプログラム書いてるんだろうし、無駄だよ、この議論は。
2018/01/02(火) 14:12:57.96ID:AAYv0JXv
>>528
古いけどこれとか参考にならないかな?

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

もちろん533が言いたいのはそういうことじゃないことは分かっているんで、マジレスすると
型システムのチェック(のことだよね?)を通すのにコスト(主に人員や時間)をかけられる程度に
急ぎでない(つまり「仕様が固まっている」)のならSORABITOとかで求められる
「必要なら本番投入も可能な動く仕様書」的側面はきっとあまり役には立たないだろうね
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のこの大胆な変更への追随力があったから
2018/01/03(水) 10:49:31.30ID:JTHdffOK
>>533
きみには孫請けSIer根性が染み付いているようだねッ 彡⭐
2018/01/03(水) 13:41:42.24ID:0ljbskXf
Pythonよりすっきり書ける言語がないという事実
2018/01/03(水) 15:29:23.56ID:BD5Fg5Uh
>>539
lamdaが糞
finalがない
privateがない

はい完全究極ロンパリオン・ギガアタックEx
2018/01/03(水) 15:36:20.12ID:0ljbskXf
>>540
そんなゴミクソ仕様の塊よりすっきり書ける言語がないという事実
2018/01/03(水) 16:16:41.94ID:1ORngv96
>>540
×lamda
○lambda

>>540
Y コンビネータをすら記述できない lambda 仕様が特にコンパイル言語にも氾濫しているが、いったい何の役に立つんだ?老害避けのつもりか?
2018/01/03(水) 16:25:14.58ID:BD5Fg5Uh
>>541
おまえのいうすっきりって何だよ
俺はTypeScriptですっきり書けてるが?
2018/01/03(水) 16:44:08.47ID:CJ7nUX51
Zコンビネータじゃ駄目なんか?
2018/01/03(水) 17:44:23.37ID:BD5Fg5Uh
俺なんかXenoExtraUltraGigaJetHyperUltraMiracleSuperコンピータだが文句あるか?
2018/01/03(水) 18:27:49.94ID:1ORngv96
>>545
君の芸風とても好きだ!
>UltraGigaJetHyper**Ultra**
2018/01/03(水) 18:51:02.03ID:ykBugU3C
またTypeScriptか。
いい加減ちょっと落ち着いてほしいな、推しの人は。
言語仕様はごった煮、出来上がるのは微妙に汚いJavaScript。
async awaitをネイティブのasyncじゃなくてトランスパイルした結果なんて変数のライフタイム無茶苦茶長くなるし。
言語としてのTypeScriptはいろんな意味で何でもできて良いと思うけど、今の実装としてのTypeScriptって微妙だと思うんだが。
単に書く時にスッキリかけても、ちょっと違う気がする。
2018/01/03(水) 18:56:17.97ID:Dz+CQN9J
>>547
普通にコンパイルオプションの問題だし。
outputをes2017に指定すればいいよ
2018/01/03(水) 19:05:06.06ID:ykBugU3C
>>548
そうじゃなくて。だからネイティブのじゃなくてトランスパイルさせたらって前提付けたんだけどな。
なんかあそこまでやるなら、JSとの相互運用諦めてもっと汚いコード出せば良いのに、と思ってしまうんよ。
2018/01/03(水) 19:38:05.02ID:Dz+CQN9J
>>549
TypeScriptのトランスパイルコードを直接いじることは無いからなぁ。
なんでそんな状況になったの?
2018/01/03(水) 20:25:39.92ID:ykBugU3C
>>550
弄ることは無いが、あるべき姿になるようにTS側で書き分ける事はあるかな。

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

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

>>565
ペチプァ言いたいだけだろうが、ペチプァ連呼して悦に入って問題を理解できないやつにゴタゴタ言われたくはない。
2018/01/04(木) 20:16:17.73ID:nTAtbfT4
ID:dTmScpvt言ってる事そんなにわけわからんくもないのになんでこんな事になってんだ?
2018/01/04(木) 20:29:50.34ID:UC9+Q2Sj
正義を徹底するより中途半端の方がいいと思ってる奴はいっぱいいるから
2018/01/04(木) 20:47:32.62ID:lDvme0sw
>>564
トランスパイラである以上多かれ少なかれそういうオーバーヘッドは避けられるものじゃないと
思うけど、問題はそこでTypeScriptがBabel等と比較して出来が良くないのかどうかだね。
2018/01/04(木) 20:49:37.08ID:h9oQFOEG
過剰な最適化は開発のスピードを落とすしバグも増やすからな
2018/01/04(木) 21:19:25.60ID:SwPhpZjo
いいか、喚くだけなら頭がPoorのペチPoorでもできるんだよ
わかるか?わからんやつはペチプァだけだが
2018/01/04(木) 21:23:18.84ID:typzK5sH
ちょっと笑った
2018/01/04(木) 22:58:20.94ID:ZFKdQPiM
ペチPoorは良いな。俺も使わせてもらおう
2018/01/04(木) 23:59:42.42ID:/Un6+mBC
ペチPoohでもいいぞ
2018/01/05(金) 04:33:36.96ID:Lhuo9IQi
>>571
おまえは気が狂っている。
一刻も早く病院へ行け。
2018/01/05(金) 07:47:15.22ID:QF8nYsKX
>>575
2018/01/05(金) 10:36:04.85ID:OSZVMsU9
>>575
おっ 頭がPoorのペチPoorか?
2018/01/05(金) 12:08:39.39ID:2QFGEILP
ペチPoorはおつむもおちんぎんもPoorでかわいそうね
2018/01/05(金) 12:50:08.59ID:WQychI9E
>>570
そろそろコンパイラと言うなら、最適化フェーズに入って欲しいわ。
ずーっと(確かに欲しいのはわかるが今でなくて良いだろうと言いたくなる)新機能つけ続けてるじゃん、
2018/01/05(金) 13:38:22.06ID:rGChZwpO
>>578
やめたれw
2018/01/05(金) 13:40:21.34ID:9YdInhdK
>>579
そろそろ課金するフェーズだろ
お金を払ったら悪口言っていいし、悪口言われたくないならお金稼ぐのをやめればいい
2018/01/05(金) 14:12:44.72ID:WQychI9E
>>581
課金するフェーズはまあ別に妥当な値段なら買うよ、マジで。課金して良くなるならね。
VSより高いとなるとちょっと考えるけど。
自分でプルリクせえとなっても、suggestionの段階で同じ様なパフォーマンスのためにJSの形変える系の話は、みんな却下されてたはず。
要は皆>>568の様な形で、中途半端で良いと思ってて、どん詰まりはもっと先だろと楽観視してる。

もはや単なるリンタ。
2018/01/05(金) 18:22:04.71ID:rGChZwpO
推測するな 計測せよ
って言葉知らんのか?
2018/01/05(金) 18:43:32.98ID:/3vfwTze
知らん
2018/01/05(金) 18:44:03.04ID:/3vfwTze
考えるな、感じろ。なら知ってる。
2018/01/05(金) 18:47:50.38ID:2QFGEILP
それ知らんのはガイジ
2018/01/05(金) 20:49:35.32ID:WQychI9E
無意味に計測だけしても無駄でしょ。
推論からの計測で計測からの推論かと。
どこを計測するか考えてる時点で推測しとるって事だからね。
2018/01/05(金) 21:06:34.87ID:Z2M9SnI/
>>582
そもそもTypeScriptは単なるリンタだろ
お前がプルリクを出すべきなのはTypeScriptではなくV8
2018/01/05(金) 21:20:50.22ID:2QFGEILP
「推測するな 測定せよ」みたいないわゆる格言に対してそんなガキみたいな屁理屈捏ねられてもね……
2018/01/05(金) 21:25:02.92ID:5kzCv3dH
TypeScriptをlint扱いは流石に草
2018/01/05(金) 22:31:21.64ID:EMt1frzJ
推測も測定も両方しろよ。
2018/01/05(金) 23:22:56.45ID:iSZmj121
もうPooHPでも書いてろよ
2018/01/06(土) 14:22:11.98ID:pmlj07ym
>>588
違うらしいよ、信者様によると。
2018/01/06(土) 14:24:10.80ID:pmlj07ym
>>589
意味を理解しない格言や誤謬を招かんとする格言の使い方には一言言いたくなるじゃん。
そう信じて計測だけする奴が可哀想だ。
2018/01/06(土) 14:27:48.16ID:ul9KuZX2
どう考えてもV8にコミットするのが筋だわな
別にTS批判君が全ブラウザをやらなくても、効果的な改良なら他もすぐに追従するだろう
まさかJIT結果だのVMの仕様だのキリッが付きそうなレスしてるのにC++やネイティブコンパイル分からないとか言わないよね
2018/01/06(土) 15:18:49.96ID:Zbelr2Bx
臭い奴がおるな
2018/01/06(土) 16:25:24.67ID:vE17HoYT
wasmにGCが搭載された暁には
いくらでも頑張って欲しい
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に引きずられる必要があるのかわからんが、皆がそれで良しとする理由は「中途半端で良いから」なの?
2018/01/06(土) 16:51:40.90ID:pmlj07ym
コンパイルした時点で型が消えるのに、JITに引数の型に対して何種類か載せ続けるべき関数(ジェネリクスだった関数)なのか、それともany受けてるただの関数なんか、それこそプロファイル取ること自体無駄じゃん。
最初から型ごとに吐きゃ良いのにって思っちゃいかんのか?
2018/01/06(土) 17:16:11.92ID:vE17HoYT
名前の通りbetterJS以上の認識は無いな
少なくともtscだろうとtstだろうと単なる名前に拘る奴は居ないと思う

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

>>607
どっちが馬鹿とかじゃなかろうが。
そういう発想がマウンティングとかいう発言に繋がってんの?
■ このスレッドは過去ログ倉庫に格納されています