X



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

■ このスレッドは過去ログ倉庫に格納されています
0105デフォルトの名無しさん
垢版 |
2017/12/03(日) 23:20:51.54ID:8Yd/vHN3
トランスパイルする時点で全部gotoにしちゃえばいいんじゃねえの?
ヒープは馬鹿でかい配列切り出して貸してやりゃ良いじゃん。
一番現実的だと思うけど。

と言うか間違えられてかわいそうだな。
0106デフォルトの名無しさん
垢版 |
2017/12/03(日) 23:24:33.80ID:8Yd/vHN3
トランスパイラだから、トランスパイル先の言語の作法を守らにゃならん、なんてトランスパイラは
どっちつかずのゲテモノになるなんてのが歴史的にある程度わかってきたんだから、諦めて超高級マクロアセンブラとして使うべきだと思うが、
やっぱそのトランスパイル先の美しさって必要なのかねぇ。
0109デフォルトの名無しさん
垢版 |
2017/12/03(日) 23:52:53.39ID:7jfP6ZRC
>>105
ありがとうありがとう

で、goto式だと呼び出し先も含めてひとつの関数にまとめないといけないので
他の関数をtail callしているのがつながって爆発的にコードサイズが膨れ上がる
JVMだと64kbの壁があるとかないとか ttps://togetter.com/li/280057
またモジュールを超えるとアクセス制御にかかったりもする
0110デフォルトの名無しさん
垢版 |
2017/12/03(日) 23:52:56.38ID:H7G92E6b
>>100
javascripというかecmascriptは末尾再帰の最適化は仕様になってる。
0112デフォルトの名無しさん
垢版 |
2017/12/04(月) 04:42:05.46ID:76LtUM8J
Cにはlongjumpがある。
これを使えば親の関数へどこへでも飛んでいける。
末尾再帰もオプションで設定できる。
0113デフォルトの名無しさん
垢版 |
2017/12/04(月) 08:25:09.89ID:USho8dw3
>>109
JVMだとgotoが相互に飛んでない奴らで一つの関数にまとめるしかないな。
ただ、一つの関数が64kbまで、ってそこそこ余裕あると思うよ。
関数に関数をおさめようとするから爆発的に長くなるというか、実質、関数の後ろにおまけ付いたコードが量産される事になるんだと思う。
呼び出してる側まで全部展開してしまうと割と短くなる。

昔、ホントにそういうトランスパイラ作ったけど、割としっかり動いた。
動的なメモリ確保をほとんどさせられなかったからそうなっただけだけど。

>>112
ホントに高級アセンブラだよなぁ。
0115デフォルトの名無しさん
垢版 |
2017/12/04(月) 09:02:24.71ID:dvJUWhXs
jsへのトランスパイラは現状、
jsが、webにおける機械語的な立ち位置
だからというのはわかる。

でもcへのトランスパイラってどんな意味があんの?手抜きとしか思えない。
0116デフォルトの名無しさん
垢版 |
2017/12/04(月) 09:38:18.50ID:76LtUM8J
手抜き出来ることはメリットだろ。
実装と仕様は分けて考えるべきだからな。
0117デフォルトの名無しさん
垢版 |
2017/12/04(月) 10:10:11.02ID:1pGzw3aP
手抜きっつーか、Cに変換しておけば、おおむねどんなlibcでも石でも対応するコンパイラがあるってことでは

GoみたくあらゆるものをGo内で完結させるための車輪の再発明だとか
Rustみたく欲しい環境のtripleがあるかとかtierがいくつだとか
そういう言語機能と直接的には関係ない部分のサポートに関する労力をまるっと切れるのがでかい

一時期のaltJavaやaltJSの乱立を見てると、その分言語の質が上がるかって言われたら怪しいけどな

あとllvmの台頭で、ある程度その辺を再利用できる環境が整ったから、直接機械語吐いた方がよくなりつつあるのもあるか
0118デフォルトの名無しさん
垢版 |
2017/12/04(月) 10:54:56.82ID:dvJUWhXs
>>117
自分で言ってんじゃん。
llvmだったら中間コードまでのトランスパイラ作れば最適化とバイナリはくまでやってくれるしそこまでやりゃ良いのに。

あとgoの車輪の再発明はありだと思う。
画像変換したくてimagemagicのlibに依存する羽目になるとか勘弁。
0120デフォルトの名無しさん
垢版 |
2017/12/04(月) 11:02:26.62ID:USho8dw3
>>115
最適化とかそういう所にそれほど苦労しなくなるかな
手抜きといえば手抜きなんだけど

gccをバックエンドにするなら変な石対応が簡単だし
vc++でも食えるように書けばWindowsでも余計なもの要らないし
intelのコンパイラでゴリゴリに最適化かけたりとか、
静的ビルドでワンバイナリ作りたいからCの方のコンパイルオプションでリンクしよう、とか
既存の処理系に乗っかるのはメリット多いと思う
0121デフォルトの名無しさん
垢版 |
2017/12/04(月) 11:39:21.16ID:1pGzw3aP
>>118
llvmが台頭してきたから相対的にCトランスパイルの魅力なくなってきたよなって話で、
昔はCトランスパイラで既存のコンパイル環境に乗っかるのがよく行われてたって歴史的な話な

gccが中間言語仕様を意図的に隠してた弊害とも言える
0123デフォルトの名無しさん
垢版 |
2017/12/04(月) 23:23:47.01ID:IjdODrQV
実質的にはトランスパイルだろうが何だろうが、とりあえずは関係ないが
今時ライブラリ構築を0からするというのは自分一人が使う自分専用言語だと考えても
汎用言語としてはあり得なくて、何か既存の言語のソレにフリーライドせざるを得ないわけで
となれば何に乗っかるかという部分から考えるし
それが決まってから具体的な実装方を考えるし、なんだったら自動的に決まってくるわけで

余談だが、良くある乗っかり先としては、CとJavaと.NetとJSがあるが・・・
ただ、例えばネイディブコードが良いと考えてC言語系のライブラリに乗っかるとして
C言語のABIはかなり古臭いわけで、あと、ヘッダファイルの存在がかなりエグイわけで
(windows.hをそのまま読み込める自作コンパイラとか書ける気がしない)
その言語で何かCのライブラリを使いたいときCヘッダファイルを適切に移植したのち
使いやすくするためにラッパークラスまで書くとしたら
これはもう多少気に入らない部分があってもC++を使ったほうが楽だし
ヘッダを移植するツールで自動生成する方針でも古臭いCのAPIを直接叩くのなら
何のための新言語か分からないし、だからといってラッパー書くのはバカらしいし
大概のCライブラリにはC++のヘッダも付いてることを考えるとそのままC++使ったbルうがマシ
もしC言語のヘッダを直接読めるように言語を設計するとなるとマクロなども考えると
C言語と文法的に互換性が有るように言語を作らなければならないということで
これまたあまり作る意味が無い、というか多分C++
0124デフォルトの名無しさん
垢版 |
2017/12/04(月) 23:36:03.78ID:IjdODrQV
なんで、素晴らしい言語仕様を考えることは出来るかもしれないし
頑張ってコンパイラを作ることも可能かもしれないが
結局ライブラリをどうするのかという部分が一番の問題で
0から構築するのはあり得ないから何かに乗っかるわけだが
当然乗っかり先の制約を受ける
特にネイティブコード系は一番普及しているABIがC言語のソレであり
気に入らないのでひたすらラップしまくる日々か
諦めて次世代言語の機能を生かせずアンセーフとか言っちゃって直接叩くか
0127デフォルトの名無しさん
垢版 |
2017/12/05(火) 11:01:11.59ID:NtWJrTYb
Win鯖で運用されない = Win鯖で使えない
だからな
リーナスが死んだら終わりな言語とかよく使えるな
0133デフォルトの名無しさん
垢版 |
2017/12/05(火) 21:42:34.05ID:uUkZwDzW
>>128
今のリーナスは、リリース担当兼広報。

実際のリリーススケジュールとか開発機能とかは
スポンサーの企業が決めている。
0135デフォルトの名無しさん
垢版 |
2017/12/05(火) 21:56:16.41ID:wKllXbtS
リーリスリリースリーリリスリリリリリーリスリー
リーリナリリーナリーリリナリリリリリーリナリー
0137デフォルトの名無しさん
垢版 |
2017/12/06(水) 00:55:40.02ID:5Fm3uunR
ブログ記事は信用しない
マウント取るためだけの批判の連鎖がよくあるんだと、フロントエンド界隈で学んだ
0139デフォルトの名無しさん
垢版 |
2017/12/06(水) 01:47:25.25ID:6LacDPiL
OCamlをやるとプログラム中でオブジェクト指向を使った抽象化が必要な場所はほとんど無いことに気付くよ
0140デフォルトの名無しさん
垢版 |
2017/12/06(水) 02:00:40.62ID:9Cl2Q0EY
オブジェクト指向って抽象化なのか?
プログラミングで扱うのは本質的には「操作」だが、それは人間にとって抽象度が高く理解しづらい(と考えられていた)から、
仮想的なモノに見立てることで具象化したのがオブジェクト指向だろ
0141デフォルトの名無しさん
垢版 |
2017/12/06(水) 02:19:19.87ID:EoxkbCFV
メモリとかハードウェアまわりを触るのが具象で
オブジェクトのような仮想的なものを扱うのが抽象だと思っていた
0147デフォルトの名無しさん
垢版 |
2017/12/06(水) 08:58:33.91ID:LlbO+WJR
正確にはocamlに文法として用意されたclass/objectを誰も使わないという話で、代わりにモジュールを使って抽象型も多態もするわけでそれはそれでOOの一種だとは思うな
0148デフォルトの名無しさん
垢版 |
2017/12/06(水) 09:03:36.38ID:mFUG6oMG
関数型言語をやたら持ち上げてるけど
OSを関数型言語で書いてみてよ。それでバグか少なかったら関数型言語の優位性を認めるよ。
0149デフォルトの名無しさん
垢版 |
2017/12/06(水) 09:06:07.69ID:omJYBD6x
>>147
>代わりにモジュールを使って抽象型も多態もするわけでそれはそれでOOの一種だとは思うな

ぜんぜん違うから
だがそこから説明すんの面倒くさいのでもういい
0150デフォルトの名無しさん
垢版 |
2017/12/06(水) 09:09:24.32ID:omJYBD6x
>>148
>OSを関数型言語で書いてみてよ。それでバグか少なかったら関数型言語の優位性を認めるよ。

高水準言語でOS書けって頭悪すぎないか
Rustを関数型と認めるゆるい基準なら Redox がある
0152デフォルトの名無しさん
垢版 |
2017/12/06(水) 09:45:25.42ID:enrVe2xz
>>137
>マウント取るためだけの批判の連鎖
これなくすだけでよくなるプロジェクトって世の中に大量にありそう。
0154デフォルトの名無しさん
垢版 |
2017/12/06(水) 11:07:54.33ID:YJV2uZev
オブジェクト指向ってそんなにだめかな?
そのオブジェクトに対する操作をそのオブジェクトに持たせるってわかりやすくていいけど。

immutable.jsのレコードみたく、
メソッドは新しいインスタンスを返す関数と強制すれば関数型とも共生できると思うんだけど。
0155デフォルトの名無しさん
垢版 |
2017/12/06(水) 11:16:45.83ID:enrVe2xz
別に悪いってことはないだろ。
結局、状態や依存をどう管理するかって話なわけで、極論言い始める奴の
いうことなんて話 2 割くらいにきいてりゃいいと思うけど。
0156デフォルトの名無しさん
垢版 |
2017/12/06(水) 12:05:10.45ID:MKeQWAFs
JavaScriptのようにハッシュテーブルとラムダを使う言語は関数型と共生できる
じゃあハッシュテーブルを使わない言語はなんで使わないのか?
その答えは、関数型とオブジェクト指向の対立とは全然関係ないところにある
0157デフォルトの名無しさん
垢版 |
2017/12/06(水) 21:34:09.17ID:iLCXc0pa
DOMをデータと関数に分離してくれ
0158デフォルトの名無しさん
垢版 |
2017/12/06(水) 22:04:59.32ID:FKF62WXq
まずデータをどれだけ圧縮できるか考えるといい
次に圧縮されたデータを展開する関数を作る
0159デフォルトの名無しさん
垢版 |
2017/12/06(水) 23:57:54.56ID:omJYBD6x
>>151
>言語の糞さと、周りの人間が糞だからってことばかりで、全然説明になってないな

はははははははwwww
ま、がんばれw
0160デフォルトの名無しさん
垢版 |
2017/12/07(木) 00:47:57.07ID:Z/mKUUkc
>>139
SML#でもいいですか?
0163デフォルトの名無しさん
垢版 |
2017/12/07(木) 10:03:56.61ID:xdMp5osr
typescript使っててasync awaitが便利なんだけど煩わしい。

mapとか関数呼び出しを伴う操作で非同期処理に戻るのが、
たまにミスって放置しがち。
lintツールで指摘するなり監視する機能が欲しい。
先行してるC#とかはうまくやってるの?
0166デフォルトの名無しさん
垢版 |
2017/12/07(木) 12:08:44.81ID:hv/QEVwp
何がミスなのかもわからず客が文句言ってるからで判断するバカ営業よりは価値がある。
0168デフォルトの名無しさん
垢版 |
2017/12/09(土) 02:52:58.92ID:Fh8F1Mjo
Haskellの型クラスって凄く良い機能だと思うんだけど、地味に数学感足りないよな
NumってなんだよNumって。もうちょっと分解しろよって感じだ
Numeric preludeあんまり使われてないみたいだし
0169デフォルトの名無しさん
垢版 |
2017/12/09(土) 11:23:01.73ID:/ZpR40F0
HaskellはStrictData拡張とStrict拡張が入った事で
実用的な次世代言語になる可能性が出てきた
0171デフォルトの名無しさん
垢版 |
2017/12/10(日) 02:42:38.28ID:a6n4XEL6
型なし能なしのゴミ屑言語の何がいいんだろうな
ペチパーは論外、ルビーもガイジだわ
0173デフォルトの名無しさん
垢版 |
2017/12/10(日) 05:03:18.54ID:cDa6l0J8
>>168
あれはSmalltalkってゴミ言語がヒントになった機能だからね
なぜ最初から高階多相にしなかったんだろう
0175デフォルトの名無しさん
垢版 |
2017/12/10(日) 05:53:37.29ID:g4Avn4JH
自己書き換えもできないハスケルはプログラム言語と呼ぶに値しない
純粋関数型プログラム言語(自称)ハスケルw
0176デフォルトの名無しさん
垢版 |
2017/12/10(日) 05:56:33.48ID:of8IRKO8
Haskellは+や-といった演算子がNumに取られてるせいで
オーバーロード的なことが非常にやりにくいのが不便
<+>みたいな演算子は独自定義できるがなんかダサい
0179デフォルトの名無しさん
垢版 |
2017/12/10(日) 10:35:00.41ID:IzGEuZzn
詭弁でもなんでもないだろ
静的言語の型こそまやかしだと思うが。
特にそれがただの「コンパイラだけが知っているメモリへの格納方法」である言語は、動的言語の型よりも型がないと言えると思うけど?
0180デフォルトの名無しさん
垢版 |
2017/12/10(日) 11:12:55.67ID:mFrbF+Wk
はいはいペチパーはPHPスレから出てくんなクソが
君の大好きな肥溜めPHPみたいな動的型付け言語に型はねーから
0182デフォルトの名無しさん
垢版 |
2017/12/10(日) 11:33:37.68ID:ATSfYuOI
まあいくら静的型でも本物のコンパイラはこんな性格悪くないから気にするな
ここにいるやつはコンパイラの守護霊だ
0183デフォルトの名無しさん
垢版 |
2017/12/10(日) 12:16:37.53ID:OZ32lk+t
動的でも静的でも最近は型は強くする方向にはあるかもね。
c とか perl に比べれば java でも python でも十分型を強くしてる印象。
0185デフォルトの名無しさん
垢版 |
2017/12/10(日) 13:03:02.46ID:IzGEuZzn
PHPだとは言ってないのにな。
そもそもPHPと口に出すのこいつぐらいじゃね?
0187デフォルトの名無しさん
垢版 |
2017/12/10(日) 13:44:56.60ID:H+wQ5ZRg
>>173
Smalltalkは自身がゴミ言語であるだけでなく
後世の言語にも負の影響を与えてるので
本当に害悪だな
0189デフォルトの名無しさん
垢版 |
2017/12/10(日) 14:14:10.45ID:ATSfYuOI
型情報に限らず情報ってのは冗長な部分が省略される
省略したからといって必ずしも情報が失われるわけじゃない
0191デフォルトの名無しさん
垢版 |
2017/12/10(日) 15:25:19.15ID:Hk+Muhn7
皮肉も理解できないペェチピィコンパイラ並の低脳ガガイノガイがおりゅってマ?w
0193デフォルトの名無しさん
垢版 |
2017/12/10(日) 15:51:27.08ID:ATSfYuOI
>>190
型情報があるだけでなく情報を取得するアルゴリズムがある言語
アルゴリズムがあればモンティホール問題みたいに計算を間違えるやつが続出しない
0197デフォルトの名無しさん
垢版 |
2017/12/10(日) 18:08:14.35ID:7rwMCdFh
PHPをけなしてるだけのやつって、ほかの言語知らないから、PHPをdisって心の平穏を保ってる、可哀想なやつなんだろうな。
頑張れよ。
0201デフォルトの名無しさん
垢版 |
2017/12/10(日) 19:23:08.38ID:1f8aW6Mh
自己書き換えできるかどうかでプログラム言語と呼ぶかを決め奴がなんか言ってる
0202デフォルトの名無しさん
垢版 |
2017/12/10(日) 19:50:19.80ID:Hk+Muhn7
けなすってーかただの事実言うてるだけやん
ゴミ言語のペチプァ〜さんは何をそんなに怒ってるだ今さら?
■ このスレッドは過去ログ倉庫に格納されています