X



次世代言語25 TypeScript Swift Go Kotlin Rust Nim
レス数が1000を超えています。これ以上書き込みはできません。
0003デフォルトの名無しさん
垢版 |
2022/04/17(日) 20:50:44.94ID:jKBP2PvH
プログラミング言語は以下の3つに分類される
CとC++ ←省メモリ高速だが、メモリ解放でミスると危険
GC言語 ←省メモリ高速ではないが、メモリ解放は自動で気にしなくていい
Rust ←省メモリ高速だが、メモリ解放は自動で気にしなくていい
0004デフォルトの名無しさん
垢版 |
2022/04/17(日) 22:01:20.83ID:ki8GFFnY
「省メモリ高速ではない」はNANDなのかNORなのか
プログラミングの才能無さそうな日本語
0006デフォルトの名無しさん
垢版 |
2022/04/17(日) 22:37:31.27ID:Xo1y3bfH
僕は生前、同業・Googleの言語センス同調圧力に抗うも努力は虚しく、無残な敗北を余生噛みしめる結果となった。

君たちには底辺職言語オタクの僕の分まで、強く自由に生きてほしいデス。
0007デフォルトの名無しさん
垢版 |
2022/04/17(日) 22:58:55.21ID:xE2XgYmS
PHPの”勝ち”やね・・・

"1000" 名前:デフォルトの名無しさん[sage] 投稿日:2022/04/17(日) 22:31:30.13 ID:xE2XgYmS [6/6]
1000ならPHP大復活時代でルースターズを蹂躙レイプする
0008デフォルトの名無しさん
垢版 |
2022/04/18(月) 00:05:49.90ID:RiOKXL41
>>7
PHPもタイプヒンティングちゃんと使っていったら悪くないんじゃないかね。
結局日本国内のWeb系じゃ一番使われてるし。
0010デフォルトの名無しさん
垢版 |
2022/04/18(月) 02:55:12.95ID:X0td+574
C++使っててもコンテナクラス使うかスマートポインタを普通に使っていればメモリリークすることは殆どないでしょ。
手動でnewとdeleteしなくてはいけない時ってある?
0014デフォルトの名無しさん
垢版 |
2022/04/18(月) 07:21:19.73ID:6Qt778/v
>>10
リークというかダングリングだけど、人が書いたメソッド中身見ないで使ってると参照切れてたり日常茶判事だよ
0015デフォルトの名無しさん
垢版 |
2022/04/18(月) 07:25:53.68ID:usoGfIPO
>>10
そういう問題じゃないんだよ
スマートポインタ使わないで実装できてしまうことでこれまでどれたけの脆弱性をうんだか、という問題
0016デフォルトの名無しさん
垢版 |
2022/04/18(月) 07:45:20.51ID:3ssVn6Z5
>>10
・スマートポインタを使い忘れてもコンパイルが通ってしまう
・スマートポインタを間違って使ってもコンパイルが通ってしまう
後者はC++ベテランでも複雑化するとうっかりミスがある
・そもそも毎回unique_ptr指定が面倒かつ無駄なのでデフォルト適用にして欲しい
0017デフォルトの名無しさん
垢版 |
2022/04/18(月) 07:51:49.28ID:usoGfIPO
新しいプロダクトできました。メモリーリークはないです。
なんでいいきれるの?
Rustで、実装してるからです。
ああ、納得。

こんな感じで会話できるかどうかの差はものすごく大きい。
0020デフォルトの名無しさん
垢版 |
2022/04/18(月) 09:12:25.91ID:33Ybip/c
Rustの文法すごい好きだから、c#ぐらいのノリでかけて文法がRustっぽい式指向な言語が欲しい
0021デフォルトの名無しさん
垢版 |
2022/04/18(月) 09:21:04.84ID:usoGfIPO
なんでもその言語はC#のノリで書けるらしい

Goやないかい!

GoはC#のノリで書けるんやから!

俺はなんでもオミトオシやねんから!

Goやそんなもんは!
0022デフォルトの名無しさん
垢版 |
2022/04/18(月) 09:33:56.22ID:Hv7oPs1o
>>20
Rustの構文や標準メソッド等ほぼそのままに
所有権と借用ルールとライフタイムだけを削除というか無視して処理するGC言語『GC-Rust』を作るとよいかもね
プログラミング初心者入門用にもなるし速さ省メモリを必要としない場でも使えるような
多少遅くてもいいのだからインタプリタ型でも十分かもね
あとは所有権参照借用lifetimeだけ学べば本物のRustへすぐに進める
0023デフォルトの名無しさん
垢版 |
2022/04/18(月) 09:43:43.33ID:4vneGtME
>>19
ツール系はいくつかrust製があるね。
ripgrepもなかなか良いよ。
0024デフォルトの名無しさん
垢版 |
2022/04/18(月) 09:46:35.13ID:33Ybip/c
>>22
あーそんな感じだな
GC付きのRust欲しいわ
0026デフォルトの名無しさん
垢版 |
2022/04/18(月) 11:06:57.46ID:e4wxGEsZ
もう調べてるかもしれないけどもっと現実的な話で式志向がいいならF#どうっすか
0027デフォルトの名無しさん
垢版 |
2022/04/18(月) 11:23:46.03ID:X0td+574
>>14,15,16
スマートポインタを使い忘れるってことはmake_sharedかmake_unique使わないでnew使ってるってことだからgrepすれば簡単に見つけられる。全ての関数の引数の型とクラスメンバの型に生ポインタが無いようにすれば間違った使い方をして生ポインタがでてきてもコンパイルエラーなる。(もしそれらに生ポインタがあっても正規表現使えば見つけられるだろうし)
0028デフォルトの名無しさん
垢版 |
2022/04/18(月) 11:32:19.66ID:Yow4FQAb
>>27
そんな面倒なことをせずとも無指定でunique_ptr相当になるRustを使った方が楽でいいな
Rustなら他にも忘れたり間違えたりすればコンパイラがエラーとして詳しく指摘してくれるし
0030デフォルトの名無しさん
垢版 |
2022/04/18(月) 11:47:49.11ID:GWhRkThq
>>27
ある瞬間自分の書いたコードだけチェックできればいいってならその通りだとは思う
ただ実際には依存ライブラリや他の人が入れてくるコード全てを常時チェックし続けないといけなくなるし
もし依存ライブラリがnew使ってたとして毎回フォークして書き直すのか?という問題もある
0033デフォルトの名無しさん
垢版 |
2022/04/18(月) 12:27:52.69ID:FXKoB+ib
>>28
引数渡しがデフォルトmoveじゃなければよかったんだかな。
デフォルトconst 参照で組まれていたらずいぶん学習しやすくなったと思う。
0034デフォルトの名無しさん
垢版 |
2022/04/18(月) 12:35:25.60ID:pNu/+WEX
所有権のmoveセマンティクスらへんがRustの最大の文法的特徴なのに、そこがいらんとな
最初からKotlinとか使ってればええやんか
0035デフォルトの名無しさん
垢版 |
2022/04/18(月) 12:42:20.62ID:FXKoB+ib
>>34
C++以外のユーザーがRustを学習するときの一番の難所でもあるけどな。

実際、不変借用は頻出しそうな気がするけど、性能ペナルティーとかあるのかね?
0036デフォルトの名無しさん
垢版 |
2022/04/18(月) 12:52:02.32ID:4vneGtME
rustはインストール先がユーザーホームディレクトリの下なのが何だかな。
マルチユーザーで使う場合が手間かかる。
0037デフォルトの名無しさん
垢版 |
2022/04/18(月) 13:04:30.11ID:nKPrtbqz
>>33
それはおかしい
一般的に参照を引き渡すということは様々な問題を生じさせるということ
競合の種も産むし参照切れの種も産む
だから参照を引き渡す方が記述コストを増やすことこそ道理
次に
C言語でもポインタ参照渡しは&を付けて表記する
したがって無印よりも&前置こそ参照渡しに相応しい
0038デフォルトの名無しさん
垢版 |
2022/04/18(月) 13:08:07.19ID:usoGfIPO
>>30
これ。
見つけたからってどう住んだよ?って話だよな
他社のコードを修正できないし、そもそもそんなチェックを未来永劫担当者に引き継いでいけるのか?ってこと
個人でできることと、組織やプロダクト関係者全体としてできることは違う
0039デフォルトの名無しさん
垢版 |
2022/04/18(月) 13:33:30.85ID:X0td+574
>>30,38
そんなこと言ったら、Rustでも他人の書いたコードにunsafeが入ってる可能性もあるでしょ。

>>33
Nim言語だとデフォルトで不変コピー渡しだけど引数のサイズが一定サイズ以上(確かポインタサイズの3か4倍以上)だとポインタで渡すようなコードを生成するんだよね。

>>37
Rustは参照を使ったときの問題が起きないようにコンパイル時にチェックしているんだからデフォルトがconst参照渡しでも問題ないんじゃないの?

Rustって借用したり借用を参照するときに&や*をつけないといけないけどその結果コードの見た目が生ポインタを使ってるCのコードに似てるんだよね。暗黙に借用したり参照しちゃダメって考えでそうなってるんだと思うけど。
0041デフォルトの名無しさん
垢版 |
2022/04/18(月) 13:51:24.45ID:vMsThGEl
>>39
>Nim言語だとデフォルトで不変コピー渡しだけど
>引数のサイズが一定サイズ以上だとポインタで渡すようなコードを生成するんだよね。

この議論でそんな話を持ち出す時点であなたは以下の理解が足りない
一般的にプログラミング言語によるセマンティクスと最終的に生成されるコードは全く無関係でありそこに関連があってはいけない独立のものである
完全に独立したものであるが故に最終コード生成オプティマイズを十分にすることが可能となる
0044デフォルトの名無しさん
垢版 |
2022/04/18(月) 14:11:19.47ID:usoGfIPO
プログラミングを勉強しようと思って
なにを勉強すればいいか先生に聞いたらパイソンっていうから
検索したら大きな蛇の画像とかがでてきたのでやめたわw
0045デフォルトの名無しさん
垢版 |
2022/04/18(月) 14:29:04.41ID:X0td+574
生成されるコードがプログラミング言語のセマンティクスと無関係じゃだめでしょ。
コード生成はプログラミング言語のセマンティクスと矛盾しない範囲内で生成しないといけない。コンパイラはその中で最適なコードを生成しようとするわけでしょ。
Nimではデフォルトで引数はプロシージャ内で変更不可(変更しようとしたらコンパイルエラー)だから引数の型のサイズに併せて生成するコードをコピー渡しにしたりポインタ渡しにできるわけで。
もし引数が可変参照渡しだと引数の型が1バイトでもコピー渡しでは無くポインタ渡しにしないといけない。関数がインライン展開されると話が違ってくるけど。
0047デフォルトの名無しさん
垢版 |
2022/04/18(月) 14:49:14.45ID:pGCdIhc3
「プログラミング言語によるセマンティクスと最終的に生成されるコードは全く無関係」そんな訳ない、RustはLLVMのIRを前提に
コードが吐かれるし、コードのリンケージをアトリビュート指定できる。C言語だって同様だし、むしろ、ハードウェアよりの低レベルな
システムプログラミングが可能な言語であれば、生成されるバイナリが厳密に言語の「セマンティック」を決める。
例えば今どきのCPUには分岐予測命令があるが、これに対応するstd::intrinsics::likelyのような分岐予測にヒントを与える、
セマンティクスはCPUがサポートされていれば100%生成されるバイナリがそうなる事を望む。無関係などありえない
0049デフォルトの名無しさん
垢版 |
2022/04/18(月) 14:57:34.06ID:2ZPl5Bs7
>>45
その言語のセマンティクスとしてimmutableで渡すケースでも
値をポインタで渡すか値自体を渡すかはどちらでも構わないから言語のセマンティクスとは別問題

もっと顕著にわかりやすい例
構造体を一つ返す関数があったとする
小さい構造体なら値を返すだろうが
大きな構造体なら領域を用意してそこに書き込んでそのポインタを返すかもしれない
あるいは関数を呼ぶ側が領域を用意してそのポインタを裏引数として渡してそこへ返す値を書き込むかもしれない
このように3種類考えられるが呼ぶ側と呼ばれる側で一貫していれば目的を果たす
プログラマーはその生成コードが3種類のどれになるかを把握する必要はない
つまりそこで明白にレイヤーが分離される
0050デフォルトの名無しさん
垢版 |
2022/04/18(月) 14:59:44.25ID:X0td+574
>>33
もし文字列のベクタに文字列を追加する関数があったとき文字列が参照渡しでその関数が実行された後もその文字列が読まれていると、その関数は文字列をmoveすることができずコピーしなくてはならなくなるからじゃないかな。
メモリコピーは遅いから絶対に許さない人にはデフォルトがmoveのほうがいいのかも。
0051デフォルトの名無しさん
垢版 |
2022/04/18(月) 15:02:16.44ID:pGCdIhc3
>>48
現状はIR前提でしょ、完成してない未来のものを持ち出すのであれば何とでもいえる。というか上で言ってる本題とはずれる
そんなところに食いついて来てしょーもないわ
0052デフォルトの名無しさん
垢版 |
2022/04/18(月) 15:06:33.88ID:i02G9WD5
>>47
Rustでもセマンティクスと生成コードは独立だよ
例えば>>49の関数が構造体を返す例
生成コードは言語仕様で定められていないしあなたも方法を答えられないでしょう
実際にRustで大きな構造体を返すと所有権を活用して驚きの最適化したコードを生成するよ
0053デフォルトの名無しさん
垢版 |
2022/04/18(月) 15:10:05.22ID:uPETy31e
>>51
開発中で完成してないとは言っても実行バイナリの
生成もできないという状態ではないから
あなたの話とは違うというか
あなたの主張は間違ってるという例になってますよね
0054デフォルトの名無しさん
垢版 |
2022/04/18(月) 15:19:05.87ID:pGCdIhc3
>>52
「生成コードは言語仕様で定められていないしあなたも方法を答えられないでしょう」
え?RustにもちゃんとFFIなどextern "C" {}ブロックがあるでしょ?生成コードは言語仕様で定められているし、このようなデータの受け渡しは
参照や可変参照の制限、ボローチェックなどがOFFになる。C言語やD言語やNimも同様でしょ、これが出来ない言語はシステムプランニングが
できる言語とは言えない。
「Rustで大きな構造体を返すと所有権を活用して驚きの最適化したコード」
どのような驚きのバイナリを生成しようと、例えばゲームエンジンのUnityなどでデータを渡す場合に所有権をRust側で保持したままのような
コードではUnityなどでメモリー管理されるので問題が出る。だから呼び出し間でどのようにデータを受け渡すか当然指定できる
0055デフォルトの名無しさん
垢版 |
2022/04/18(月) 15:20:54.20ID:pGCdIhc3
>>53
何を言いたいのか1つも分かりません。。。あなたの勝ちでゴリラのようにマウンティングをしてください、どうぞ
0056デフォルトの名無しさん
垢版 |
2022/04/18(月) 15:33:12.79ID:mb/oYyn3
>>54
FFIを理解していないアホですか?
例えばそのextern "C"した時のみC言語の受け渡しインタフェースに従うだけ
どの言語でもFFI使わなければ各言語が自由自在の方法を取る
0057デフォルトの名無しさん
垢版 |
2022/04/18(月) 15:38:01.47ID:4qMH/RHY
>>39
引数のサイズが一定サイズ以上だとポインタで渡す

それはそれで他者が変更したときの挙動が変わるから怖いよね。
特に並列作業時。

>>50
const参照をデフォルトにしたら、そのあたりは引き渡し時にmoveを明記するんだろうね。あるいはCOWで実装するか。

もしかしたらRustに「権利を持つオーナーは極力少なく・小さくする」というポリシーでもあるのかな?
0058デフォルトの名無しさん
垢版 |
2022/04/18(月) 15:47:16.94ID:pGCdIhc3
>>56
さっきからID変えて絡んでこなくてよいですよ、「extern "C"した時のみC言語の受け渡しインタフェースに従う」セマンティクスと生成コードが決まりますよね。
アホと言えば誰もしもが感情的になるわけではないです。FFI使わなければなんて話をしていませんし、「プログラミング言語によるセマンティクスと最終的に
生成されるコードは全く無関係」という理想論のような現実を知らないコンピューターサイエンス学科の学生のような言葉を否定してるだけです。
0059デフォルトの名無しさん
垢版 |
2022/04/18(月) 15:50:35.11ID:X0td+574
>>57
デフォルトで引数は不変が前提なので引数の型の定義を変更してポインタ渡しになったとしても基本的には挙動は変化しない。
引数のアドレスをとってれば挙動が変化するかもしれないけど、Nim言語は明示的に変数のアドレスをとることは危険な行為で自己責任でやれってことになってるから。
0060デフォルトの名無しさん
垢版 |
2022/04/18(月) 16:01:25.50ID:hx/TPiWJ
>>58
普通のプログラムでC言語FFIなんて使わないです、そして、その特殊ケースはどうでもよい話です
一般的に言語が定めるセマンティクスと生成コードは別階層なので独立しています
0061デフォルトの名無しさん
垢版 |
2022/04/18(月) 16:06:01.92ID:buwrQlsl
>>57
静的型付けで型サイズが定まる普通の言語ならば大丈夫
引数や返り値がポインタ渡しになるか値直接渡しになるか
型サイズ次第で変化しても一貫していれば構わない
0062デフォルトの名無しさん
垢版 |
2022/04/18(月) 16:44:49.00ID:pNu/+WEX
>>57
> それはそれで他者が変更したときの挙動が変わるから怖いよね。
> 特に並列作業時。
横レスだけど、明らかにそういう話じゃない
0063デフォルトの名無しさん
垢版 |
2022/04/18(月) 17:00:59.75ID:VCJMEsmD
普通にカーネルのシステムコールするだけでC言語のFFI使ってますよ、DBアクセスするにもSQLiteでもMySQLでもPostgresqlでも使用してますし
TCP/IPスタックにアクセスするにもFFI使ってます、もしや特殊なのはあなたなのでは?ガン無視されて独立しているのは、そんな詰まらないことで
言い張るあなたなのでは?
0064デフォルトの名無しさん
垢版 |
2022/04/18(月) 17:04:14.33ID:uPETy31e
Kotlinみたいな出力先がjvmとjsとネイティブがあるのは
このひとの中でどう解釈するんだろ
0065デフォルトの名無しさん
垢版 |
2022/04/18(月) 17:15:12.72ID:RntYGm+C
>>63
そんなことは誰でも知っているがこの流れとは無関係な話
各FFIはそのFFIの指定に従う
逆に言えば各言語の普通のコードではFFIなんて関係ないので各言語で完全に自由
だから引き数や戻り値のサイズに拠ってポインタ渡しか否か変わる言語もある

プログラマーはそれらを知らなくてもプログラミングできる
各言語が定めるセマンティクスだけ理解すればプログラミングできる
つまりセマンティクスと生成コードは完全に独立した別階層であり無関係
0066デフォルトの名無しさん
垢版 |
2022/04/18(月) 17:19:02.78ID:e4wxGEsZ
この話の終着点どこ?
「お前はアホだから黙れ」が立証できれば満足するの?
0068デフォルトの名無しさん
垢版 |
2022/04/18(月) 17:33:30.39ID:4qMH/RHY
>>59
あ、不変前提ね。勘違いしてました。

>>67
変数もデフォルトで不変借用にする、とか。戻り値の受けが面倒臭くなりそうだけど。
0069デフォルトの名無しさん
垢版 |
2022/04/18(月) 17:41:53.44ID:mz+noJnQ
>>68
Cの(ポインタ)参照が前置&だから
Rustの(借用)参照も前置&にした現状仕様がわかりやすいと思うけど、なぜ変えたいの?
0070デフォルトの名無しさん
垢版 |
2022/04/18(月) 17:58:50.26ID:Em1ZPrJL
>>68
変数の代入をデフォルトで参照にするとmutが絡んできたときにborrow checker周りでとてつもなく面倒になりそうな気がする
0072デフォルトの名無しさん
垢版 |
2022/04/18(月) 21:16:17.21ID:rznbXz+G
Rust「エラーには回復可能なエラーと回復不可能なエラーがあってResult<T, E>を使って~(長文)」
エンジニア「TとEって何だよ」「"?"って何?」「Box<dyn Error>って何?」

Golang「ほぼ
if err != nil {
panic(err)
}
でいい」
エンジニア「そうだったのか!」「やっと理解できた!」「Goって美しい」



何も言い返せんかったは・・・
0076デフォルトの名無しさん
垢版 |
2022/04/18(月) 21:39:04.08ID:CZqwnDNY
スレタイの言語でも
Goとかnilチェックするコードを書き忘れてもコンパイルエラー出ないね
安全じゃない言語多すぎ
0080デフォルトの名無しさん
垢版 |
2022/04/18(月) 22:44:34.76ID:edZlyGeP
Goはnil安全ではない
if err != nil {を書き忘れたり
return nil, nilしちゃっていると死ぬ

nil以外にも存在しない時の値で死ぬ
例えばstring.Index()は未発見時に-1を返す
返り値が-1かどうかチェック忘れてもコンパイルエラーとならない
そのまま-1を使ってしまい実行時に死ぬ

いずれのケースもRustではコンパイルエラーとなるため安全
Goは危険だらけ
0081デフォルトの名無しさん
垢版 |
2022/04/18(月) 22:55:48.31ID:z7JFVAjx
分かりにくい人「円周率は3.141592...と無限に続く数字で、よく近似の3.14が使われます。」
視聴者「何で3桁なの?」「2の後は何なんだよ」「近似って何?」

分かりやすい人「円周率って色々言われてるけど、実は3なんです!」
視聴者「そうだったのか!」「やっと理解できた!」「数学って美しい」

https://twitter.com/zugaaanzubababa/status/1506569845693100035
https://twitter.com/5chan_nel (5ch newer account)
0082デフォルトの名無しさん
垢版 |
2022/04/18(月) 23:02:13.65ID:WPqVzB8b
Goでは「値が存在しないこと」を安全に表す方法がないことが敗因
RustではOption<T>型のNoneで安全に表せるところ
0083デフォルトの名無しさん
垢版 |
2022/04/19(火) 00:46:26.38ID:S3LfaCKT
なおシェアはGOが圧勝したもよう
RUSTボーイズは一生夢見て低賃金でこき使われる童貞野郎
0085デフォルトの名無しさん
垢版 |
2022/04/19(火) 01:36:19.32ID:VnIrO7oP
言語機能をモリモリにしたい誘惑に抗ってランタイムを充実させるという判断できる自制心はすごいと思う
0086デフォルトの名無しさん
垢版 |
2022/04/19(火) 01:53:00.90ID:tGbJiwG7
Ruby 3.0 のJIT は、MJIT で、
Ruby VM のバイト(中間)コードを、C コードに変換してから、
Cコンパイラでネイティブコードに変換していた

Ruby 3.1 のJIT は、YJIT で、
バイトコードから直接ネイティブコードに変換する。
ただし、x86_64 のみに対応

条件分岐があっても、10回実行した分岐だけを変換する。
実行されない分岐は変換しない

遅延変換・Lazy Basic Block Versioning(LBBV)

これで、Rails のプロジェクトが、20% ほど速くなったらしい
0089デフォルトの名無しさん
垢版 |
2022/04/19(火) 07:51:59.99ID:jVj3oT5A
>>87
でもRuby on railsってまだまだ使われてるよね?
有名どころでも、クックパッド、Airbnb、Gunosy、クラウドワークス、
食べログ、価格.com、Twitter、 Hulu、 GitHub
0091デフォルトの名無しさん
垢版 |
2022/04/19(火) 09:17:26.14ID:ipOfh3Xt
>>89
大規模railsを別言語で書き直しましたという
ニュースは時々出てくるけど逆は聞かないからなあ…
0092デフォルトの名無しさん
垢版 |
2022/04/19(火) 09:29:29.07ID:Qc9Zpwhc
>>89
業界や会社によってはCOBOLだって使われてる。
いったんそれでシステム組んじまったら中々移行は出来んもんだよ。
0094デフォルトの名無しさん
垢版 |
2022/04/19(火) 10:22:52.12ID:NH+MJ17E
R○byは業界のSPA移行とPythonブームによって思いのほか綺麗に消えてくれたのは良かった
まあPHPなんかに比べたらまだ「恥を知る」人間が多かったんだろうね
0095デフォルトの名無しさん
垢版 |
2022/04/19(火) 11:21:50.97ID:XEvBz8Zw
>>94
PHPユーザに失礼なやつだな

お前あれだろ?
刺し身に直接わさびを付けるタイプだろ。醤油でわさびをとかさないで刺し身につけて食べてね?どうよ?
0096デフォルトの名無しさん
垢版 |
2022/04/19(火) 12:34:56.06ID:gbQ3J7tR
>>94
言語マニアならpythonよりRubyの方がマシだろ。Pythonみたいにメソッドと関数が混在するのは書いててキモい。
python4でNim方式を採用してほしいわ。
0097デフォルトの名無しさん
垢版 |
2022/04/19(火) 12:39:13.85ID:SdA/iojO
もちろんプログラム記述方式としてはPythonは最悪
あれが普及するのは害悪しかない
0098デフォルトの名無しさん
垢版 |
2022/04/19(火) 13:49:45.55ID:jVj3oT5A
>>95
直接わさびを口に運び刺身を投入して咀嚼した後に醤油を飲むタイプです

PHPユーザに対し失礼な発言は謝罪して撤回させていただきます。この度は申し訳ございませんでした。
0099デフォルトの名無しさん
垢版 |
2022/04/19(火) 14:55:17.88ID:WBt0dmCX
インデントでスコープ区切るのあんまり好きじゃない
0100デフォルトの名無しさん
垢版 |
2022/04/19(火) 16:35:48.82ID:GlY6GAKK
Haskellもインデントでスコープを区切ってた気がするけど一応ブレースでくくることもできるんだっけ
0103デフォルトの名無しさん
垢版 |
2022/04/19(火) 22:14:20.79ID:OM/gUtcz
>>96
けっこう同意。
0104デフォルトの名無しさん
垢版 |
2022/04/19(火) 22:34:55.70ID:S3LfaCKT
>>102
障害者手帳持ちでも書けるとガイジを集めたから
ガイジが作ってガイジが保守して、真人間は近寄らないか万一深淵を覗いてもすぐに逃げるから
ガイジだけが残った
それがPoopHPoor
0106デフォルトの名無しさん
垢版 |
2022/04/19(火) 23:10:14.27ID:+gF6CcFv
良し悪しは文法だけでは決まらないしね
全部作り直すとかできないから、まず既存資産との互換性とかがめちゃくちゃ重要だしなあ
0107デフォルトの名無しさん
垢版 |
2022/04/19(火) 23:14:51.60ID:ggKFiwdh
Haskellはとてもいい言語だと思うけど、まあ今後も広くは普及しないだろうね
0108デフォルトの名無しさん
垢版 |
2022/04/20(水) 00:49:02.14ID:sjxPrwDV
Java(8以前)とPHPとVB.NETは案件も人材もロクなのにあたったことないし関わりたくない
0110デフォルトの名無しさん
垢版 |
2022/04/20(水) 13:03:13.18ID:eR+oT63l
小一時間でゲームをつくる──7つの定番ゲームのプログラミングを体験 (WEB+DB PRESS plus)
https://www.あmazon.co.jp/dp/4297127458

この本面白いね。
コンソールに出すアスキーアートだけでゲームを作るところと最小限の工程ごとに動作確認するところがユニークだ。

誰かこのなかのどれかのゲームをGoやRustに移植してgithubあたりにアップしてくれないか?
その出来栄えでその言語の優劣を競うというのはどうだろうか?
0113デフォルトの名無しさん
垢版 |
2022/04/20(水) 16:19:25.49ID:uTpu7tmC
コードが書けないやつだからこそnull安全なんてほとんど誰もありがたかってない事を上のように一生懸命言い出す
0115デフォルトの名無しさん
垢版 |
2022/04/21(木) 11:50:52.34ID:3B58U+9M
          /:|.              /:|
        /  .:::|            /  :::|
        |  ...:::::|           /u  ::::|
       i  ノ (   ̄ ̄⌒゙゙^――/   ::::::::|
      /_,, ⌒  u   . _        ::::::::::::\
      /  \\゙.l |  / ::// ̄● ̄ ̄/  ::::::::\
      |● ::::::|  . | | / :::: /   :::::::::://u  :::::::\
     /i,.\_:::::::|    u::::: /   ::::::::://     :::::::::\
    / \( (\|.  ::::::.   // ̄) )           :::::::::\  
    / u  ) )_ ^  ^  ̄ ̄ ,,、( (       i し./ :::::::::::::\
   / / /__,,____,/ ̄ \  ))u      ノ (  ::::::::::::::::::::\
  /  ヽ |.. | /└└└└\../\((\     '~ヽ   :::::::::::::::::/
  \ ) し ∨.|llllllllllllllllllllllllllllllll∨lllll| ) /  /     :::::::::::::::::/
   \⌒ | |.|llllllllllll;/⌒/⌒  〕         ::u::::::::::::::::/
     |  | |.|lllllllll;   ./ .   . |        ::::::::::::::::::::/
     .|  | |.|llllll|′  /    
     .| | |.|llll|    |     .∧〔   /   u:::::::::::::|
      ヽ}.∧lll    |    ../ /  /   :::::::::::::::::\
       i/| \┌┌┌┌┌ /. / /:::     :::::::::::::::::i
      ( ゙゙^^¨^¨゙゙¨  ̄ ̄ ̄| i/::::::::::: u          i
        ヽー─¬ー〜ー――i | :::::::::::::
0116デフォルトの名無しさん
垢版 |
2022/04/21(木) 13:08:35.07ID:HvU2DlQ2
>>93
Goは言わば並列対応スクリプトC言語だからだよ
だから今どきの言語と異なりC言語のように地道に記述量が増えるとともに安全軽視で自己責任
0117デフォルトの名無しさん
垢版 |
2022/04/21(木) 14:17:09.70ID:/LgGWJm6
男の人って気持ち悪い…
どうして少女をそんなに汚したがるの?
お母さんに悪いとわおもわないの?
0120デフォルトの名無しさん
垢版 |
2022/04/21(木) 15:52:10.80ID:aUxqSgEH
Rustならシンプルに分かりやすく書きやすい上に
うっかりミスもコンパイルエラーで検出されるから良いよな
0122デフォルトの名無しさん
垢版 |
2022/04/21(木) 17:40:50.87ID:d9Ay4jJ1
比較の話だからここでいいんじゃね
そもそもアンチ側が悪影響とか言い出してきっかけ作っているし
アンチを各言語本スレへ誘導するのはダメだろ
0126デフォルトの名無しさん
垢版 |
2022/04/21(木) 18:51:22.79ID:RkfSdsaD
ここは次世代言語スレ
次世代言語の話題や機能や比較に議論まで何でもOK
各言語の本スレに迷惑がかからないようここで行なうこと推奨
0127デフォルトの名無しさん
垢版 |
2022/04/21(木) 20:07:59.60ID:QQ8u361U
>>114
このように誰もGoのことなど挙げてないのに、Rustの超ビギナーの信者は異様に敵視を行う。

例えば、代表的なNull安全言語は、RustがまさにそうだがOptionを使うからNullなんて無いのだが、matchを書いたとしてもNoneで
異常を処理しないような事を書いてしまえば、Nullで落ちたりするプログラムと大して変わらない。unwrapを連打するようなプログラムは
論外だとしても、それはNullをチェックしないプログラムと何ら変わりない。
Qitaの有害記事、「null安全でない言語は、もはやレガシー言語だ」のせいで、このような思想を植え付けられている人があまりに多い。
大切なことは異常系をきちんと処理できているかということで、言い訳では「ちゃんとやるのを忘れているかもしれないのでは」という指摘に
コンパイルが通らないだの、Rustでしかそうならない事を都合が悪いのか、短い考察だけで反論しています。
コンパイルが通ろうと通らななかろうと、”ちゃんとやるのを忘れて”いれば同じです。

また、たしかにNull安全は、Java/KotlinのようなNullが奥深くに根ずく言語であれば恩恵は大きいでしょう。しかしGoのような言語は
扱うデータはstructであり、Nullが無い訳ではないが、奥深くに潜む”参照”データー構造を設計思想から良しとはしていない言語である。
一部の言語設計者ではリンクリストのような、非効率で何も考えてないデーター構造を逆にレガシーと呼びます。
もちろん、if err != nil { }が古臭く邪魔で嫌、あちこちに現れるので受け付けないという意見は分かるし、これを簡略化するために
Null条件演算子やNull合体演算子が欲しいという要望もわかる。しかし、それが導入された、もしくはされていないからといって
それはNull安全言語とは厳密には関係ない。
0129デフォルトの名無しさん
垢版 |
2022/04/21(木) 20:19:15.04ID:j60ekrh9
>>127
>このように誰もGoのことなど挙げてないのに、Rustの超ビギナーの信者は異様に敵視を行う。

このように誰もRustのことなど挙げてないのに、Goの超ビギナーの信者は異様に敵視を行う。

以下略
0130デフォルトの名無しさん
垢版 |
2022/04/21(木) 21:14:28.53ID:kTS22GXO
>>127
それは君の主張が間違っている
Rustではある型Tの変数に対してnull相当(nilやundefined等含む)を代入出来ない
そのため君の主張する処理し忘れがあってもnull相当を扱ってしまう危険性は起きない
0132デフォルトの名無しさん
垢版 |
2022/04/21(木) 21:26:57.05ID:LoXMgsHc
Goだって最近Tって書けるようになったでしょ
スレタイの言語皆Tって書くのでは
0133デフォルトの名無しさん
垢版 |
2022/04/21(木) 21:27:36.40ID:SndU/Xk6
・Rustにはnullという概念のものが存在しない
・存在するかしないかを示したいならば代数的データ型であるenum Optionを用いる
・扱う型をT型とするとOption<T>型となるため型が異なり処理を忘れてミスすることも起きようがない
0137デフォルトの名無しさん
垢版 |
2022/04/21(木) 23:17:57.08ID:58EnvgFJ
ほぼOptionのNoneと言ってるのに、null相当(nilやundefined等含む)を代入とか、Option<T>型となるため型が異なりとか
もう誤魔化して言いくるめる気にしか見えない。。。
どれだけNull安全で助かってるか、なんてコードを書いてればそんなに無いでしょ。確かにNullが無いのだから、Nullのような状態で
クラッシュ/panicする事態は減るでしょう。コンパイルが通った時点でNull安全性が保障されるなんてのも、今どきの多くの言語は
外付けながらLint系の警告をしてくれます。もちろん言語に統合されてない後付けで「美しくない」とかそういうのはあるでしょうが。
そして手続き型プログラミングを初めて数年の初心者なら沢山のミスを犯すのかもしれんけどさ、そもそも宣言と同時に初期化を
する重要性は、関数型プログラミングでも少しでもしていれば分かるはずでそんな経験もなく、旧Java系なんかからRustへ移ったら
感嘆するように見えるのかもしれんが、そんなしつこく言うほど便利な場面って具体的にどういう時よ?逆にさ?
次はNan安全言語とか、-+Inf安全言語とかやるのかい?
0138デフォルトの名無しさん
垢版 |
2022/04/21(木) 23:28:25.00ID:emsRX1XQ
Rustのアドバンテージを認めざるを得ないから認めつつ
それでも批判したいから言い掛かり長文
みっともない
0139デフォルトの名無しさん
垢版 |
2022/04/21(木) 23:47:03.05ID:Q5xBjMYc
>>137 その通りだからきみはJavaとかHaskellとか使えばいいと思うよ


Rustの良いところを教えてほしいなら普通に指導を乞えばいいのに
0141デフォルトの名無しさん
垢版 |
2022/04/22(金) 00:18:27.86ID:QUxpZq2Z
>>140
未初期化変数へのアクセスのことを言ってそうな気がする
それ以外のケースでnullの問題踏んだことない人なのかもしれない
0145デフォルトの名無しさん
垢版 |
2022/04/22(金) 18:41:08.80ID:0TWFpVQa
普通に煽りじゃない反論ができない時点でRustニワカのキモさが良くわかる。Null安全を全否定してないのに
「指導を乞え」とか「JavaとかHaskellとか使え」とか「それ以外のケースでnullの問題踏んだことない」とか
Nullのような状態で クラッシュ/panicする事態は減るって書いてるのに文字も読めもしない。
”それほど強調して、気持ち悪く粘着してNull安全言語なんて宣伝してることがRustのために良くない”って話だよ
言語の悪口を言ってるんじゃない、おまえのようなキモくて何も答えられないで煽りだけクズを論ってんの
0147デフォルトの名無しさん
垢版 |
2022/04/22(金) 19:15:01.24ID:J7veDPz7
Rustより良い言語が出現したらそれを検討する予定
今のところそういう言語がないためメイン言語はRustのまま
0151デフォルトの名無しさん
垢版 |
2022/04/22(金) 20:06:53.42ID:yOJfi3Zs
この根源的な差が決定的かな

> プログラミング言語は以下の3つに分類される
> CとC++ ←『省メモリ高速』だが、「メモリ解放でミスると危険」
> GC言語 ←『省メモリ高速』ではないが、「メモリ解放は自動で気にしなくていい」
> Rust ←『省メモリ高速』だが、「メモリ解放は自動で気にしなくていい」
0153デフォルトの名無しさん
垢版 |
2022/04/22(金) 20:25:25.90ID:UKixTNef
>>149
Pony
Rustよりも安全。データ競合だけでなく、デッドロック、実行時例外が起きないことも保証されてる
actorモデルを採用している
0154デフォルトの名無しさん
垢版 |
2022/04/22(金) 20:27:40.70ID:aYwHbJz6
>>150
これですかね
ありがとうございます

The Flix Programming Language
https://flix.dev/
https://github.com/flix/flix

プログラミング言語Flixに関するMagnus Madsen氏へのインタビュー
https://www.infoq.com/jp/news/2022/03/flix-programming-language/

Flixは多くのプログラミング言語にインスパイアされたオープンソースのプログラミング言語であり、開発者は関数型、命令型、論理型のスタイルでコードを書くことが可能である。FlixはScalaに似ており、Hindley-Milnerに基づく型システムとGoにインスパイアされた並行処理モデルを採用している。JVM言語はポリモーフィックエフェクトシステムやDatalog制約などのユニークな機能をサポートしている。
0155デフォルトの名無しさん
垢版 |
2022/04/22(金) 20:34:28.61ID:aYwHbJz6
>>153
どもです

https://www.ponylang.io/

フィンテックでアクターモデルのプログラミング言語Ponyを使う
https://www.infoq.com/jp/news/2016/05/pony-fintech/

Ponyはアクターモデルを使ったネイティブ言語であり、LLVMを使う。アクターモデルはErlangやAkkaで有名であり、1973年のCarl Hewitt氏他の論文から生まれた。アクターは状態管理と非同期メソッドを組み合わせる。フィールドに加え、アクターはひとつのメッセージキューとヒープを持つ。Clebsch氏によれば、Ponyのアクターは独立してガベージコレクションがされ、ErlangやAkkaとは違い、アクターそのものもガベージコレクションされるので、アクターを殺すためのメッセージのようなものは必要ない。手動でのメモリ管理は不要なのだ。

アクターは自分のヒープのガベージコレクションをmark-and-don’t-sweepアルゴリズムを使って他のアクターとは独立して行う。つまり、Ponyは到達可能なグラフに対してはnのオーダーだ。到達不可能なメモリは影響を与えない。アクターのヒープのGCにはsafepointがなく、読み込み、書き込みのバリアも、カードテーブルマーキングもコンパクト化もない。コンパクト化が必要ないので、ポインタのフィクスアップも必要ない。
0157デフォルトの名無しさん
垢版 |
2022/04/22(金) 20:56:20.88ID:UKixTNef
>>156
Erlang系でElixirの次に来そうなのはGleamかな?
まだまだ新しすぎて未成熟だけど、着実にコミュニティが大きくなってる気がする

あとは他に33個ほどリストアップされてるから、なんか伸びそうなのあったら教えて
https://github.com/llaisdy/beam_languages
0158デフォルトの名無しさん
垢版 |
2022/04/22(金) 20:57:22.84ID:MSzkRWeB
>>152
Wasm自体は十分に実用的でブラウザ上からクラウドエッジ上に至るまで様々な環境での環境非依存言語の地位確立
ただしWasm仕様へのGC導入は未来の話へと先送り
したがって実用的なWasm記述言語としてはC/C++/RustのままとなりRustがベストチョイス
0159デフォルトの名無しさん
垢版 |
2022/04/22(金) 21:14:40.69ID:gmnEH6Vv
>>158
LLVMが噛めばほぼ全てWasm対応になりうるので利点でもなんでもない
オレオレ言語でもWasmに対応できるというかすでに作った
0160デフォルトの名無しさん
垢版 |
2022/04/22(金) 21:25:22.84ID:p9LA8Dyp
>>159
GC言語だと明確に不利なだけでもちろん動くよ
GCなし自作言語で良いものが作れたならばシェア取りに行くといいね
現状Rustの天下を崩すチャンス
0161デフォルトの名無しさん
垢版 |
2022/04/22(金) 22:15:59.43ID:AQMvQ4xM
WEB+DB Press 127号で、
Elixir のPhoenix が、28ページの特集

Ruby on Rails 7, Phoenix 1.6 から、脱Webpack でesbuild へ

RailsのHotwire, PhoenixのLiveView で、websocket によるリアルタイム通信。
ここ数年、SPA でReact に奪われたシェアを回復すべき戦略

他には、Bootstrap よりも、Tailwind が多くなってきた

128号は、Terraform 特集。
Software Design 2022/1月号も、Terraform特集だった

YouTube で有名な、雑食系エンジニア・KENTA のRuby on Rails サロンでも、
Terraformで転職を差別化できると言ったから、すべての雑誌・学校も動いた

1つのサロンが転職に有効な技術を持ってしまうと、
他者が合格できなくなるので、対抗上、勉強しないといけなくなる
0162デフォルトの名無しさん
垢版 |
2022/04/22(金) 22:38:59.17ID:y1b9XJMs
Terraformが何なのかも理解せずにここプログラミング言語のスレに書き込んでいるのか
0163デフォルトの名無しさん
垢版 |
2022/04/22(金) 22:55:47.09ID:dDLjcogg
リスナーさんだか受講生だか知りませんが、KENTAさんの主張を引用するなら本人から許可を取って、
情報の許可範囲とガイドラインを守って書き込みしたほうが絶対良いと思いますね。

匿名掲示板ならアレな発言も、多少は仕方ないかもしれませんが、
他人の名を語ってそれだとさすがにまずいです。倫理とルールを守りましょう。
0165161
垢版 |
2022/04/22(金) 23:17:44.40ID:AQMvQ4xM
KENTA

2021年のWeb系エンジニア転職を成功させる3つの技術要素、2021/4
https://www.youtube.com/watch?v=70VrB7LTe9g

Web系エンジニアを目指す人のためのプログラミング学習ロードマップ、2021/2
https://www.youtube.com/watch?v=0TABrlhci5M

上の動画で、Terraform で転職を差別化しましょうと言っている。
それで、すべての雑誌・学校も動いた。
Terraformが出来ないと、転職に負けてしまうから

米国人からすると、日本のRuby on Rails は異次元の戦い。
10年以上のプロでも、1年ぐらいの初心者に負けてしまう

日本では解雇できないから、資格などの事前審査制。
米国では国民全員がフリーランスだから、ひとまず雇っても、すぐに首にできる
0171デフォルトの名無しさん
垢版 |
2022/04/23(土) 08:41:27.77ID:X7wDySqh
RcもWeakも無くなればね
裏で勝手にやってくれるとかして?
プログラマ側が一切ケアしなくて良いんならスゴイよね
0172デフォルトの名無しさん
垢版 |
2022/04/23(土) 09:12:54.44ID:eZJZo8Wb
Goはコンパイル言語なのにスクリプト言語のように扱える軽量さが最大の魅力だろ
Go並にエディタの補完が軽量でコンパイル爆速のコンパイル言語を俺は知らない

Rustはライフタイムが全然わからなかったし、コンパイル遅すぎて無理だったね
GCはあった方がいいに決まってるわ
開発時の生産性が圧倒的に違ってくる
0174デフォルトの名無しさん
垢版 |
2022/04/23(土) 09:20:09.97ID:eZJZo8Wb
とにかくGoは頭の悪い人でもすぐにプロジェクトに参加できるぐらいに機能がシンプルに削ぎ落とされていてコンパイル爆速ってのがポイントな言語
それに対して〇〇の機能がないーって言っても仕方ないだろ

頭の悪い人でも使いこなせる言語じゃないと企業ではなかなか普及しないと思うよ
0176デフォルトの名無しさん
垢版 |
2022/04/23(土) 09:52:47.90ID:XZjzYuNa
>>174
本当にその通りなんだけど、これだけは欲しかったみたいな機能も一緒に削られてるところが少しモヤモヤする
ジェネリクス(ようやく追加されたけど)とか代数的データ型とか
0177デフォルトの名無しさん
垢版 |
2022/04/23(土) 10:30:02.86ID:19UflQcD
>>172
ライフタイムがわからなかった、って、かなり知能が低い人じゃないとありえないと思うよ
そしてそのくらい低い人はプログラミングに向いていないと思う
0178デフォルトの名無しさん
垢版 |
2022/04/23(土) 10:34:13.57ID:WKX1mrZa
ライフタイムはわかるけどこれがリージョン推論とかいった厳密な理論とどう対応しているのかがわからん
一般的なプログラマーはここまで理解しなくてもいいんやろうけど
なんでこんな単純なわかりやすい原則の背後にそんな謎な人口に膾炙されていない理論を導入しないといけないのかがわからんわ
0180デフォルトの名無しさん
垢版 |
2022/04/23(土) 11:09:11.96ID:teuoZU8e
>>178
ブロックスコープというあまりにも大雑把な大きな枠で扱うのではなくて
実際に使われている有効な範囲(リージョン)で細かく扱いましょう、というだけだよ
生存単位は前者で、借用単位は後者で細かく区切る
具体的コード例を含めた解説ページの例

Non-Lexical Lifetimes って?
https://qiita.com/_EnumHack/items/8b6ecdeb52e69a4ff384
0181デフォルトの名無しさん
垢版 |
2022/04/23(土) 12:06:36.75ID:uMxflx63
プログラミング言語「Erlang」を生んだジョー・アームストロング氏死去
なお、アームストロング氏は「なぜオブジェクト指向はクソなのか」という名文を残しています。
0182デフォルトの名無しさん
垢版 |
2022/04/23(土) 12:41:02.85ID:lKjOluUR
>>177
プログラマーって言ってもOS作ったりドライバ作ったりする低レイヤーやってるのと、バックエンドやWeb系の高レイヤーやってるのはいるわけで
Rustは前者の人たちが使えばいいのでは?後者の人たちがRustがーとかイキってるの見ると笑ってしまう

後者の分野ではRustはGoに勝てないでしょう
0183デフォルトの名無しさん
垢版 |
2022/04/23(土) 12:48:09.21ID:HJoWw7qN
>>182
むしろGoは対象が狭くて短命に終わる言語
言語の機能不足で書きにくい上に速いわけではない
唯一のメリット(?)が仕様が簡素なこと
0184デフォルトの名無しさん
垢版 |
2022/04/23(土) 13:26:27.68ID:o/e4rrgi
>>182
勝ち負けの定義次第だけど後者でもrustの方が有利な場合はあるんじゃないの
discordのバックエンドの例とかあるよね

だいたいのケースでgoが適しているって主張なら分かるけど
特定の分野で常にgoの方が適しているというのは言い過ぎかと
0185デフォルトの名無しさん
垢版 |
2022/04/23(土) 13:31:57.99ID:BV8u7mBP
これだからRust信者は嫌なんだ...12年続いて厳格に互換性を保ってる言語が短命だって?
速いわけではないって、そりゃGCが裏で動いてメモリー解放をほとんど気にしなくて良い言語と比べれば、極限の速度では有利になるのは当たり前でしょ?
それでもC99やRustなどと比べても2倍も時間が掛かるわけではない、これを速いわけではないと表現するのは、自身でも気づいていないのか隠された悪意と偏見を持ちすぎてる。
むしろRustこそ後方互換を保つためなどと言いつつEditionなどという仕組みや、ボローチェックの強化なんて短命のコンパイルが通らないような事をして、短命で終わっている
今書いてるRustが10年後コンパイルが通るのかエラーになるのか全く見えない。普通の用途ではGoで十分という話に噛みついてくる
言語の表層的な機能をどんどん導入して直行性が無く、どんどん書きにくくなっていくのに苦労に見合う速度はC99以下。唯一のメリット(?)は意識高い系がたった1つの言語をやってればマウントできる事
0186デフォルトの名無しさん
垢版 |
2022/04/23(土) 13:40:48.60ID:j+9QGcWO
>>182
でも現実にWeb分野でもRustがじわじわと広まりつつあるよね
サーバ側はGoよりRustが高速で省メモリでGC負荷なしで有利
ブラウザ側は実用的となったWebAssemblyでRustが最適
0187デフォルトの名無しさん
垢版 |
2022/04/23(土) 13:46:57.71ID:o/e4rrgi
>>185
不勉強でよく知らないんだけどeditionやborrow checkerの強化でコンパイル通らなくなったcrateってどういうものがあるの?
0189デフォルトの名無しさん
垢版 |
2022/04/23(土) 17:59:39.00ID:Yf3QCfCm
>>176
同感
必須機能が足りな過ぎてGoはプログラミングが修行のように辛い
C言語で何でも書けるというのと同じで書けるけど辛い
0190デフォルトの名無しさん
垢版 |
2022/04/23(土) 18:14:41.34ID:DP+h97oH
>>186
コンビニに行くのにF1とかソーラーカーは要らない定期。どれだけ早かろうが省エネだろうが。
JavaやC#はセダン〜バスみたいな感じかな。
Goは原付2種みたいなもんでしょ。
まず主戦場も違えばドライバーも違う。
0191デフォルトの名無しさん
垢版 |
2022/04/23(土) 18:17:56.69ID:qKl7QP1V
>>186
それでお前は使ってるの?
Reference Types使ってもパフォーマンスがjsに比較してカスな件どうなった?
0194デフォルトの名無しさん
垢版 |
2022/04/23(土) 19:03:19.39ID:X7wDySqh
最小限で考えると
Cにあとひとつ何かを加えたものでやっていけそう
Cに関数のオーバーロードがあればやっていけそう
コンテナクラスもほしいけどOOPを持ち込んでしまうので今回はパス
あくまで
void add(struct vector_int *v, int value)
void add(struct vector_float *v, float value)
というふうに関数と構造体だけで頑張っていけそう
0198デフォルトの名無しさん
垢版 |
2022/04/23(土) 20:15:34.17ID:qKl7QP1V
C言語にオーバーロード?
結局C++みたいにABI建て増ししてマングリングしないといけないやつじゃん
0202デフォルトの名無しさん
垢版 |
2022/04/23(土) 21:51:54.89ID:w3sxk/eA
ジェネリックってプログラミング言語によって指すものが異なってるよな
異なるといってもレベルの低いもの高いもの玉石混交という意味で
0203161
垢版 |
2022/04/23(土) 23:08:55.47ID:dSfqqc1i
IoT, AI でも、Elixir もある

Nerves は、最小のLinux, Erlang を含む、組み込み向けOS

Nx はテンソル用。
TensorFlow, PyTorch のフロントエンド

Erlang VM のFFI で、他言語のモジュールも使える
0204デフォルトの名無しさん
垢版 |
2022/04/24(日) 00:35:10.40ID:tW7+nz8n
Cは文字列が弱点だった
ちゃんとした文字列の型があればもっと便利だったとおもう
0205デフォルトの名無しさん
垢版 |
2022/04/24(日) 01:36:20.84ID:bAmVid1d
nimはもっと広まって欲しいかな。できればpython置き換えるくらいに。
0206デフォルトの名無しさん
垢版 |
2022/04/24(日) 06:41:49.87ID:4pJnSfn9
>>197
てかLinusはそんなにその言語がいいと思ってるならそれでお前がなんか作ればいいだろって話をしてるな。
ここの連中なんかはまさにそんな感じだが。
0208デフォルトの名無しさん
垢版 |
2022/04/24(日) 13:05:32.72ID:LSLifE01
結局言語は道具。結局は何を作るかなんだよ
0209デフォルトの名無しさん
垢版 |
2022/04/24(日) 14:03:27.44ID:plOa7TFC?2BP(0)

ネイティブ言語に変換できるビジュアルプログラミング言語とかいいと思う
オブジェクト指向とかわかりやすいだろうし。
唯一問題なのはマウスとキーボードをせわしなく行き来することかな
以前Blockly使ってそんなの作ったけどソースコードどっかやっちゃった
0212デフォルトの名無しさん
垢版 |
2022/04/24(日) 18:16:43.21ID:bl0Rasps
Rustのスレ複製おじさんが暴れまわってるから怖くなっちゃって見てないわ
あんなスレ見てたら気がおかしくなりそう
ここはまだまし
0214デフォルトの名無しさん
垢版 |
2022/04/24(日) 19:46:35.09ID:gbNK0/9l
>>181
「なぜオブジェクト指向はクソなのか」
1データ構造と機能は一緒にすべきではない
2すべてがオブジェクトである必要があります。
3データタイプ定義はあちこちに散らばってしまう
4オブジェクトはプライベートな状態を持っている
0215デフォルトの名無しさん
垢版 |
2022/04/24(日) 20:04:13.90ID:tW7+nz8n
最近はモジュールがまた流行ってるよね
rustもGoも自分から見るとモジュール指向に見える

自分はモジュール型からOOPに進化した過程を知ってるから正直モジュール型は好きじゃない
0216デフォルトの名無しさん
垢版 |
2022/04/24(日) 21:17:36.80ID:slsDzRA2
>すべてがオブジェクトである必要があります

C++やJavaみたいにすべてがオブジェクトじゃないオブジェクト指向言語なんていくらでもあるじゃん
0218デフォルトの名無しさん
垢版 |
2022/04/24(日) 22:02:13.94ID:4j4sWWkv
真のオブジェクトっていうのは、一つのスレッドみたいなもので他のスレッドとの通信をメッセージパシングでやりとりするものと言っていたような
一方、普通にいわれているオブジェクト指向というのは単なるプログラミングの書き方の効率化の手法にすぎないって話
つまり、継承という方法で差分だけ書いていけるようにすることによる効率化だけの話だってこと。
0221デフォルトの名無しさん
垢版 |
2022/04/24(日) 22:09:28.03ID:HH2OM4Tz
むしろ継承はクソすぎて足を引っ張る
そのためGoやRustなどの言語ではclassを廃止というか最初から採用しなかった
0222デフォルトの名無しさん
垢版 |
2022/04/24(日) 22:27:33.03ID:L+Cr+2nK
>>216
一言でいえば、プリミティブ型のことを言ってるんじゃなく(オブジェクトに)メソッドがぶら下がる粘着性を言っている。

いまどきの言語はRustやGoならstructで、Goならダックタイピング、Rustならクレートによるimplでそのデータを扱う機能実装を行うが
さらに考えを推し進め、D言語などでは(Pythonのself引数のように)データを引数に取るUFCと呼ばれる使い方も出来る。
関数が第一級の言語要素という考え(第一級関数)は、関数型言語には必要不可欠とされmap/reduceなどの高階関数でも
常用され、クロージャ・関数オブジェクト・無名関数と幅広く展開される。
OOPLとの明確な違いは、Classに対するオブジェクトにmethodという関数が束縛をされていないことである。もちろん上記の言語は
OOPSをサポートするが、それは多態を表現できるだけの意味しかない。

以上、D言語の宣伝です。
0223デフォルトの名無しさん
垢版 |
2022/04/25(月) 00:02:30.63ID:m7DPUXtY
>>222
> Rustならクレートによるimplで

ちょっと惜しい
『トレイトによるimpl』が正しい
その後にD言語は更に進んでいるとの宣伝と書いてあるようだが
Rustにも当てはまることばかりなので違いがよくわからない
0224デフォルトの名無しさん
垢版 |
2022/04/25(月) 00:27:04.32ID:GF+5hMbb
DのUFCSは任意の関数に適用できるけど
Rustは第一引数がselfなassociated functionだけだよね
0225デフォルトの名無しさん
垢版 |
2022/04/25(月) 00:33:35.96ID:sDr1xuuT
typescriptでclassを使わないでやったときに無限にf(g(h(x)))みたいに書いたなあ
tsにもほしいわ
0228デフォルトの名無しさん
垢版 |
2022/04/25(月) 00:39:26.69ID:cR9N6Lw+
UFCSなんかなくても最初の引数の型に対してメソッド定義するだけで目的達成可能
グローバル名関数を増やして名前空間を汚さずともその型のメソッド定義がベター
0229デフォルトの名無しさん
垢版 |
2022/04/25(月) 00:47:38.84ID:pTvSoM83
>>225
GoやRustはclassなんか無くても各型に対してメソッドを定義できるのでそういうことを招かずに済むのよ
UFCSのメリットはメソッドチェーン記法が可能になることだから最初からメソッドを定義すればいいものね
0230デフォルトの名無しさん
垢版 |
2022/04/25(月) 00:55:00.32ID:sDr1xuuT
>>229
structかenumは定義する必要あるじゃん
tsのtypeがどういうものか分かったうえでレスしてる?
0231デフォルトの名無しさん
垢版 |
2022/04/25(月) 00:58:26.21ID:loxtuGTD
>>230
structやenumは単なるtypeだよ
C言語でもstructと(enumの代わりにタグ無しの)unionがあるよね(ただしメソッド定義はできないけど)
0232デフォルトの名無しさん
垢版 |
2022/04/25(月) 01:21:04.73ID:W8ZZnspt
Nim言語にもUFCSがあって関数だけじゃなくtemplateやmacroも関数と同じ文法で呼び出せるのでUFCSが使える。ただし第一引数がuntypedだとmethod call syntaxが使えない。
UFCSのメリットは標準ライブラリとか他人の書いたコードにある型とプロシージャの組に対してもmethod call syntaxが使えることだと思う。
第一引数が組み込み型のプロシージャを定義すれば組み込み型に対してmethod call syntaxが使える。
ライブラリAで定義されている型Xのオブジェクトに対してまったく別に書かれたライブラリBで定義されているgenericsなプロシージャをmethod call syntaxで呼ぶ出すことができる。
0234デフォルトの名無しさん
垢版 |
2022/04/25(月) 01:31:48.98ID:W8ZZnspt
>>228
オーバーロードがある言語なら引数が一つ以上あるグローバル関数を追加しても引数さえ異なれば同名の関数をグローバルに追加できる。
UFCSとオーバーロードがある言語では第一引数がFoo型の関数を定義するのはFoo型にメソッドを定義することとほぼ同じとみなせる。
0235デフォルトの名無しさん
垢版 |
2022/04/25(月) 01:35:52.92ID:V8fkjI23
つまりUFCSは汚染でありリスク要因
定義していないメソッドが使えることになってしまう
UFCSがなくとも明確にその型に対して定義されたメソッドのみ対象で実用上困ることはない
0236デフォルトの名無しさん
垢版 |
2022/04/25(月) 01:46:11.22ID:GF+5hMbb
モジュールがあるなら関数のimport有無でどの関数が呼び出されるか制御できたりしないの?
Rustのtraitのuseみたいに
0237デフォルトの名無しさん
垢版 |
2022/04/25(月) 01:55:33.57ID:W8ZZnspt
>>235
UFCSのあるNim言語をよく使っているけど特に問題無く使えてるよ。
ライブラリAで定義された型を第一引数に持つ関数をライブラリAの外で定義してもgenerics/template/macroなど使わない限りライブラリAから呼び出せないし、ライブラリA内で使われている関数を外から勝手に上書きできない。
メソッド呼び出ししているように見えてもライブラリA内のプライベートな変数/関数はライブラリの外からアクセスできない。
method call syntaxってa.fooMethod(b)って書いてあるのを
コンパイラがfooMethod(a, b)という関数呼び出しとして解釈しているだけでなんのリスクもないよ。
第一引数にFoo型のオブジェクトをとる関数を定義してもオーバーロードがあるのでFoo型を使わない人には何の影響も与えない
0239デフォルトの名無しさん
垢版 |
2022/04/25(月) 02:06:16.28ID:W8ZZnspt
>>236
Nim言語だとimportするときにfrom std/strutils import `%`みたいに特定の型/関数だけをインポートすることができるよ。
もし同じ名前で同じ引数の関数が複数定義されている場合は関数名の前に"モジュルー名."をつけないとコンパイルエラーになる。
0240デフォルトの名無しさん
垢版 |
2022/04/25(月) 02:34:25.81ID:z8DQnMuR
結局UFCSは不要だよな
メソッド的に使いたいならば最初からその型にメソッドを生やせばよいだけ
必要ならばジェネリックに定義すれば複数の型に同時にメソッドを生やせる
わざわざグローバル関数にしておいてからメソッド的に使えます!とかメリットを一切感じない
0241デフォルトの名無しさん
垢版 |
2022/04/25(月) 02:47:04.24ID:W8ZZnspt
>>240
標準ライブラリにある型とか他人のgithubリポジトリにあるライブラリにも自由にメソッド追加できるの?
ジェネリックにする必要が無いときでもジェネリックにしないとメソッドはやせないの?

Nim言語にはそもそもC++のメンバ関数みたいなのが無くて、第一引数がFoo型の関数がFoo型のメソッドの代わりみたいになっている。
0242デフォルトの名無しさん
垢版 |
2022/04/25(月) 03:05:01.71ID:hhhqUz2p
>>241
ジェネリックである必要なし
もちろん同じ機能を複数の型に適用ならジェネリックで1回で済むのが普通
0243デフォルトの名無しさん
垢版 |
2022/04/25(月) 03:21:57.26ID:FFLrto9L
>>241
うん
標準ライブラリや第三者ライブラリにある型にもメソッドを増やすことができるよ
だからUFCSが無くても困らないよ
0244デフォルトの名無しさん
垢版 |
2022/04/25(月) 04:39:58.47ID:W8ZZnspt
UFCSがあれば引数が一個以上持つ関数であればa.f(b)ともf(a, b)とも書ける。
a.f(b)とf(a, b)の両方で書きたい場合があったらどうするの?
UFCSがなければa.f(b)で呼べるメソッドがあるときジェネリックな関数の中でf(a, b)の形式で呼ばれていたら、わざわざ新しくa.f(b)を中で呼ぶf(a, b)を定義しないといけない。
逆にf(a, b)な関数があったときに新しくメソッドを定義しなくてもa.f(b)と書ける。
それとNimだとcommand invocation syntaxがってf a, bという文法でも関数を呼べる。括弧がないので引数が複雑な式にならなければ書きやすくて読みやすいよ。
0245デフォルトの名無しさん
垢版 |
2022/04/25(月) 05:29:11.29ID:d+UJIvmE
>>244
Rustでも可能
例えばu64型のxに対して
xのn乗はu64::pow(x, n)という関数が標準であるけど
これはx.pow(n)と呼び出すことができる
0248デフォルトの名無しさん
垢版 |
2022/04/25(月) 11:59:33.54ID:QEeStXPn
>>241
既存の型にもメソッド追加できるよ
例えばJavaScriptならこんな感じ

// 文字列にhello()を追加
String.prototype.hello = function() {
console.log(`Hello ${this}!`);
};

// 数値にhello()を追加
Number.prototype.hello = function() {
console.log(`Hello ${this}!`);
};

"abc".hello();
// 123.hello(); // 文法エラー
let num = 123;
num.hello();
0249デフォルトの名無しさん
垢版 |
2022/04/25(月) 12:16:38.60ID:VSqj5wTk
Rustではジェネリックにメソッド追加することも可能

// メソッドhello()を持つトレイトHelloを宣言
trait Hello {
fn hello(&self);
}

use std::fmt::Display;
// 表示可能トレイトDisplayを満たす全ての型に対してhello()を実装
impl<T: Display> Hello for T {
fn hello(&self) {
println!("Hello {self}!");
}
}

fn main() {
"abc".hello();
123.hello();
}
0250デフォルトの名無しさん
垢版 |
2022/04/25(月) 12:41:05.03ID:GF+5hMbb
既存の型へのメソッド追加はプロトタイプ汚染とか言われて忌避されてるよね
他モジュールへの影響の出ない形でメソッド追加する手法が望ましい
0251デフォルトの名無しさん
垢版 |
2022/04/25(月) 12:53:37.30ID:BAh3CRfm
>>250
JavaScriptはプロトタイプがグローバルに書き換わり全てのモジュールに適用されるためだな
一方でRustはメソッドを追加するにはトレイトを用意することが必要、そしてトレイトが宣言/useされている空間のみ有効、なので汚染が生じず安全
0252デフォルトの名無しさん
垢版 |
2022/04/25(月) 13:16:10.20ID:GF+5hMbb
>>251
型を定義した以外のcrateでメソッドを追加するためにはtraitが必要、が正しいかな
メソッドを追加するためにはtraitなしのimplを書く方法もあるが、これをできるのは型を定義したcrateだけに制限されているので他crateで定義を追加して汚染することはない

とまあRustの事情は知ってるんだけど、他の言語ではどうなってるのかが知りたかった
0254デフォルトの名無しさん
垢版 |
2022/04/25(月) 13:22:02.11ID:UiNQmXr4
JavaScriptで脆弱性を生みまくってさんざん問題視されたんだから、いまどきそんな汚染が起こる新しい言語は一つもないよ
0257デフォルトの名無しさん
垢版 |
2022/04/25(月) 13:58:52.24ID:TLzTt+1G
>>256
UFCSはメリット無いからでしょ
メソッド追加できるなら関数よりメソッドの方が名前空間を汚さないし
0260デフォルトの名無しさん
垢版 |
2022/04/25(月) 15:13:03.71ID:B7syBDSL
結局メソッド生やしたいんじゃなくてプライベートメンバにアクセスしたいだけなんだよな
0261デフォルトの名無しさん
垢版 |
2022/04/25(月) 15:22:37.45ID:sJr09n4H
>>259
汚染言うならRustのtrailと同レベルじゃない?

関数をincludeしなければ影響無いんだし、言語次第だけど名前空間に閉じ込めることもできるだろ。
0263デフォルトの名無しさん
垢版 |
2022/04/25(月) 15:36:09.96ID:3MmiqOlF
いやトレイトで似たようなメソッドがたくさんぶら下がって汚染されてますよね?それが更にハードルが上がる一因になってる
0264デフォルトの名無しさん
垢版 |
2022/04/25(月) 15:46:00.36ID:ZqKc7K5J
>>263
Rustでは明示的にuse Traitしない限り
そのトレイトのメソッドが有効になることはないよ
汚染は起きず安全に設計されている
0265デフォルトの名無しさん
垢版 |
2022/04/25(月) 15:55:06.48ID:UiNQmXr4
>>264
当然、D言語でもnimでも、importしたシンボルは、importされたスコープでしか有効にならないし、メソッド形式の呼び出しもできない
Rustと何が違うんだよ
0266デフォルトの名無しさん
垢版 |
2022/04/25(月) 16:00:14.18ID:xSu4vg9o
UFCSは強制汚染
関数として必要なだけなのにメソッド名空間を汚染
メソッドとして必要なだけなのに関数名空間を汚染
だから採用する言語がほとんどない
0267デフォルトの名無しさん
垢版 |
2022/04/25(月) 16:01:50.20ID:3MmiqOlF
>>264
イヤイヤ、そんなのほとんどの言語でimportやincludeと同じで更に言えば、use std::io::prelude::*;みたいにRustでもPythonでも
誤ったやり方とされてるワイルドカードだって使えるんだから一緒でしょ。明確に言うなら”汚染は起きず”ではなく、汚染は当然ながら
useするのだから起きている。無意味にuseしない*を使わないというのは言語仕様や特性じゃなく規約だよ
0269デフォルトの名無しさん
垢版 |
2022/04/25(月) 16:09:49.70ID:Ld005CpI
>>267
Rustでは追加メソッドを使う場合
必要な機能のTraitだけを
use TraitName as _; する
そのため汚染は起きない
0270デフォルトの名無しさん
垢版 |
2022/04/25(月) 16:18:54.63ID:EM9X2zpO
>>264
ほんとRustニワカ嫌いだわ、「明示的にuse Traitしない限り」なんて良くそんな詭弁が言えるわ。どう考えても一緒でしょう
だからPythonだってas構文使えますし、D言語だってimport std.stdio : writeln, writefln;で選択的インポートできるでしょw
0272デフォルトの名無しさん
垢版 |
2022/04/25(月) 16:23:34.31ID:NxLuUrhR
>>269
Underscore importなんてRustがトレイトのシンボルが別のシンボルと競合する可能性がある場合、つまりRustが破綻しないように
特別にあるだけで、汚染の低下のための機能ではないぜ。ここで汚染といってるのは無暗にメソッドが追加される事。
(回避策が仮に無ければ)衝突することはもはや、言語的な欠陥だ
0273デフォルトの名無しさん
垢版 |
2022/04/25(月) 16:27:35.43ID:KFrD7nO2
使われる空間に名前が載ることを汚染とは言わない
使わない空間に名前が載ることを汚染と言う

UFCSが汚染と言われる理由は
関数として使いメソッドとして使わなくてもメソッド名空間に載り
メソッドとして使い関数として使わなくても関数名空間に載るためだと考えられる
0274デフォルトの名無しさん
垢版 |
2022/04/25(月) 16:34:56.30ID:NxLuUrhR
>>273
Rustだって、fn中にuse出来るわけでそれはほかの言語でも同じ。そう言う事はあまりしないけども、多くの言語で同じように”使われる空間”だけに載る
0275デフォルトの名無しさん
垢版 |
2022/04/25(月) 16:36:52.48ID:UB00PZWU
RustがUFCSを採用しないのは単に、パーサーをオブジェクトを先して作り直すと(C言語にわざと似せてる)見た目が変わってしまうし
パーサーに手を入れるということは苦労してきたコンパイル速度が低下してしまう恐れがあるという事だけ
0276デフォルトの名無しさん
垢版 |
2022/04/25(月) 16:37:55.90ID:ZcyGlXND
>>273
その程度で汚染とか言うの聞いたことねえよ
ESModuleとかが導入される前のJSのグローバル汚染なんかと比較してみ?
Rust上げしたいがためだけのただのイチャモンだよお前の主張は
0280デフォルトの名無しさん
垢版 |
2022/04/25(月) 16:46:59.96ID:EmEbSMmo
Rustの宣伝はこんな匿名掲示板じゃなくQiitaとかに書いてほしいな
その反応で実際に正論なのか暴論なのか明らかになるだろう
0281デフォルトの名無しさん
垢版 |
2022/04/25(月) 16:49:37.58ID:ZJMHR0C4
UFCSという汚染機能をサポートしているプログラミング言語はDとNim
埋もれた言語となったのも当然の結果
0283デフォルトの名無しさん
垢版 |
2022/04/25(月) 17:00:21.10ID:AtUdeTix
ほとんど全ての言語がUFCSを採用していない理由はメリットが無いからだと思う
そして無条件に二つの名前空間に登録されてしまうことを汚染と呼ぶかどうかは置いておくとしても本末転倒の方法かなとは感じる
0284デフォルトの名無しさん
垢版 |
2022/04/25(月) 17:01:11.49ID:XBfmr4Gp
>>275
さらにRustは実装としてUFCSを別の意味で誤って使っていた過去がある、::パス構文で混乱を引き起こして曖昧性が起きた。2017年頃でそんなに優れた開発者がおらずなんとなく実装していた時期だな、いつもはRustは論文がしっかりしてると嘯くのに
0287デフォルトの名無しさん
垢版 |
2022/04/25(月) 17:19:42.27ID:o63SmoRM
>>286
Rustは関係ないんじゃね?
むしろRustのアンチ側がなぜかRust叩きしていて巻き込まれ被害側にみえる
0288デフォルトの名無しさん
垢版 |
2022/04/25(月) 17:26:05.13ID:PqJDEf6z
どっちでもいいよ
信者だろうがアンチだろうがあらゆる話題がRustとの比較になって宗教戦争化するのが馬鹿馬鹿しすぎる

Rustの話題はスレ違いなのでRust叩きもスレ違いとする、問題解決
0289デフォルトの名無しさん
垢版 |
2022/04/25(月) 17:26:35.89ID:4xqZqLmv
ほぼ全ての言語がUFCSを採用していない
しかしUFCSが叩かれるとなぜか必死にRustを攻撃してくれる
一石二鳥と言えるだろう
0290デフォルトの名無しさん
垢版 |
2022/04/25(月) 17:38:49.59ID:63+wFQ6i
C++委員会での議論でもメンバ関数と非メンバ関数で衝突したときにどう解決するかで割れて否決されたみたいだし、なかなか難しそうだね
0291デフォルトの名無しさん
垢版 |
2022/04/25(月) 17:51:06.52ID:BSwMXBpD
考えてみたがUFCSは完全に不要っぽい
まずメソッドとして使いたいものは最初からメソッドとして書けばよい
次に外部の関数をどうしてもメソッドとして使いたいならばその外部関数を呼び出すメソッドを追加すればよい
0292デフォルトの名無しさん
垢版 |
2022/04/25(月) 17:53:13.68ID:VVkmIp+6
衝突が問題ならUFCSの使用は記号などを使って明示したらいいんじゃないかな?
0293デフォルトの名無しさん
垢版 |
2022/04/25(月) 18:02:36.22ID:DhJCopPa
「Rustを攻撃」ってどっちも同じでしょって言ってるだけなのに、このように攻撃を受けたと勘違いするんだから、正常な議論なんて出来ない。
UFCSについて難癖付けてるだけじゃん、個人的には別に必要ないと思うし、仮にあったら便利だとも思うが。コンパイル時間が増えるのは許容できない
「Rustのアンチ側」なんて言い出すクズどもとまともな話なんて出来るわけない。
こんな奴らばっかり増やしてもRustの普及を妨げてると思うんだけど?
0294デフォルトの名無しさん
垢版 |
2022/04/25(月) 18:07:17.52ID:3bYGoG0a
スレ読んだけど
汚染でも何でもなくRust特有の問題でもないことをRustは汚染だと延々と叩いてるのは異常に感じた
0295デフォルトの名無しさん
垢版 |
2022/04/25(月) 18:08:46.62ID:sJroCDvH
今のところUFCSがある言語と外部のデータ型に対してメソッドを追加できない言語、メソッドを追加できる言語とできない言語のそれぞれは前者が勝手で勝るけど、前者同士では好みとか実現手法の違い程度の話のように感じてる
UFCSも結局モジュール単位で環境が分離されている事が殆どのようだし、どちらかじゃないとできない事も、どちらかだと発生する致命的な不都合も見えてこない
一見機能が不要に見えても、その採用理由が他の要素に起因してたりもするだろうし、その辺私はUFCS採用言語のことを詳しく知らないのでなんとも言えないな
0296デフォルトの名無しさん
垢版 |
2022/04/25(月) 18:09:37.23ID:9QpKK4x8
>>292
C++での議論では当然そういう案含めていろいろ提案されたけど、結局どれも一長一短で委員会での合意には至らなかったみたい
一人で作ってる言語なら作者の好みでサクッと入れられちゃうんだろうけどね
0297デフォルトの名無しさん
垢版 |
2022/04/25(月) 18:11:19.66ID:DhJCopPa
汚染と言わなくても、Rustがuseで似たようなメソッドがたくさん出てくるのは本当でしょ、UFCSにしてもそれはイコールで何ら変わらんわ
なんでこいつらマトモに話すら出来ないの?コーディング能力を持ってるんだろうけど、コミュニケーション能力はゼロに近い
0298デフォルトの名無しさん
垢版 |
2022/04/25(月) 18:11:26.99ID:VVkmIp+6
メソッドが動詞ならUFCSでは関係が逆になるんだよね
英語圏の人はどう思ってるんだろ
0299デフォルトの名無しさん
垢版 |
2022/04/25(月) 18:15:08.57ID:Xt13Fv0a
>>298
OSV言語の自然言語に近くなるから、オブジェクトが先に来るのは利点として受け止められてる。でも所詮はシンタックスシュガーの何者でもない
0300デフォルトの名無しさん
垢版 |
2022/04/25(月) 18:16:12.91ID:TDNc/5Gc
>>297
> 似たようなメソッドがたくさん出てくる

そこ意味がわからない
似たようなメソッドがたくさんとは何?
0301デフォルトの名無しさん
垢版 |
2022/04/25(月) 18:19:11.55ID:VVkmIp+6
C#にも拡張メソッドと言う名前でほぼ同じ機能が使えるけどそっちは拡張メソッドオンリーで使う前提で作られてる
0303デフォルトの名無しさん
垢版 |
2022/04/25(月) 18:31:31.86ID:5qzMTDWR
>>299
英語はOSVじゃなくSVOな?OSVになることもあるけど、そして世界の自然言語の主流は日本語と同じくSOVが40%
参考としてスター・ウォーズのジェダイ・マスター:ヨーダは、このOSV語順で話す。
0304デフォルトの名無しさん
垢版 |
2022/04/25(月) 18:34:58.90ID:VVkmIp+6
var s=copy(section);
paste(s);
みたいなのがあって

これを
paste(copy(section)):
とするより
section.copy().paste();
のほうが受け入れ易いってことだよね?
0307デフォルトの名無しさん
垢版 |
2022/04/25(月) 19:07:02.73ID:tSjXYtJn
>>305
ところがどっこい var sのsはメソッドを生やせないstring型だ

常にメソッドを生やせるとは限らないし、元のクラスに必要以上の仕事を増やさないためにから拡張メソッドという概念があるんだよ
0308デフォルトの名無しさん
垢版 |
2022/04/25(月) 19:15:14.85ID:VVkmIp+6
スコープでuse出来て局所ごとにsection.print()の意味が変わる場合も便利だと感じる?
0309デフォルトの名無しさん
垢版 |
2022/04/25(月) 19:28:32.34ID:WnCW0ZaS
メソッドじゃなくて関数や変数でも、スコープごとに意味が変わりうるのは当然のこと
0310デフォルトの名無しさん
垢版 |
2022/04/25(月) 19:29:22.19ID:9QpKK4x8
拡張メソッドが欲しいのはまぁ分かるんだけど
UFCSまでいくと普通の関数のつもりが意図せずメソッド呼び出しできてしまう、みたいなデメリットの方が大きくなる気がするなぁ
0311デフォルトの名無しさん
垢版 |
2022/04/25(月) 19:33:06.80ID:m1bq2XCo
なぜRustが叩かれていたのかようやく理解できた
Rustでは基本の型にも外部の型にもメソッドを追加できるわけか
そのためメソッドを自由に追加できない言語の人が逆恨みで叩いていたと
0314デフォルトの名無しさん
垢版 |
2022/04/25(月) 19:43:06.53ID:DNOUKEV3
>>312
え?logging.rsに"test".print();と書いてあるのと、printer.rsに"test".print();で意味が変わるのはなんも関係無くねえ?
つーか普通に関数でprint("test")だのsaveだの、getだの散々やってるじゃん。気持ち(悪い)の問題なんだろうけどさ
0315デフォルトの名無しさん
垢版 |
2022/04/25(月) 19:46:57.59ID:3TQSNLUR
>>311
それはNimも同様。
むしろNimの方がメソッドと関数を統一しているから(記法が違うだけ)、より自然に拡張できる。

>ぜRustが叩かれていたのかようやく理解できた
>逆恨みで叩いていたと

こういうアホなことを言う狂信者ばかりだからだよ。
0316デフォルトの名無しさん
垢版 |
2022/04/25(月) 19:56:02.27ID:W8ZZnspt
RustのメソッドとかC++のメンバ関数のような特定の型だったりトレイトに束縛された関数のようなものがNimにはなくて、自由関数だけがある。
だからNimからUFCSをとったらC言語のように全ての関数をfoo(x, y, z)って書かないといけなくなっちゃう。
UFCSがあるおかげでどんな関数もx.f(y,z)だったりf(x, y, z)とか自由に書ける。
UFCSで関数がメソッドになるとプライベート変数/メソッドにアクセスできちゃうって勘違いしている人がいるかもしれないけどNimではそれは起きない。
C++のメンバ変数に相当するものや関数のアクセス権はモジュール外にそれを公開するかしないかのどちらかしかない。
0318デフォルトの名無しさん
垢版 |
2022/04/25(月) 19:59:13.38ID:9XvEg3RG
>>314
逆にprint_to_printer()とか print_to_consoleとか書いてあったら発狂するかもしれんわ
一番使うdebug_assert_eqとかヤメテほしい・・・、あと帰ってくる正式な型名が異様に長くなるのもC++の悪いところを引き継い出るような感じがする
0319デフォルトの名無しさん
垢版 |
2022/04/25(月) 20:05:33.97ID:4uqCvk4R
>>316
自由関数しかないNimは関数名空間が常に汚染されてしまうのね
普通のプログラミング言語ならばメソッド名として名前空間が分離されるのよ
0321デフォルトの名無しさん
垢版 |
2022/04/25(月) 20:09:08.19ID:9XvEg3RG
>>319
1つも調べもせんのな、自由関数だけじゃなくmethodもある。つーかおまえRust使うの止めてJavaやってろ、まじ迷惑
0323デフォルトの名無しさん
垢版 |
2022/04/25(月) 20:10:31.91ID:3TQSNLUR
>>317
>>316にまとまっているよ。
メソッドが無くて、ただの記法の違いでしか無いからこそUFCSのメリットを最大限享受できる。

>>319
メソッド名を関数名から「常に」分離するメリットは?
関数自体をモジュールとかで分離して管理できればいいんじゃないのかね。
0324デフォルトの名無しさん
垢版 |
2022/04/25(月) 20:13:13.14ID:xcxOK/uY
やはり逆恨みで無関係なRust叩きやってる説が正しいかもしれん
Rustが無関係な状況でも>>321のように唐突にRustを出してくる
0325デフォルトの名無しさん
垢版 |
2022/04/25(月) 20:21:15.47ID:51f23UG1
逆恨みだの、攻撃だの、ずーーとこんな事言ってる奴いるけど完全なびょーきだと思う。名前空間が汚染されないという言語はお前の中で具体的に何?
0327デフォルトの名無しさん
垢版 |
2022/04/25(月) 20:23:23.46ID:PqJDEf6z
逆恨みとか、自我と言語が密結合していない限り出ない言葉だよな
用途目的に応じて言語を使い分ければ良いのに

つまりそういうことだ
0328デフォルトの名無しさん
垢版 |
2022/04/25(月) 20:26:24.56ID:bFDhmU1p
おそらくNimの人がずっとRustを仮想敵にでもしてるのかもな
だからNimに不利っぽい書き込みがあるとRustの話がどこにもなくても無意識にRustを叩いてしまってるのかもな
0329デフォルトの名無しさん
垢版 |
2022/04/25(月) 20:26:38.57ID:WnCW0ZaS
ローカルのスコープしか影響しないのに、わざわさわ汚染とか言うの意味わからん
紛らわしいからやめろ
0331デフォルトの名無しさん
垢版 |
2022/04/25(月) 20:29:25.14ID:3QooPOGs
例えば新しい言語が出来て人気を博したら、RustにもNimにもDにもSwiftなどにも存在しない機能や、シンタックスシュガーになるわけで
それを指摘したら、逆恨みだの、攻撃だの、アンチだの言いだしたらこのスレはマジ必要ない。
なんで無いのか考察を言ったり、コンパイル時間への影響とか、現行の構文が大きく変わってしまうとかそういうのを述べるならまだしも
UFCSが汚染だとキチガイのように書いてる。マジこんなやつ迷惑だろw
0332デフォルトの名無しさん
垢版 |
2022/04/25(月) 20:34:31.02ID:fIAeID6q
このスレを「汚染」で検索してそれら書き込みを見るとプログラミング言語名の最多登場がRust
なぜRustを汚染と叩く書き込みが多いのか不思議
0333デフォルトの名無しさん
垢版 |
2022/04/25(月) 20:35:18.96ID:PqJDEf6z
>>228とか>>235みたいな、主観と思い込みによる断定から荒れ始めたんだよな
そこからおそらく自己正当化のために独自の「汚染」を定義
誰にも賛同されないと逆恨みだの攻撃だの仮想敵だの
0336デフォルトの名無しさん
垢版 |
2022/04/25(月) 20:54:23.26ID:GhM9BPSc
Rustに対してとにかく言いがかりつけてるアレな人が前からおるやん
今回もそれだろ
有名人が叩かれる有名税みたいなもんや
0337デフォルトの名無しさん
垢版 |
2022/04/25(月) 21:10:54.21ID:EYilt5eX
いーや一番言いがかりで汚染されてるのはこんスレとロシアだと思いますわ。反枠&陰謀論!病院池
0339デフォルトの名無しさん
垢版 |
2022/04/25(月) 21:47:49.04ID:iMu4Hfqd
>>332 >>334
事実に基づかない嘘で被害者面するのやめるべきだな。
このスレで「汚染している」と難癖つけられているのはUFCSだろ。次点でNim。Rustはあったっけ?
0342デフォルトの名無しさん
垢版 |
2022/04/25(月) 22:17:54.71ID:PqJDEf6z
有名税とか言う前にまずDとNimとUFCSを無理筋でこき下ろした件に対するごめんなさいは?
0347デフォルトの名無しさん
垢版 |
2022/04/25(月) 23:52:22.15ID:+dAy6ibx
>>344
もちろんRustにもあるけど微妙に違うので今はUFCSとは呼ばなくなった
その微妙な差というのは既に>>245で書いたように

> 例えばu64型のxに対して
> xのn乗はu64::pow(x, n)という関数が標準であるけど
> これはx.pow(n)と呼び出すことができる

とメソッド形式でなく関数形式の時に型名等の前置パスで常に制限される
0348デフォルトの名無しさん
垢版 |
2022/04/26(火) 00:24:29.22ID:HRWQKuSX
ほんのわずかだけ違うとはいえ
D、Nim、RustといったUFCS対応言語は2通りの記述方法が出来て便利で良いですよね
0349デフォルトの名無しさん
垢版 |
2022/04/26(火) 07:04:16.95ID:Y0YWAbka
Goってマジで終わりかけてる?
使う価値あんまり感じなかったのは事実だけどw
0352デフォルトの名無しさん
垢版 |
2022/04/26(火) 10:53:42.88ID:jf0A6U3h
>>260
ちげーよ。
記法の問題。
0353デフォルトの名無しさん
垢版 |
2022/04/26(火) 11:05:30.65ID:jf0A6U3h
>>295
これが正しい
0354デフォルトの名無しさん
垢版 |
2022/04/26(火) 11:06:06.60ID:jf0A6U3h
>>295
これが正しい
0356デフォルトの名無しさん
垢版 |
2022/04/26(火) 13:27:25.51ID:jf0A6U3h
頭痛くて寒気すると思ったら熱あったわ。
0357デフォルトの名無しさん
垢版 |
2022/04/26(火) 13:49:04.73ID:US6qo08V
>>355
Rust、Kotlin、Swift、C#は拡張できるし、メソッド形式呼び出しがあるモダン言語なら必須機能っぽいけどね
0358デフォルトの名無しさん
垢版 |
2022/04/26(火) 14:12:26.27ID:DbGjJV4L
最後にGoの悪口に収束するのは、おまいらの悪い癖だと思う

>>356
現代日本の片づけのキモはゴミ在庫の管理だ。 これはコンマリも言ってない..
pptppc2 「キモ」「ゴミ」とかいうワードが真っ先に出てくると身構えてしまう。
0360デフォルトの名無しさん
垢版 |
2022/04/27(水) 10:39:21.30ID:8eBizIGw
nimググってみたけどけっこう良さそうな言語じゃん。
0366デフォルトの名無しさん
垢版 |
2022/04/29(金) 12:04:51.33ID:okzbgZOG
>>362
何いちゃもんつけてんだ。
nimは使ったことすらねーわ。ググっただけだ。
一応このスレタイトルのtypescriptとgoは使ってる。
0370デフォルトの名無しさん
垢版 |
2022/04/29(金) 19:23:50.76ID:fXQBWCQI
前にも書いたけど学校のサイトとかをワードプレスで運用してるところ結構あるんだよね
他の言語では先生達に書き換えて運用とか無理だと思う

PHPはそういう用途に向いてる
絶対そこはRustとかGoにはならない
0371デフォルトの名無しさん
垢版 |
2022/04/29(金) 19:44:01.30ID:Crnvpu67
言語と人を比較して言うのだが
PHPを批判するような子は
たいていPHP以下の存在
そして必ずPHPの作者以下の技量
0372デフォルトの名無しさん
垢版 |
2022/04/29(金) 19:58:05.95ID:FaPJ+Yjv
たぶんPHPが存在してなければ、また誰かが気軽にwebサイトをさらっとかけるスクリプト言語をRustのようなシステムプログラミング言語で開発していただろう
そしてそれはPHPのようなものになるのだろうね
0373デフォルトの名無しさん
垢版 |
2022/04/29(金) 21:18:48.98ID:nnpkzAOE
たしかにPHPが障害者を吸ってくれたおかげで助かってるところはあるかも
ITの汚物入れ、人類最底辺のクズ、エタヒニン・罪人
それがPHPoor
0375デフォルトの名無しさん
垢版 |
2022/04/29(金) 22:15:53.12ID:K6x/4GwT
こんスレってなぜかJuliaの話、完全スルーするよな。Go?Rust?Zig?Nim?時代遅れのローエンド言語や
0380デフォルトの名無しさん
垢版 |
2022/04/29(金) 23:02:55.81ID:kzHHMnSC
Julia、せっかく新規言語で型付けと動的性のバランスを取れる立ち位置にあったのに、抽象-具象の継承ベースの型を採用した部分が個人的にジェネリクスと噛み合いが悪いと思っていて悲しい
1-originとかは正直瑣末事だと思ってる分そこだけが本当に合わない

一応最新バージョンだとパラメトリックな抽象型とそのパラメータに抽象型を使えるし、その部分型をパラメータにも抽象型コンストラクタ(?)にも適用できるから実用上十分なんだと思うが
0381デフォルトの名無しさん
垢版 |
2022/04/29(金) 23:13:16.89ID:6EgfuGip
JuliaのユーザーってPythonは当然として、他にはMATLABやRが競合になるようなコミュニティだから、
このスレとはまるで層が違うんじゃないかな
MATLABやRの話も全く出ないし
0383デフォルトの名無しさん
垢版 |
2022/04/29(金) 23:34:47.33ID:fFwxA39Q
Julia厨はクソみたいな押し付けするくらいなら
自分で他言語のライブラリの移植でもした方がよっぽど使ってもらえるという当たり前のことすら理解してないからな。
0384デフォルトの名無しさん
垢版 |
2022/04/29(金) 23:47:45.01ID:dUco7/4p
>>380
その継承が中途半端なことしかできないし
継承を採用したことも失敗してるし
Juliaはあかんね
0385デフォルトの名無しさん
垢版 |
2022/04/30(土) 00:03:38.50ID:UesQSoYk
継承は基底クラスと派生クラスの役割(責務)の分担が非常に難しいです。
よほど上手く設計しないと、すぐに「スパゲッティ・オブジェクト・プログラム」ができあがります。
継承は実装の再利用という面があるので、得てしてコピペの代わりに使われがちでもあります。
既存のあるクラスの振る舞いをちょっとだけ変えたいから継承を使おうってやってしまうと、
派生クラスのソースを見ただけでは何をやってるのか全くわからない最悪のコードになります。
まだコピペのほうがマシなことも。

最初はちゃんとクラス階層の設計がされていたとしても、だんだん皆が使う共通ルーチンを基底クラスに持たせよう、としてしまうとか、
基底クラスは、すぐに、巨大かつ影響範囲が広すぎてイジれない「神クラス」になるでしょう。
この場合の基底クラスの役割は、グローバル変数そのものと言ってよいですね。

とにかく、継承を使うと、コピペ、グローバル変数の使用、といった「禁じ手」と実質的に同じことが簡単にできてしまいかねません。
もし継承を使うのであれば、かなり注意が必要です。

その一方で、継承でないと絶対にダメという用途もあんまりないのです。
継承を一律禁止してしまってもそんなに困らないところがあります。
そのため最近ではGoやRustなど言語の仕様として継承(インタフェースではない実装を持つクラスの継承)を禁止している言語が増えているという有り様です。
0387デフォルトの名無しさん
垢版 |
2022/04/30(土) 00:48:57.89ID:LJ+fWFU3
長い。そして間違っている。
Rustは代わりにtraitで継承を表現できるが、Goは表現する方法はなく、似たことをするとデータ構造を弄くることになる。
そもそも継承においてはデータ構造と実装の併合が問題なので、あとは察してください。
0389デフォルトの名無しさん
垢版 |
2022/04/30(土) 00:55:27.41ID:xinPqoeI
プラグイン機構とだけ言われても意味が一意じゃないと思うけど
mixinのことかいな?
0390デフォルトの名無しさん
垢版 |
2022/04/30(土) 00:56:29.80ID:5YZgJnSQ
Composition over inheritanceは30年近くも前のGoFですでに広まってるのになぜ次世代言語スレで話題になるんだろう
0391デフォルトの名無しさん
垢版 |
2022/04/30(土) 01:03:52.06ID:xinPqoeI
ていうかJuliaの型システム知らなかったから簡単に調べたけど具象型はsupertypeになれないとか書いてあるんですが
Juliaでもいわゆる継承の問題点はちゃんと回避されているんではないですかね
0393デフォルトの名無しさん
垢版 |
2022/04/30(土) 01:19:25.03ID:onyz3Xxm
>>390
その後に継承のデメリットの方が多いと分かってきたため
そのデメリットをどう回避するかが各言語の主題となっている
0394デフォルトの名無しさん
垢版 |
2022/04/30(土) 02:04:17.75ID:LJ+fWFU3
>>390
知った気になって語りやすい話題だからだろう。

実装の拡張を肯定しつつデータ構造を直接拡張しないところが重要。
それを字面だけ解釈して、結局は妥協でデータ構造が暗黙に継承するような、先進言語の形だけ真似した言語もあるくらいだからね。
0396デフォルトの名無しさん
垢版 |
2022/04/30(土) 02:24:06.80ID:iqR9XqAh
クラス継承しか知らないプログラマーは何でも継承で表現しようとするために失敗しているわけだから
継承のないプログラミング言語で修行させればそこは学習できるはずだ
0397デフォルトの名無しさん
垢版 |
2022/04/30(土) 03:12:19.75ID:TIk5gKqZ
実際言うほど継承使わないからなぁ
共通的な部分を継承で済ます場合はあるけど
データもその共通部分がはっきりしているなら親クラスで定義するけど
ただフレームワークを使ってたらコントローラはControllerから継承みたいなのはどうしてもあるが
0401デフォルトの名無しさん
垢版 |
2022/04/30(土) 11:29:38.19ID:8xaJAFlZ
継承自体は悪くなくて設計が悪い
実際継承使わないパターンが多くなったのでそれもどうでもいい

クラスに当たるものに委譲で継承的なことをすると状態が問題になる
そしたら状態を持つのが悪いと言うまた不思議な話になる

そしてどんどん学習時間取られてみんな疲弊していく
0402デフォルトの名無しさん
垢版 |
2022/04/30(土) 11:37:07.51ID:8xaJAFlZ
委譲元のクラスが単体では問題なく動くのに組み合わせるとテストを通らない

よく見ると以上元のクラスの内部状態が必要になってるけど公開されていない
完全な設計ミス

interfaceに必要な要素を追加…などできずデフォルト実装を追加
こうしてゴミが出来上がる
0403デフォルトの名無しさん
垢版 |
2022/05/01(日) 13:19:33.60ID:GvRRQSqT
継承はそのオブジェクトの内に閉じた処理、オブジェクトの外の処理でもリスコフ置換原則が成立する範囲ではスマートでいいと思うよ
ただ現実的な話、ビジネスルール自体がそうなってないケースが多い
オブジェクトの外の処理は多くの場合、処理対象の子クラスの型で分岐を求められる
これにオブジェクト指向で対処しようとすると、めんどくさいデザインパターンの洪水に呑まれる

オブジェクトの内側のことは継承でエレガントに実現しておk(嫌いなら使わなくてもおk)
外側のことは地道にpattern matchingで泥臭く頑張る
これでいいと思うね
0407デフォルトの名無しさん
垢版 |
2022/05/01(日) 16:13:59.61ID:KIr6c+FR
このRustと同じ分類となる、更に便利な言語が登場しないと、Rustを置き換えることが出来ないだろう

> プログラミング言語は以下の3つに分類される
> CとC++ ←『省メモリ高速』だが、「メモリ解放でミスると危険」
> GC言語 ←『省メモリ高速』ではないが、「メモリ解放は自動で気にしなくていい」
> Rust ←『省メモリ高速』だが、「メモリ解放は自動で気にしなくていい」
0411デフォルトの名無しさん
垢版 |
2022/05/01(日) 23:42:24.67ID:/piMIc6O
>>410
文法や基本型はRustと同じっぽいね
ドキュメントを見る限りでは非常に小さいサブセットで開発途上なのかよくわからない
0412デフォルトの名無しさん
垢版 |
2022/05/02(月) 12:37:31.52ID:LXFM7yFt
>>407
その分類、そもそもニーズが大きくない気がするし、
このまま競合は現れずに行きそうだよね。
0413デフォルトの名無しさん
垢版 |
2022/05/02(月) 13:23:34.89ID:2hhO4/Db
>>410

Dlang: C++風のGC言語
Crystal: Ruby風のGC言語
nim: Python風のGC言語
Vlang: Go風のGC言語
Mun: Rust風のGC言語 ← New!

こういうこと?
0416デフォルトの名無しさん
垢版 |
2022/05/02(月) 16:08:02.28ID:btF26FKd
>>412
重視されているからこそ
C/C++からRustへの移行(安全化)だけでなく
各種GC言語からRustへの移行(高速化)が起きている現実
0418デフォルトの名無しさん
垢版 |
2022/05/02(月) 17:38:01.22ID:/8s7agyt
NumPy, SciPyのライブラリの実装FORTRANをCにベタ移植して更にC++でラップしたような物ばかりだったけどRsutへの移行は順調に進んでいますか?w
0419デフォルトの名無しさん
垢版 |
2022/05/02(月) 18:06:45.99ID:+Vpltyoe
それらPythonの使い方は単なる皮言語だからな
次世代言語スレで皮言語を持ち出す時点で頭おかしい
0420デフォルトの名無しさん
垢版 |
2022/05/02(月) 18:19:24.75ID:cySxIzYo
>>418
どの分野でもどの言語でも同じだけど
他の言語に移行するのは新たな物(仕組み・システム)を作る時だよ
そのまま移植は非常にレアケース
例えば古すぎるたり性能面で難があるけどアルゴリズムだけだから再設計せずそのまま他言語へ移植など
0421デフォルトの名無しさん
垢版 |
2022/05/02(月) 18:33:01.46ID:LXFM7yFt
>>416
GCあり言語では、データ構造は気にしても、
メモリ操作を意識している人は、少数じゃない?
だから置き換えは、結構ハードル高いと思うけれど。

>>417
Pythonは、グルー言語でもあるから、
単純な置き換えは、そうそう進まなさそうだよね。
0422デフォルトの名無しさん
垢版 |
2022/05/02(月) 18:40:21.71ID:YtZJWkql
>>421
メモリ操作とは具体的になあに?
めったにない特殊なケースは除くとしてハードルが高いことなんて無いんじゃないかしら
0424デフォルトの名無しさん
垢版 |
2022/05/02(月) 18:52:18.84ID:qXzB3q2R
>>423
何それ?
よほど特殊なことをしない限りそんなコードを書くことはないよ
C言語でもアライメント気にせずに変数に値が入るし変数そのものがキャッシュだし
0426デフォルトの名無しさん
垢版 |
2022/05/02(月) 19:01:36.90ID:srM4fb0r
>>424
他人のこさえたライブラリと構造体を受渡するときなんかは意識せざるを得んよな。
コレはレアケース?
0427デフォルトの名無しさん
垢版 |
2022/05/02(月) 19:06:45.80ID:TE2kIXA8
>>426
それはFFIと言って低レイヤー言語だけの問題ではない
PythonでもJavaScriptでもある

元の話題
>>423
> 低レイヤー言語だとメモリ読む前にキャッシュしたりアライメント揃えたりするでしょ
0429デフォルトの名無しさん
垢版 |
2022/05/02(月) 19:29:07.60ID:TE2kIXA8
この流れでFFIもSIMDも関係ないと思います
GCあり言語の普通のプログラムをGCなし言語へ置き換える話をしています

>>421
> GCあり言語では、データ構造は気にしても、
> メモリ操作を意識している人は、少数じゃない?
> だから置き換えは、結構ハードル高いと思うけれど。

>>422
> メモリ操作とは具体的になあに?
> めったにない特殊なケースは除くとしてハードルが高いことなんて無いんじゃないかしら
0430デフォルトの名無しさん
垢版 |
2022/05/02(月) 19:31:38.61ID:LXFM7yFt
メモリ操作って言い方が曖昧なら、スタックとヒープを意識するかしないかって言い方ならどう?

GCあり言語でスタックとヒープを意識するような事ってあまり無いと思うんどけど。
0431デフォルトの名無しさん
垢版 |
2022/05/02(月) 19:44:24.10ID:xCWuNsuo
>>430
GCなし言語でどうしてもスタックとヒープを意識しないとプログラミングできないことってある??
0433デフォルトの名無しさん
垢版 |
2022/05/02(月) 20:09:21.38ID:9bp9MTNx
>>432
それは性能をよっぽど気にする特殊な場合だけでしかもその中の一部のコードだけやろ
それ以外は関係ないやん
0434デフォルトの名無しさん
垢版 |
2022/05/02(月) 20:41:15.68ID:hiZvMXbQ
言うほど低レイヤーコード書いてるやつはここにはおらん。
だから話がおかしな方向に行く。
0436デフォルトの名無しさん
垢版 |
2022/05/02(月) 22:55:54.22ID:54UIx2Ed
スタックは普通に意識するでしょう、末尾最適化されてないナンチャッテ意識高い系の再帰呼び出しとか直すけど・・・
GCアリ言語でも無しでも、スタックサイズは普通に意識する。
ヒープは言うほどRustは組み込みに使わないし、トヨタが使うというてもそれはメモリコンパクションのあるようなOSが載ってる場合だから
本当の組み込みじゃないし、でもアロケーターが64byte-4kでもVec::with_capacity(size);とか普通にIO系の処理では意識するでしょ
0437デフォルトの名無しさん
垢版 |
2022/05/02(月) 23:14:26.49ID:zFIpg6hX
>>436
Rustはヒープ無しでも動作するからヒープを意識しなくていいのはその通りだが
ヒープが有る場合でもVec::with_capacity(size);等は動作最適化を手動でする時のみ必要であって、
プログラマーは何もしなくても全自動でcapacity拡張してくれるから意識しなくてもよい
0438デフォルトの名無しさん
垢版 |
2022/05/02(月) 23:25:13.41ID:nqnbrNKO
>>433
そもそもの質問が「ヒープ意識しないとプログラムできないことってある?」だから、反論になってないよ
頻度は問題にしてなくて有無の話だから
0439デフォルトの名無しさん
垢版 |
2022/05/02(月) 23:32:26.49ID:uvbh46KP
>>438
それは君の方がおかしい
今回のこの文脈ではそこは意識する必要がない

>GCあり言語の普通のプログラムをGCなし言語へ置き換える話をしています

ベクタの使用領域の大きさはどちらの言語でも自動的に拡張してくれるのに任せればよいから意識しなくてよい
0440デフォルトの名無しさん
垢版 |
2022/05/02(月) 23:45:32.15ID:2hhO4/Db
GCありの言語で循環参照するようなデータの持ち方をしまくってるようなコードだったりすると、
そのまま移植できないだろうし面倒かな?
場合によってはRustでいうArenaみたいなのまで持ち出して再設計しないといけなそう

移植なんてしたことないしあくまでも想像だけど
0441デフォルトの名無しさん
垢版 |
2022/05/03(火) 00:46:48.18ID:Hze7UEQ+
>>437
”Rustはヒープ無しでも動作する”、不正確でダウトといっても良い。”Box<T>を使わない場合、Rustは最小のメモリで動作する”
一般的に最小のメモリとはプログラムをメインメモリにロードした領域であり、それ以外にも、ヒープ解析すればRustの場合は、
Config structなどが多数メモリにロードされていることが分かります。後半の文は意味不明。
0443デフォルトの名無しさん
垢版 |
2022/05/03(火) 01:10:00.15ID:Fo6zlgca
>>441
知識が浅すぎる
Rustはヒープ無しでも動作する、で正しい
そのためRustの標準コアライブラリcore::はヒープ無しで動作するように作られている
std::のうちcore::以外の部分はヒープを用いており明確に両者は区別されている

>> ”Box<T>を使わない場合、Rustは最小のメモリで動作する”

意味不明
Box<T>はヒープを使う型の一つに過ぎない
それ以降の記述は全く意味不明
0446デフォルトの名無しさん
垢版 |
2022/05/03(火) 02:51:30.24ID:K+UwgLRo
ベアメタル等OSなしでも動作しないといけないため
Rustはヒープを前提とせずに動くよう設計されている
0449デフォルトの名無しさん
垢版 |
2022/05/03(火) 06:33:11.84ID:fvC5V6zC
>>448
そのどれかのブラウザがインストールされてない端末って何がある?
Linuxと組み込みくらい?
0453デフォルトの名無しさん
垢版 |
2022/05/03(火) 11:37:27.15ID:+GUXg/j9
>>448
もし本当に視聴不可となったら技術力が無さすぎる
昔ならともかく今の時代にブラウザ依存なコードを書くのはダメなプログラマーの典型
視聴不可ではなく動作確認するブラウザの数を絞るなら理解できる
0454デフォルトの名無しさん
垢版 |
2022/05/03(火) 11:57:44.21ID:TRGOwhZ/
> 「Firefox」など、上記3ブラウザ以外での動作はもともと確認しておらず、推奨ブラウザには加えていなかったという。
> 「5月23日以降に予定している設備更新に伴い、Firefoxでは動画が完全に再生できなくなる

どういう設備更新なんだろうな・・・
WebKit系じゃないと使えない仕組みがあるのか
0455デフォルトの名無しさん
垢版 |
2022/05/03(火) 12:01:19.67ID:WbhGI2Ja
今どきはブラウザ依存な書き方する方が面倒だろう。普通にテストしてないだけでは。
0457デフォルトの名無しさん
垢版 |
2022/05/03(火) 12:10:09.97ID:DDJgB2x8
chromiumにしか実装されていない独自拡張機能に依存したAPIに手を出したとか??
でもSafariで動くなら違うか
Firefoxでだけ動かないコードなんて可能なのか??
0462デフォルトの名無しさん
垢版 |
2022/05/03(火) 19:33:27.34ID:5FiUhjhg
>>461
君は何らかの大きなシステム開発に関わったことがないのかね?
どんな言語と言語の場合でも一気にやることは不可能かつムダ
新規部分や改修部分に絞って手を付けていく
0464デフォルトの名無しさん
垢版 |
2022/05/03(火) 20:22:09.94ID:jGM9XRro
Chromeの方がセキュリティバグ多いよな
頻繁にバージョンアップしろと言ってくる
0465デフォルトの名無しさん
垢版 |
2022/05/04(水) 19:26:52.80ID:mmwxiGlB
>>464
JVN iPedia - 脆弱性対策情報データベース。https://jvndb.jvn.jp/
期間指定なし
・safari 884件
・edge 1054件
・firefox 1989件
・chrome 3464件
期間指定2018/01から
・safari 48件
・edge 391件
・firefox 492件
・chrome 937件

とはいえ、Chromeのほうがローリングリリース・ローリングアップデートの期間が短い(現在は4週間)2021/3頃から6週間から変更された。
以前はFirefoxはローリングリリースを採用していないかった。またChormeの使用者がFirefoxより10倍なので脆弱性も発見されやすい。
何かと問題なSafariの脆弱性がこれだけのはずが無く、脆弱性報告数=危険なブラウザとははっきり言えない
0471デフォルトの名無しさん
垢版 |
2022/05/05(木) 17:00:01.71ID:SGcHNlDo
>>448
そもそもNHKは見ないのでどうでも良い。
0473デフォルトの名無しさん
垢版 |
2022/05/05(木) 19:26:31.90ID:kRCOTufr
>>472
ウィグル弾圧に使われてる可能性が高い。
0474デフォルトの名無しさん
垢版 |
2022/05/05(木) 19:30:55.61ID:kRCOTufr
Rust厨がウザいからだろ。
0475デフォルトの名無しさん
垢版 |
2022/05/05(木) 19:32:25.99ID:kRCOTufr
いまどきウェブ見てて落ちるブラウザなんてファイアフォックスくらいだし、そこらへんは忠実にネスケ以来の伝統を受け継いでて驚く。
0476デフォルトの名無しさん
垢版 |
2022/05/05(木) 19:35:07.40ID:Z9g54GsT
トリビア:Firefoxユーザーはレベルが高いの致命的なバグがあっても自分で治して使っている
0477デフォルトの名無しさん
垢版 |
2022/05/05(木) 20:13:12.39ID:3l2hzI76
>>475
ここ数年間の常用者だがFirefoxが落ちたことがない
もしデマカセを言っているのでないのならばどういう状況で落ちたのか語ってほしい
0482デフォルトの名無しさん
垢版 |
2022/05/05(木) 21:55:22.29ID:V626dp+O
>>481
それメモリが少なすぎたとか
メモリを超える巨大なデータを読み込んだとか
無数にタブを開いたとかそういうオチだろ
0483デフォルトの名無しさん
垢版 |
2022/05/05(木) 22:30:44.53ID:VIM8YOLC
逆に100兆個のタブを開いて落ちないブラウザってどれ?
0485デフォルトの名無しさん
垢版 |
2022/05/06(金) 04:53:59.90ID:qTXbaZrR
メモリ不足を、クラッシュせずに通知くらい【余裕】にできないと。

当たり前のこともできない。所詮現世人類の我々の技術力はそこまでということだ――
0486デフォルトの名無しさん
垢版 |
2022/05/06(金) 06:06:43.53ID:dyg36AcX
>>477
Windowsでタブレットモードにしてると頻繁に落ちるな。
0487デフォルトの名無しさん
垢版 |
2022/05/06(金) 06:07:47.49ID:dyg36AcX
落ちるというか、無限ループしてるっぽいんだよな。
入力を受け付けず、タスクマネージャで見るとCPUをぶん回してる。
0489デフォルトの名無しさん
垢版 |
2022/05/06(金) 06:56:47.40ID:dyg36AcX
頻繁に落ちるのに、落ちないとか信者が言い張るのも、ネスケ以来の伝統だよな。
0490デフォルトの名無しさん
垢版 |
2022/05/06(金) 07:00:58.40ID:eCfsRziE
英語設定のLinuxだけど落ちないよ?
バグってるのはサイトかホストなのでは?
0491デフォルトの名無しさん
垢版 |
2022/05/06(金) 09:07:58.30ID:PZ471HHG
Windowsでここ何年か使ってるけれど、
特に気になる動作は無いけれどな。

Edgeの印刷で返ってこない方が辛い。
0492デフォルトの名無しさん
垢版 |
2022/05/06(金) 09:58:30.45ID:+sslkA2r
FireFoxで微妙に表示が崩れるとChromeだとちゃんと表示されるのか気になる
表示させてみて同じだとホッとして違ってたらがっかり
0494デフォルトの名無しさん
垢版 |
2022/05/09(月) 20:38:44.58ID:X0x/BBIp
Rustが、Goの最大の競合相手であることが明らかになったってよw

プログラミング言語「Go」、開発者の満足度やニーズは?
https://japan.zdnet.com/article/35187065/
また調査では、Goの主なライバル言語が「Rust」「Python」「Java」「TypeScript」であることも明らかになった。RustとGoは、どちらもシステムプログラミング言語であり、開発者には広く評価されているが、「JavaScript」や「Python」ほどの人気はないようだ。

 しかしこの調査では、Amazon Web Services(AWS)、Google、Microsoftの支持を受けているRustが、Goの最大の競合相手であることが明らかになった。Goの代わりに選ぶとしたらどの言語を選ぶかという設問では、回答者の25%がRustを選ぶと述べており、17%がPython、12%がJava、8%がTypeScript、8%がC#と回答していた。

 「最もよく選ばれているのは、Rust、Python、Javaだ。RustとGoの機能セットは補完的な関係にあるため、あるプロジェクトに必要とされる機能がGoにない場合、Rustは優れた選択肢になるかもしれない」とMerrick氏は述べている。
0495デフォルトの名無しさん
垢版 |
2022/05/09(月) 20:53:04.96ID:S0Cki9Rv
>>494
競合なのは事実だろうけどGoやってるような人はRustも必要になれば普通に使えるでしょ
エンジニア目線では特に対立関係にないから煽っても無意味だぞ
0496デフォルトの名無しさん
垢版 |
2022/05/09(月) 21:00:58.52ID:DoAIqFb7
競合ではなく両方利用
Goで不十分なところはRustで書いている
どこでもそうだよ
0498デフォルトの名無しさん
垢版 |
2022/05/10(火) 03:38:38.78ID:I4A9nNIt
理想の家族

父 40歳 海外へ単身赴任(死ぬまで)
母 35歳 息子に甘い
姉 17歳 弟に甘い
俺 44歳
妹 15歳 多感な時期 俺に反発しながらも。。?
猫 ウンチしない 抜け毛ない 俺の声かけに無視しない
0499デフォルトの名無しさん
垢版 |
2022/05/10(火) 08:39:54.21ID:Hhyd/l4r
>>495
そうだぞ。
競合なのは事実だろうけどGoやってるような人はRustも必要になれば普通に使える、という体で話さないと嫌われるぞ。
それに、裁量権のない作業者の間では対立関係にないから煽っても無意味だぞ。
0500デフォルトの名無しさん
垢版 |
2022/05/10(火) 20:07:58.34ID:8UHmp6CE
低レイヤーはRust
高レイヤーはGo

この使い分けじゃいかんの?同じシステムプログラミング言語でも毛色が違うだろ

GoogleとMicrosoftがRustに注目しているのもOS開発の目的であってGoでOS開発作ろうとはならんでしょ
0501デフォルトの名無しさん
垢版 |
2022/05/10(火) 21:01:49.31ID:mOdSHL41
主張はわかるが、これはもしや片思いみたいなものではと見ている。

仮にGoユーザーの多くが低レイヤーにRustを使いたい結論だったとしても、
Rustユーザーの多くが高レイヤーにGoに使いたいという結論にはならない。
よってカップル不成立。
0504デフォルトの名無しさん
垢版 |
2022/05/10(火) 22:34:17.72ID:M/BIyD/S
Goは良くも悪くもCっぽくって人間が気をつけて書かないといけない部分が多いんだよな
一度Rustに慣れてしまうと、Goで隅々まで気を使うのが面倒くさくなってしまう
もちろん既存のGoプロジェクトはGoのまま書くけど、新規ならなるべくRustにしたくはなるな
0505デフォルトの名無しさん
垢版 |
2022/05/10(火) 22:37:05.44ID:1A7PmF6X
LinusはgitをC+シェルスクリプトで書いてた
書こうと思えば書ける

でも普通に記述に時間がかかるので今は他の言語も役割分担してる
0506デフォルトの名無しさん
垢版 |
2022/05/10(火) 23:04:46.44ID:7R870FiC
Rustはデータ競合らへんは起きないけど、Box、Rc、Arenaを気をつけて使い分けないといけないのとか面倒だと思うけどな
0507デフォルトの名無しさん
垢版 |
2022/05/10(火) 23:36:04.65ID:M/BIyD/S
Goの一番の面倒さはnilとエラーハンドリングかな
Option/Result型だけでも特別に用意されてれば、もっとGo使ってたかもしれん
0508デフォルトの名無しさん
垢版 |
2022/05/10(火) 23:49:42.04ID:Lq7F/6H2
>>506
Rcは出てこないプログラムも多い
Arenaはほぼ完全に出てこない
つまりそれらレアケースを元に語るのは現実的ではない
0509デフォルトの名無しさん
垢版 |
2022/05/10(火) 23:52:42.15ID:1A7PmF6X
Rustで引っかからずコードを書き上げるのはかなりの猛者だと思うよ
本当の意味での言語仕様部分は何とかなるかもしれないけどそこから先がつらい

入門4冊目の「コンセプトから理解するRus」tを読んで途中で投げ捨てた
本自体は良書なんだけどtrait境界がもう人間の理解を超えてる

Cだと時間をかければ書き終えれるけどバグが入ってる可能性がある
0510デフォルトの名無しさん
垢版 |
2022/05/10(火) 23:56:51.45ID:1A7PmF6X
Rustはある程度から人間の理解を超えて来るので一定程度以上勉強しても無駄かなと
0513デフォルトの名無しさん
垢版 |
2022/05/11(水) 00:06:17.66ID:0PGn8I2M
プログラミングはは知的生産だと思ってたけどこれはもう違う別の何か
他人の書いたコードは意味が分からないというけどそれ以前に自分で書いてもわけがわからない

理解の外にあっても動くからあっている
コンパイルエラーが出ないからあっている

それは本当に正しいことなのか
バグが入ってないのかはもちろん期待した動作なのかすらわからない

人間が揺さぶられてきている
0516デフォルトの名無しさん
垢版 |
2022/05/11(水) 00:13:46.50ID:q+AJMQiL
>>509
そのtrait境界は意外に理解が簡単だった
ジェネリックにプログラムを書く時にそのジェネリックな型には何が来てもいいわけではなくて
書くプログラムの中で使っている機能(というかインタフェースというかメソッド)を持つ保証する(というか限定するというか制約条件を並べる)こと

例えば本スレからコピペだけど以下のフィボナッチ数列イテレータ
型へのtrait境界がwhereのところにあるClone(複製できること)とTryFrom<usize>(数値から変換できること)とnum::CheckedAdd(オーバーフロー検知付き足し算ができること)の3つを満たしてればどんな型でも適用可能

fn fibonacci<T>() -> impl Iterator<Item=T>
where T: Clone + TryFrom<usize> + num::CheckedAdd,
{
let [zero, one] = [0, 1].map(|n| T::try_from(n).ok().unwrap());
itertools::unfold((zero, one), |(m, n)|
m.checked_add(&*n).map(|f| {
*m = n.clone();
*n = f.clone();
f
})
)
}

pub fn main() {
for f in fibonacci::<i8>() {
print!("{f} ");
}
println!();
}
0517デフォルトの名無しさん
垢版 |
2022/05/11(水) 00:18:22.19ID:xUytDrfJ
実際にトレイト境界の条件の実装部分を読んでみた

シンプルなマクロで書かれてる部分もあれば複雑な部分もある
そこで書いてある実装が本当に確実の条件を満たしうるのかは分からないし
ドキュメントを読んでも厳格な意味が書いてあるわけでもない

どこかで漏れがあってもわからない
0518デフォルトの名無しさん
垢版 |
2022/05/11(水) 00:37:16.75ID:xUytDrfJ
例えば条件の一つがよくよく考えてみればさらに二つに分離して考えないといけないものだと
後で判明するともう既存のコードがみんな死んでしまう
使用してる所を全部さかのぼって修正しないといけない

それかRust自体の仕様変更で死んでしまったりいろいろ死にそうな要因がたくさんある
マクロでやりすぎてる
0520デフォルトの名無しさん
垢版 |
2022/05/11(水) 11:02:33.31ID:ut6S4c2T
Rustの標準ライブラリの設計がそもそも間違ってて、その修正のために破壊的な変更がいきなりきたら大変だ、って話?
そんな馬鹿な、と笑っちゃうね
0521デフォルトの名無しさん
垢版 |
2022/05/11(水) 12:27:47.37ID:0Stn7tVM
サプライチェーン問題は批判理由が見つからない人が持ち出しがち。

マクロがない言語だと、同じ機能をコンパイラやらランタイムが持ったりするわけだが、不思議に誰もそれらの機構を疑わなかったりする。

中身が可視化されたのに逆に疑わしく感じた場合は、まずは自分の知識が足りなかったことに気づきましょう。
0522デフォルトの名無しさん
垢版 |
2022/05/12(木) 17:29:32.27ID:LSv3zttQ
実装の問題は重要だろ。
そもそも実装と独立に仕様だけ語れるような作りにrustはなってない。
0523デフォルトの名無しさん
垢版 |
2022/05/12(木) 18:12:00.76ID:cxVwbP/0
何を問題視してるのかもうちょっとわかりやすく書いてくれないと議論にならん
0525デフォルトの名無しさん
垢版 |
2022/05/12(木) 18:20:37.20ID:q5adbU17
コーダー風情にはどこら辺に問題があるかすらわからないんだ
ほっとけばいい
0527デフォルトの名無しさん
垢版 |
2022/05/12(木) 19:03:55.20ID:KS5+XyCs
依存型ってrustは入れてないやろ
0529デフォルトの名無しさん
垢版 |
2022/05/13(金) 10:40:27.81ID:fhDjEdn1
>>521
ランタイムが持ってる言語ならランタイムをアップデートしたら終わり
マクロの言語は該当箇所を探し出して修正して丸ごと再コンパイルが必要

工数考えたらどちらが有利なのかすぐ分かる
知識が足りないのはどちらなんだろうか?
0533デフォルトの名無しさん
垢版 |
2022/05/14(土) 10:40:41.82ID:vWT7MZ9I
さすがナレッジワーカーだね
0534デフォルトの名無しさん
垢版 |
2022/05/14(土) 22:44:26.45ID:z9ygdFkB
Juliaの今ひとつなところはswitch/case文がないところ
あのパイソンでさえ導入したのに時代錯誤

それ以外は良さそうな言語
しらんけど
0535デフォルトの名無しさん
垢版 |
2022/05/15(日) 08:12:53.18ID:peAa8dI5
Juliaではマルチディスパッチしろという方針なのかもしれんが、マルチディスパッチの方が他言語に普及してないのは機能として過剰な割に効率性に劣るからなんだろうかね
0536デフォルトの名無しさん
垢版 |
2022/05/15(日) 08:40:21.58ID:gv+JQ3Ew
まつもとゆきひろ氏が考える、プログラミング言語の未来
https://logmi.jp/tech/articles/326541

楓:「今Ruby、Cの次に好きな言語はなんですか」。

まつもと:そうだな。Elixir、Go、Rustは気になるっちゃ気になるんですね。ただ、正直に言うとRustは僕の好みではない(笑)。

楓:おおー。気になるポイントと好みじゃないポイントはどのあたりなんですか。

まつもと:やはりCを一番よく書くので、システムプログラミングの領域が、私がよくプログラムする領域なんですけど。そこに出てくる言語の中で今一番メジャーなのは、GoとRustであるというのが気になるところですね。

だけど、Rustが型でいろいろなことを言ってくれるのはうれしいところとうれしくないところがあって。つまりコンパイラに怒られるんですね。僕はコンパイラに怒られるのがすごく嫌いなので(笑)。なんかストレスがたまるんですよね。

楓:(笑)。

まつもと:どちらかというと、技術的なことではないところで一緒にがんばれるものがいいなって思っていて(笑)。
0537デフォルトの名無しさん
垢版 |
2022/05/15(日) 08:49:59.25ID:SgXGf86o
どの言語でも間違えればコンパイラに怒られる
その程度でストレスがたまるならば頭がよくないのかもしれない
0538デフォルトの名無しさん
垢版 |
2022/05/15(日) 09:40:56.30ID:N7JPl8Lh
コンパイラに怒られずにランタイムに怒られる方が
ストレスたまりそうなんだが違う感覚の
人もいるんだなあ
0539デフォルトの名無しさん
垢版 |
2022/05/15(日) 09:42:48.17ID:am1d3hDu
必要以上に怒られてるからクソって話なんでしょ
0540デフォルトの名無しさん
垢版 |
2022/05/15(日) 09:49:32.98ID:2T0P5EJz
ランタイムに怒られてもうまく問題点を見つけ出せる方が頭良い気がする
僕はあんまり賢くないからコンパイラが叱ってくれる方が楽
0541デフォルトの名無しさん
垢版 |
2022/05/15(日) 09:50:12.91ID:C1KM65Ry
自分がすごくプログラミングが出来る自負があるから、コンパイラに怒られるとプライドが傷つくから嫌だって言ってるようにも見える
0542デフォルトの名無しさん
垢版 |
2022/05/15(日) 09:52:43.88ID:lixSo2ZB
ひろゆきは賢いからコンパイラは余計なことを小うるさく言わんでいいって感じ?
0543デフォルトの名無しさん
垢版 |
2022/05/15(日) 09:52:58.51ID:WKOj7Eq4
自意識過剰で被害妄想だな
コンパイラは怒ってるのではなくて指摘してるだけ
0545デフォルトの名無しさん
垢版 |
2022/05/15(日) 10:31:50.86ID:C1KM65Ry
Rustのコンパイラに怒られるってことは所有権のシステムとかが全然理解できてないんだと思う

前の職場にもc/c++を数十年やっててrustを毛嫌いしてる人何人かいたけど、今更自分がコンパイラに指摘されまくるのがプライドが許さないんだろうな
0547デフォルトの名無しさん
垢版 |
2022/05/15(日) 11:08:18.85ID:68DnPwxB
人間の理解を超えたところから怒られるのは違うかなと
それってプログラムなのか?
0548デフォルトの名無しさん
垢版 |
2022/05/15(日) 11:12:52.72ID:68DnPwxB
囲碁や将棋はもうAIの方がかなり上に行っちゃって誰もAIに勝てない
プロも含めてAIの手を研究してるけど理解できないのがかなりある

それを意味も分からずただなぞって指してる人もいる

プログラムはそのレベルじゃないけどそういうものに近づいてる
0549デフォルトの名無しさん
垢版 |
2022/05/15(日) 11:25:25.72ID:+6kSxcdv
デバッグ含めた開発効率の良さを考えると可能な限りコンパイル時に怒って欲しいかな
コンパイラが怒ってくれる > ランタイムが怒ってくれる > 誰も怒ってくれない
0550デフォルトの名無しさん
垢版 |
2022/05/15(日) 11:45:48.58ID:cL2R0opO
プログラムを書いてエラーが出ると「自分が否定された」「尊厳を奪われた」と感じる人もいる、という話
https://togetter.com/li/1698737
0551デフォルトの名無しさん
垢版 |
2022/05/15(日) 11:57:01.15ID:UbJQuPTx
ランタイムは運良くバグを踏まなければずっと怒られずに済むのに対してコンパイラは必ず怒られるから
前者の方がいいって人もいるんだろうね
0553デフォルトの名無しさん
垢版 |
2022/05/15(日) 12:28:05.42ID:0scjaaG3
コンパイルが通って、いざ実行してみたら
「segmentation fault.」とそっけなく言われるのもまた一興
0554デフォルトの名無しさん
垢版 |
2022/05/15(日) 12:43:05.95ID:wf2KlSEE
>>545
そうゆう浅はかな考えは恥をかく元。常に所有権を意識しなきゃならないので、言うなら、呼び出される上のほうでロックしてても
複数スレッドでアクセスして安全なのに、所有権をいちいち意識しなきゃならないという事だ。
Rustはスクリプト言語の作者からすれば、面倒な記述が多すぎると感じて当たり前
強いて言えば、こういう浅い奴がマウントとってる現状のRustコミュニティは反吐が出る、Rubyコミュニティも好きでもないけど
0557デフォルトの名無しさん
垢版 |
2022/05/15(日) 15:06:40.70ID:v+sSFlFE
>>545
実はそういうは人を排除するためだけにRustのプロジェクトを立ち上げたりしてる組織もある
0559デフォルトの名無しさん
垢版 |
2022/05/15(日) 16:17:30.31ID:SzIUVHZr
今のコンパイラはエラーが起きた行を指摘するけど
「この辺がちょっと気になります」
と指摘してくれるコンパイラが
そろそろ出てきてもいいような気がする
エラーの種類はそんなにないと思うので
0561デフォルトの名無しさん
垢版 |
2022/05/15(日) 17:05:02.60ID:68DnPwxB
松本が所有権を理解してないんじゃないと思うがw

まっつの言うこととこのスレの指摘はずれてると思う
松本の言ってることを理解してないだけ

気を付けて普通に書いてバグが出ないのが普通
それでも日常的にコンパイラに怒られるのは人間じゃなくて言語がおかしい
0562デフォルトの名無しさん
垢版 |
2022/05/15(日) 19:34:19.11ID:bvYh9RC/
なんか最近開発に興味なくなってきた
こんな時みんなどうしてるの?
プログラミングだけが俺のアイデンティティだったのに
死ななきゃいけない?
0565デフォルトの名無しさん
垢版 |
2022/05/15(日) 21:31:15.68ID:Wjdq3fA+
最近のげんこはprintをpirntとか書くと、
候補を提示してくれるよね。
あたまいい!!
0566デフォルトの名無しさん
垢版 |
2022/05/15(日) 23:05:43.75ID:QlsYdN5b
>>556
一部のコンパイルエラーは修正コード提案してくれるしIDEからボタンぽちで修正できるから、
それ発展させて意図が不明確なコードでも何種類か修正候補出してくれるようにならないかな
0567デフォルトの名無しさん
垢版 |
2022/05/15(日) 23:18:12.92ID:yIEtIhqx
>>565
Qiitaに投稿された「TypoScriptを作った」を思い出した
レーベンシュタイン距離が近ければOKっていうネタ言語
0570デフォルトの名無しさん
垢版 |
2022/05/16(月) 08:44:14.30ID:IfoxgD2F
>>545
Rustはマナー講師みたいなものだろ。
Rustが望ましいと考えるスタイルを強制して他のやり方を許さない。「なんで?」と理由を聞いても「それがルールだから」とか理解しがたいことしか言わない。

せめて「スタックにデータを保存するため」とか「Cleanみたいに参照透過性と性能を両立させるため」とか言えばいいのに、そういった思想的な背景を説明しないからマナー講師が跋扈する。
0571デフォルトの名無しさん
垢版 |
2022/05/16(月) 09:01:06.67ID:nGMMRLLq
>>570
それはどのプログラミング言語でも同じ。
いずれの言語も独特のスタイルを押し付けてくる。
もしそれを感じ取れないならば、それは特定のスタイルに慣れてしまっているだけに過ぎない。

例えばわかりやすい例を持ち出せば、リアクティブな言語や宣言的な言語では、
a = b + 100
と記述しておけば、aが変わればそれに応じてbが変わるし、bが変わればそれに応じてaが変わる。
ところがそうでない不便な言語に出会ったときに、
双方向に自動的に変わってくれないために苛立つかもしれない。
0572デフォルトの名無しさん
垢版 |
2022/05/16(月) 11:59:09.62ID:TAALxp7N
>>571
「それは特定のスタイルに慣れてしまっているだけに過ぎない。」と切り捨てているところに排他的思想&知識マウントを感じるね。

a = b + 100の例は代入演算に対して ("="から一般的に連想される) 「等しい」の意味を適用することにより生じる誤謬。
原理や技術的決定を理解せずに相手にルールを押し付けようとするマナー講師の話とは関係無いな。
0574デフォルトの名無しさん
垢版 |
2022/05/16(月) 13:41:05.21ID:8gGmt1rZ
松本がRust好きじゃないのはまあそうだろうなとは思う。
この人、テストコードとかも好きじゃないとか言ってたし。
個人的にはそれじゃ仕事にならんだろとか思ったりはするけれど、とりあえずこの人のスタンスは一貫はしてるよ。
0575デフォルトの名無しさん
垢版 |
2022/05/16(月) 18:39:47.20ID:qW5+0T97
>>570
マナー講師はフォーマットみたいな個人の好みレベルの話で
コンパイラが指摘する構文とかセマンティクスはその言語の世界における自然法則みたいなものでは
0576デフォルトの名無しさん
垢版 |
2022/05/16(月) 19:09:08.37ID:R1kAqWTp
>>575
エラーメッセージの問題じゃなくてドキュメントの問題かもしれないけど、エラーの形で否定するなら納得のいく理由を教えてほしいものだわ。
自然法則みたいな原理があるなら、その原理からどう推論したらそのルールになるのかの考え方も欲しいところ。
まぁ、それ以前のエラーメッセージしかしないクソ言語も多いけど。C++とか。
0577デフォルトの名無しさん
垢版 |
2022/05/16(月) 21:09:51.80ID:qW5+0T97
>>576
rustのlifetimeとかborrowing周りのエラーはそんな感じでエラーになった理由は教えてくれるよ
例えばどんなエラーの原因を分かると嬉しいと思う?
0578デフォルトの名無しさん
垢版 |
2022/05/17(火) 03:36:27.01ID:maKCFX0H
Rustのエラーメッセージの親切さは異常
0579デフォルトの名無しさん
垢版 |
2022/05/17(火) 04:13:37.47ID:tz+YwBRZ
美人女教師のイラストでも添えたら
エラーメッセージもそれっぽい口調にして
0580デフォルトの名無しさん
垢版 |
2022/05/17(火) 08:12:17.48ID:t8H/GFrA
>>577
原因じゃなくて原理ね。
エラーメッセージとしてはとりあえずは原因と解決策で十分だけど、verboseの時とかは技術的背景とかポリシーとかを説明した解説へのリンクがあると嬉しい。特に制約の厳しいライフタイムとか借用とか。
まぁ、そうなるとrust版D&Eを書くようなものだから大変か。
0581デフォルトの名無しさん
垢版 |
2022/05/17(火) 08:22:18.93ID:aOp3kwmZ
>>580
現状でもエラーによってはGitHubのissueへのリンクが付いてるから、具体的にこのエラーでこのページへのリンクを付けるべきって提案があれば受け入れられる可能性は高いと思うよ
0582デフォルトの名無しさん
垢版 |
2022/05/17(火) 08:39:46.07ID:3guGxSPi
カンマとピリオドの間違いとか
カンマが抜けているとか
うっかり全角文字で記号をうっているとか
初心者にありがちなエラーを
「ひょっとして・・・」
と教えてくれるとうれしいかもしれない
0584デフォルトの名無しさん
垢版 |
2022/05/17(火) 11:37:57.12ID:V5JE6XCC
>>580
例えば、↓のコードをコンパイルすると
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=0bd550e905a2263a33895815c4430436

error[E0499]: cannot borrow `x` as mutable more than once at a time
てな感じでエラーコードが表示されて、以下の解説ページへのリンクが貼られている
https://doc.rust-lang.org/stable/error-index.html#E0499
この中から関連するリファレンスへのリンクが貼られている
現状のドキュメントで十分ではないという問題はあるかもしれないけど、>>580 で言われているような方向性にはなっているよ

>>582
上のコードのセミコロンを全角にしてみたらまさにそんな感じのメッセージが出た
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=118aa7e31d9c6c786d222f34a66623c3

error: unknown start of token: \u{ff1b}
help: Unicode character ';' (Fullwidth Semicolon) looks like ';' (Semicolon), but it is not
0585デフォルトの名無しさん
垢版 |
2022/05/17(火) 16:48:28.24ID:DWSI+bpc
コンパイラのエラーメッセージに外部サービスのリンクって、もしそのサービス終わったらどうすんの?
0586デフォルトの名無しさん
垢版 |
2022/05/17(火) 17:38:26.91ID:V5JE6XCC
>>585
rustのことなら公式サイトへのリンクだよ
さすがに言語のメンテナンスが続く限りは大丈夫でしょう
0588デフォルトの名無しさん
垢版 |
2022/05/18(水) 09:51:35.50ID:ynn+jzpi
最も重要なマナーは
プログラムなのかデータなのか不明な文字列等を使ってはならない
つまりインタプリタを作ってはならない

文字列指向が好きな人にとっては
オブジェクト指向こそが文字列を否定するマナー講師だった

OOPを無視してstatic変数を使ってもコンパイラに怒られることはなかった
怒っているのはいつも人間だった
0589デフォルトの名無しさん
垢版 |
2022/05/19(木) 01:27:36.14ID:Ahp8TrG/
Rustちゃんは生活のすべてを管理されたトップアスリートでヘソ出しユニに胸はぺったんこでショートヘアのすっぴんだけど最高の記録を出す
Goちゃんはそんじょそこらの陸上部員で県大会レベルだけどボインボインのロングでシャワーを浴びたらそのままGoコンにGoできる
どっちがいいかって話よ
0593デフォルトの名無しさん
垢版 |
2022/05/20(金) 03:37:27.56ID:tiOCYDba
      ____
     /      \
   /  _ノ  ヽ、_  \
  / o゚((●)) ((●))゚o \  ほんとはRustスレでやりたいんだお…
  |     (__人__)    |
  \     ` ⌒´     /



       ____
     /      \
   /  _ノ  ヽ、_  \
  /  o゚⌒   ⌒゚o  \  でもRustaceanはクオリティ高いスレしか相手してくれないお…
  |     (__人__)    |  
  \     ` ⌒´     /



       ____
     /⌒  ⌒\
   /( ●)  (●)\
  /::::::⌒(__人__)⌒:::::\   だから次世代言語スレでやるお!
  |     |r┬-|     |
  \      `ー'´     /
0597デフォルトの名無しさん
垢版 |
2022/05/20(金) 09:31:27.55ID:qCLhnuk6
>>595
なかなかゴミみたいな様相だよ
フィボナッチ数列の第n項はメモ化しなくても線形オーダー、あるいは対数オーダーで計算できるのに、メモ化にこだわりのある人が「そのやり方はmainのループと合わせて計算量はn^2だ」とか言い出して散々
0598デフォルトの名無しさん
垢版 |
2022/05/20(金) 10:04:11.72ID:73YqjaVk
>>596
個人的にはむしろ抽象化と両立が難しいところに新しい道ができたように思えた
(過剰なメモ化なら言語関係なくやられがちな気がする)
0601デフォルトの名無しさん
垢版 |
2022/05/20(金) 17:36:21.53ID:g6eOZZWy
Rustのスレなんだし、アルゴリズムで計算量を改善したりする話じゃなくて、Rustのベストプラクティスについて話してほしい
0604デフォルトの名無しさん
垢版 |
2022/05/20(金) 18:17:57.67ID:Cx5X7nNC
>>597
nが与えられた時に
『フィボナッチ数 F_n』を求めるのは単純にO(n)あるいは工夫してO(log n)で合っている

ところがその『F_n』を求める関数を「ループでn回」用いて
『フィボナッチ数列 F_0, F_1, F_2, ..., F_n』を求めると当然n倍でO(n^2)またはO(n・log n)となってしまう
それが後半の「そのやり方はmainのループと合わせて計算量はn^2だ」という話だと思うのでそれも合っている

ところが『フィボナッチ数列 F_0, F_1, F_2, ..., F_n』を生成するイテレータを作ると全体がlog(n)で済む
つまり計算量を大きく節約できる
この二つの区別を出来ているかどうかが重要なポイントかな
0605デフォルトの名無しさん
垢版 |
2022/05/20(金) 18:30:54.17ID:Cx5X7nNC
ごめん1箇所だけ記述ミスを訂正
>>604
× ところが『フィボナッチ数列 F_0, F_1, F_2, ..., F_n』を生成するイテレータを作ると全体がlog(n)で済む
○ ところが『フィボナッチ数列 F_0, F_1, F_2, ..., F_n』を生成するイテレータを作ると全体がO(n)で済む
0607デフォルトの名無しさん
垢版 |
2022/05/20(金) 19:32:41.44ID:0DaneQt4
頭おかしくなっちゃった!
    -=≡ ∩ 彡⌒ミ ∩
 -=≡   .ヽ(´・ω・`) /
-=≡     (    /
 -=≡   (   ⌒)
  -=≡  し  し'
0608デフォルトの名無しさん
垢版 |
2022/05/20(金) 20:02:33.19ID:AMqMmZYo
>>604
そうそう、こんな感じで論点をどんどん変えてくんだよね
フィボナッチ数列のはずがフィボナッチ数列の1~n項の計算にすり替えられちゃう
0609デフォルトの名無しさん
垢版 |
2022/05/20(金) 20:07:15.27ID:Cx5X7nNC
『フィボナッチ数 F_n』を求めるアルゴリズム・計算量と
『フィボナッチ数列 F_0, F_1, F_2, ..., F_n』を求めるアルゴリズム・計算量は当然異なるからね
前者は繰り返し二乗法で1個の算出がO(log n)がベストだけど
後者で前者の方法を使ったら遅くなる
後者は単純に前二つを足していけばn個の算出がO(n)で済みそれがベスト
0610デフォルトの名無しさん
垢版 |
2022/05/20(金) 20:33:10.89ID:AMqMmZYo
スレの流れとしては前者なのに一人だけ「数列だから初項からn項までの計算量を考えろ」とか頓珍漢なこと言ってるのよね
0611デフォルトの名無しさん
垢版 |
2022/05/20(金) 20:52:13.48ID:EQAKr5b0
スレ見たけど最初から全員がフィボナッチ数列を列挙させているから
>>609で言うところの後者だな
そして今日書かれた2種類のコード共に後者のイテレーター

>>610
たぶん君だけが勘違いしている可能性が高いw
0612デフォルトの名無しさん
垢版 |
2022/05/20(金) 20:52:49.34ID:pMSjr2Vl
フィボナッチ数列自体はただの例題なのに異様な執着心見せる人が居るよね
なんかのコンプレックスこじらせてるのかな
0613デフォルトの名無しさん
垢版 |
2022/05/20(金) 20:59:42.21ID:Cx5X7nNC
>>610
フィボナッチ数列といったら F_0, F_1, F_2, ..., F_n, ... だよ
それはともかく前者と後者でベストなアルゴリズムが異なるから前者だけの話をすることはありえないと思う
そして後者のイテレータはそのまま前者をO(n)で求めることが出来るから
どちらもO(n)で十分とするならばイテレータをプログラミングするのが自然じゃないかな
0614デフォルトの名無しさん
垢版 |
2022/05/20(金) 21:04:10.39ID:uKCjuMHy
職業マは生暖かい目で見守ってるよ
初学者・学生・無職・アマチュアプログラマが必死になれるのは
自転車置き場の議論だけだからね
昼間必死に書き込んでるやろ彼らは
0615デフォルトの名無しさん
垢版 |
2022/05/20(金) 21:07:40.93ID:QySmFXhb
フィボナッチってO(1)では?(ビネ並感)
流れはよくわからないが、とりあえず本スレは盛り上がっているようで何よりだね
0616デフォルトの名無しさん
垢版 |
2022/05/20(金) 21:15:10.30ID:EQAKr5b0
各項のオーダーはO(1)可能だが複素数(行列)でムダに計算量多いだろw
結局一覧を列挙するなら足し算していくのが一番速い
0619デフォルトの名無しさん
垢版 |
2022/05/23(月) 01:01:31.28ID:Eq9f2SXv
Qitaベンチマークで、フィボナッチとかドヤァってるドアホ見るけど、片方の言語がoverflowチェックなどが入ってる演算を
使ってるのに、もう片方はチェックが入らない言語を使って比較してることがよくある。とんでもねえアホ
さらにいうなら最適化レベルも、ループアンロールをデフォルトで勝手に行う言語と、明示しない限り行わない言語で
比較してたりメチャクチャなアホ。お前の推しの言語がチェック付き演算行ったら、お前の推しじゃない言語と変わらんからな
0621デフォルトの名無しさん
垢版 |
2022/05/23(月) 02:12:19.04ID:aUQlcplw
標準的なコンパイル方法・プログラムの書き方をした場合の比較になっているのなら意味はあるのでは
0622デフォルトの名無しさん
垢版 |
2022/05/23(月) 05:59:53.99ID:YmsKfutR
確かにCheckedAddとかで書いてるQita記事のフィボナッチベンチなんて見たこと無いね、逆に言うとそれしか意味がない。ベンチとは名ばかりのフワッとした自己満足オナニーだ、100mハードルと100m走くらべてるようなもんさ
0624デフォルトの名無しさん
垢版 |
2022/05/23(月) 09:56:36.54ID:vZp1MWnh
顔真っ赤でコピペして来てるw
書いたどうだという話じゃない、それでベンチマーク取ってみろという話だよ。この流れが分からない奴は個人の問題点w
いちいちオーバーフローがセーフな演算をchecked_addなんて冗長な書き方しか出来ないのだから、言語の問題でしょう?
標準的なコンパイル方法・プログラムの書き方をした場合、危険でズルなんだからw
0626デフォルトの名無しさん
垢版 |
2022/05/23(月) 10:52:41.72ID:ZgbkB3a0
フィボナッチが居ついちまったじゃないかよ。

お前ら責任取ってフィボナッチの話題禁止な。
0629デフォルトの名無しさん
垢版 |
2022/05/23(月) 15:35:29.13ID:wWZ2mUik
>>624
それはあまりにも無知な発言
RustではC/C++やCPUでの同じ動作となっているにすぎない

例えばC/C++では (正確には未定義だが通常動作)
int main() {
char x = 127;
x = x + 1;
printf("%d\n", x); // 出力結果: -128
}

Rustでは (普通にrelease modeの場合)
fn main() {
let mut x: i8 = 127;
x = x + 1;
println!("{x}"); // 出力結果: -128
}
ちなみにdebug modeではpanicで知らせる
release modeでもコンパイラに指定でpanicで知らせることも可能
0630デフォルトの名無しさん
垢版 |
2022/05/23(月) 15:38:27.39ID:wWZ2mUik
>>629に加えてRustでは
let n: i8 = 126;
の時、

println!("{:?}", n.wrapping_add(1)); // 出力結果: 127 // 溢れていないならその値
println!("{:?}", n.wrapping_add(2)); // 出力結果: -128 // 溢れたらラッピング(一周して)その値

println!("{:?}", n.overflowing_add(1)); // 出力結果: (127, false) // 溢れていないならばオーバフローフラグfalseが返る
println!("{:?}", n.overflowing_add(2)); // 出力結果: (-128, true) // 溢れたらオーバフローフラグtrueが返る

println!("{:?}", n.checked_add(1)); // 出力結果: Some(127) // 溢れていないならばOption型のSome(値)が返る
println!("{:?}", n.checked_add(2)); // 出力結果: None // 溢れたらOption型のNoneが返る

println!("{:?}", n.saturating_add(1)); // 出力結果: 127 // 溢れていないならその値
println!("{:?}", n.saturating_add(2)); // 出力結果: 127 // 溢れたらその型の上限の値

といったようにRustでは求められている状況に応じて容易に多様な対応を取ることが可能
Rustよりも用意周到なプログラミング言語があればその動作を教えて欲しい
0634デフォルトの名無しさん
垢版 |
2022/05/23(月) 16:13:42.23ID:zhKycwRA
何が用意周到なんだか。言語のことを言ってるんじゃなく、「あくまでそれでベンチマーク比較すんなよド素人」という話だけなのに、ムキになって言語機能の紹介書いちゃうオジサン
蛇足的に言語のことを言うなら、RustよりまともなのはC#でcheckedキーワードの明示による算術のオーバーフローをチェックかな?安全に足し算したいだけで毎回checked_addなんて書くのは勘弁願いたいのは本音。C#もデフォルトで安全に倒すという思想からも逸脱してるとも言えるが
0636デフォルトの名無しさん
垢版 |
2022/05/23(月) 16:33:53.72ID:wuIMUAe9
CPU・C・C++・C#・Rust全てにおいてオーバフロー時は一周回った結果になるってことか
じゃあそれが標準的な振る舞いなのだろう
0638デフォルトの名無しさん
垢版 |
2022/05/23(月) 20:07:10.01ID:pMTVA02Y
>>636
Goもそれらの言語と同じ
int8(127)に1を足すと-128となる
標準でオーバフローチェックしなくてズルい!と発狂している人はどんな言語を使っているのだろう
0639デフォルトの名無しさん
垢版 |
2022/05/23(月) 22:48:29.77ID:X9GYHqrY
実装が処理速度に与える影響を論じるのなら浮動小数点数の話で語り始めるべきだったなw
0640デフォルトの名無しさん
垢版 |
2022/05/24(火) 01:58:49.24ID:e1yfwJHI
Pythonなどは(無限にではないが)演算で型拡張が行われるから、それらと同列でベンチマークすべきではないのは同意
Rustを愛しすぎて、顔にウンコ付いてて冗長で気持ち悪い書き方を擁護して発狂する用意周到オジサン
0641デフォルトの名無しさん
垢版 |
2022/05/24(火) 02:20:04.04ID:8GgyJL9r
Rustでの標準挙動は>>636>>638により他の主要なプログラミング言語と同じ
その上で>>637など演算毎にチェックも可能
このような状況でとなおRust叩きをしている人は頭がおかしいのかそれとも
0644デフォルトの名無しさん
垢版 |
2022/05/24(火) 10:43:26.98ID:7zq5Zl9C
言語は一つに統一したらええに。
言葉も英語だけなら良かったに。
0651デフォルトの名無しさん
垢版 |
2022/05/24(火) 16:25:30.71ID:Z3J3KQ7G
Swiftやってると某こんスレにいるアホ言語初心者のような参照カウントの悪辣性に気付くんだわ。その言語の機能解説ずーとしてるバカたち
1つでもスマートで無いと言えば「自分たちが攻撃された」と思い込み、べたコード貼り付けて得意満面に機能解説しだす
0652デフォルトの名無しさん
垢版 |
2022/05/24(火) 16:38:55.79ID:/TotnhyC
>>650
1 + 1 = 2は定義上そうなっているだけなので理解できるかどうかという話じゃないんだぞ(クソリプ)
0653デフォルトの名無しさん
垢版 |
2022/05/24(火) 16:39:22.08ID:sOTuiKrj
「Swiftになってよかったこと」で調べればobjective-cの駄目なところはいくらでも出てこない?
0654デフォルトの名無しさん
垢版 |
2022/05/24(火) 17:03:32.22ID:Q0PWN6eS
Swiftは言語だけみれば結構いいけどね
エラーハンドリング機構はメジャー言語の中では一番進んでる

objective-cは名前空間がなくて衝突回避のためにどうしても長い名前になるのがよくなかった
Swiftにも引き継がれてるメソッド名が引数名込みになるルールも分かりにくい
あとは動的ディスパッチなので速度が必要ならCかC++で書かないといけないのが面倒だったかな
0655デフォルトの名無しさん
垢版 |
2022/05/24(火) 18:08:59.87ID:ITkZMsqO
>>653
ビチグソが固形ウンコになったくらいのレベルでよかったとかいうxcodersは頭がおかしい定期
0656デフォルトの名無しさん
垢版 |
2022/05/24(火) 18:11:41.40ID:ITkZMsqO
ごめん、うんこに失礼だった
うんこは体にとって大事だけど
xcodeは世界の敵、環境破壊兵器、サリン、AntiSDGs、人工地震5Gだったわ
世界平和のために早く殺すべき
0657デフォルトの名無しさん
垢版 |
2022/05/24(火) 18:32:36.39ID:K71E2ixm
>>654
同意
0662デフォルトの名無しさん
垢版 |
2022/05/24(火) 22:38:22.80ID:5G1zL+3l
Xcodeが嫌ならVS CodeかAppCode使えば良くね?何が問題なの?
0666デフォルトの名無しさん
垢版 |
2022/05/28(土) 09:48:31.36ID:EmXYdsgj
kotlinのチュートリアル的なのみたらif式は変数に代入してコールできるとかあったけどいつ実行されるの?コールしたとき?それとも代入された変数には既にif式の実行結果が入ってる?
0667デフォルトの名無しさん
垢版 |
2022/05/29(日) 16:30:35.70ID:89z2cDQI
・フリーエンジニアが年間3,600万円の売上を上げた方法を解説する
・26歳で独立して月収150万になった 元引きこもりエンジニアの物語
・ブラック企業から退職し、独立後11ヶ月で“月収300万円超え”になるまでの軌跡を
 デザイナー社長船越良太に聞いてみた!
・ITフリーランスで月額単価150万円!万が一の就業不能に備える無料の保険もある「クラウドテック」
・フリーランス時代に月収4万円→最高340万円を達成した船越さんに、「お金」との向き合い方を聞いてみる
・フリーランスSEってどれくらい稼げるの?月単価160万円の案件を扱う定番エージェント
・フリーランスの仕事や職業の種類って何があるの?独立5年目で月収200万の僕が詳しく解説
0678デフォルトの名無しさん
垢版 |
2022/06/01(水) 17:27:50.52ID:bHuwLCJo
>>671
高収入になるほどRustを好む傾向がはっきりデータに出ているな
この状況でRustを叩いてる連中はどういう人たちなのだろう?
0679デフォルトの名無しさん
垢版 |
2022/06/01(水) 17:43:20.57ID:IxX6jh1U
あからさまにRustを叩いている人はごく一部を除いていない
ほとんどはRust信者を生暖かい目で見ているという立ち位置
0682デフォルトの名無しさん
垢版 |
2022/06/02(木) 01:26:39.73ID:OV4goLPm
>>678
叩きもなにも、もはや誰も言語仕様の話はしていない。汚物連呼程度の煽りならスルーするのが賢明だ
0683デフォルトの名無しさん
垢版 |
2022/06/02(木) 07:49:13.42ID:0uHbICXr
Rustは素晴らしい言語ではあるが
頭が悪い側の一部のプログラマーが理解できない可能性ないのか?
0685デフォルトの名無しさん
垢版 |
2022/06/02(木) 09:03:19.01ID:Y3NDvf7Q
むしろ駄目プログラマーを上手く排除できるからありがたい
理想的な社会になる
0686デフォルトの名無しさん
垢版 |
2022/06/02(木) 11:14:24.49ID:kLxnMhNJ
駄目プログラムがRustに置き換わるだけで何の解決にもなっていないのでは?
0688デフォルトの名無しさん
垢版 |
2022/06/02(木) 11:51:30.38ID:ZMFIZVkF
例えば駄目プログラムの典型として
「データ構造スパゲティ」

GC言語だとそれでも動いてしまうがメンテしにくい、バグ入り込みやすい、デバッグしにくいなど、当然問題ありまくり
C/C++だと解放忘れや解放後利用や多重解放などが入り込みがちで難解になるため普通は避けるが、避けない人も出てきてはまる
Rustだとコンパイルが通らないことで、それら諸問題を避ける形になることが多い
0690デフォルトの名無しさん
垢版 |
2022/06/02(木) 13:51:42.44ID:2I6UvhVY
>>688
データ構造がスパゲッティでも、Rustのルールに則っていれば、動いてしまうんじゃないの?

Rustだって、設計の良し悪しまで判断できないと思うんだが。
0692デフォルトの名無しさん
垢版 |
2022/06/02(木) 14:43:28.56ID:wPySDGOC
>>685
まぁ確かに
Ruby募集すればスクール卒が集まるし、PHP募集すれば障害者雇用枠が集まるしな
そういうこと
0693デフォルトの名無しさん
垢版 |
2022/06/02(木) 15:05:39.70ID:MwnGmD5s
>>692
そういうのはRuby募集するときにRustスキル必須にすればいいけど、そんなことをしたらコスト上がるだろ。
コスト以上の売上を上げられるのかね?
0695デフォルトの名無しさん
垢版 |
2022/06/02(木) 18:38:30.38ID:aZCO8NlO
>>687
C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために
さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが
簡単に生産されるようになってる。正直いって、C を選ぶ理由が C++ プログラマーを
追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。

C++ はトンでもなく悪い設計の元になりうる。どうせこの言語ではいつも STL やら
Boost やら、その他ゲロゲロベロベロの「素敵な」ライブラリの機能を使って、
それがあんたのプログラムに「役立つ」んだろうが、以下のことが起きる:

- うまく動かないときにもたらされる際限のない苦痛 (あと STL とか、特に Boost が
安定してるとか移植性があるとかいう奴は、どいつもこいつも大ウソつきで、
もはや笑えるレベルを超えている)

- 非効率な抽象プログラミングモデルで、2年たった後にこれらが実はそんなに
効率的じゃなかったことに気づくケース。でもそのときにはすでに全部の
コードがその素晴らしいオブジェクトモデルに依存していて、直すためには
アプリ全体を書き直さなきゃなんない。

言いかえれば、唯一まともで、効率がよくて、システムレベルで使えて、移植性がある
C++ ってのは、基本的に C で使える機能だけに限ったときなんだ。そして C だけに
限定するってことは、他の人がそれをめちゃくちゃにしないってことで、
ついでに沢山のプログラマが実際に低水準の問題を理解することができて、アホらしい
「オブジェクト・モデル」のたわごとを持ちこまないってことだ。

>正直いって、C を選ぶ理由が C++ プログラマーを追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
>正直いって、C を選ぶ理由が C++ プログラマーを追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
>正直いって、C を選ぶ理由が C++ プログラマーを追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
>正直いって、C を選ぶ理由が C++ プログラマーを追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
>正直いって、C を選ぶ理由が C++ プログラマーを追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
>正直いって、C を選ぶ理由が C++ プログラマーを追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
>正直いって、C を選ぶ理由が C++ プログラマーを追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
>正直いって、C を選ぶ理由が C++ プログラマーを追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
>正直いって、C を選ぶ理由が C++ プログラマーを追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
>正直いって、C を選ぶ理由が C++ プログラマーを追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
0699デフォルトの名無しさん
垢版 |
2022/06/02(木) 21:41:51.25ID:WnYotmDJ
>>690
Rustでデータ構造がスパゲッティだと
参照や競合を解決するためにそれ用のを使わざるを得ないから
その使われている部分が無理やりなのか必要なのかをチェックするだけで判別できる点は良いね
0700デフォルトの名無しさん
垢版 |
2022/06/02(木) 23:25:41.34ID:C1W9vuQS
そもそもスパゲッティデータ構造って定義はなに
フローにおけるサイクロマティック複雑度みたいな指標あるんでしたっけ
0701デフォルトの名無しさん
垢版 |
2022/06/03(金) 12:08:17.39ID:xzoD2mhR
>>690
0か100で判断すんな。
他の言語よりマシって言ってるんだろ。
0702デフォルトの名無しさん
垢版 |
2022/06/03(金) 12:18:20.21ID:xzoD2mhR
頭固いやつほど0か100でばかり判断しやがる。
0705デフォルトの名無しさん
垢版 |
2022/06/03(金) 12:44:43.82ID:yhFti50j
ちょっと待て
俺たちプログラマは抽象化と常に隣り合わせになりながら生きてるはずだ
0708デフォルトの名無しさん
垢版 |
2022/06/03(金) 14:31:49.94ID:RXRy7t82
昔のレベルの低い状況だったらよかったのかもしれんが、抽象バカはこれからはプログラマーとしてはやっていけないよ。
今はテストコード書くのが当たり前だから。
0709デフォルトの名無しさん
垢版 |
2022/06/03(金) 14:36:17.21ID:PVwM5tOu
まだスパゲッティデータ構造とかいう話をしているんかよ。新しいバズワードでも作りたいんかね。
一般的でない用語を使いたければ、せめて定義ぐらいはしろよ。
0710デフォルトの名無しさん
垢版 |
2022/06/03(金) 16:26:17.35ID:ypnnfw4Q
>>688
Rustにも進出してそれを体感するようになった
Rustはデータ競合もコンパイラがチェックするから他の言語では気付かなかったことを把握して組めるようになった
0713デフォルトの名無しさん
垢版 |
2022/06/03(金) 17:56:42.36ID:yufR8mPg
>>711
実環境と同じで開発する Docker っていうんだぜ 最新の開発手法なんだが 逆に知らないのか?RUSTとか言ってるバヤイじゃないだらw
0714デフォルトの名無しさん
垢版 |
2022/06/03(金) 18:36:29.92ID:PVwM5tOu
>>711
受入側がテストケースを作るという話なら理解できるけど、そういう話じゃ無いんだろうなぁ。

>>713
それはOpsDevの話だから、ちょっと違う気がする。
0715デフォルトの名無しさん
垢版 |
2022/06/03(金) 19:16:59.53ID:os9nRGDZ
> スパゲッティデータ構造

「所有権の複製」と同じ独善的で哀れな響きを感じる
0716デフォルトの名無しさん
垢版 |
2022/06/03(金) 20:43:36.50ID:Obl8jI4y
データと環境の区別がつかないやつとか
Dockerを最新開発手法だと思ってるやつとか
DevOps知らないやつとか
スパゲッティデータ構造wとか
ここは底辺の巣窟だな
0717デフォルトの名無しさん
垢版 |
2022/06/03(金) 21:05:02.43ID:os9nRGDZ
底辺というか単にアマチュアと思う
仕事で書いてるマがあんまいないでしょここ
学生さんか無職によるエアプの応酬でしょひたすら
0718デフォルトの名無しさん
垢版 |
2022/06/03(金) 23:44:10.63ID:gxOeTsOz
YouTube で有名な、雑食系エンジニア・KENTA の動画

EC2はもうオワコンです
www.youtube.com/watch?v=G_ILES8fmf8

ほとんどの企業が、Docker, Kubernetes へ移行している。
自分でOS を管理してはいけない。更新などが面倒だから

だからAWS でも、Elastic Container Service(ECS)ではなく、Fargate を使えと言ってる。
他には、AWS Lambda とか

YouTube で有名な、くろかわこうへいのAWS入門書も出ている。
サロン内の数十人で書いたみたい

米国年収では最高峰のAWS Solutions Architect など、アソシエイト3冠でも狙えばよい

Dockerなら、この本が簡単。
自宅ではじめるDocker入門[改訂版]、浅居 尚、2021/4
0720デフォルトの名無しさん
垢版 |
2022/06/04(土) 10:14:15.98ID:vvbHqYcO
KEИTAはNGワード推奨
0722718
垢版 |
2022/06/04(土) 22:12:41.70ID:qz14Jeu3
ECS(Elastic Container Service)・EKS(Elastic Kubernetes Service) については、
EC2・Fargate の2種類のデータプレーンがある

ECS on EC2・ECS on Fargate
EKS on EC2・EKS on Fargate
0723デフォルトの名無しさん
垢版 |
2022/06/05(日) 00:38:35.99ID:fbWW3RR4
>>722
さすがです
些末な言語でケンカしてる土方PGとはレイヤーも知識の深さも違いますね・・・
0726デフォルトの名無しさん
垢版 |
2022/06/05(日) 12:43:13.05ID:1HHUj8mf
それだけ昔も今もタイトルの読めない人が蔓延ってることだよ。
0729デフォルトの名無しさん
垢版 |
2022/06/05(日) 13:45:25.71ID:9C0C056E
なんかあの動画原稿読んでる感が強いんだけどゴーストライターが原稿書いてるなんて事ないよな
自分の書いた原稿ならそんなに棒読みにならんとは思うんだけど
0732デフォルトの名無しさん
垢版 |
2022/06/05(日) 19:42:08.90ID:NPpCVuaP
はらたいらに負け
0733デフォルトの名無しさん
垢版 |
2022/06/05(日) 20:41:09.63ID:aIrlo+D0
スクラッチのPHP並にWEB開発が楽な次世代言語が欲しいんですよ
多分Rustだろうけど
0735デフォルトの名無しさん
垢版 |
2022/06/06(月) 00:16:37.72ID:RzhuA7sN
某スレで気持ち悪いオナニーコード書いて一生懸命しょーもないフィボナッチの話してるふりしながらダメ人間批判のアホどもへ
  ┏━━━━━━━┓
  ┃//  Λ_Λ  ┃
  ┃/  <`Д´>つ┃
  ∧_∧m9   ノ ┃
 <   >し―J //┃ ダメ人間!
 ( O つ   // ┃
 し―J ━━━━━┛
技術上の優劣は、人格や感情的表現とは一致しない。
0743デフォルトの名無しさん
垢版 |
2022/06/11(土) 16:48:28.61ID:HmxRmWBo
> TypeScriptはJavaScriptの改良版と見なされることもありますが、実際はそうではない。
> 他の言語と同じように欠陥があります、最も重要なものの1つは、コンパイル時間が遅いことです。
> 小さなプロジェクトでは、純粋なJavaScriptからTypeScriptに切り替えるときにコンパイル時間が大幅に増加することはないかもしれませんが、複雑な、例えばReactのような大規模なプロジェクトでは顕著になります。
> ランタイムのサイズが大きいことを考えると、DenoがTypeScriptを止めるのも当然のことです。
>
> 開発中の型チェックは、コンパイル時にコストがかかります。

ようするにTypeScriptは巨大プロジェクトに向いてないのか
Microsoftは巨大プロジェクトのノウハウなんて膨大に持ってるだろ、なんとかしろよ・・・
0744デフォルトの名無しさん
垢版 |
2022/06/11(土) 17:15:19.17ID:Q3eIHQbE
時間掛かるから型チェックやめまーす
ってじゃあそのチェック何で代替すんねん
指さしヨシッでもすんのか?
バカじゃねーの
0747デフォルトの名無しさん
垢版 |
2022/06/11(土) 19:13:02.17ID:Lxou0O6d
TSにはインクリメンタルビルドの仕組みがなくてファイル変更のたび毎回フルビルドが必要なの?
0749デフォルトの名無しさん
垢版 |
2022/06/11(土) 19:35:24.48ID:Lxou0O6d
>>748
制約を明示したり強制したりするのにリーズナブルだから型が使われているんだと思うが
何で代替しようとしているの?
0752デフォルトの名無しさん
垢版 |
2022/06/11(土) 20:15:54.30ID:Kh7p4488
>>742
コンパイル時間でGoに勝てる言語ってある?
0758デフォルトの名無しさん
垢版 |
2022/06/11(土) 21:11:25.04ID:Kh7p4488
>>753
何言ってんだこいつ
Denoはコンパイル時間って言ってるんだが
0762デフォルトの名無しさん
垢版 |
2022/06/11(土) 21:55:33.13ID:N9Pa64KK
Denoのjsってそんなに大規模か?
VSCodeなんかに比べたら全然大した量じゃないように見えるが
ビルドパイプラインがヘボいんじゃね
0763デフォルトの名無しさん
垢版 |
2022/06/11(土) 22:14:50.96ID:Kh7p4488
>>760
文盲乙
0766デフォルトの名無しさん
垢版 |
2022/06/11(土) 23:13:10.68ID:SJ0jyJTM
Rustのようにかなり強力にコンパイル時エラーでほとんどの問題を排除してくれる堅さとは異なり
TypeScriptは型チェックしかしてくれず元のJavaScriptの緩さから本質的には変わっていない
本体はがっちりRustで作りあとはJavaScriptという方針は間違っていない
0767デフォルトの名無しさん
垢版 |
2022/06/11(土) 23:15:22.91ID:Nh4QsFq2
確かにRustのコンパイルが遅いのが嫌だという意見はわかる。”C++より早いだろ?”とか”嘘つき!Rust速い!”とかコメントしなくてあ、結構です
仕組み上トレイトの組み合わせで遅くなるのはわかるんだが、もう少しどうにかならんかの?
0772デフォルトの名無しさん
垢版 |
2022/06/12(日) 02:09:11.61ID:p7K2g0W9
プログラミングにも理解があって英語ぺらっぺらな海外トップ学歴の経営人材なのに
日本語の匿名掲示板という狭い世界で推し言語の擁護にムキになってるとはご乱心だな
0774デフォルトの名無しさん
垢版 |
2022/06/12(日) 06:42:11.19ID:OtYNM0HI
Javascriptに対するTypescriptってCに対するC++みたいなもんだろ?
その気になればある程度まともな型システムは使うことができる程度
0775デフォルトの名無しさん
垢版 |
2022/06/12(日) 08:25:07.16ID:54GVQ0UL
結局地がjsな以上互換性を保ちながら完全に型で覆うのは難しいよねって
まぁPurescriptみたいになってもらっても困るんだが……
0776デフォルトの名無しさん
垢版 |
2022/06/12(日) 08:59:49.71ID:Znbho8o6
JVMバイトコードに対するScalaみたいなもん
Java書くより罠が多いけど圧倒的に便利
バイトコードを直接書く阿呆はいない
こんな感じ
0777デフォルトの名無しさん
垢版 |
2022/06/12(日) 09:50:18.87ID:6guykT66
さすがにそこまでじゃない
JSをそれなりの規模で使いたければTS使った方が楽なのは確か
0781デフォルトの名無しさん
垢版 |
2022/06/12(日) 13:11:27.34ID:eghQJQYK
少なくともそのQiitaには、Denoの実行速度が遅いからJavaScriptに移行した、とまでは書いてないと思うんだけど、なんか誤読してる人多い?
Denoの実行速度が遅いからじゃなくて、Deno自体のビルド速度が遅くてDenoを開発する人にとって辛いから移行したんでしょ?
0783デフォルトの名無しさん
垢版 |
2022/06/12(日) 15:26:48.02ID:QJCkSZm+
typescriptのコンパイラはtypescriptで書かれてJavascriptにして実行されてるから遅いんだろう
言語としてはセルフコンパイルしたいし、いろんな環境で動かすためでもあるし
でもrustとかで書いてもいいのでは
0784デフォルトの名無しさん
垢版 |
2022/06/12(日) 15:28:48.97ID:QJCkSZm+
マシン語にしてるわけでもないし、処理としてはコンパイラとしては軽い方だから
rustにしたら爆速になるのでは
0785デフォルトの名無しさん
垢版 |
2022/06/12(日) 15:49:11.35ID:kUS96AVF
Kotlinとか確か開発者がロシアじゃなかったっけ?もうオープンソースだから米国的にはOKなの?
0787デフォルトの名無しさん
垢版 |
2022/06/12(日) 22:01:47.21ID:L2pGDO9p
>>786
いち早く出してねーよ
ロシア政府なみの嘘つくな

最初のツイートはロシアのプロパガンダと同じ巧妙な内容で反感買いまくってから追加で声明出したんだろ
0788デフォルトの名無しさん
垢版 |
2022/06/12(日) 22:19:05.57ID:e/a7Unpq
JetBrainsのサンクトペテルブルクのオフィスとブラハのオフィス(本社)の写真みたけどすげぇ格差だったわ
ああいうの見ると建前上の本社を東京に置いてる中華企業と体質が同じに感じてもう一つ信用できない
0789デフォルトの名無しさん
垢版 |
2022/06/13(月) 02:53:25.83ID:asZan2yI
tsの変換や型チェック処理する機能はgoやrustで書き直すプロジェクト進行中だから
そこは欠点じゃないよね
0790デフォルトの名無しさん
垢版 |
2022/06/13(月) 03:23:11.66ID:aNdPD0Bj
PHP+味付け程度にJSでシステム作ってる化石野郎でも応用効く言語教えやがれください
0796デフォルトの名無しさん
垢版 |
2022/06/13(月) 19:42:18.44ID:FiSspViM
Goにオプショナル型とスプレッド構文とmap,reduce,filterのコネクション系操作が入ったら最高なんだけど
Go 2だとかで機能増やしてくれないかな
0797デフォルトの名無しさん
垢版 |
2022/06/13(月) 19:52:35.02ID:FiSspViM
Typescriptの糞なところ

標準ライブラリがゴミ、ゆえに依存が爆発的に増える
巨大node_modules、プロジェクトごとに作られるのが最高に糞
commonjsやらesmodulesやら統一されていないモジュール形式
prettierやらtsconfigやら大量の面倒な設定
サードパーティーのライブラリに向かってコードジャンプしても型定義ファイルに飛ぶせいでコードが読めない、ゆえにGithubを見に行く必要がある
例外の型定義がないので静的検査ができない、どこでエラーをどうハンドリングするべきかの判断が全くつかない、ゆえに全体をtry catchで囲むことになる

この辺がすべてGoでは問題ないから、あとは少し機能増やしてくれたら文句ないんだよなー
0798デフォルトの名無しさん
垢版 |
2022/06/13(月) 21:04:41.26ID:fjH64UU8
GoのMap糞過ぎて全く読めない
JSONをそのまま使えっておまけに型までつくTSさいつよってことなんよ
0799デフォルトの名無しさん
垢版 |
2022/06/13(月) 21:39:05.94ID:G3CRt2bF
構造体作ってマッピングするのじゃ何がダメなの?必要なのだけ定義すればいいんだが?
Typescriptだと型ガードしっかり書かないとただのなんちゃって状態になる雑魚
0800デフォルトの名無しさん
垢版 |
2022/06/13(月) 21:47:26.95ID:SDmJj53H
>>797
>サードパーティーのライブラリに向かってコードジャンプしても型定義ファイルに飛ぶせいでコードが読めない、ゆえにGithubを見に行く必要がある

「Atom」を開発終了に追いやった「Visual Studio Code」、月例更新でさらに強力に
https://forest.watch.impress.co.jp/docs/news/1416263.html

TypeScript開発では「TypeScript 4.7」が導入されたほか、待望の[ソース定義への移動]がサポートされた。100%の確度ではないが、型定義ファイル(*.d.ts)ではなく、JavaScriptによる実装部分へ直接ジャンプできる。
https://twitter.com/mattbierner/status/1517182624917340162
https://twitter.com/5chan_nel (5ch newer account)
0803デフォルトの名無しさん
垢版 |
2022/06/13(月) 22:36:53.23ID:q8SxO5f8
大きくて、APIが安定していて、ゴミが少ないやつが良い
スレタイの中だとGoだろうな
0804デフォルトの名無しさん
垢版 |
2022/06/14(火) 00:15:44.86ID:FCklzJDr
goはpackageの命名が糞杉
_すら許さないからどいつもこいつも呪文みたいになって可読性最悪
0805デフォルトの名無しさん
垢版 |
2022/06/14(火) 11:26:15.39ID:Rf4XfD/C
Dも_を変な扱いしてたな
0806デフォルトの名無しさん
垢版 |
2022/06/14(火) 11:32:38.45ID:8A+wXs8O
Effective Goでは、パッケージ名は1単語にしよう、って書かれてるけど、アンダースコアや大文字小文字が使えないわけではないよ

どうせ1単語とかいう命名規約はあまり守られてないだろうし、つらいならそのへんの規約も破っちゃえば?
0808デフォルトの名無しさん
垢版 |
2022/06/14(火) 14:45:46.33ID:Hct9Q+tn
いまだにgenrandom, gen_raondom, genRandom, GenRandomのどれがいいかわからん
PythonやってるとgenrandomだがJavaScriptもやるからgenRandomも使う
GoもやるとなったらGenRandomまで使わんといかん
いったいどれがいいんだ?
誰か俺に教えてくれ
0810デフォルトの名無しさん
垢版 |
2022/06/14(火) 17:17:08.52ID:zltAtr9K
CSSならlong-name-propertyだし、JSONならLong_Name_Property、SQLならLONG_NAME_PROPERTYまたは
long_name_property、JSなど言語ならlongNamePropery、でも定数ならLONG_NAME_PROPERTY、CSVなどなら
Long Name Propertyだ。
そして、JavaやC#、C/C++、PythonやGoでもRustでも命名規則(多くは悪魔でも推奨)のようなものがあり、歴史的な経緯と
作者の今日子な意思、プログラミングのしずらさ、あるいはシヤスサ、あるいはコードレビューマウントのために脈々と受け継がれる。
つまり、人類はいまだに命名の正解を得ていない・・・
モジュール snake_case
型 CamelCase
トレイト CamelCase
Enumのバリアント CamelCase
関数 snake_case
0812デフォルトの名無しさん
垢版 |
2022/06/14(火) 17:49:20.30ID:8A+wXs8O
標準ライブラリは名前が綺麗なのに、自分で命名しようとすると難しくて悲しい
0813デフォルトの名無しさん
垢版 |
2022/06/14(火) 17:55:42.15ID:jATTslXV
そうでもないぞ
RustのThe Bookに出てくる乱数のほぼ標準ライブラリは非常に名前が汚い
馬鹿が考えたような名前と構造
0821デフォルトの名無しさん
垢版 |
2022/06/14(火) 18:20:27.99ID:jATTslXV
golang入門したころにファイルの読み書きや文字の扱いのライブラリを見て愕然としたな
こういう世界がまだあるんだなって
0825デフォルトの名無しさん
垢版 |
2022/06/14(火) 18:40:13.93ID:xmR5ySSw
>>821
file, err := os.OpenFile("foo.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0777)
これがキレイだとは決して思わんが....

let mut file = File::options().read(true).write(true).open("foo.txt")?;
これもどうかと思うぞ?何故、直感的ではないoptionsでopenに繋げるチェーンなのか..確かにオプションの設定はpanicが起こらないから
言語的な理由(言い訳)は分かる。でもRustってオプション扱いを第二引数にしない思想があるんだろうか...

>>822
デニス・リッチーとかC言語の作者とかだからC言語のライブラリと似た名前になるはある意味当たり前だよなあ
0827デフォルトの名無しさん
垢版 |
2022/06/14(火) 18:47:21.55ID:8A+wXs8O
デニス・リッチーが直接に関わったという話は聞いたことないけど、ケン・トンプソンと勘違いしているのだろうか
親しい人物たちではある
0833デフォルトの名無しさん
垢版 |
2022/06/14(火) 19:15:33.51ID:eqeTk7gF
Goのモジュールシステムシンプルでわかりやすいと思うけどな
フォルダでパッケージ表すだけだし
名前で困るってのがよくわからないけど必要以上に作ってるんじゃないの?

Rustのほうが複雑で意味不明だと思うんだが
0834デフォルトの名無しさん
垢版 |
2022/06/14(火) 19:21:23.05ID:bI70PJIL
Don't you know you know?
0835デフォルトの名無しさん
垢版 |
2022/06/14(火) 19:37:19.54ID:nghM89d8
>>825
メソッドチェーンでオプション書くの大嫌い
単なるデータは普通にデータとして書かせてくれ
0837デフォルトの名無しさん
垢版 |
2022/06/14(火) 19:54:38.26ID:GHB3UZAZ
ケン・トンプソンなんかおまえ
この業界に居たらまさに神様みたいな存在で
それより上がおらんくらいのハッカーなんだから
こんなクソスレで軽々しく名前出すのすら憚られるやろフツーに
0838デフォルトの名無しさん
垢版 |
2022/06/14(火) 20:00:51.53ID:GHB3UZAZ
> ile, err := os.OpenFile( os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0777)
> let mut file = File::options().read(true).write(true).open("foo.txt")?;

File.open('foo.txt', 'w'){|f| ... }
やっぱrubyがスッキリやね
0839デフォルトの名無しさん
垢版 |
2022/06/14(火) 20:30:21.52ID:FCklzJDr
>>837
The 老害やな
長いものに巻かれろ、年長者は無条件に敬え、右に倣え、出る杭は打て、死なば諸共
これが衰退先進国糞バカ中世ジャップランド土人村の末路
0844デフォルトの名無しさん
垢版 |
2022/06/15(水) 00:03:02.45ID:clxQJqr6
>>826
デフォルト引数やキーワード引数が欲しいのは分かるけどオーバーロードが欲しいのはなぜ?
0847デフォルトの名無しさん
垢版 |
2022/06/15(水) 00:56:03.07ID:pzXtsAzL
デフォルト引数が必要だと思うならそれはもう関数オーバーロードが必要だとおもっていることと同義だろ
0848デフォルトの名無しさん
垢版 |
2022/06/15(水) 01:27:19.31ID:SBK/Y+J6
>>825
C:f= open(out, O_WRONLY|O_CREAT|O_TRUNC, 0777);
D:auto to = File("output.txt", "wb");
Erlang:{ok, Contents} = file:read_file( "input.txt" ),
Fortran(2003):open(in, file="input.txt", status="old", action="read", access="stream", iostat=err)
Basic(Free Basic/VB):Open "input.txt" For Input As #1
Nim:var f = open "output.txt", fmWrite
Objective-C:NSData *data = [NSData dataWithContentsOfFile:@"input.txt"];
Perl:open my $fh_in, '<', 'input.txt' or die "$!";
Python:infile = open('input.txt', 'r')
Tcl:set infile [open "input.txt" r]

Rustは異質、ド変態はFortranとObjective-C。Swiftは知らん
0849デフォルトの名無しさん
垢版 |
2022/06/15(水) 03:18:03.71ID:x0I/jK+a
>>848
こう見るとPythonが一番美しいな
例外あるからエラー処理省略できるし
これが良いかどうかはまた別の話として
0850デフォルトの名無しさん
垢版 |
2022/06/15(水) 03:22:52.73ID:tT/4QRGb
一般的にデータを初期化する際にいくつもの数のオプション値指定が存在するものが多い
デフォルト引数にしても1つ目と2つ目はデフォルト値でいいけど3つ目は指定したいなど歯抜けでわかりにくくなる

そこで一般的にその問題を解決するオプション指定方法としてビルダー方式がある
ビルダー方式では指定したいオプション値のみをビルダーに対してオプション指定メソッド(の必要ならチェーン)で指定していくものである
あるオプション指定は同時に2つのデータを与えなければならない場合でもこのビルダー方式ではメソッド引数2個で矛盾なくシンプルに表せる
さらに型チェックの厳しい言語ともこのビルダー方式は相性が良く各オプション指定メソッド別に曖昧なく厳格に型宣言できる

ちなみにRustではこのビルダー方式の有用性&利便性が広まり後からこのビルダー方式に移行したものもあるほどである
0851デフォルトの名無しさん
垢版 |
2022/06/15(水) 03:32:06.02ID:tT/4QRGb
>>849
Rustは例外機構がないからもっとエラー処理がシンプル
「?」一文字付加するだけで(必要ならエラー自動変換しつつ)上位関数にエラー処理委任できる
そのため例外機構がなくても記述がシンプルかつ同様のことが出来るだけでなくエラー処理忘れなどもコンパイル時に指摘してくれて安全
0853デフォルトの名無しさん
垢版 |
2022/06/15(水) 15:47:16.86ID:IEWflW3G
コンピューターはバビルの塔
0855デフォルトの名無しさん
垢版 |
2022/06/15(水) 19:56:50.22ID:IqYclFLA
twitterの「スタバでMacを開くエンジニア」って奴ほんと嫌い
qiitaの記事も大したこと書いていないわりに結構な頻度でバズってて流れて来るから目障りだわ
技術力ないから逆にわかってませんアピールを武器にしていっている印象受けるんだがエンジニア畑にああいうネタ系の自虐するノリほんまいらねえよ
エンジニア畑でバズるの狙うなら純粋に技術力の高さで競っていけよって思う
0859デフォルトの名無しさん
垢版 |
2022/06/16(木) 10:40:11.20ID:oOjZlu3s
コピペしてすぐ使えるコードが出ている
Qiita記事は役に立つよ
具体的な手順が書いてない記事はゴミ
0860デフォルトの名無しさん
垢版 |
2022/06/16(木) 10:47:19.76ID:OyMwP3lE
qiitaもワイもアカウント持ってて投稿したりしてるぐらいだから別に否定しているわけではないんだが
qiitaがクソだと言っている分けではなくてただこいつがqiitaに載せている記事すべてが糞だっていう意味を言っている
気になるんなら見とけよ内容もtwitter上を跋扈するいわゆる情報商材系サイトのそれに近くて技術的な要素を一切含んでいない
https://qiita.com/SMAC
0861デフォルトの名無しさん
垢版 |
2022/06/16(木) 11:28:53.21ID:jHsLwKQ/
ここはお前の日記帳かよ
というか「スタバでMacを開くエンジニア」って固有名詞かよ
0863デフォルトの名無しさん
垢版 |
2022/06/16(木) 13:02:40.58ID:uKxWv5Aj
Qiitaはごみ
0865デフォルトの名無しさん
垢版 |
2022/06/16(木) 18:30:34.70ID:OyMwP3lE
>>864
「エンジニア1年生必見おすすめ入門書!」「【20XY年度最新】無料プログラミング学習サービス」「基本情報技術者試験のための戦略的方法」みたいなしょうもない記事しか書いていない奴のどこに技術的成長を感じればいいのか疑問なんやけど
お前はまさかこういった記事を見て勉強してんのか?(笑)
お前が勝ち負け判断すんの?(笑)
少なくともSNSで頻繁に目障りな投稿をしている人が他の媒体でどのような活動をしているのか確認する行為自体を一生懸命にならないとするの達成できない時点でお前がこの一連の流れのどんな登場人物よりも劣ってること明白じゃんwwwwwwwww
きっと自分の電話にかかってきた電話番号を迷惑電話だったのかどうかネットで調べて確認すると言った最低限な行為すらも日常生活の中でするのには精一杯になってるんやろなwこの低脳(笑)wwwwwwwwwww
0872デフォルトの名無しさん
垢版 |
2022/06/17(金) 14:55:42.76ID:Ld/FFEEi
>>868
レスバ判定員です
言い返せなくなってる時点でお前の負けやでwwwwww
0875デフォルトの名無しさん
垢版 |
2022/06/17(金) 17:27:59.16ID:G79h5Zer
わざと曲解して話を盛るのが5chクオリティ
0876デフォルトの名無しさん
垢版 |
2022/06/17(金) 17:48:44.96ID:q4amRkHc
>>872
Qiitaの若者の成長に難癖付けて2ch陰口で悦に浸ってるオッサンとか
キモすぎにもほどがあるでんで
もうちょっと客観的に自分を見つめ直した方がええで
0878デフォルトの名無しさん
垢版 |
2022/06/17(金) 19:51:03.63ID:6H4dK9M3
>>825
rustが汚く感じるのはビルダーパターンが気持ち悪いのか、ファイルのopenにビルダーパターン使うのが気持ち悪いのか、どちら?
0880デフォルトの名無しさん
垢版 |
2022/06/17(金) 21:38:00.10ID:8YmvneAf
let mut stream = FileStream::builder().read(true).write(true).build("foo.txt")?;
これならいいのか
0881デフォルトの名無しさん
垢版 |
2022/06/17(金) 21:48:55.86ID:G5rhOs4/
Rustにはなんでデフォルト引数ないの?
Kotlinみたいに名前付き引数もデフォルト引数も欲しい
0882デフォルトの名無しさん
垢版 |
2022/06/17(金) 21:49:12.87ID:8YmvneAf
でもパス名が最後に来るの確かに思考の順序と一致しなくてウザいな
どのファイルを開くかより先にモードを考えたことなんかなかった
0883デフォルトの名無しさん
垢版 |
2022/06/17(金) 22:02:17.99ID:flaMOIXW
>>878
ソフトエンジニアはビルダーパターンは気持ちよすぎになるが
一方、ドカタは気持ち悪いになるってだけだろ
言語としては主ターゲットユーザーがソフトエンジニアかドカタって重要だからな
Rustはソフトエンジニアがターゲットで、そうじゃない奴はRustじゃなくドカタ用言語使え
ってこと。
0884デフォルトの名無しさん
垢版 |
2022/06/17(金) 22:12:15.35ID:1Z6irghS
そうでなくて最後にopen()でビルダーが終了して実行そしてエラーが返る
あと横に書くのではなく縦に書くほうが見やすいので推奨される

ビルダー方式にしているのは複雑になりがちな
様々なオプション指定をわかりやすくするため

例えば
書き込み用を新規作成だが既にファイルが存在しているならばエラーとなるオープンならば
let file = File::options()
 .create_new(true)
 .write(true)
 .open("output.txt")?;

Windowsで全てクローズされたら自動削除される書き込みファイルを作成ならば
use std::os::windows::fs::OpenOptionsExt;
let file = File::options()
 .create(true)
 .write(true)
 .custom_flags(FILE_FLAG_DELETE_ON_CLOSE)
 .open("tmp.txt")?;

Unix(Linux)でシンボリックファイルならFOLLOWしない(つまりオープン失敗となる)読み込みオープンならば
use std::os::unix::fs::OpenOptionsExt
let file = File::options()
 .read(true)
 .custom_flags(O_NOFOLLOW)
 .open("input.txt")?;

それぞれ他のプログラミング言語で書くとどうなるかを考えてみよう
0885デフォルトの名無しさん
垢版 |
2022/06/17(金) 23:24:36.27ID:1Z6irghS
あと余談だが
>>884のO_NOFOLLOW指定はUNIXのC言語プログラマーなら馴染みでも一般的にわかりくいという時
Rustではメソッド拡張が可能なことから
以下のように no_follow_symbolic_link() とわかりやすい指定ができるようにすることも可能

let file = File::options()
 .read(true)
 .no_follow_symbolic_link()
 .open("input.txt")?;

この実現方法はRustの一般的なメソッド拡張と同じで
拡張用のトレイトを用意してその実装を与えればよい

trait OpenOptionsUnixCustomExt {
 fn no_follow_symbolic_link(&mut self) -> &mut Self;
}

impl OpenOptionsUnixCustomExt for std::fs::OpenOptions {
 fn no_follow_symbolic_link(&mut self) -> &mut Self {
  self.custom_flags(O_NOFOLLOW)
 }
}

もちろんこの拡張用traitをuseした時のみ有効となる
つまり既にある仕様を壊さずに拡張が可能

いずれにせよビルダー方式でのメソッドチェーン指定は
全てを引数で複雑もしくは長々と指定するよりもよっぽど好ましい方式
0886デフォルトの名無しさん
垢版 |
2022/06/18(土) 01:48:38.80ID:ElTVdqXo
ビルダーパターンはオプション引数のある言語でも簡単に実現できるんだが
逆は一般的にハードルが高い(Rustならproc macroとかになる)

ビルダーとオプション引数は本来はユースケースによって使い分けるものなので
使い分けられないようならその言語は機能的に劣っているということ
0887デフォルトの名無しさん
垢版 |
2022/06/18(土) 03:34:01.13ID:qRZqKkc3
Rustは代数的データ型のOption型があるから特に困らないんじゃない?
むしろOption型がないプログラミング言語はundefinedやnullやnilなどの排除すべき危険なものが存在していて安全じゃない
0888デフォルトの名無しさん
垢版 |
2022/06/18(土) 03:46:11.38ID:1ZLmOyHM
欲しいのはオプション引数というかキーワード引数?
Noneなりnullなりが連続する関数呼び出しはつらいよね
0889デフォルトの名無しさん
垢版 |
2022/06/18(土) 03:49:38.33ID:qRZqKkc3
デフォルト引数のことか
C、Java、Go、Rust、Haskell、…とサポートしていないプログラミング言語は多いけど
それらの言語が劣っている欠陥言語と言われることはないよ
0891デフォルトの名無しさん
垢版 |
2022/06/18(土) 10:59:53.21ID:W1b6m0i9
デフォルト引数はあったほうがいい
究極的にはPythonみたいに書けるC言語が欲しい
それを目指したのがおそらくGoだと思うが
0892デフォルトの名無しさん
垢版 |
2022/06/18(土) 11:19:30.38ID:56BPbiHd
cpythonでええやん
0897デフォルトの名無しさん
垢版 |
2022/06/18(土) 12:41:20.81ID:n5ZvcUIJ
>>889
欠陥言語なんてものはそもそもほとんどない

デフォルト引数は新言語に人気が出てくると確実に要望が出てくる
いつかは実装される
実装できる余地がある言語はいいけど言語仕様上実装不可な場合はどうしようもない
0898デフォルトの名無しさん
垢版 |
2022/06/18(土) 12:46:26.67ID:pOm9NLXW
>>889
ある言語が他の言語に比べて劣っている部分があるということと
その言語が欠陥言語かどうかは全く別の問題
もう少し論理的に物事を考えよう
0899デフォルトの名無しさん
垢版 |
2022/06/18(土) 12:52:00.37ID:n5ZvcUIJ
Rsutは意味不明なんだよな
struct初期化で名前指定して初期値入れてるのにデフォルト実装や名前付き引数がない
不思議
0900デフォルトの名無しさん
垢版 |
2022/06/18(土) 13:00:28.27ID:7x85yRDf
Rustはソースコード上の情報多くしたい感じだからデフォルト引数は入らなさそう
ソースコードの見た目をすっきりさせたいなら素直にPythonとか使うのがいいかと
0901デフォルトの名無しさん
垢版 |
2022/06/18(土) 13:08:33.19ID:n5ZvcUIJ
デフォルト引数もなく関数オーバーロードがないから謎の関数がぼこぼこ増えるんだろうな

○○
○○_with_XX
○○_by_YY

みたいに
0902デフォルトの名無しさん
垢版 |
2022/06/18(土) 13:15:01.13ID:n5ZvcUIJ
言語を作った人間がデフォルト引数絶対に入れない!って言ってても
その人が一線から引いて他の開発メンバーに任されたら速攻で入る
0903デフォルトの名無しさん
垢版 |
2022/06/18(土) 13:42:57.17ID:7x85yRDf
Rustはすでに作った人は居なくなってるし
仕様決めるのも多数決とかじゃなく意見が割れるようなのは入らないからな
コミュニティ全体が入れる空気にならない限り無理
0905デフォルトの名無しさん
垢版 |
2022/06/18(土) 13:57:51.20ID:0HZmI7WS
Rustは複雑な引数はstructで渡しなさいという考えだから
その方法の一つがビルダーパターンだけど、structとDefaultを組み合わせたほうが個人的には好き
0907デフォルトの名無しさん
垢版 |
2022/06/18(土) 14:46:02.16ID:W1b6m0i9
引数爆発の解決のアプローチはいろいろあるわな
だがキーワード引数があったほうが爆発したときに楽なんだがな
GoやRust的には構造体使えってことか
0910デフォルトの名無しさん
垢版 |
2022/06/18(土) 17:55:33.35ID:+lle12+G
>>903 >>902
Rustでは不可欠な機能が着実に次々と実現されていっており
それら全て状況も議論も全てオープンに行われている
互換性、安全性、関連する影響がないことなど全て満たす必要があるためどの案件も時間がかかるが信頼できて安心できる

関数の引数の諸々の件も長くオープンに議論され続けているが様々な諸問題がでておりそれらを解決しうる仕様がまだ出来上がらずかなり先になるだろう
そして色々な代替手段があるためこれを必須として現実に困っている人がいない問題でもある
0915デフォルトの名無しさん
垢版 |
2022/06/18(土) 20:01:24.70ID:9K3tt+Ez
Mozilla関係の組織っておんも歩けないような人が多いよね
まともな人から辞めていくんだろうか
0916デフォルトの名無しさん
垢版 |
2022/06/18(土) 20:14:49.20ID:ApP/hHwA
燃え尽きて去ったRustの創造者はいまはどこで何をしているんだ?
まさか、googleでGoしているってことないよな
0919デフォルトの名無しさん
垢版 |
2022/06/18(土) 20:40:14.11ID:ZQWHh7s0
>>917
やっぱゴミはゴミに惹かれるんやね
XウンコードとかいうゴミゴミのゴミIDEバンドルのゴミに惹かれるなんて
やっぱゴミ
0921デフォルトの名無しさん
垢版 |
2022/06/18(土) 20:46:04.24ID:n5ZvcUIJ
>>910
apple信者の人たちと大して変わらんなw

androidにしかない機能があっても必要ない、問題ない、困ってないと言い放つが実装されると大騒ぎして喜び
誇らしげに自慢する

何週遅れてんだよと
0922デフォルトの名無しさん
垢版 |
2022/06/18(土) 21:07:12.04ID:G0PSkUdv
全て状況も議論も全てオープンに行われていればまあこんな事になるわけがないよなww

「The entire moderation team resigns, effective immediately. This resignation is
done in protest of the Core Team placing themselves unaccountable to anyone but
themselves.」
https://github.com/rust-lang/team/pull/671
0924デフォルトの名無しさん
垢版 |
2022/06/18(土) 21:20:50.21ID:ApP/hHwA
>>917
おいおい、ほんとなのか。
優秀な奴だろうからどっかが雇っているだろうと思っていたが。
appleならMozillaより激好待遇だろうな
0926デフォルトの名無しさん
垢版 |
2022/06/18(土) 22:53:12.86ID:WzwwMm2M
コミュニティの意見に向き合うのは難しい問題で、どの言語でも同じ
Rust Foundationとか、Kotlin Foundationとか、コミュニティ向けに組織体制をちゃんとする努力があるだけマシだといつも思う
0928デフォルトの名無しさん
垢版 |
2022/06/18(土) 23:36:58.06ID:WzwwMm2M
そして批判の声が見当たらないコミュニティは逆に危険
ユーザーは意見を述べるモチベーションがなかったり、意見を聞き届ける環境すら整えられていない
言い換えるとカルト。
0929デフォルトの名無しさん
垢版 |
2022/06/19(日) 00:20:26.22ID:Mk9KDawR
>>926
なんちゃらファウンデーションなんてそれはコミュニティに向き合うとか組織体制がちゃんとする努力をしているとは違う。後ろにスポンサーがいるかどうかが違うだけ
得てしてプラス面もあるが多くは大企業の意見がよく通る
0932デフォルトの名無しさん
垢版 |
2022/06/19(日) 02:09:16.77ID:6XdwO9QI
ジャップは10年遅れでPython受け入れだしたからな
Juliaも10年は遅れるよ

バカなジャップだから
0933デフォルトの名無しさん
垢版 |
2022/06/19(日) 05:40:31.85ID:SdXdUMni
Julia流行の隆盛とともに死すナムー(-人-)
今はJuliaとか言って、もう少し経ったらの言語マンセーするくせにさ
0937デフォルトの名無しさん
垢版 |
2022/06/19(日) 10:15:25.21ID:YnIsF6Qk
今の日本の体たらくはジャップランド土人村と呼ぶにふさわしいよ
未だに「日本サイコー!」とか言ってる奴らの方がどうかしてる
0941デフォルトの名無しさん
垢版 |
2022/06/19(日) 11:07:05.21ID:C4wP3ian
単純にMicrosoftのソフトウェア開発能力がめちゃくちゃ高いからどんどん変わっていけてるだけだぞ
昔から巨大ソフトウェアをずっとたくさん作り続けてるだけあるよ

他の言語だってリソースさえあればあれもこれもやりたい、って言ってるのたくさんあるじゃん
0942デフォルトの名無しさん
垢版 |
2022/06/19(日) 11:11:04.94ID:2cctUuao
言語仕様が使いもしないパターンマッチよりにどんどん変わってる
学習コストが上がるだけなのに

if (x is { Name.Length: 1 })
{
Console.WriteLine("single-char Name");
}
0944デフォルトの名無しさん
垢版 |
2022/06/19(日) 11:15:07.77ID:2cctUuao
x is { Name.Length: 1 }

これが何を指しているか直観的にわかるように思えて実際は違っている
0945デフォルトの名無しさん
垢版 |
2022/06/19(日) 13:07:02.40ID:Mk9KDawR
MicrosoftはTeamsのアップデートしすぎ、ほぼ毎日バージョンが変わる。マジで勘弁してほしい
0946デフォルトの名無しさん
垢版 |
2022/06/19(日) 13:32:37.74ID:YdsUdLcR
C#は場当たり的に糖衣構文追加するもんだから
BNFがとんでもない長さになってるな
ここまで言語仕様汚くなった言語他に無いんじゃね?
0955デフォルトの名無しさん
垢版 |
2022/06/19(日) 17:08:50.63ID:2cctUuao
他の言語の定型文をそのまま日本語に持ってくるからそうなる

富士山は日本で一番高い山の一つですは誤訳
0956デフォルトの名無しさん
垢版 |
2022/06/19(日) 22:06:45.19ID:VFAsiM2X
Rubyはスクリプト言語にしてはPythonに比べ型は厳格だが、なんにでもなれるメソッドなかったっけ?
0960デフォルトの名無しさん
垢版 |
2022/06/20(月) 12:59:21.71ID:EbOcYieG
シェルスクリプトにも変数の型はあるしアセンブリもレジストリの種類は意識しないといけない
0961デフォルトの名無しさん
垢版 |
2022/06/20(月) 13:09:02.41ID:rr2OcjMu
型なし言語って、誤用でしか用例を聞いた覚えがないけど、型なし言語とかいう用語はあるの?
文脈からして何を言いたいかはわかるんだけど
0963デフォルトの名無しさん
垢版 |
2022/06/20(月) 13:52:48.64ID:6L0FdSjR
型無し言語じゃない
型無し糞言語だ
間違えるな痴れ者が

型無し糞言語3兄弟といえばRuby、PHP、Perl
業界の常識

未だこれ使ってる時代遅れのバカ老害どもは首吊って死んでええぞ
0964デフォルトの名無しさん
垢版 |
2022/06/20(月) 13:55:02.11ID:4VWLMq9p
>>961
https://ja.wikipedia.org/wiki/%E5%9E%8B%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0#%E5%9E%8B%E3%81%AA%E3%81%97
型付けを更に厳密に定義した区分として型なし(英: untyped)という区分が存在する。
代表的な言語としてはSmalltalk[7]、BCPL、B言語、アセンブリ言語などがある。
Smalltalkでは高速化のため処理系依存で実行時に型検査することがあるものの言語的には型検査がなく、
動的型付け言語のように文字列に割り算をするといった不正な操作をしても処理系が型検査して停止する事は無い。

BCPL、B言語、アセンブリ言語などオブジェクト指向とは関係なく型を持たない言語では、
ハードウェアのワード長に依存した1種類の型のみを持つか、
言語を使う側でデータを参照するときにデータ幅や種類の解釈を決定することとなる。
0968デフォルトの名無しさん
垢版 |
2022/06/20(月) 15:16:39.40ID:gnE/PDYV
untypedは基本的にdynamically typedのこと
アカデミック用語で実務者用語ではない
実務者が型なし言語と呼ぶのはtypeless languagesのこと

現代において動的型付け言語を型なし言語と呼ぶのは明らかな間違い
0969デフォルトの名無しさん
垢版 |
2022/06/20(月) 15:39:41.45ID:rr2OcjMu
>>968
> untypedは基本的にdynamically typedのこと
出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。
0970デフォルトの名無しさん
垢版 |
2022/06/20(月) 15:54:46.01ID:4VWLMq9p
型付けなんてプログラマにとっては基本の基本で
おろそかにしていいものではないから

> 型無し糞言語3兄弟といえばRuby、PHP、Perl

これがいかにド素人で無教養で恥知らずな発言かは
お分かりいただけてると思う
0972デフォルトの名無しさん
垢版 |
2022/06/20(月) 18:29:27.28ID:1agQsnkM
>>901
これがちょっと辛いんだよな。
0974デフォルトの名無しさん
垢版 |
2022/06/20(月) 19:04:42.99ID:hXDnNrPc
次スレ(リニューアル)
Era 26

コンセプトは、現状の漠然とした実質未来最強言語決定戦という誰も得しない未来トレンドの断定を避けて、
次世代言語はまだ存在しない仮説を使って建設的な言語仕様の検討を促すことです。
0975デフォルトの名無しさん
垢版 |
2022/06/20(月) 19:05:46.77ID:hXDnNrPc
https://mevius.5ch.net/test/read.cgi/tech/1655719441/l50
↑次スレのリンクです。もし興味があればどうぞ。

(一定数いる最強言語決定戦を続けたい層には不向きかもしれないので、
棲み分けなどに、もし良いアイデアがあればどうぞご自由になさいませ。)
0977デフォルトの名無しさん
垢版 |
2022/06/20(月) 19:52:16.37ID:E2oosySA
>>972
今どきの言語ならそんなことは起きないんじゃないかな
例えばRustの標準ライブラリには同名のreplace()という関数が10個もあるけど

(1) まず名前空間が分かれている
例えば str::replace() や Option::replace() など

(2) 次にメソッドの場合は名前空間を明示する必要がない
例えば let s = "価格: 123円"; という文字列に対してはstr::を付けずに
s.replace("価格", "値段"); // → "値段: 123円"

(3) 更にジェネリックな引数も取れる
例えば文字列""ではなく文字''も指定可能
s.replace('円', "万円"); // → "価格: 123万円",
文字判定関数を指定することも可能
s.replace(char::is_numeric, "*"); // → "価格: ***円"

このように様々な対象に対して様々な引数で用いられていても
同名のreplace()で曖昧になることもなくそれぞれを使うことができる
昔のように長い関数名を付けずに済むようになっている
0981デフォルトの名無しさん
垢版 |
2022/06/20(月) 21:08:22.86ID:mSfgS0Wr
>>977
3つともオーバーロードやデフォルト引数はほぼ関係ない話じゃん
3つめがかろうじてオーバーロードに引っかかってはいるが論点が違う
0984デフォルトの名無しさん
垢版 |
2022/06/20(月) 21:39:32.57ID:j7veV6LL
シャドーイング  同じ変数名で実際は完全に別物
関数オーバーロード 同じ関数名で引数が違う でも普通は同じ働き
0985デフォルトの名無しさん
垢版 |
2022/06/20(月) 21:50:35.85ID:lr2wAV+c
引数の型が違うだけならジェネリクスでいいし、ジェネリクスで表現できないような
引数の違いがあるような場合はそもそも同じ関数名にすべきじゃないような気がする。
オーバーロードいらないよな。
0986デフォルトの名無しさん
垢版 |
2022/06/20(月) 22:04:20.07ID:j7veV6LL
せいぜい意味不明なワードがくっついた似たり寄ったりの関数を大量に作ってくれよ
0987デフォルトの名無しさん
垢版 |
2022/06/20(月) 22:09:55.02ID:xRbFgwNB
>>984
なるほどそういう意味か

イミュータブルとムーブがデフォルトだとシャドーイングNGだと命名負荷が高くなりすぎるのよ
オーバーロードやデフォルト引数/オプション引数ないとメソッドの命名負荷が高くなるのと似てる
0988デフォルトの名無しさん
垢版 |
2022/06/20(月) 22:17:07.52ID:G0GSIi1k
>>982
C++/Java/C#書いてる脳だとまあすんなり同意するけど
OCamlだのHaskellだの書いてる脳で読むと「お前の普通なんか知らねーよ」って感じだな
0989デフォルトの名無しさん
垢版 |
2022/06/20(月) 22:26:34.16ID:GOjINbNj
>>982
効果が真逆という結論のようです

> シャドーイングは同時に存在できるのが一つだけで曖昧さがなくプログラミングにおいてプラス効果
> オーバーロードは同時に異なるものが存在できるため可読性を下げたりミスを起こす機会を生じさせてマイナス効果

確かにシャドーイングが出来ない言語では例えば
price_str = "398"
price_int = int(price_str)
とするかミスを生みやすい動的型付けで同じ変数名priceに入れるようです
シャドーイングがいかに優れているかよくわかりますね
0992デフォルトの名無しさん
垢版 |
2022/06/20(月) 22:44:52.02ID:d/VymnYf
>>991
そういう時にメソッドではない不要なグローバル関数を設けるプログラミング言語は時代遅れ
もしstrに対してintに変換する関数int()を用意するならばstrのメソッドとして用意する
君には>>977を読み直すことを勧める
0993デフォルトの名無しさん
垢版 |
2022/06/20(月) 22:52:38.23ID:j7veV6LL
Rustは同様に abs(x)ができない
他の言語ではmath.abs()とかにある

x.abs()と言う不思議な感じになる


-1_i32.abs()
は -1になる変な言語
0994デフォルトの名無しさん
垢版 |
2022/06/20(月) 22:54:18.35ID:GOjINbNj
>>991
Rustではintが多数あるため
let s = "98765";
let a: i32 = s.parse()?;
let b: u64 = s.parse()?;
となります
どちらも同じメソッドparse()で大丈夫です
あなたが使っている言語では多数のint毎に別々の変換用の関数があるのですか?
0998デフォルトの名無しさん
垢版 |
2022/06/20(月) 23:01:03.11ID:j7veV6LL
parseは多分ジェネリック実装されてて戻り値の推定からジェネリック型決めてるんだろ?
そっちのほうが不気味

そのparseだってどうせトレイトで実装してんだろ?
0999デフォルトの名無しさん
垢版 |
2022/06/20(月) 23:02:42.38ID:MklghZCY
>>985
ジェネリクスはまた別物だろ。

ライブラリ無いからシステムコール利用する機能を提供しようとする。
例えば socket(2)でいいわ。
第3引数なんて使うことないからと第2引数までを取るAPIとして公開、後になって第3引数必要になった(例えばSCTP利用)ってなった場合、オーバーロードできないとAPI変える必要あるじゃん。
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 64日 5時間 10分 42秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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