次世代言語12 Go Rust Swift Kotlin TypeScript
■ このスレッドは過去ログ倉庫に格納されています
スレタイ以外の言語もok
前スレ
次世代言語11[Rust Swift TypeScript Dart]
https://mevius.5ch.net/test/read.cgi/tech/1528037607/ >>114
> ALGOL舐めてるわけ?
AlgolとくにAlgol 60は実用性はともかく言語設計の観点からは非常に優れた言語だったが、命令的言語であるがゆえに型理論には馴染まない部分がある
今回の君のような内容ゼロの一言レスしてる暇があったら、ReynoldsやTennentの教科書・論文ぐらいは読んで勉強したらどうよ >>117
そうか?式指向でC系のシンタックスっていったら真っ先にRustが頭に浮かんだが
別に不格好とも無駄に記述量が多いとも感じないが…
そもそもC系の時点で何指向だろうが関数型と比べると記述量は少し多くなるものだし…
C系を式指向にしたところでそんなに変になるところは無いと思うんだが
別に全部C系にしろって言ってる訳じゃないんだ
依存型ありの言語にも1, 2個くらいC系があっても良いのにっ思ってるだけで… 現実は正しい
格付けの方が間違ってるんじゃねえか
リーマンショックみたいに あってもいいということはなくてもおかしくないという事だよ
言語設計者が依存型を普及させたいにしてもC系シンタックスを蛇蝎の如く嫌っている可能性だってある訳だ
そうでない君が依存型+C系シンタックスが普及に必要だと思うならそれは正しく良い意味で言い出しっぺの法則だね >>120
rustは根っこのところは手続き型だからな
もっと式ベースを徹底していったらC系文法なんてどんどん余計なものになってくよ 式指向にしてブロックが値を返す
ブロックの中でreturnなどと書いたらブロックだけではなくメソッド全体が終了する
これSmalltalkとRubyでやったやつだ >>124
>ブロックの中でreturnなどと書いたらブロックだけではなくメソッド全体が終了する
他のほぼ全ての言語もそうじゃね? やっとラムダが当たり前になったところだぞ
型理論の成果がプロダクト利用に広まるには時間がかかるんだよ なんでJavaだけバージョンアップしなきゃだのセキュリティアップデートがどうの、大騒ぎしてんの?
JavaScriptなんて毎日のように新しいsyntaxぶち込まれてるし、
Kotlinがここまでアプデに振り回されてるのはあまり聞いたことない気がする
他でここまでセキュホがギャースカ言われてるのって、ポンコツペチプァとWordPressくらいじゃね?
Javaってそんな糞脆いの? >>108
詳しい人から見てF*ってどうなん?良さそう? >>127
エンプラで使われまくってるからわずかな変更にも大騒ぎするというだけ
履歴書がフォーマット通りじゃないとか、書類に印鑑がないとか、工場作業員の歩く幅が守られてないとか、そういうので騒ぐと同じ javaというのは汲み取り式の便所みたいなもので、それに下水と近代的な便座を取り付けたのがkotlinだが、結局大便か小便かあるいはその両方をひり出す装置だということに気づかず、エレガントなクソの仕方について議論しているのが奴らだからな
いきなり外に出ろと言われても、オラクルにオツムを履かせてもらわないと不安で仕方ないんだよ omutu {
ブリッ()
} catch(unko) {
throw unko
} >>133
人の頭をオムツ代わりにするとは、家畜人ヤプー的な変態だろう そのRustを語るとコンパイル通せないアンチが沸くしな メモリ制御しなきゃいけない世界が無くなることはよしんばあっても当分先なのでメモリ制御できる言語の更新はあった方が皆幸せになると思うんだけどな 車輪に怒られるだろ
せいぜい定年後の手作りログハウスだな GCはメモリには効くけどリソースの速やかな解放には効かないから
using文とかtry-with-resources文とか必要になってくる
SwiftやRustとかはメモリはGCほどお手軽では無いけど
リソースがメモリ管理と同じ流れに乗るからカメラとかのAPI扱うときはむしろ楽になる
一長一短なところはある 実際問題ログハウスで十分なところを最近の言語はウインチェスターハウスにしちゃってる感じ。 ログハウスはお手軽という意味で例に出したんじゃないんですけど ログハウスで充分な仕事しかしてないのにウィンチェスターハウス作れる言語に目が向いてこんなスレに迷い込んでしまったの間違いでは ほんまに計算科学の次世代言語欲しいわ
Fortranさん仕様は悪く無いのにprint文書くだけで周りの計算結果変わったりしてコンパイラがガバガバすぎる >>154
すぐバグるんだよな
gfortranで通ったし大丈夫だろって思ってたらifortでは通らなかったり、C++よりはるかにプログラマの責任が重いと思うわ fortranは仕様より処理系依存の独自拡張が蔓延ってるイメージ
haskellも処理系拡張が基本みたいな所あるしそういうの好きになれない 処理系が実質ひとつしかない言語だと処理系拡張が基本でも困らないけどね ____
/⌒ ⌒\
/( ●) (●)\
/::::::⌒(__人__)⌒::::: \ 次世代言語でやるお!
| |r┬-| |
\ `ー'´ / rustはダメだな。
信者のウザさがhaskellと一緒だわ。
ああいう1機能を理解するのがめちゃくちゃ嬉しくなっちゃうような言語はダメだわ。 信者のウザさとか言う概念なんなん? 何を見て判断してんの? リアルの知り合いじゃね
Rust信者には会ったことないが、Haskell信者のウザさは割とガチだな >>164
逆に言うとウザい知り合いが使ってる言語はダメってことか……
生き辛そうな人だな > 信者のウザさ
自分では到底習得出来ない言語を
楽しげに使いこなしてる事に対する嫉妬でしょ? なんで所有権の移動という一度しか起こらない元値を破壊するものが印なしで
参照の借用渡しが&にしたんだろう リアルうざい知り合いはモチベーションに影響するからなあ
いくら物が良くても距離を置くのはそれはそれで賢い処世術 またUXの話してる
親がUX 社会がUX 信者がUX あぁ、わからんでもない
言語じゃなくライブラリの話だが
仕事で使ってるライブラリを大して覚えようともせずVue.jsを猛プッシュしてくる中国人が、同僚に居て大嫌いになったわw
日本で流行ってる!ていうのもペチパーのCakePHP臭がして近寄りたくない 楽しげに使ってるというよりかは
楽しいと思い込もうと必死になってるといった印象だから嫌なんだよ。。
それ絶対楽じゃないよね、もっと簡単なやり方あるよねって話が一切通じなくなるっていう。。 なんてこった。このスレは昔からリアルの友人報告スレだったのか…… rustの狂信者なんて5chですら見たことないけど >>168
C/C++の&演算子と仕様を合わせただけだろ
仮に借用に&を使わない場合はどうするのが良いと思うわけ?
あと「元値を破壊」ってどう言うこと?
「移動」と「破壊」を同義として使ってるの? >>172
Haskellに対してならある程度は同意する
でも、Rustに対しては同意できないな
メモリ管理を自力でするのではなくコンパイラに任せる
メモリリークは自力でデバッグして解決するのではなく
コンパイラに詳細なエラー情報を表示して解決を手伝ってもらう
コンパイルが通ればメモリリークが無いことが保証される
きちんと楽で簡単になってるじゃん
GCの無い言語であれより楽で簡単にメモリ管理を行う方法を俺は知らない
知ってたら教えてほしい >>178
半ば本気で言うが c++ で生ポインタ使わなければ概ね実現できるんじゃないか
「〜すれば」は(しないこともできちゃうから)ダメとか、
その場合の効率はどうなんだとか議論の余地はあるだろうけど GCが有っても、不要になったデータは破壊される
ただしその事実が隠蔽される
Haskellでもデータは破壊され、隠蔽される
もし隠蔽しなかったら、破壊的代入禁止という無理ゲーがもっと簡単になるよね
だからRustはGCをやめ、隠蔽するのをやめた 破壊的代入禁止が無理ゲーってどこのドカタ星の話だよ
Rust使ってると脳が破壊されるのかな? そんな旧約聖書にだって書かれているようなことは議論の余地もない rustは次世代言語の逆で、幼児退行言語。
rustの所有権は、赤ん坊のおしゃぶりと同じ。
おなかすいたらGCおかあさんのおっぱい吸えばいいのに
いつもおしゃぶりを握っていないと不安になるだけ。 不可抗力的にお母さんのおっぱいが出ない(パフォーマンス上制約のある)現場はどうするのか
幼児退行を悪い事として述べる為におしゃぶりという例を用いているのに、良いものとしておっぱいを挙げているので幼児退行と非幼児退行の良し悪し比較がおしゃぶりとおっぱいの比較になりレスの中で批判の比喩が統一されていない
何かに例えてもふわっとしか批判できないのにそれを通り越して例えに統一感がない無意味さの塊みたいなレス おっぱい(GC)で十分なのに、実際は効果のない何かを手で握ってないと不安な幼児退行ってことだろ
おしゃぶりじゃなくてガラガラって方が例えとして正しいと思うが
Rustが幼児退行言語ってことには激しく同意する
もうちょい踏み込むとアダルトチルドレン言語か?
ママのおっぱい(GC)には頼りたくないけどガラガラ握ってないと不安なクソガキメンタル スレッドセーフなARCと
シングルスレッド専用ARCと
mark&sweepのようなもの
を使い分けたい=宣言したいという需要がとても強い
どう強いかっていうと、int型とdouble型とstring型を宣言したい需要と同じ種類の強さ そういえば最近GCも
新しいアルゴリズムやらで改良されてるね ガラガラ握り続けてないと不安で不安で仕方ないRustちゃん
巡回参照を持てない時点で使い物にならない言語なんだよなあ どのcpuでもinterlockedなインクリメントやデクリメントがあるから、
よほどコア数大きくない限りそんなに違いでないのでは?
測ってないけど。
>>スレッドセーフなarcとシングルスレッド専用のarc >>188
ラストスタンディングマン方式でレスバしてる板の定型文はNG >>195
おっぱいおっぱい言ってるレスへの返答なんて適当でいいでしょ rustみたいな言語が一般に広まっても
結局無理やりコンパイル通すためにRefCell,unsafe使いまくりのクソコードが
蔓延するだけなんだよね。
「コンパイル通れば安全」とかね、プログラムのバグの多くはそんなところにはない。 まあRustなんてやってる奴は、
悪いこと言わないからCやC++やってろってこった どんな現場にいたら >>198 みたいな歪んだ考えをもつんだ?
気の毒すぎるだろ >>175
デフォルト借用
破壊というと御幣があるが、C++の仕様をいうならなおさら
auto_ptrへの所有権移動で
=だけで移動するのがわかりにくいからって非推奨になった経緯がある >>200
C,C++は習得した上で趣味でやるもんでしょ。 >>198
動的言語でできることはすべて静的言語でもできる
この性質により、お前らが気に食わないコードでもコンパイルが通る
RefCellはコンパイル時ではなく実行時にborrowチェックしているようだな
まるで動的言語のようだ >>202
デフォルト借用なら移動の方はどんな演算子orキーワードを導入するの?
>auto_ptrへの所有権移動で
>=だけで移動するのがわかりにくいからって非推奨になった経緯がある
それはC/C++の=はもともとコピーのセマンティクスを持つから移動に変えたら分かりにくいって事情があったからでしょ?
RustはCとの互換を捨ててるからCのセマンティクスの影響は受けない
でも、Rustは互換は捨ててもCとの親和性は欲しいという都合(ワガママとも言える)があるから
Rustの参照(借用)はC/C++の参照と似たようなセマンティクスになる&で妥当だと思うけど?
C++とRustのコピー・移動・参照(借用)の方法を整理すると↓になる
C++
コピー : =
移動 : std::move()
参照 : &
Rust
コピー : Copyトレイト
移動 : =
参照(借用) : & C++ユーザー取り込むために文法にせてるのに
肝心のところでC++ユーザーが混乱するじゃないか…
どうせ=で移動したって参照わたしてるんだから&の意味がズレてる
所有権の移動という重要なできごとにこそ別途印がつくべきだった >>179
>半ば本気で言うが c++ で生ポインタ使わなければ概ね実現できるんじゃないか
出来ると思うよ
でも、C++はRustよりもさらに複雑怪奇な仕様で使いづらい
C++のスマートポインタは正しい使い方をすればRustに負けず劣らず優れてるけど
それは、同程度に優れているだけであってRustより優れているとは思わない
あと、少し話が変わるけど実はRustの最も優れているところは
所有権・借用・ライフタイムの概念よりもエラーハンドリングだと思ってる
あのResult型とErrorトレイト・Fromトレイトとtry!マクロ(?演算子)を使用した
エラーハンドリングの方法は個人的には感動するレベルの代物だった
今後の次世代言語のエラーハンドリングは全てあれをベースに発展させていくべきだと思うほど気に入っている >>207
>どうせ=で移動したって参照わたしてるんだから
あれ?それって仕様として決まってるんだっけ?
コンパイラの最適化の結果としてそうなるってだけじゃなかったっけ?
>>所有権の移動という重要なできごとにこそ別途印がつくべきだった
いや、だからその移動に何の印を付けるのがいいと思ってるの?
俺は借用には&が妥当だと思うとは言ってるけどベストだとは言ってないじゃん
ベターな代替え案があるなら俺だって意見を変えるよ x = f(x) とか
C++で有名な x = x とか
これらはmoveが最善 Rustも=でコピーのことがあるから余計ややこしい
let p = q ってかいてあってqがその後も使いまわせるかぱっと見わからんとか
ポインタっぽく普段の=は参照渡しで&が所有権移動にすりゃよかったとおもう スレチなんでちょっとだけ、C++は別に複雑では無いよ
プリプロセッサは氏んだほうがいいけど 書いてて初めて気が付いた
実際に触ったことないから想像で書いてるんだが
>let p = q ってかいてあってqがその後も使いまわせるかぱっと見わからん
ほんとにこういう仕様なのか
使いづらすぎんかこれ? 使い回せるかどうかはCloneトレイト実装してるかどうかに依存する
つまり見た目ではわからない
まあそもそも古い変数を変なとこで使い回す設計って普通にバグの元だし
ぱっと見てコピーかムーブか分かるかどうかが重要かと言われると確かに怪しい
ぱっと見で区別が必要なコード書くなって話だな 使い回せるかどうかは、ぱっと見た時ではなく、コンパイル時にわかる
ぱっと見てわかるならコンパイラいらねえよ スクリプト言語以外はとりあえずgoやっときゃええの? ■ このスレッドは過去ログ倉庫に格納されています