公式
https://www.rust-lang.org/
https://blog.rust-lang.org/
https://github.com/rust-lang/rust
公式ドキュメント
https://www.rust-lang.org/learn
Web上の実行環境
https://play.rust-lang.org
※Rustを学びたい人はまず最初に公式のThe Bookを読むこと
https://doc.rust-lang.org/book/
※Rustを学ぶ際に犯しがちな12の過ち
https://dystroy.org/blog/how-not-to-learn-rust
※Rustのasyncについて知りたければ「async-book」は必読
https://rust-lang.github.io/async-book/
※次スレは原則>>980が立てること
前スレ
Rust part25
https://mevius.5ch.net/test/read.cgi/tech/1722354386/
ワッチョイスレ
プログラミング言語 Rust 4【ワッチョイ】
https://mevius.5ch.net/test/read.cgi/tech/1514107621/
Rust part26
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2024/09/20(金) 22:18:38.38ID:c48cFuZJ292デフォルトの名無しさん
2024/10/16(水) 11:03:29.32ID:TpBdArw+293デフォルトの名無しさん
2024/10/16(水) 11:05:35.24ID:TpBdArw+ >>292
>> GoogleおよびMicrosoftはセキュリティー脆弱性の70%がメモリー安全に関するバグに起因すると述べている。
>> C/C++を使う限りこれらを根絶するのは不可能と考えて、Rustを採用するに至ったというわけだ。
>> GoogleおよびMicrosoftはセキュリティー脆弱性の70%がメモリー安全に関するバグに起因すると述べている。
>> C/C++を使う限りこれらを根絶するのは不可能と考えて、Rustを採用するに至ったというわけだ。
294デフォルトの名無しさん
2024/10/16(水) 11:06:00.19ID:RoKRQLvT 中国製やロシア製のクレート使ってるとまずいの?
295デフォルトの名無しさん
2024/10/16(水) 11:24:30.99ID:iczv67yq Rustの一番の特徴はスタックフレームを意識して言語仕様の下敷きにしていることかと。ライフタイムとかスコープとか。結果として再帰構造を取り込んでいるから言語として強い。
関数型プログラミングを前面に出すとHaskellみたいになりそうだから止めてほしいところ。
関数型プログラミングを前面に出すとHaskellみたいになりそうだから止めてほしいところ。
296デフォルトの名無しさん
2024/10/16(水) 11:35:27.63ID:k6iNMcvo 副作用がないとかは嬉しいけど、関数型信者はデータ構造をなんでもリンクドリストにしようとするキチガイだから関わりたくない
297デフォルトの名無しさん
2024/10/16(水) 11:40:53.10ID:9ExG49iw298デフォルトの名無しさん
2024/10/16(水) 12:33:07.98ID:ru3N7GME >Rustの一番の特徴はスタックフレームを意識して言語仕様の下敷きにしていることかと。
こういう発言を見ると無駄にRust推してるやつのレベルの低さに呆れる
こういう発言を見ると無駄にRust推してるやつのレベルの低さに呆れる
299デフォルトの名無しさん
2024/10/16(水) 12:34:03.40ID:kfN83BOA >>297
Lispは関数型もどきってHaskellが言ってた
Lispは関数型もどきってHaskellが言ってた
300デフォルトの名無しさん
2024/10/16(水) 12:49:23.38ID:IRnMzRmI 過去スレのこの辺からの流れ思い出してしまった
https://mevius.5ch.net/test/read.cgi/tech/1692105879/423-
https://mevius.5ch.net/test/read.cgi/tech/1692105879/423-
301デフォルトの名無しさん
2024/10/16(水) 16:38:38.84ID:1LoW/zWh スクリプト言語上がりからするとスタックフレームを意識するのは斬新なんだろ
302デフォルトの名無しさん
2024/10/16(水) 17:01:37.45ID:+2+Nhw/8 lispはlispを操作してlispを吐き出すための言語であって
それ以外の機能はオマケだから
それ以外の機能はオマケだから
303デフォルトの名無しさん
2024/10/16(水) 17:34:30.78ID:9ExG49iw >>299
関数型がどうとかは重要ではなくて「リストを多用しがちと思われているLisp」という意味
関数型がどうとかは重要ではなくて「リストを多用しがちと思われているLisp」という意味
304デフォルトの名無しさん
2024/10/16(水) 17:48:29.96ID:1LoW/zWh 普通に多用するだろ
lisp使っててそこを認めないやついるのに驚き
lisp使っててそこを認めないやついるのに驚き
305デフォルトの名無しさん
2024/10/16(水) 17:54:09.44ID:jR87Fk4R C言語もリンクリストの権現みたいな存在だったんだよ。
306デフォルトの名無しさん
2024/10/16(水) 17:56:35.94ID:jR87Fk4R リンクトリストで、一番初期に有名になったのが、LISP。
それを分かりやすくしたのがC言語、みたいな感じ。
リンクトリストは、8MHz程度の16BIT-CPUにおいて、
動的配列に比べてとても効率が良かったので、人気が出た。
それを分かりやすくしたのがC言語、みたいな感じ。
リンクトリストは、8MHz程度の16BIT-CPUにおいて、
動的配列に比べてとても効率が良かったので、人気が出た。
307デフォルトの名無しさん
2024/10/16(水) 18:07:55.38ID:1LoW/zWh lispのリストとcでリンクリストが作れることは次元が違う話
lisp知らんやつに言っても理解できんだろが
だいたいリンクリストの権現って何だ?w
lisp知らんやつに言っても理解できんだろが
だいたいリンクリストの権現って何だ?w
308デフォルトの名無しさん
2024/10/16(水) 18:11:33.23ID:jDyVYSBS ごん‐げん【権現】 の解説
1 仏・菩薩 (ぼさつ) が人々を救うため、仮の姿をとって現れること。
2 仏・菩薩の垂迹 (すいじゃく) として化身して現れた日本の神。本地垂迹説による。熊野権現・金毘羅 (こんぴら) 権現などの類。
3 仏・菩薩にならって称した神号。東照大権現(徳川家康)の類。
ありがたや🙏🙏🙏
1 仏・菩薩 (ぼさつ) が人々を救うため、仮の姿をとって現れること。
2 仏・菩薩の垂迹 (すいじゃく) として化身して現れた日本の神。本地垂迹説による。熊野権現・金毘羅 (こんぴら) 権現などの類。
3 仏・菩薩にならって称した神号。東照大権現(徳川家康)の類。
ありがたや🙏🙏🙏
309デフォルトの名無しさん
2024/10/16(水) 18:13:29.12ID:qBTeykyO Cって、プログラムがリストになってるん?
lisp系以外で、こういうのってない気がするんだけど。
lisp系以外で、こういうのってない気がするんだけど。
310デフォルトの名無しさん
2024/10/16(水) 18:39:06.97ID:jR87Fk4R311デフォルトの名無しさん
2024/10/16(水) 20:06:13.28ID:IdjFDmt0 >>285
Firefoxの一部はレンダリング部分などRustになっているけど
そのメモリ管理部分を含めて本体はC++のままだよ
いずれにしても各アプリケーションによるメモリ管理部分は使用言語C++/Rustのメモリ管理とは別レイヤなので各言語の問題ではないね
Firefoxの一部はレンダリング部分などRustになっているけど
そのメモリ管理部分を含めて本体はC++のままだよ
いずれにしても各アプリケーションによるメモリ管理部分は使用言語C++/Rustのメモリ管理とは別レイヤなので各言語の問題ではないね
312デフォルトの名無しさん
2024/10/16(水) 20:08:26.05ID:IdjFDmt0 >>295
ライフタイム導入でスタックフレーム上への参照と変数が管理するヒープへの参照を区別せず安全に扱えるようになっただけで意識するしないは別問題じゃないかな
そのためコストの高いヒープを回避できる機会が増えて高速化に寄与しているのは間違いないけど
ライフタイム導入でスタックフレーム上への参照と変数が管理するヒープへの参照を区別せず安全に扱えるようになっただけで意識するしないは別問題じゃないかな
そのためコストの高いヒープを回避できる機会が増えて高速化に寄与しているのは間違いないけど
313デフォルトの名無しさん
2024/10/16(水) 20:11:56.13ID:IdjFDmt0 >>306
今はパイプラインとキャッシュによりほとんどの利用ケースでリンクリストよりベクタが速くなってしまったね
元々メモリ使用量や多段間接参照になる点でリンクリストが不利だった点に加えて追い打ちをかけるように
今はパイプラインとキャッシュによりほとんどの利用ケースでリンクリストよりベクタが速くなってしまったね
元々メモリ使用量や多段間接参照になる点でリンクリストが不利だった点に加えて追い打ちをかけるように
314デフォルトの名無しさん
2024/10/16(水) 20:13:18.48ID:IdjFDmt0 >>310
Lispは言語としてcond, car, cdrがあるからリンクリスト言語だけどC言語は明確に違うね
Cはリンクリストもベクタもその他のデータ構造も実装できるというだけの平等な立ち位置かな
Lispは言語としてcond, car, cdrがあるからリンクリスト言語だけどC言語は明確に違うね
Cはリンクリストもベクタもその他のデータ構造も実装できるというだけの平等な立ち位置かな
315デフォルトの名無しさん
2024/10/16(水) 20:21:57.12ID:jR87Fk4R316デフォルトの名無しさん
2024/10/16(水) 20:27:30.93ID:RoKRQLvT リンクリストは不変コレクションだから、副作用にこだわる関数型言語では特別な地位がある
ちなみにScalaではVectorという名前のもう一つの不変コレクションが多用されているんだが
これのRust版あるのかな? 中身は1ノード32要素のトライ木
ちなみにScalaではVectorという名前のもう一つの不変コレクションが多用されているんだが
これのRust版あるのかな? 中身は1ノード32要素のトライ木
317デフォルトの名無しさん
2024/10/16(水) 20:48:00.68ID:jDyVYSBS ゆーてClojureとかHylangとか今ドキLisp女子はlist processingナニソレって感じのやつばっかやん
318デフォルトの名無しさん
2024/10/16(水) 21:41:36.61ID:NMNSAXL7 やっぱりこのスレ関数型言語わかる人多いの?
C/C++系から入った自分としてはサッパリわからん
C/C++系から入った自分としてはサッパリわからん
319デフォルトの名無しさん
2024/10/16(水) 22:33:14.93ID:9ExG49iw >>318
パラダイムは実際にはグラデーション的で、要素が混ざり合ってる。
明瞭に線を引いて分類できるわけではない。
ML 系とか LISP 系とかは関数型みたいに言われることは多いんだが実際には関数型要素が強めのマルチパラダイムって感じで、 C++ を使いこなせる人なら入門書をちゃんと読めば使えるくらいの難易度。
誰もが文句なく関数型に分類するメジャーな汎用プログラミング言語は Haskell くらいだと思う。
パラダイムは脇に置くとして、 ML 系はインデントで構造を表す文法だったり LISP 系は丸括弧ばかりで構造を表すという外観の違いの段階で忌避感を持っちゃう人は結構いるかも?
パラダイムは実際にはグラデーション的で、要素が混ざり合ってる。
明瞭に線を引いて分類できるわけではない。
ML 系とか LISP 系とかは関数型みたいに言われることは多いんだが実際には関数型要素が強めのマルチパラダイムって感じで、 C++ を使いこなせる人なら入門書をちゃんと読めば使えるくらいの難易度。
誰もが文句なく関数型に分類するメジャーな汎用プログラミング言語は Haskell くらいだと思う。
パラダイムは脇に置くとして、 ML 系はインデントで構造を表す文法だったり LISP 系は丸括弧ばかりで構造を表すという外観の違いの段階で忌避感を持っちゃう人は結構いるかも?
320デフォルトの名無しさん
2024/10/16(水) 23:59:33.67ID:NMNSAXL7 Rustで使うもの (式指向という考え方, match式, 代数的データ型, リストやOptionへのmap, filterなどの操作等) は理解できてるし、良いなと思って使えてる
それでも Lisp や Haskell は難しいという印象があるんだよね
指摘の通り見た目の見慣れなさで抵抗感があるだけなのかもしれない
それでも Lisp や Haskell は難しいという印象があるんだよね
指摘の通り見た目の見慣れなさで抵抗感があるだけなのかもしれない
321デフォルトの名無しさん
2024/10/17(木) 00:17:27.82ID:CZAZeUbm > ML 系はインデントで構造を表す文法
Haskell や F# が人気なのは分かるけど、OCaml や Standard ML を差し置いて勝手に ML 系の代表ヅラしないでくれますかね……
Haskell や F# が人気なのは分かるけど、OCaml や Standard ML を差し置いて勝手に ML 系の代表ヅラしないでくれますかね……
322デフォルトの名無しさん
2024/10/17(木) 00:25:33.00ID:NeG4778y 元々は研究用の言語でコンパイラ開発とか特定の用途以外だと実用性低いし
ほとんど趣味の領域だから無理に手を出さなくていいよ
Haskellの知識があるとRustのtraitとか?演算子(Result戻し)に馴染みやすくなるけど
そのためにHaskellを勉強するほどではない
ほとんど趣味の領域だから無理に手を出さなくていいよ
Haskellの知識があるとRustのtraitとか?演算子(Result戻し)に馴染みやすくなるけど
そのためにHaskellを勉強するほどではない
323デフォルトの名無しさん
2024/10/17(木) 00:26:57.93ID:SxNRrx7E >>321
Hakell は ML 系ではない扱いだろ。
Hakell は ML 系ではない扱いだろ。
324デフォルトの名無しさん
2024/10/17(木) 00:55:24.22ID:yABRuexK >>319
関数型の定義は何?
関数型の定義は何?
325デフォルトの名無しさん
2024/10/17(木) 01:12:31.87ID:WrCN832N326デフォルトの名無しさん
2024/10/17(木) 01:44:33.23ID:WrCN832N >>299
関数型プログラミングが提唱される前の言語だから、関数合成とか考慮されてないからとか?
Lispは歴史的にLisp以外に関数型言語が無い時代があるので、手続き型言語をお手本にコードが書かれてloop使いまくりの手続き型言語っぽいLispコードが多かったとは聞いている。
関数型プログラミングが提唱される前の言語だから、関数合成とか考慮されてないからとか?
Lispは歴史的にLisp以外に関数型言語が無い時代があるので、手続き型言語をお手本にコードが書かれてloop使いまくりの手続き型言語っぽいLispコードが多かったとは聞いている。
327デフォルトの名無しさん
2024/10/17(木) 01:57:40.19ID:WrCN832N >>318
多分、変数がイミュータブル(不変)だと何がありがたいのかは何かしら関数型言語触らないと分からないと思う。
なので、Rustに飛びつく人は(全員ではないにしろ)関数型言語を触ったことがある人が多いとは思う。
多分、変数がイミュータブル(不変)だと何がありがたいのかは何かしら関数型言語触らないと分からないと思う。
なので、Rustに飛びつく人は(全員ではないにしろ)関数型言語を触ったことがある人が多いとは思う。
328デフォルトの名無しさん
2024/10/17(木) 03:22:22.09ID:FXzuQNl3 rustは関数型言語の特徴を一通り搭載しつつ、あえて数学用語はあまり使わない所が良い。関数型というとプログラム作らずに圏論の話に明け暮れる人が多すぎ。
rustはプログラムを書くために実用的な機能にまとめましたって感じでいい。
rustはプログラムを書くために実用的な機能にまとめましたって感じでいい。
329デフォルトの名無しさん
2024/10/17(木) 03:29:08.36ID:FXzuQNl3 lispが読めないって人はテキストエディタでカッコを全部スペースに置換してしまえばいい。
そしたらインデントだけ見えるようになる。
カッコを見ないのが正解。
自分はカッコの表示on/off機能をエディタに入れてる。
そしたらインデントだけ見えるようになる。
カッコを見ないのが正解。
自分はカッコの表示on/off機能をエディタに入れてる。
330デフォルトの名無しさん
2024/10/17(木) 06:58:43.79ID:yABRuexK 関数型言語とは何かを定義せず雰囲気てわ分類するなよ
よくそんなオツムでプログラミングやってんな
よくそんなオツムでプログラミングやってんな
331デフォルトの名無しさん
2024/10/17(木) 07:48:34.04ID:ETsUhebR ユーザー視点なら、単なる「関数型言語」というラベルくらいでいいんじゃない?
バズワードみたいなもの。
そもそも「関数」「計算可能関数 」を理解しているやつはどれくらいいるんかしらん。
バズワードみたいなもの。
そもそも「関数」「計算可能関数 」を理解しているやつはどれくらいいるんかしらん。
332デフォルトの名無しさん
2024/10/17(木) 08:51:31.65ID:SxNRrx7E >>324
関数の入出力でプログラムを構成するスタイルってくらいのふわっとした定義しかない。
それをサポートする言語機能が多いか少ないかでグラデーションになってる。
クロージャがあれば関数型っぽいし、関数合成があればもっとだし、カリー化があればいかにもぽいぽい。
関数の入出力でプログラムを構成するスタイルってくらいのふわっとした定義しかない。
それをサポートする言語機能が多いか少ないかでグラデーションになってる。
クロージャがあれば関数型っぽいし、関数合成があればもっとだし、カリー化があればいかにもぽいぽい。
333デフォルトの名無しさん
2024/10/17(木) 09:44:28.22ID:Dr9I7rOm >>311
firefoxでも全然使われてないRust
firefoxでも全然使われてないRust
334デフォルトの名無しさん
2024/10/17(木) 12:07:14.38ID:wG5d2OUn 知りもしないことを知ったかぶりして書くやつが多いスレだこと
335デフォルトの名無しさん
2024/10/17(木) 15:01:11.80ID:HAj7NAac きみらRustでVecとかC++でvectorとか使ってんの?
なんでLinkedList使わんの?
なんでLinkedList使わんの?
336デフォルトの名無しさん
2024/10/17(木) 15:05:42.63ID:HAj7NAac337デフォルトの名無しさん
2024/10/17(木) 16:50:02.90ID:hLaeUZg0 >>335
アンロールドリンクドリストならベクターより良いよ
アンロールドリンクドリストならベクターより良いよ
338デフォルトの名無しさん
2024/10/17(木) 20:18:17.74ID:9pxlHN7V >>324
普通はこういう風に説明される
https://web.sfc.keio.ac.jp/~hattori/prog-theory/ja/functional.html
1. プログラムは関数定義の集合であり、関数呼び出しによってそれらを組み合わせる。
2. 関数は first class object である。
3. 文という単位は無く、プログラムの実行とは式を評価することである。
4. 参照透過性がある。
主に、2が便利だから、rustにも部分的に採用されている
普通はこういう風に説明される
https://web.sfc.keio.ac.jp/~hattori/prog-theory/ja/functional.html
1. プログラムは関数定義の集合であり、関数呼び出しによってそれらを組み合わせる。
2. 関数は first class object である。
3. 文という単位は無く、プログラムの実行とは式を評価することである。
4. 参照透過性がある。
主に、2が便利だから、rustにも部分的に採用されている
339デフォルトの名無しさん
2024/10/17(木) 20:46:18.51ID:yABRuexK340デフォルトの名無しさん
2024/10/17(木) 21:11:20.46ID:9pxlHN7V341デフォルトの名無しさん
2024/10/17(木) 21:25:15.67ID:zXjn5afM >>338
ウケるw
ウケるw
342デフォルトの名無しさん
2024/10/17(木) 21:25:56.56ID:zXjn5afM >>339
さらにウケるw
さらにウケるw
343デフォルトの名無しさん
2024/10/17(木) 21:46:24.33ID:WrCN832N >>328
Haskellerの一部しか圏論言ってないと思うけど…。
(確かに声は大きいが)
モナドで躓く人や、モナドの理解がまだ浅い人は圏論言わないし、OCamlやF#、SMLな人も圏論言わない。
(そして、モナドを深く理解した人でも全員が圏論言うわけではない)
Lisp系の人は言わずもがな。
関数型言語を使ってる人の中でも圏論言う人はごく少数。
(繰り返すが、一部の人の声が大きいのは認める)
Haskellerの一部しか圏論言ってないと思うけど…。
(確かに声は大きいが)
モナドで躓く人や、モナドの理解がまだ浅い人は圏論言わないし、OCamlやF#、SMLな人も圏論言わない。
(そして、モナドを深く理解した人でも全員が圏論言うわけではない)
Lisp系の人は言わずもがな。
関数型言語を使ってる人の中でも圏論言う人はごく少数。
(繰り返すが、一部の人の声が大きいのは認める)
344デフォルトの名無しさん
2024/10/17(木) 21:51:50.24ID:yABRuexK345デフォルトの名無しさん
2024/10/17(木) 21:58:01.60ID:WrCN832N >>338
Rustの説明としては弱いかな。
2はJavaもC#も持ってるし。
自分は4に重きを置いた手続き型言語って位置付けだな。
マルチスレッドプログラミングで4が重要。
(ただし、Haskellは遅延評価なので4を生かしきれず、Idris2の様な正格評価版Haskellを生み出した)
あとは、C並みに速いだけだったらOCamlやSMLも同じこと言ってるので、2,4を満たしつつGCが無いのがRustの特徴だと思う。
Rustの説明としては弱いかな。
2はJavaもC#も持ってるし。
自分は4に重きを置いた手続き型言語って位置付けだな。
マルチスレッドプログラミングで4が重要。
(ただし、Haskellは遅延評価なので4を生かしきれず、Idris2の様な正格評価版Haskellを生み出した)
あとは、C並みに速いだけだったらOCamlやSMLも同じこと言ってるので、2,4を満たしつつGCが無いのがRustの特徴だと思う。
346デフォルトの名無しさん
2024/10/17(木) 22:51:01.11ID:C0hMoyx0 言語が生き残るかどうかは
ある程度の広さがある分野においてその言語が必須かどうかで決まる
例えば広まってるOS環境での主開発言語と公式で定められたりウェブブラウザのように特定言語が強いられるような環境における利用必須もあれば
C言語のように速さと省メモリ性で他とは大差の唯一性による必須もある
つまり関数型によるメリットなんて二の次なのだ
C言語と同等の速さと省メモリ性を持ちつつ様々な安全性も保証するRustはCに替わって広い分野での必須言語となりつつある
そのRustがたまたま関数型の特徴を多く兼ね備えて非常に使いやすいというだけにすぎない
ある程度の広さがある分野においてその言語が必須かどうかで決まる
例えば広まってるOS環境での主開発言語と公式で定められたりウェブブラウザのように特定言語が強いられるような環境における利用必須もあれば
C言語のように速さと省メモリ性で他とは大差の唯一性による必須もある
つまり関数型によるメリットなんて二の次なのだ
C言語と同等の速さと省メモリ性を持ちつつ様々な安全性も保証するRustはCに替わって広い分野での必須言語となりつつある
そのRustがたまたま関数型の特徴を多く兼ね備えて非常に使いやすいというだけにすぎない
347デフォルトの名無しさん
2024/10/17(木) 23:33:24.78ID:784LeBrK 突然の演説
348デフォルトの名無しさん
2024/10/18(金) 00:37:38.20ID:eikO6PmP349デフォルトの名無しさん
2024/10/18(金) 03:49:07.30ID:5Kk3482a350デフォルトの名無しさん
2024/10/18(金) 08:02:39.80ID:Zig2xljb えっAPLもっ?
351デフォルトの名無しさん
2024/10/18(金) 08:57:56.68ID:phux1vRq352デフォルトの名無しさん
2024/10/18(金) 09:16:52.85ID:zss9wXA+ いやまあ>>338 の1と2は全然別のことを言ってるだろ
これで説明が足りないと感じる人はFirst class objectの意味を知らないとかか?
これで説明が足りないと感じる人はFirst class objectの意味を知らないとかか?
353デフォルトの名無しさん
2024/10/18(金) 09:31:39.70ID:ady3VKii 関数を組み合わせるってコンビネーターがないと組み合わせられないからね
ファーストクラス関数がないとコンビネーターは無理だからな
ファーストクラス関数がないとコンビネーターは無理だからな
354デフォルトの名無しさん
2024/10/18(金) 09:32:07.67ID:zss9wXA+ 解説したらワンパン終了というが、こう言う時の解説って案外難しいんだよな
相手が「first class object」の意味を知らないのか、「関数」の意味を知らないのか、日本語の文法を知らないのか、それとも文を読む気がないのか、はたまたレスバで勝ちたくて因縁付けてるだけなのか
相手の状態によって適切な解説は異なる。相手の知識をエスパーして解説を始めても意外とフィットしなくてワンパンで終わらない
掲示板でそこまでの手間をかけても、相手がレスバで勝ちたいだけだったら何も得られない。だから馬鹿にして去るのが最適解になってしまう。
相手が「first class object」の意味を知らないのか、「関数」の意味を知らないのか、日本語の文法を知らないのか、それとも文を読む気がないのか、はたまたレスバで勝ちたくて因縁付けてるだけなのか
相手の状態によって適切な解説は異なる。相手の知識をエスパーして解説を始めても意外とフィットしなくてワンパンで終わらない
掲示板でそこまでの手間をかけても、相手がレスバで勝ちたいだけだったら何も得られない。だから馬鹿にして去るのが最適解になってしまう。
355デフォルトの名無しさん
2024/10/18(金) 11:13:30.31ID:wVDH4S6Q >相手の知識をエスパーして解説を始めても意外とフィットしなくて
レスバが目的なら判らないフリしてるだけだからフィットする訳がない
レスバが目的なら判らないフリしてるだけだからフィットする訳がない
356デフォルトの名無しさん
2024/10/18(金) 11:20:18.93ID:/SvZNagR >>348
その文言に騙されたヤツはほんと多いと思う
その文言に騙されたヤツはほんと多いと思う
357デフォルトの名無しさん
2024/10/18(金) 13:34:55.49ID:io02HZIQ >>339
例えばC言語の場合は関数は第一級オブジェクトじゃないけど、それは知ってる?
例えばC言語の場合は関数は第一級オブジェクトじゃないけど、それは知ってる?
358デフォルトの名無しさん
2024/10/18(金) 13:52:02.38ID:xbVzWiEk359デフォルトの名無しさん
2024/10/18(金) 14:00:22.06ID:xbVzWiEk >「1. プログラムは関数定義の集合であり、関数呼び出しによってそれらを組み合わせる。」
関数型言語でも関数定義以外にもモジュールや型や変数の定義があるので
関数定義の集合というと言い過ぎ
厳密な話ではなくプログラムの捉え方のようなざっくりした話であれば
C言語で書いた手続き型的なプログラムでも1は成り立つので
結局何が特徴だと言いたいのかわからない残念な文章
関数型言語でも関数定義以外にもモジュールや型や変数の定義があるので
関数定義の集合というと言い過ぎ
厳密な話ではなくプログラムの捉え方のようなざっくりした話であれば
C言語で書いた手続き型的なプログラムでも1は成り立つので
結局何が特徴だと言いたいのかわからない残念な文章
360デフォルトの名無しさん
2024/10/18(金) 14:26:18.56ID:at3pRl/S パラダイムはプログラムの構成の話なので、 C でオブジェクト指向的なプログラムを書いてもいいし関数指向的に書いてもいい。
言語としてクロージャがなくても構造体と関数の組をクロージャと見做して構成することも出来る。
ただ、なるべく直接的に言語の機能としてサポートがあるに越したことは無いし、常識的には言語が想定している形でプログラムを構成したほうが楽ってだけの話だ。
言語の機能での分類は「だいたいこっち寄り」くらいのことしか言えない曖昧なもんだわ。
言語としてクロージャがなくても構造体と関数の組をクロージャと見做して構成することも出来る。
ただ、なるべく直接的に言語の機能としてサポートがあるに越したことは無いし、常識的には言語が想定している形でプログラムを構成したほうが楽ってだけの話だ。
言語の機能での分類は「だいたいこっち寄り」くらいのことしか言えない曖昧なもんだわ。
361デフォルトの名無しさん
2024/10/18(金) 17:16:35.88ID:0JUhcpKJ >>358
一連のレスで唯一CSの教養を感じるわ
そのとおりであれは定義でもなんでもなく、手続き型言語に関数風味をつけた言語の紹介文でしかない
1,2が当然のように別物といってるやつは計算基礎論履修してないわな
それでも1をエスパーすると関数の集合でなく合成と訂正すればまぁ理解できる
となると関数がビルディングブロックなので2の説明は不要となる
あとファーストクラスオブジェクトってのも怪しい名称だわな
手続き型言語でインラインで関数定義できる程度のことをかっこつけて言ってるだけしか聞こえん
一連のレスで唯一CSの教養を感じるわ
そのとおりであれは定義でもなんでもなく、手続き型言語に関数風味をつけた言語の紹介文でしかない
1,2が当然のように別物といってるやつは計算基礎論履修してないわな
それでも1をエスパーすると関数の集合でなく合成と訂正すればまぁ理解できる
となると関数がビルディングブロックなので2の説明は不要となる
あとファーストクラスオブジェクトってのも怪しい名称だわな
手続き型言語でインラインで関数定義できる程度のことをかっこつけて言ってるだけしか聞こえん
362デフォルトの名無しさん
2024/10/18(金) 17:47:07.37ID:72lp8MJn363デフォルトの名無しさん
2024/10/18(金) 18:29:51.87ID:ady3VKii >1. プログラムは関数定義の集合であり、
>関数呼び出しによってそれらを組み合わせる。
関数定義の集合はプログラムってことだから
例えば{fの定義,gの定義}はプログラムだろ
fの定義が f (x) =fの式 でgの定義が g (x) =gの式とすると
fの引数xにgを入れてを呼び出して f (g) =fの式の中のxをgに置き換えた式 になって
f ( g) =f式の中のxをgに置き換えた式 も関数定義だから
{fの定義、gの定義、fgの定義}もプログラムってことでしょ
3によってプログラムの実行とはfgの式とかを評価することでしょ
>関数呼び出しによってそれらを組み合わせる。
関数定義の集合はプログラムってことだから
例えば{fの定義,gの定義}はプログラムだろ
fの定義が f (x) =fの式 でgの定義が g (x) =gの式とすると
fの引数xにgを入れてを呼び出して f (g) =fの式の中のxをgに置き換えた式 になって
f ( g) =f式の中のxをgに置き換えた式 も関数定義だから
{fの定義、gの定義、fgの定義}もプログラムってことでしょ
3によってプログラムの実行とはfgの式とかを評価することでしょ
364デフォルトの名無しさん
2024/10/18(金) 19:42:44.39ID:v0IxkFYT365デフォルトの名無しさん
2024/10/18(金) 19:55:50.08ID:ndvmbteL 363が全然判ってなくて草
366デフォルトの名無しさん
2024/10/18(金) 21:19:37.07ID:6b0+FHXo367デフォルトの名無しさん
2024/10/18(金) 21:27:21.74ID:Yil/SvXx368デフォルトの名無しさん
2024/10/18(金) 21:33:52.38ID:v0IxkFYT369デフォルトの名無しさん
2024/10/18(金) 22:19:50.60ID:VQpP6XIE >>348
んでも、上で書いた通りOCamlやSMLも誇大広告してたし、さらに言えばJITコンパイラ出した当初のJavaやC#も似たような誇大広告してたんだけどね。
んでも、上で書いた通りOCamlやSMLも誇大広告してたし、さらに言えばJITコンパイラ出した当初のJavaやC#も似たような誇大広告してたんだけどね。
370デフォルトの名無しさん
2024/10/18(金) 22:55:23.05ID:36/T9R8D 「関数型プログラミング」にも「第一級オブジェクト」にも言語の垣根を超えた一般的な定義というものはない
「オブジェクト指向」を自称する言語たちがそれぞれ微妙に異なるオブジェクトを実装しているのとほぼ同じ
「オブジェクト指向」を自称する言語たちがそれぞれ微妙に異なるオブジェクトを実装しているのとほぼ同じ
371デフォルトの名無しさん
2024/10/18(金) 23:00:20.33ID:36/T9R8D てかどうでもいいけどfirst-class objectって英語圏ネイティブからするとどういう印象を受ける言葉なんだろうね
masterとかblacklistなんかとは比べ物にならないレベルで明確にpolitically incorrectな気がするけど
masterとかblacklistなんかとは比べ物にならないレベルで明確にpolitically incorrectな気がするけど
372デフォルトの名無しさん
2024/10/18(金) 23:10:22.32ID:Py1NdU9l >>364
それは流石に関数に対する理解が浅いかと。
関数は要素と像のペアの集合なんだから、定義域と値域は関数に必ず存在する重要な性質だろ。
それを無視するのは関数の本質を無視するようなもの。
「定義域、値域とかいいだしたら論理が循環する」と言うなら、>338 に関連して定義域、値域よりも関数の定義に近い重要な性質って何よ?
それは流石に関数に対する理解が浅いかと。
関数は要素と像のペアの集合なんだから、定義域と値域は関数に必ず存在する重要な性質だろ。
それを無視するのは関数の本質を無視するようなもの。
「定義域、値域とかいいだしたら論理が循環する」と言うなら、>338 に関連して定義域、値域よりも関数の定義に近い重要な性質って何よ?
373デフォルトの名無しさん
2024/10/18(金) 23:28:21.46ID:6b0+FHXo 理解不足かもしれないけど「『副作用の無い、単に写像として表現できる関数』を中心に組み立てる」くらいの認識じゃだめなの?
数学的な意味での定義域はプログラミングでは成り立たない気がする
引数の型がi32なら、その関数には32ビット整数の取り得る値すべてが入るわけだし
ゼロ除算は数学上は定義できないけど、プログラムとしては書けてしまうから「考慮しない」わけにはいかず、エラー処理が必要なわけで
数学的な意味での定義域はプログラミングでは成り立たない気がする
引数の型がi32なら、その関数には32ビット整数の取り得る値すべてが入るわけだし
ゼロ除算は数学上は定義できないけど、プログラムとしては書けてしまうから「考慮しない」わけにはいかず、エラー処理が必要なわけで
374デフォルトの名無しさん
2024/10/18(金) 23:35:59.34ID:cbeCWz4D ガロア体の話?
375デフォルトの名無しさん
2024/10/18(金) 23:56:20.42ID:US/DDn9d モダンな関数型プログラミングのサポートもメモリ安全性も今では必須の前提になっている
そのうえでC言語と同等の速さと省メモリ性を兼ね備えたRustだけが核心部でも使われ生き残るのさ
そのうえでC言語と同等の速さと省メモリ性を兼ね備えたRustだけが核心部でも使われ生き残るのさ
376デフォルトの名無しさん
2024/10/18(金) 23:59:05.04ID:x/LLoMNV377デフォルトの名無しさん
2024/10/18(金) 23:59:21.56ID:6b0+FHXo プログラミングの上ではある程度の割り切りはしてると思う
例えば「入力の文字列を2回繰り返した文字列を返す (例. ABC -> ABCABC) 」関数は、理想的には任意の文字列を渡せるけど、PCのメモリを食い尽くすほど長い文字列を与えたらプログラムが停止するよね
だからといって「この関数は純粋ではない」とは言わなくて、それでも実用上は関数として扱う、といったところはあると思う
例えば「入力の文字列を2回繰り返した文字列を返す (例. ABC -> ABCABC) 」関数は、理想的には任意の文字列を渡せるけど、PCのメモリを食い尽くすほど長い文字列を与えたらプログラムが停止するよね
だからといって「この関数は純粋ではない」とは言わなくて、それでも実用上は関数として扱う、といったところはあると思う
378デフォルトの名無しさん
2024/10/19(土) 01:37:07.63ID:/2TSLe1L >>373
大雑把に言えばそうだけど、Lisp系を関数型言語に含める人と含めない人(MLの系譜の言語だけが関数型言語)で意見が食い違って争いというか、Lisp系含めない人は比較的若い人が多いので、(関数型言語の条件にパターンマッチは必須じゃないなどと)訂正される。
若い人でも情報系の学校でLispを関数型言語って習うと思うが、世間一般に普及してるとは言い難い。
大雑把に言えばそうだけど、Lisp系を関数型言語に含める人と含めない人(MLの系譜の言語だけが関数型言語)で意見が食い違って争いというか、Lisp系含めない人は比較的若い人が多いので、(関数型言語の条件にパターンマッチは必須じゃないなどと)訂正される。
若い人でも情報系の学校でLispを関数型言語って習うと思うが、世間一般に普及してるとは言い難い。
379デフォルトの名無しさん
2024/10/19(土) 02:59:24.38ID:zdwsITl3 ぶっちゃけLispってもう年寄りしか使ってないよね
380デフォルトの名無しさん
2024/10/19(土) 03:38:52.89ID:OaEQIxry Lispは使うとか使わないとかじゃない
言語オタク度が一定のレベルに達すると常にそこにあることが見えるようになるものだ
言語オタク度が一定のレベルに達すると常にそこにあることが見えるようになるものだ
381デフォルトの名無しさん
2024/10/19(土) 05:03:40.93ID:pGZZ/Z6D Erlangですねわかります
382デフォルトの名無しさん
2024/10/19(土) 07:03:26.74ID:09S67de8 昨日リリースされたRust 1.82で、やっと Box<T>::new_uninit() が安定化された
これ、前にトラブってた、bindgenにC++のコンストラクタを作らせるとデータが壊れる件の解決策になるやん!
と思って、喜び勇んでbindgenのリポジトリ見に行ったら、特に対応予定はないみたいだった
これ、前にトラブってた、bindgenにC++のコンストラクタを作らせるとデータが壊れる件の解決策になるやん!
と思って、喜び勇んでbindgenのリポジトリ見に行ったら、特に対応予定はないみたいだった
383デフォルトの名無しさん
2024/10/19(土) 10:54:30.72ID:3T8uATjn Erlang の OTP に相当するのって Rust では何?
384デフォルトの名無しさん
2024/10/19(土) 13:15:37.02ID:ZlmyUR62385デフォルトの名無しさん
2024/10/19(土) 15:16:05.33ID:914NuxWA >>383
tokio
tokio
386デフォルトの名無しさん
2024/10/19(土) 16:54:27.33ID:zdwsITl3 今ってtokio一人勝ちってことでいいの?
他のランタイムに勝ち目ある?
tauriはtokioだけど、一応抽象化して直接見えないようにしてる努力は感じられた
でも実際にtokio以外を混ぜたらどうなるのかな? バグるなら抽象化した意味がないが
他のランタイムに勝ち目ある?
tauriはtokioだけど、一応抽象化して直接見えないようにしてる努力は感じられた
でも実際にtokio以外を混ぜたらどうなるのかな? バグるなら抽象化した意味がないが
387デフォルトの名無しさん
2024/10/19(土) 19:34:22.94ID:/3C3bE8g388デフォルトの名無しさん
2024/10/19(土) 20:35:05.03ID:11v9Pc45 >型無の関数型がありえる以上
ちょっと待って、それって「関数型」の定義が与えられてなけりゃ言えないことでしょ。
ちょっと待って、それって「関数型」の定義が与えられてなけりゃ言えないことでしょ。
389デフォルトの名無しさん
2024/10/19(土) 22:16:54.49ID:/3C3bE8g 関数型言語
390デフォルトの名無しさん
2024/10/20(日) 02:22:08.35ID:IoIIyUOe391デフォルトの名無しさん
2024/10/20(日) 07:51:49.41ID:Rpp5gjxc 横からだが、全ての関数型言語は関数型も一級オブジェクトだよ。
意味が無いから無いだけで、map関数の逆バージョン(関数と値の立場逆転)も作れる。
pam _ [] = []
pam x (f:fs) = f x:pam x fs
pam 1 [(+1), (+2), (+3)] = [2,3,4]
意味が無いから無いだけで、map関数の逆バージョン(関数と値の立場逆転)も作れる。
pam _ [] = []
pam x (f:fs) = f x:pam x fs
pam 1 [(+1), (+2), (+3)] = [2,3,4]
392デフォルトの名無しさん
2024/10/20(日) 08:53:33.20ID:vZg//j7Z そうなのよね。CS振りかざして偉そうにしてるヤツは単に分かってないだけで的外れ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 毒親「働かないでいつもゴロゴロして!」俺「…」毒親「あっ近隣に熊が出たって!」俺「ふぅ」毒親「どこ行くんだ」
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 生活保護の受給額ってなんでこんなに安いの?
- お前らは“スカイマイルタワー”建設計画を知っているか?
- これ誰か分かるか?
- 支払い詰まってインターネット止まった
