アカウント名:
パスワード:
全然知らないけどOSやデバドラ書くのに使えるんですか?
このへん [github.com]に比較が載っています。
GC が入っている言語で書かれたプログラムは,プログラムが時間制約を守ることを保証できず,ハードリアルタイムシステムには使えないって習ったので,ハードリアルタイムシステムを制御するプログラムを Rust などで書けたら,C言語にはご退場いただけると思う.
もう書けていたら浅学御免.
GCを入れるかどうかを言語依存にしない方がいいと思うけどな。スタックとヒープを使い分けるように、プログラマが、スタック・ヒープ・GC付きメモリ、の3つから選べるようにすりゃ済む話だと思うけど。
Rustには、そういう意味でのGCは入ってないよ。
>プログラマが、スタック・ヒープ・GC付きメモリ、の3つから選べるようにすりゃ
まず、この流れで言ってるGCとは厳密には違うものだけど、C++がそんな感じしようと頑張ってる。shared_ptrとか。その辺を使うと、ソースコードを解析した時点で、ここで確保したヒープメモリはここで開放される(あるいは後で確実に開放してくれる関数かなにかに渡される)と、決定されるから、deleteは明示的に書かなくても良い。
参照してる変数の寿命が尽きた時点で自動で開放されるという点ではGCと似たような楽が出来る機能を、実行時コスト(いつGC処理が始まってプログラムの実行が停止してしまうか分からない)無しに使える便利な仕組み。
ただ、C++の場合は、後付けでそういう便利機能をライブラリとして載せた経緯がある(というか、Cからの伝統の、どこまででも危険なプログラムが書けてしまうという特性もある)ので、「どういう性質を持った機能なのかをきちんと把握した上で、正しく書いた場合は」GC付き言語のような楽が出来る、というような条件付きの仕組みにならざるを得ない。
そこを改良したのがRustで、C++のshared_ptrなどだと出来た危険な操作が全くできないような言語仕様になってる。結果として、色々窮屈ではあるけど、実行時無しでヒープも含めて綺麗なメモリ管理がされているプログラムが書ける(というかそれしか書けない)。
Rustは、まさにハードリアルタイムシステムを安全に書くために作られたような言語。ハードウェアを直接叩くような部分は、メモリが生で見えてるC系で無理矢理書いた方が性能が良いかもしれないけど。
そういう選択肢を与えるとそこがバグの温床になるんじゃないかと※自分はC言語信者なんでかまわないですが
RustはGC必須じゃないし、ヒープの使用すら制限できる。
C言語で書けてたのならRustでも書けるでしょう。RustはGC行わないですし。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
RustでOS書けんの? (スコア:0)
全然知らないけどOSやデバドラ書くのに使えるんですか?
Re: (スコア:3, 参考になる)
このへん [github.com]に比較が載っています。
Re:RustでOS書けんの? (スコア:0)
GC が入っている言語で書かれたプログラムは,プログラムが時間制約を守ることを保証できず,ハードリアルタイムシステムには使えないって習ったので,ハードリアルタイムシステムを制御するプログラムを Rust などで書けたら,C言語にはご退場いただけると思う.
もう書けていたら浅学御免.
Re: (スコア:0)
GCを入れるかどうかを言語依存にしない方がいいと思うけどな。スタックとヒープを使い分けるように、プログラマが、スタック・ヒープ・GC付きメモリ、の3つから選べるようにすりゃ済む話だと思うけど。
Re:RustでOS書けんの? (スコア:1)
Rustには、そういう意味でのGCは入ってないよ。
>プログラマが、スタック・ヒープ・GC付きメモリ、の3つから選べるようにすりゃ
まず、この流れで言ってるGCとは厳密には違うものだけど、C++がそんな感じしようと頑張ってる。shared_ptrとか。
その辺を使うと、ソースコードを解析した時点で、ここで確保したヒープメモリはここで開放される
(あるいは後で確実に開放してくれる関数かなにかに渡される)と、決定されるから、deleteは明示的に書かなくても良い。
参照してる変数の寿命が尽きた時点で自動で開放されるという点ではGCと似たような楽が出来る機能を、
実行時コスト(いつGC処理が始まってプログラムの実行が停止してしまうか分からない)無しに使える便利な仕組み。
ただ、C++の場合は、後付けでそういう便利機能をライブラリとして載せた経緯がある
(というか、Cからの伝統の、どこまででも危険なプログラムが書けてしまうという特性もある)
ので、「どういう性質を持った機能なのかをきちんと把握した上で、正しく書いた場合は」GC付き言語のような楽が出来る、
というような条件付きの仕組みにならざるを得ない。
そこを改良したのがRustで、C++のshared_ptrなどだと出来た危険な操作が全くできないような言語仕様になってる。
結果として、色々窮屈ではあるけど、実行時無しでヒープも含めて綺麗なメモリ管理がされているプログラムが書ける(というかそれしか書けない)。
Rustは、まさにハードリアルタイムシステムを安全に書くために作られたような言語。
ハードウェアを直接叩くような部分は、メモリが生で見えてるC系で無理矢理書いた方が性能が良いかもしれないけど。
Re: (スコア:0)
そういう選択肢を与えるとそこがバグの温床になるんじゃないかと
※自分はC言語信者なんでかまわないですが
Re: (スコア:0)
RustはGC必須じゃないし、ヒープの使用すら制限できる。
Re: (スコア:0)
C言語で書けてたのならRustでも書けるでしょう。
RustはGC行わないですし。