スレタイ以外の言語もok
前スレ
次世代言語21 Go Nim Rust Swift Kotlin TypeScript
https://mevius.5ch.net/test/read.cgi/tech/1587276362/
次世代言語22 Go Nim Rust Swift Kotlin TypeScript
■ このスレッドは過去ログ倉庫に格納されています
2021/08/22(日) 08:59:03.31ID:QorwbXcj
131デフォルトの名無しさん
2021/09/04(土) 21:51:42.85ID:CUdge0sZ >>130
同意
同意
132デフォルトの名無しさん
2021/09/05(日) 04:52:30.40ID:j+9BaQO4 これでは日常生活も大変だろう‥
133デフォルトの名無しさん
2021/09/05(日) 11:58:59.75ID:TAzC3d8r スレのレベルが低すぎ。
本当に頭のいい人が言ってる正しいことが理解できない人ばっか。
本当に頭のいい人が言ってる正しいことが理解できない人ばっか。
134デフォルトの名無しさん
2021/09/05(日) 11:59:36.21ID:TAzC3d8r このスレでは、たった一人だけが正しいことを言って、他はみんな間違ってる。
135デフォルトの名無しさん
2021/09/05(日) 12:08:33.41ID:2jP3+tuQ はいNG
136デフォルトの名無しさん
2021/09/05(日) 12:11:17.36ID:3IKjsp8l 自分のことをたった1人とか言っちゃう猿
137デフォルトの名無しさん
2021/09/05(日) 12:32:10.27ID:TAzC3d8r アホどもめ。
138デフォルトの名無しさん
2021/09/05(日) 15:07:01.68ID:LgQhIBwq Aを教えてくれ→解答a
Bを教えてくれ→解答b
Cを教えてくれ→解答c
一生これを続けるつもりか?(たまにそういう人物がいるが明らかに向いてない)
気をまわして x 使え!
(そうすれば A も B も C も解決するよ!!)
っていう解答が来ると「教えてくれない!!!」とキレる
Bを教えてくれ→解答b
Cを教えてくれ→解答c
一生これを続けるつもりか?(たまにそういう人物がいるが明らかに向いてない)
気をまわして x 使え!
(そうすれば A も B も C も解決するよ!!)
っていう解答が来ると「教えてくれない!!!」とキレる
139デフォルトの名無しさん
2021/09/05(日) 22:17:48.95ID:XzVpFLw9 糖質御用達言語RUST
140デフォルトの名無しさん
2021/09/06(月) 05:10:39.90ID:xB3x8Lax141デフォルトの名無しさん
2021/09/06(月) 09:30:22.04ID:NkVKbvcc フェルマーでさえ問題そのものは明らかに提示したというのに、問題そのものも一意に定まらない状態で教えてクレクレしかここには居ないバカばっかりって言ってるんだよな
142デフォルトの名無しさん
2021/09/07(火) 09:33:01.92ID:AwNiMUSI 生ポインタがない言語では
まずグローバルな配列を使うアルゴリズムに変換し
次にグローバル変数とかstatic変数禁止の規則に違反しないように書き直す
これができない人はJavaでもstatic変数を使うことになる
まずグローバルな配列を使うアルゴリズムに変換し
次にグローバル変数とかstatic変数禁止の規則に違反しないように書き直す
これができない人はJavaでもstatic変数を使うことになる
143デフォルトの名無しさん
2021/09/08(水) 12:12:45.69ID:on4QL4Ij めっちゃパフォーマンス悪くなりそう
144デフォルトの名無しさん
2021/09/08(水) 20:56:23.70ID:UIi59Wds ポインタと配列インデックスはパフォーマンス的に等価じゃね?
145デフォルトの名無しさん
2021/09/08(水) 22:07:00.68ID:qzNSvV6w 等価っていうかそれを遅いと宣言したらJavaもC#もGoもみんな等しく遅いことになる
146デフォルトの名無しさん
2021/09/08(水) 23:52:20.69ID:7Stt1ihW Cみたいな無能言語を除けば配列インデックスには境界チェックが入るからポインタと同じではないよ
147デフォルトの名無しさん
2021/09/09(木) 00:23:24.04ID:3/x9wOmm 少なくともC++とNim言語ではコンパイルオプションで配列、vector、seqの境界チェックをオフにすることができる。
148デフォルトの名無しさん
2021/09/09(木) 00:54:48.17ID:ByOcyvaf vector<T>型を更に抽象化してV<T>とすれば
高速なVと安全なVを二刀流できたのに
高速なVと安全なVを二刀流できたのに
149デフォルトの名無しさん
2021/09/09(木) 09:35:35.54ID:H5Pm1mBI 少なくともRustは境界チェックを全とっぱするのではなく必要に応じてuncheckする仕組みがある
150デフォルトの名無しさん
2021/09/09(木) 09:49:27.01ID:nDPpxxc9 実際のところ境界チェックのロスってどんなもんなの
組み込み向けはともかく一般的なCPUだと分岐予測とパイプラインのおかげでロス少なそうな印象だが
組み込み向けはともかく一般的なCPUだと分岐予測とパイプラインのおかげでロス少なそうな印象だが
151デフォルトの名無しさん
2021/09/09(木) 14:53:53.92ID:a5R4sWP8 少なくとも{.push checks: off.}あるいは{.push boundChecks: off.}でNimも部分的にオフにできるはずだが
コンパイル時の境界チェックだけであれば、これは(通常はboundary checkをしないが)C/C++などにも、当然
ながら出来るだろう。RustはもちろんUnsafe{}でほぼすべてチェックを除外することも可能だが、通常は
releaseでも(当然Debugでも)Runtime boundary checkは入る。Goの場合も同様だが、少しずつ”不要な”
ランタイム時のチェックは最適化/改善されて来ている、これはRustも同様であろう
https://go101.org/article/bounds-check-elimination.html
もちろん実行時のチェックが入ることが問題と言っている訳ではなく、通常は安全ではないなら入れる”べき”
だし、デフォルトで入らない安全性側に倒れない言語は古いとしか言いようがない。この実行時のチェックを
エリミネイトする記述の、この分野はJavaの最適化が一番進んでいると思う。
boundary checkに掛るコストを見積もるのは非常に困難だが、上記の言う通りCPUに余裕があり、分岐予測や
投機実行に空きがあれば”さほど”の違いは無いが、最悪は2倍近いメモリと、1ループ毎に2つ程度のCMP命令が
入る事により、全くチェックしないC99などと比べれば1.5倍-2倍程度遅くなるのも当然
コンパイル時の境界チェックだけであれば、これは(通常はboundary checkをしないが)C/C++などにも、当然
ながら出来るだろう。RustはもちろんUnsafe{}でほぼすべてチェックを除外することも可能だが、通常は
releaseでも(当然Debugでも)Runtime boundary checkは入る。Goの場合も同様だが、少しずつ”不要な”
ランタイム時のチェックは最適化/改善されて来ている、これはRustも同様であろう
https://go101.org/article/bounds-check-elimination.html
もちろん実行時のチェックが入ることが問題と言っている訳ではなく、通常は安全ではないなら入れる”べき”
だし、デフォルトで入らない安全性側に倒れない言語は古いとしか言いようがない。この実行時のチェックを
エリミネイトする記述の、この分野はJavaの最適化が一番進んでいると思う。
boundary checkに掛るコストを見積もるのは非常に困難だが、上記の言う通りCPUに余裕があり、分岐予測や
投機実行に空きがあれば”さほど”の違いは無いが、最悪は2倍近いメモリと、1ループ毎に2つ程度のCMP命令が
入る事により、全くチェックしないC99などと比べれば1.5倍-2倍程度遅くなるのも当然
152デフォルトの名無しさん
2021/09/09(木) 23:38:57.23ID:f/JM052X >>150
正解
正解
153デフォルトの名無しさん
2021/09/11(土) 04:07:36.44ID:w5S7rLqj 『具体例は教えられないが問題がある!』君は敗走しちゃったね
154デフォルトの名無しさん
2021/09/14(火) 22:08:36.31ID:s29FvQzO 負けました。もう勘弁してくらはい。
155デフォルトの名無しさん
2021/10/03(日) 20:16:28.62ID:rU4PBp3b Stack OverflowのServeyであった
給料が高くて人気な言語に
Rust Julia Elixir Clojureあったけど
みんなマクロがあるからなのかな?
マクロがある言語じゃないと今後スケールはしない?
給料が高くて人気な言語に
Rust Julia Elixir Clojureあったけど
みんなマクロがあるからなのかな?
マクロがある言語じゃないと今後スケールはしない?
156デフォルトの名無しさん
2021/10/03(日) 21:21:16.47ID:f+cxTxee 人気あるって言えるのかな?案件の絶対数は他の言語に比べて少ないと思うが。
157デフォルトの名無しさん
2021/10/03(日) 21:30:20.91ID:+hZ9cv9k バッチやdcl、スクリプト系の非効率実行、脆弱性がクラウド提供側で嫌われて
突き詰めたところに制御構造をメタ記述出来るコンパイル言語の需要が有ったかんじ
突き詰めたところに制御構造をメタ記述出来るコンパイル言語の需要が有ったかんじ
158デフォルトの名無しさん
2021/10/11(月) 22:26:58.15ID:BHOOgNKr Rustって、本当に流行ってるんですか?
海外では、総じてプログラマのスキルが高いから流行っているのですか?
日本の感覚だと、一部の技術好きの人達がベンチャー精神にあふれる会社で使っているだけのイメージなのですが。
C言語すら、まともに使えているのかあやしい開発体制の多い日本で、Rustは難しすぎないですか?
(流石に、C言語は言い過ぎかもですが、C++でまともに開発できる体制なんて、夢のまた夢ですよね。)
将来的には、一部のOS開発等を除いて、Goとか敷居の低い言語に落ち着くのだと思っているのですが。
海外では、総じてプログラマのスキルが高いから流行っているのですか?
日本の感覚だと、一部の技術好きの人達がベンチャー精神にあふれる会社で使っているだけのイメージなのですが。
C言語すら、まともに使えているのかあやしい開発体制の多い日本で、Rustは難しすぎないですか?
(流石に、C言語は言い過ぎかもですが、C++でまともに開発できる体制なんて、夢のまた夢ですよね。)
将来的には、一部のOS開発等を除いて、Goとか敷居の低い言語に落ち着くのだと思っているのですが。
159デフォルトの名無しさん
2021/10/12(火) 00:32:47.27ID:c4kB5fU7 チームにバカが居ると開発効率が悪くなるからRustの難しさはバカよけになる
160デフォルトの名無しさん
2021/10/12(火) 02:21:39.98ID:1W2DSIiH161デフォルトの名無しさん
2021/10/12(火) 08:35:14.39ID:H70LQP2o メモリ破壊バグのないCとかデータ競合バグのないGoを書くのに比べたらRustは簡単
コンパイラに怒られたら直せばいいだけ
コンパイラに怒られたら直せばいいだけ
162デフォルトの名無しさん
2021/10/12(火) 14:00:16.57ID:JJ3t9gVC Rustはプログラム書いたことない意識高い系が喧嘩する。forを使うなだとか、こっちの方が短く書けるだとか
163デフォルトの名無しさん
2021/10/12(火) 15:05:47.06ID:1W2DSIiH164デフォルトの名無しさん
2021/10/13(水) 13:28:21.94ID:V99uCirA165デフォルトの名無しさん
2021/10/13(水) 13:29:46.77ID:V99uCirA >>159
同じ理由でC++よりCの方が良いって言われてるね
同じ理由でC++よりCの方が良いって言われてるね
166デフォルトの名無しさん
2021/10/13(水) 17:06:10.92ID:+919yhfB >>163
for-inは普通にあるし、map/filter/fold/collectを使えと言う話は読み易さの問題はある。
いまでもrustスレは意識高い系が喧嘩してるようなもの、競技プログラミング的な書き方は
止めろだとか、初心者が書いたコードを貶す
for-inは普通にあるし、map/filter/fold/collectを使えと言う話は読み易さの問題はある。
いまでもrustスレは意識高い系が喧嘩してるようなもの、競技プログラミング的な書き方は
止めろだとか、初心者が書いたコードを貶す
167デフォルトの名無しさん
2021/10/13(水) 18:19:54.35ID:fXfbCLiK >>166
そんな喧嘩は起きていない
初心者が書いても同じになりイテレータをメソッドチェーンで回すかfor inで回すかの2通りしかない
競技プログラミングの件はどの言語でも同じだが速さだけ求めて汚いプログラミングするのは競プロ専用スレでやるべきなのだろう
そんな喧嘩は起きていない
初心者が書いても同じになりイテレータをメソッドチェーンで回すかfor inで回すかの2通りしかない
競技プログラミングの件はどの言語でも同じだが速さだけ求めて汚いプログラミングするのは競プロ専用スレでやるべきなのだろう
168デフォルトの名無しさん
2021/10/13(水) 19:35:38.13ID:VbHeyYt0 こんな奴ばっかり
169デフォルトの名無しさん
2021/10/13(水) 23:53:56.11ID:W/9iWpHx170デフォルトの名無しさん
2021/10/13(水) 23:57:31.98ID:wiC5i83X これが会話のドッジボールですか
171デフォルトの名無しさん
2021/10/15(金) 12:49:40.87ID:nPSdjqiL そう言う事を言ってるんじゃないのに、「統一されてますね」このにじみ出る性格の悪さとしつこさが嫌。
そりゃ他人から嫌がられるよお前は、一生ロンパーロンパーしとけよ
そりゃ他人から嫌がられるよお前は、一生ロンパーロンパーしとけよ
172デフォルトの名無しさん
2021/10/15(金) 13:35:11.51ID:TiF/o4Oy そして静かにC/C++が生き残る・・・とな
173デフォルトの名無しさん
2021/10/15(金) 14:08:53.65ID:8deGlJY8 ほんと進歩ないよな。。だから歴史って重要なわけよ。
174デフォルトの名無しさん
2021/10/15(金) 14:48:47.55ID:5sSC8oS1 歴史から長いものにはまかれろという以外にどんな教訓が学べるというのか
175デフォルトの名無しさん
2021/10/15(金) 15:16:58.35ID:8deGlJY8 機能ゴテゴテ盛り込んで失敗。くらいはそろそろ理解して欲しいもんだがね。
176デフォルトの名無しさん
2021/10/15(金) 16:31:03.08ID:XGfxQXO+ 無駄な機能が多すぎる言語は失敗してるよな
一方でRustとGoが成功したのは不要な機能を見極めて削ったことも大きい
どちらもclassすら無いしtry-throw-catchも無い
シンプルでわかりやすい言語となり成功した
一方でRustとGoが成功したのは不要な機能を見極めて削ったことも大きい
どちらもclassすら無いしtry-throw-catchも無い
シンプルでわかりやすい言語となり成功した
177デフォルトの名無しさん
2021/10/15(金) 17:14:22.04ID:5sSC8oS1 つかれたよ
178デフォルトの名無しさん
2021/10/15(金) 20:33:51.67ID:w61IhFeo まあ、テキストの塊で表現していることに変わり無いしな。
これからはビジュアルプログラミングだろう。
これからはビジュアルプログラミングだろう。
179デフォルトの名無しさん
2021/10/15(金) 20:40:41.27ID:w61IhFeo180デフォルトの名無しさん
2021/10/15(金) 20:46:36.53ID:XGfxQXO+181デフォルトの名無しさん
2021/10/15(金) 22:47:09.07ID:rb+Oscx7 Rustの学習コストが低いと思っているのはなかなかすごいな
メジャーな言語で、Rustより学習コストが高い言語挙げてみいよ
メジャーな言語で、Rustより学習コストが高い言語挙げてみいよ
182デフォルトの名無しさん
2021/10/15(金) 22:50:16.66ID:5sSC8oS1 Scala
183デフォルトの名無しさん
2021/10/15(金) 22:50:39.45ID:5sSC8oS1 Haskell
184デフォルトの名無しさん
2021/10/15(金) 22:50:55.08ID:5sSC8oS1 C++
185デフォルトの名無しさん
2021/10/15(金) 22:59:02.83ID:cXrj7rPD C++は最初にある程度かけるようになるまではそんなに大変じゃないけど
コンパイラの挙動が怪しいから言語仕様読んでどこかでUB踏んでないか調べる、みたいなとこまでいくと
Rustの方が簡単だったなぁ、と思う
コンパイラの挙動が怪しいから言語仕様読んでどこかでUB踏んでないか調べる、みたいなとこまでいくと
Rustの方が簡単だったなぁ、と思う
186デフォルトの名無しさん
2021/10/15(金) 23:54:26.80ID:awitBW+b そもそもの話
次世代言語って必要なの?
って最近疑問に思ってる
次世代言語って必要なの?
って最近疑問に思ってる
187デフォルトの名無しさん
2021/10/16(土) 00:14:02.74ID:dPfgeqZY >>186
ずっとFORTRANとCOBOLでも使ってろ
ずっとFORTRANとCOBOLでも使ってろ
188デフォルトの名無しさん
2021/10/16(土) 00:40:25.95ID:O4GIW+Mr >>187
それは流石に前世代なんでない?
現行世代の似たような言語が増えてってるだけで
その中から次世代を探そうとしても一長一短があるだけで
次世代って感じはどの言語からも感じられない
って個人的な疑問
それは流石に前世代なんでない?
現行世代の似たような言語が増えてってるだけで
その中から次世代を探そうとしても一長一短があるだけで
次世代って感じはどの言語からも感じられない
って個人的な疑問
189デフォルトの名無しさん
2021/10/16(土) 01:01:04.43ID:GQKUTzD/ いま次世代でも数年たてば時代遅れになる。
それならいつでも最新のC++にすれば良いのでは?
次世代ではないけれど。
それならいつでも最新のC++にすれば良いのでは?
次世代ではないけれど。
190デフォルトの名無しさん
2021/10/16(土) 01:33:55.93ID:0owCAudu191デフォルトの名無しさん
2021/10/16(土) 02:05:47.39ID:N8k1BZc2 Rust個人的には推しだけど確かに最近の5chは変な信者が多い
192デフォルトの名無しさん
2021/10/16(土) 02:49:28.47ID:MVC0A82Z193デフォルトの名無しさん
2021/10/16(土) 03:21:07.83ID:0owCAudu >>192
Rustはコンパイルが通ったらメモリ安全性を保証するが
C++はコンパイルが通ってもメモリ安全性を保証しない
そのためC++で書かれたものはメモリ安全に関するバグを産出してきてそれがセキュリティ脆弱性の7割を占めているとGoogleもMicrosoftも述べている現状
Rustはコンパイルが通ったらメモリ安全性を保証するが
C++はコンパイルが通ってもメモリ安全性を保証しない
そのためC++で書かれたものはメモリ安全に関するバグを産出してきてそれがセキュリティ脆弱性の7割を占めているとGoogleもMicrosoftも述べている現状
194デフォルトの名無しさん
2021/10/16(土) 12:10:44.93ID:MVC0A82Z だからGoogleもMicrosoftもどれだけ言語ダメにしてきたか、少し頭使って調べてみてくれ。
そのお題目がいかに名目だけか実際大規模でビルド体制整えて運用してみればよくわかるから。
そのお題目がいかに名目だけか実際大規模でビルド体制整えて運用してみればよくわかるから。
195デフォルトの名無しさん
2021/10/16(土) 12:33:30.03ID:vbkw9O81 >だからGoogleもMicrosoftもどれだけ言語ダメにしてきたか、少し頭使って調べてみてくれ。
GoogleやMicrosoftがダメにした言語ってなんだろう?
自分で作って結局普及しなくて捨てた言語ってことかな。
GoogleやMicrosoftがダメにした言語ってなんだろう?
自分で作って結局普及しなくて捨てた言語ってことかな。
196デフォルトの名無しさん
2021/10/16(土) 12:55:55.35ID:6WTAYzCY Googleが作った言語ってGoとDartだけ?だったらどっちもダメにしてないな
Minecraftは多そう
Minecraftは多そう
197デフォルトの名無しさん
2021/10/16(土) 12:56:41.58ID:6WTAYzCY >>196
予測変換ミス
予測変換ミス
198デフォルトの名無しさん
2021/10/16(土) 13:33:53.37ID:N8k1BZc2 >>194
大規模でビルド体制整えて運用してみて発生する問題って、技術によって解決すべき問題ではないんじゃね?
具体的な話を聞かないと何とも言えないけど、デマルコ本で言われるような社会学的側面の問題じゃなかろうか
大規模でビルド体制整えて運用してみて発生する問題って、技術によって解決すべき問題ではないんじゃね?
具体的な話を聞かないと何とも言えないけど、デマルコ本で言われるような社会学的側面の問題じゃなかろうか
199デフォルトの名無しさん
2021/10/16(土) 14:38:48.10ID:0owCAudu200デフォルトの名無しさん
2021/10/16(土) 17:59:55.50ID:5x+WFlZB >>191
分かるわ…、宗教のような気持ち悪さを感じる。rust推しだけど
分かるわ…、宗教のような気持ち悪さを感じる。rust推しだけど
201デフォルトの名無しさん
2021/10/16(土) 20:13:04.25ID:nF4n8/aE >>186
よくあるのは、CやRustのマクロは必要ないからマクロ無し言語が必要だというパターン
よくあるのは、CやRustのマクロは必要ないからマクロ無し言語が必要だというパターン
202デフォルトの名無しさん
2021/10/16(土) 22:43:22.32ID:MVC0A82Z >>199
mozillaがネットスケープも含めてどれだけ失敗したか理解してるか?
facebookで多く使われてるphpがそんな素晴らしいか?
amazonのc++コードの汚なさを理解してるか?
バカは何度でもブランド意識でくだらんことを広めたがる。そして忘れた頃に同じことを繰り返す。
そういうバカはもううんざりなんだよ。
mozillaがネットスケープも含めてどれだけ失敗したか理解してるか?
facebookで多く使われてるphpがそんな素晴らしいか?
amazonのc++コードの汚なさを理解してるか?
バカは何度でもブランド意識でくだらんことを広めたがる。そして忘れた頃に同じことを繰り返す。
そういうバカはもううんざりなんだよ。
203デフォルトの名無しさん
2021/10/16(土) 23:05:31.31ID:nF4n8/aE たとえばPythonとRustのような両極端なら同じことを繰り返してない感がある
両者の中間ぐらいを理想とすると変化に乏しいバカに見えるからやめたほうがいい
両者の中間ぐらいを理想とすると変化に乏しいバカに見えるからやめたほうがいい
204デフォルトの名無しさん
2021/10/16(土) 23:24:00.10ID:yuQVo/8c205デフォルトの名無しさん
2021/10/16(土) 23:28:51.24ID:N8k1BZc2 個人攻撃やめなー
206デフォルトの名無しさん
2021/10/17(日) 05:07:24.12ID:Aq3hRABL なんでRustって成功しているの?
MSもGoogleもAppleもダメだったのに、やっぱり少し不親切なぐらいの方がいいのかな・・・・
MSもGoogleもAppleもダメだったのに、やっぱり少し不親切なぐらいの方がいいのかな・・・・
207デフォルトの名無しさん
2021/10/17(日) 06:34:07.94ID:atjZW8su Kotlin もよろしく
208デフォルトの名無しさん
2021/10/17(日) 06:58:29.73ID:PnF0LE+q CとかJavaとかPythonみたいなメインストリーム言語であるような、
他の言語の経験がない人を対象にした、プログラミング自体をその言語使って学んでいく初学者向けの分かりやすい本ってRustにはないよね
どの本もプログラミング既学者向け
他の言語の経験がない人を対象にした、プログラミング自体をその言語使って学んでいく初学者向けの分かりやすい本ってRustにはないよね
どの本もプログラミング既学者向け
209デフォルトの名無しさん
2021/10/17(日) 08:11:41.68ID:y3veWc+v 本は無い
コミュ力で盗め
ってみんな割と本気で思ってそう
終わりだねこの力
コミュ力で盗め
ってみんな割と本気で思ってそう
終わりだねこの力
210デフォルトの名無しさん
2021/10/17(日) 11:05:04.81ID:MkgjpPUe >>180
classの基本は変数とそれを操作するメソッドを一体化して扱おうっていうことだから、
ハードウェアのアナロジーとして捉えればそれ自体はさほど難しい概念ではないけどね。
まぁ、C++もいささか肥大化しすぎた感じでもあるけれど(笑)
Rustはclassを廃止したけど、結局structだけでは無理だから
implやtraitを持ち込んだんだよね?
traitの段階でどこにimplされるのかが決まっていないから、どのstructの
メンバを参照するのかを探すのがちょいとうっとおしかったかな。
Cで、構造体に関数へのポインタを入れた時は第一引数に構造体自体への
ポインタを渡したりしたから、ソースコード上でも、「こいつはどこを見るつもり?」
というのはよく分かったけどRustじゃ&selfだから、一見すると、
「お前は誰だぁ!??」って感じで。
継承ができない・・・とかいっても、そもそもRustはオブジェクト指向言語って
わけじゃないから、そのあたりは割り引いて考えないといけないんだろうけど。
classの基本は変数とそれを操作するメソッドを一体化して扱おうっていうことだから、
ハードウェアのアナロジーとして捉えればそれ自体はさほど難しい概念ではないけどね。
まぁ、C++もいささか肥大化しすぎた感じでもあるけれど(笑)
Rustはclassを廃止したけど、結局structだけでは無理だから
implやtraitを持ち込んだんだよね?
traitの段階でどこにimplされるのかが決まっていないから、どのstructの
メンバを参照するのかを探すのがちょいとうっとおしかったかな。
Cで、構造体に関数へのポインタを入れた時は第一引数に構造体自体への
ポインタを渡したりしたから、ソースコード上でも、「こいつはどこを見るつもり?」
というのはよく分かったけどRustじゃ&selfだから、一見すると、
「お前は誰だぁ!??」って感じで。
継承ができない・・・とかいっても、そもそもRustはオブジェクト指向言語って
わけじゃないから、そのあたりは割り引いて考えないといけないんだろうけど。
211デフォルトの名無しさん
2021/10/17(日) 11:23:57.78ID:Lu+6ZGga 成功してると思い込みたいバカが持ち上げてるだけだろ。
それだけ学習すれば済むと思い込みたいバカがな。
それだけ学習すれば済むと思い込みたいバカがな。
212デフォルトの名無しさん
2021/10/17(日) 12:18:01.28ID:3vXZmfmW JAVAの良さは何かな
最初の頃は一度書いたらすべてのプラットフォームで動作すると宣伝していたのに
最初の頃は一度書いたらすべてのプラットフォームで動作すると宣伝していたのに
213デフォルトの名無しさん
2021/10/17(日) 13:50:04.06ID:y3veWc+v214デフォルトの名無しさん
2021/10/17(日) 14:16:08.94ID:6j2makCm Javaは次々に新しいフレームワークができて
バージョンアップも早い
動かすだけで一苦労
が何回も繰り返される
バージョンアップも早い
動かすだけで一苦労
が何回も繰り返される
215デフォルトの名無しさん
2021/10/17(日) 16:18:33.33ID:KyO3PKvk >>210
> Rustはclassを廃止したけど、
> 結局structだけでは無理だから
> implやtraitを持ち込んだんだよね?
その発想はオブジェクト指向プログラミングに毒されているかなと思います
むしろRustは関数型プログラミングの視点から見れば素直に理解しやすいです
まず代数的データ型としてRustでは
『直積』をC言語と同じstructで
『直和』はC言語のunionでは機能不足なので値付きenum (=タグ付きunion)で表しています
もちろんこれらstructとenumはジェネリックに定義されて0個以上の他の型から構成されます
それらの上での(Haskell等の)『型クラス』としての位置付けがRustのtraitです
つまりある一つの側面としては
RustはC言語に関数型言語の概念を持ち込んだ手続き型言語という捉え方をするとわかりやすいでしょう
加えてC言語系統では今まで実現できていなかったメモリ安全性の保証に成功したことが大きいですね
> Rustはclassを廃止したけど、
> 結局structだけでは無理だから
> implやtraitを持ち込んだんだよね?
その発想はオブジェクト指向プログラミングに毒されているかなと思います
むしろRustは関数型プログラミングの視点から見れば素直に理解しやすいです
まず代数的データ型としてRustでは
『直積』をC言語と同じstructで
『直和』はC言語のunionでは機能不足なので値付きenum (=タグ付きunion)で表しています
もちろんこれらstructとenumはジェネリックに定義されて0個以上の他の型から構成されます
それらの上での(Haskell等の)『型クラス』としての位置付けがRustのtraitです
つまりある一つの側面としては
RustはC言語に関数型言語の概念を持ち込んだ手続き型言語という捉え方をするとわかりやすいでしょう
加えてC言語系統では今まで実現できていなかったメモリ安全性の保証に成功したことが大きいですね
216デフォルトの名無しさん
2021/10/17(日) 18:28:05.52ID:ESmnvthu >>212
ちゃんとしたオブジェクト指向
ちゃんとしたオブジェクト指向
217デフォルトの名無しさん
2021/10/17(日) 18:33:14.43ID:YptL43pX classを廃止したとか笑うわw
218デフォルトの名無しさん
2021/10/17(日) 18:35:13.51ID:7+j7XRcJ >>196
Dartって一時期めっちゃ死にかけてなかった?
Dartって一時期めっちゃ死にかけてなかった?
219デフォルトの名無しさん
2021/10/17(日) 18:48:49.33ID:MaJoh28m >>218
各ブラウザにDartVM積んでJavaScriptを置き換えようとしてたけど断念し、選ぶ価値の無いAltJSと化した死に損ない
最近はFlutterで息を吹き返して、Dart単体でも多少は使えるようになってきたような
各ブラウザにDartVM積んでJavaScriptを置き換えようとしてたけど断念し、選ぶ価値の無いAltJSと化した死に損ない
最近はFlutterで息を吹き返して、Dart単体でも多少は使えるようになってきたような
220デフォルトの名無しさん
2021/10/17(日) 19:14:55.95ID:MkgjpPUe >>215
オブジェクトと実体が一体になるというのは、組み込み用途でもわかりやすい
アナロジーなんだよね。
Rustの「こいつは誰をいじってるの?」というのが宣言されている段階で
確定していないというのは読む側のことを考えていないからなぁ。
メモリ安全というけど、間違った構造体にimplしてしまうと、そちらのメンバを
壊すことになるわけで、そこはコンパイラも実行段階でも引っかからないしね。
違う型の構造体に同じ名前のメソッドが来るというのは割とよくある話なんで、
そのあたりの混乱というのか、コンタミネーションをしないように
ファイルを分割するなりして、記述の時点で気をつけないといけないかなぁ。
そのあたりを「書き方」で工夫してやらないといけない。
オブジェクトと実体が一体になるというのは、組み込み用途でもわかりやすい
アナロジーなんだよね。
Rustの「こいつは誰をいじってるの?」というのが宣言されている段階で
確定していないというのは読む側のことを考えていないからなぁ。
メモリ安全というけど、間違った構造体にimplしてしまうと、そちらのメンバを
壊すことになるわけで、そこはコンパイラも実行段階でも引っかからないしね。
違う型の構造体に同じ名前のメソッドが来るというのは割とよくある話なんで、
そのあたりの混乱というのか、コンタミネーションをしないように
ファイルを分割するなりして、記述の時点で気をつけないといけないかなぁ。
そのあたりを「書き方」で工夫してやらないといけない。
221デフォルトの名無しさん
2021/10/17(日) 19:26:32.07ID:QqhGhKAl そもそも実用レベルのプログラミングでリソースの確保解放でバグは出ない。
意味のない営業文句。
意味のない営業文句。
222デフォルトの名無しさん
2021/10/17(日) 19:51:35.57ID:uRTUEgiz >>220
> Rustの「こいつは誰をいじってるの?」というのが宣言されている段階で
> 確定していないというのは読む側のことを考えていないからなぁ。
その辺はOOPにおけるインターフェースと同じでは?
> メモリ安全というけど、間違った構造体にimplしてしまうと、そちらのメンバを
> 壊すことになるわけで、そこはコンパイラも実行段階でも引っかからないしね。
これどういうこと?
> Rustの「こいつは誰をいじってるの?」というのが宣言されている段階で
> 確定していないというのは読む側のことを考えていないからなぁ。
その辺はOOPにおけるインターフェースと同じでは?
> メモリ安全というけど、間違った構造体にimplしてしまうと、そちらのメンバを
> 壊すことになるわけで、そこはコンパイラも実行段階でも引っかからないしね。
これどういうこと?
223デフォルトの名無しさん
2021/10/17(日) 19:58:40.22ID:y3veWc+v ネットの無料の情報には意味のない営業文句などが大量に混ざっている
224デフォルトの名無しさん
2021/10/17(日) 20:43:02.47ID:QqhGhKAl 伸長するメモリー領域には素直にstd::vectorを使えば良い。
性能は順当に劣化するが、それで良いと思う。
性能は順当に劣化するが、それで良いと思う。
225デフォルトの名無しさん
2021/10/17(日) 23:37:29.30ID:QqhGhKAl 明日の朝は大阪で11度らしいのでコートを忘れずに。
226デフォルトの名無しさん
2021/10/17(日) 23:48:16.60ID:KyO3PKvk >>220
Rustではジェネリックな型から見ると様々なtraitを実装する(指定する)ということは次々と制約を課すことであり
対象はstructだけではなく全ての型であってenumでも数値でも文字列でも何に対しても共通です
その上で別視点から見るとある型に様々なtraitを実装していくということは様々なtraitの機能をサポートしていくことでもあるわけです
> 間違った構造体にimplしてしまうと、
> そちらのメンバを壊すことになるわけで、
そんなことは起こりえません
あるtraitをその構造体に実装(impl)できたのならば間違っていなかったわけです
そしてその実装は自分で行うのですからメンバを壊すという意味不明なことは起こりえません
おそらくプログラミングをしたことがなくて大きな勘違いをしていると思われます
Rustではジェネリックな型から見ると様々なtraitを実装する(指定する)ということは次々と制約を課すことであり
対象はstructだけではなく全ての型であってenumでも数値でも文字列でも何に対しても共通です
その上で別視点から見るとある型に様々なtraitを実装していくということは様々なtraitの機能をサポートしていくことでもあるわけです
> 間違った構造体にimplしてしまうと、
> そちらのメンバを壊すことになるわけで、
そんなことは起こりえません
あるtraitをその構造体に実装(impl)できたのならば間違っていなかったわけです
そしてその実装は自分で行うのですからメンバを壊すという意味不明なことは起こりえません
おそらくプログラミングをしたことがなくて大きな勘違いをしていると思われます
227デフォルトの名無しさん
2021/10/17(日) 23:50:24.15ID:QqhGhKAl 本当にそれでバグが無くなるなら良いが、見当違いのことを一生懸命してるように見えるぞ。
228デフォルトの名無しさん
2021/10/17(日) 23:53:18.81ID:Rod/beEv >>221
それは君が間違っている。
以下の記事引用の最後の段落を読んで現実を知ろう。
グーグルやマイクロソフトが「Rust」言語でOS開発、背景に国家による諜報活動の影
https://xtech.nikkei.com/atcl/nxt/column/18/00692/042700054/
1970年代初めにUNIXの開発にC言語が採用されて以来、OS開発はCやその後継であるC++の独壇場だった。グーグルはこれまでもAndroidの開発にJavaやKotlinを採用していたが、カーネルやデバイスドライバーなどOSの下位レイヤーの開発にはC/C++しか使ってこなかった。RustはC/C++と同様に下位レイヤーの開発に使用する。
グーグルは数千万行にも及ぶ既存のC/C++のコードを書き換えるのは不可能としており、新規のコードの開発にのみRustを適用する方針だ。それでもOS開発の常識が数十年ぶりに変わるのだけは間違いない。
RustはWebブラウザー「Firefox」を開発する米Mozilla Foundation(モジラ財団)が開発を主導するプログラミング言語だ。開発が始まったのは2006年で、安定版であるバージョン1がリリースされたのも2015年のことだ。まだ新しいプログラミング言語をグーグルやマイクロソフトがOS開発に採用する理由は、OSのセキュリティー強化にある。
Rustは、プログラムに必要なメモリーの確保や解放に関連するバグが生じない「メモリー安全」が保証されたプログラミング言語である。それに対してこれまでのOS開発に使われてきたC/C++は「大規模な開発においてメモリー安全なコードを記述することがほぼ不可能」(マイクロソフトのブログ「We need a safer systems programming language」より)なのだという。
【脆弱性の70%がメモリー管理バグに起因】
グーグルによればAndroidに存在した深刻なセキュリティー脆弱性の70%近くがメモリー安全に関するバグに起因するという。同様にマイクロソフトも、同社製品に存在したセキュリティー脆弱性の70%がメモリー安全に関するバグに起因すると述べている。C/C++を使う限りセキュリティー脆弱性を根絶するのは不可能と考えて、Rustを採用するに至ったというわけだ。
それは君が間違っている。
以下の記事引用の最後の段落を読んで現実を知ろう。
グーグルやマイクロソフトが「Rust」言語でOS開発、背景に国家による諜報活動の影
https://xtech.nikkei.com/atcl/nxt/column/18/00692/042700054/
1970年代初めにUNIXの開発にC言語が採用されて以来、OS開発はCやその後継であるC++の独壇場だった。グーグルはこれまでもAndroidの開発にJavaやKotlinを採用していたが、カーネルやデバイスドライバーなどOSの下位レイヤーの開発にはC/C++しか使ってこなかった。RustはC/C++と同様に下位レイヤーの開発に使用する。
グーグルは数千万行にも及ぶ既存のC/C++のコードを書き換えるのは不可能としており、新規のコードの開発にのみRustを適用する方針だ。それでもOS開発の常識が数十年ぶりに変わるのだけは間違いない。
RustはWebブラウザー「Firefox」を開発する米Mozilla Foundation(モジラ財団)が開発を主導するプログラミング言語だ。開発が始まったのは2006年で、安定版であるバージョン1がリリースされたのも2015年のことだ。まだ新しいプログラミング言語をグーグルやマイクロソフトがOS開発に採用する理由は、OSのセキュリティー強化にある。
Rustは、プログラムに必要なメモリーの確保や解放に関連するバグが生じない「メモリー安全」が保証されたプログラミング言語である。それに対してこれまでのOS開発に使われてきたC/C++は「大規模な開発においてメモリー安全なコードを記述することがほぼ不可能」(マイクロソフトのブログ「We need a safer systems programming language」より)なのだという。
【脆弱性の70%がメモリー管理バグに起因】
グーグルによればAndroidに存在した深刻なセキュリティー脆弱性の70%近くがメモリー安全に関するバグに起因するという。同様にマイクロソフトも、同社製品に存在したセキュリティー脆弱性の70%がメモリー安全に関するバグに起因すると述べている。C/C++を使う限りセキュリティー脆弱性を根絶するのは不可能と考えて、Rustを採用するに至ったというわけだ。
229デフォルトの名無しさん
2021/10/18(月) 00:00:05.81ID:U4M03mzh >>228
10年後にはまた別のことを言ってる。
再現性のないバグのほとんどすべてがメモリーに起因するのは間違いないが、メモリーの確保解放とはまた別の話。
Rustのやり方で上手くいかないことは、C++を使う者ならとうの昔に気付いている。
10年後にはまた別のことを言ってる。
再現性のないバグのほとんどすべてがメモリーに起因するのは間違いないが、メモリーの確保解放とはまた別の話。
Rustのやり方で上手くいかないことは、C++を使う者ならとうの昔に気付いている。
230デフォルトの名無しさん
2021/10/18(月) 00:03:14.89ID:U4M03mzh Haskellこそ救世主である。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国とロシアの爆撃機、日本周辺で共同飛行 [少考さん★]
- 「中国側も日本機のレーダーを感知していた」 中国メディアが報道 [♪♪♪★]
- 【YouTuber】バイク事故で入院のゆたぼん、振込で「お見舞金」募る [muffin★]
- 高市早苗首相、消費税減税に後ろ向き 足かせはレジシステム? 「責任ある積極財政」期待高いが [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★7 [七波羅探題★]
- 防衛省、中国を完全論破www 「事前通告があったのは海自であって空自ではない」 高市早苗勝利 [175344491]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ★4 [597533159]
- 【悲報】JA「全然米が売れなくて倉庫を圧迫してる。助けて!」米卸売り業者「安売りしたら赤字になる…助けて!」 [802034645]
- 躁鬱手帳持ち元風俗嬢に質問ある?
- 【朗報】カプコン「これからはロックマン・デビルメイクライ・逆転裁判を主力IPになれるように育てるわ」 [394133584]
- 気が狂いそう
