タグ「RUST」を含む投稿[12件]
Art-Net 関連品を作るべくプログラム言語 Rust の勉強を進めております。
関門とされる「所有権」や「ライフタイム」はアセンブラやC言語を書く際に普通にやっていたことを明示的に自動的にしてくれるモノであってそれ以上でも以下でもありませんでした。ただ、これらに対するアセンブラやC言語での書き方は人によって様々だと思いますので、Rust の流儀に慣れることは必要です。
ベースはC言語だと思って間違いないと思います。私はC言語が進化したものだと思って取り組んでいますが、比較的ストレス無く習得を進められています。
実際のところは Rust そのものより教科書の選び方が難しいと思います。所有権がぁ~、ライフタイムがぁ~と Rust 独特の機能は難しいぞと煽るのにとどのつまり何?ってことが書いていない教科書が多い。借用における制限・制約は書いてあっても解除されるタイミングについて書かれているものは皆無。自分は AI/Geminiさんに質問してようやく理解できました。本家の解説書である「The Book」の上澄みだけ書き写したのでしょうか。理解が進まないと教科書の良し悪しは評価出来ませんから痛し痒しです。
私がわかりやすいと思える教科書を1冊見つけました。学習速度が爆上がりしています。ただ、私とっての「当たり前」が前提にあって読める内容だと思うのでご紹介は控えておきます。
#Rust
関門とされる「所有権」や「ライフタイム」はアセンブラやC言語を書く際に普通にやっていたことを明示的に自動的にしてくれるモノであってそれ以上でも以下でもありませんでした。ただ、これらに対するアセンブラやC言語での書き方は人によって様々だと思いますので、Rust の流儀に慣れることは必要です。
ベースはC言語だと思って間違いないと思います。私はC言語が進化したものだと思って取り組んでいますが、比較的ストレス無く習得を進められています。
実際のところは Rust そのものより教科書の選び方が難しいと思います。所有権がぁ~、ライフタイムがぁ~と Rust 独特の機能は難しいぞと煽るのにとどのつまり何?ってことが書いていない教科書が多い。借用における制限・制約は書いてあっても解除されるタイミングについて書かれているものは皆無。自分は AI/Geminiさんに質問してようやく理解できました。本家の解説書である「The Book」の上澄みだけ書き写したのでしょうか。理解が進まないと教科書の良し悪しは評価出来ませんから痛し痒しです。
私がわかりやすいと思える教科書を1冊見つけました。学習速度が爆上がりしています。ただ、私とっての「当たり前」が前提にあって読める内容だと思うのでご紹介は控えておきます。
#Rust
Art-Net 関連機器の製作についてAI/Geminiさんとやりとりをしました。相談出来る達人が近くに居ないので助かります。
大きなヒントを一つもらいました。ブロッキングの活用です。
キーボード入力においてもEtnerの受信においても入力や受信があるまで(または設定した一定時間)一時停止して待つ設定です。処理が一時停止しますが、イベントが発生した時に速やかに処理出来ます。他の処理はスレッドを分けておけば大丈夫です。スレッドとは処理を並列化させる(疑似的に複数の処理を同時進行させる)方法です。止まらせることなく延々と回したい処理とブロッキングしたい処理を別スレッドにすれば全体としては止まることがありません。PICマイコンでやってきた「ひたすら回してフラグで分岐する」って感覚がアタマに固着していたようで、スレッドを分けてブロッキングを活用する発想がありませんでした。ただ、無制限のブロッキングをしますと都合が悪いこともあるので0.1~0.5秒ごとにブロッキングを外して周囲を伺うのが良さそうです。
#Rust #[Art-Net]
大きなヒントを一つもらいました。ブロッキングの活用です。
キーボード入力においてもEtnerの受信においても入力や受信があるまで(または設定した一定時間)一時停止して待つ設定です。処理が一時停止しますが、イベントが発生した時に速やかに処理出来ます。他の処理はスレッドを分けておけば大丈夫です。スレッドとは処理を並列化させる(疑似的に複数の処理を同時進行させる)方法です。止まらせることなく延々と回したい処理とブロッキングしたい処理を別スレッドにすれば全体としては止まることがありません。PICマイコンでやってきた「ひたすら回してフラグで分岐する」って感覚がアタマに固着していたようで、スレッドを分けてブロッキングを活用する発想がありませんでした。ただ、無制限のブロッキングをしますと都合が悪いこともあるので0.1~0.5秒ごとにブロッキングを外して周囲を伺うのが良さそうです。
#Rust #[Art-Net]
Art-Net 関連機器は RaspberryPi_CM4 を母体に Rust でコードを書きます。Rust を使うのはこの件が初めてなので無謀な気もしますが、C言語で動いたモノを Rust で書き直す感じなので大丈夫っしょ。C言語で書いたモノもメモリ構成を大変更するために全部書き直すつもりだったので作業量は大差ありません。
使ってみないとわかりませんが、C言語で出来ることは Rust でも出来るそうです。これを信じて取り組んでいきましょう。
#[Art-Net] #Rust
使ってみないとわかりませんが、C言語で出来ることは Rust でも出来るそうです。これを信じて取り組んでいきましょう。
#[Art-Net] #Rust
Rust のことは随分わかってきました。大雑把に括るとC言語と同じです。Python や .NET 系のようにマネージが強くて自由度が狭いってことは無いっぽいです。
「所有権」や「ライフタイム」は方言程度の違いでした。両方ともC言語ではコードを書く側が注意を払ってきたことを自動的にアシストしてくれる機能です。アルゴリズムの中に埋もれるバグを予防出来るので、難しいというより手間をかけるのが先か後かってだけでした。
「所有権」は変数の読み書きの不整合や二重処理を防止するための対策です。その対策の意味を理解するには変数の処理構造を知っていた方がいいと思うのですが、その説明をすっ飛ばして「所有権がぁ~」と話をする教科書が多くて読んでいるこちらが混乱します。C言語におけるポインタが理解出来ていればそれほど難しいことではないので、ポインタがわかっている前提で説明をしてくれる教科書があってもいいんぢゃないのかなぁ~って思います。「所有権」によって制限されることはC言語のコードを書く上でも注意しなければならないことなので、だったら前提として管理・制限しときゃいいんぢゃね?ってことなのでしょう。C言語のポインタは自由度が高い反面コードを書く側が管理・制限してきましたが、これをコンパイラが厳密にチェックしてくれるのですからある意味楽です。
「ライフタイム」は変数のコード上での有効範囲のことです。変数の有効時間の設定・管理ではありません。変数の有効範囲はC言語とほぼ同じですが、変数の有効無効をコード上でチェックで出来ます。関数で用いる変数が有効かをチェックしたり、この関数の処理が済むまで変数を維持するように指示をする機能が追加されたと思えばよさそうです。
どちらも、ややこしさを追加して意地悪しているのではありません。
#Rust
「所有権」や「ライフタイム」は方言程度の違いでした。両方ともC言語ではコードを書く側が注意を払ってきたことを自動的にアシストしてくれる機能です。アルゴリズムの中に埋もれるバグを予防出来るので、難しいというより手間をかけるのが先か後かってだけでした。
「所有権」は変数の読み書きの不整合や二重処理を防止するための対策です。その対策の意味を理解するには変数の処理構造を知っていた方がいいと思うのですが、その説明をすっ飛ばして「所有権がぁ~」と話をする教科書が多くて読んでいるこちらが混乱します。C言語におけるポインタが理解出来ていればそれほど難しいことではないので、ポインタがわかっている前提で説明をしてくれる教科書があってもいいんぢゃないのかなぁ~って思います。「所有権」によって制限されることはC言語のコードを書く上でも注意しなければならないことなので、だったら前提として管理・制限しときゃいいんぢゃね?ってことなのでしょう。C言語のポインタは自由度が高い反面コードを書く側が管理・制限してきましたが、これをコンパイラが厳密にチェックしてくれるのですからある意味楽です。
「ライフタイム」は変数のコード上での有効範囲のことです。変数の有効時間の設定・管理ではありません。変数の有効範囲はC言語とほぼ同じですが、変数の有効無効をコード上でチェックで出来ます。関数で用いる変数が有効かをチェックしたり、この関数の処理が済むまで変数を維持するように指示をする機能が追加されたと思えばよさそうです。
どちらも、ややこしさを追加して意地悪しているのではありません。
#Rust
C言語での ncurses みたいに、Rust で画面にテキスト表示するなら crossterm だそうです。キーボード操作も扱えます。
あるのか無いのかの確認をしただけですが、あるなら問題ありません。
C言語ベースで処理段取りの整理を随分やってきましたので、Rust の勉強が進めば Art-Net 関連を書き始められそうです。
#Rust #[Art-Net]
あるのか無いのかの確認をしただけですが、あるなら問題ありません。
C言語ベースで処理段取りの整理を随分やってきましたので、Rust の勉強が進めば Art-Net 関連を書き始められそうです。
#Rust #[Art-Net]
合間に Rust の勉強をしています。
今は「所有権」について整理していますが、変数は内容を保存するメモリ、そのアドレスとメタデータを保存するインデックスで構成されていると捉えれば自然に理解出来ます。ソースコード上での使い方は別問題ですが、「所有権」の譲渡と貸出はこの構成から見ればいいだけでした。挙動の表面だけで理解しようとすると何がどうなっているか、どうしてこんなことをするのか理解し難いようですけど。
ただ、「所有権」という言葉には疑問があります。私の理解では「変数へのアクセス権限」となりました。この言葉のまんまですが、「所有権」は変数の内容にアクセスできるかどうかですから、持っているかより権限があるかが重要だと思うのです。この場合の「所有権」はこういう意味の言葉だと扱えばいいだけですが、「所有権」と言われると「所有者」は?と聞きたくなり、「所有物」は何?とも聞きたくなります。「所有権」の説明では「所有者」も「所有物」も変数だとする物が多く、当初は何のこっちゃいと感じたものです。「所有者」は変数であり、「所有物」は変数の内容が書かれたメモリとなります。あくまでイメージですけど、「変数の内容が格納されたメモリのパーミッション」だとも思えます。
#Rust
今は「所有権」について整理していますが、変数は内容を保存するメモリ、そのアドレスとメタデータを保存するインデックスで構成されていると捉えれば自然に理解出来ます。ソースコード上での使い方は別問題ですが、「所有権」の譲渡と貸出はこの構成から見ればいいだけでした。挙動の表面だけで理解しようとすると何がどうなっているか、どうしてこんなことをするのか理解し難いようですけど。
ただ、「所有権」という言葉には疑問があります。私の理解では「変数へのアクセス権限」となりました。この言葉のまんまですが、「所有権」は変数の内容にアクセスできるかどうかですから、持っているかより権限があるかが重要だと思うのです。この場合の「所有権」はこういう意味の言葉だと扱えばいいだけですが、「所有権」と言われると「所有者」は?と聞きたくなり、「所有物」は何?とも聞きたくなります。「所有権」の説明では「所有者」も「所有物」も変数だとする物が多く、当初は何のこっちゃいと感じたものです。「所有者」は変数であり、「所有物」は変数の内容が書かれたメモリとなります。あくまでイメージですけど、「変数の内容が格納されたメモリのパーミッション」だとも思えます。
#Rust
Rust の教科書は「所有権」や「ライフタイム」で大騒ぎしないモノがいいようです。大騒ぎする教科書はその厄介さを語って力尽きるのか「とどのつまり?」の説明が薄い傾向にあります。両方とも重要なことですが、これらが Rust の全てではありません。「cargo」と呼ばれるプロジェクト管理ツールを説明しない教科書は論外です。
間違っても初めてのプログラム言語に Rust を選ぶのはお勧めできません。最終的に作りたいモノによりますが、html や Python あたりで成功体験を積み重ねて神エンジニアたちが目指したことを体に取り入れるのが良いと思います。Rust はC言語同様に理解するための前提というか基礎の裾野が広すぎるのです。
私は回路設計とプログラミングの境界が曖昧な PIC16 で右往左往してきましたので脳ミソが少しおかしいのですが、C言語もそうですが、Rust を受け入れるにはこのコードでハードウェアが何をするかをイメージ出来るといいようです。両言語ともハードウェアを制御する傾向が強いからでしょうか。
#器具の製作 #C言語 #Rust
間違っても初めてのプログラム言語に Rust を選ぶのはお勧めできません。最終的に作りたいモノによりますが、html や Python あたりで成功体験を積み重ねて神エンジニアたちが目指したことを体に取り入れるのが良いと思います。Rust はC言語同様に理解するための前提というか基礎の裾野が広すぎるのです。
私は回路設計とプログラミングの境界が曖昧な PIC16 で右往左往してきましたので脳ミソが少しおかしいのですが、C言語もそうですが、Rust を受け入れるにはこのコードでハードウェアが何をするかをイメージ出来るといいようです。両言語ともハードウェアを制御する傾向が強いからでしょうか。
#器具の製作 #C言語 #Rust
Art-Net 関連品の開発では「Rust」を使うことにしました。
Rust が持つ標準機能が Art-Net 関連品を作るのに絶大に有益なことがわかったからです。コレクションと呼ばれる機能です。
新たな言語を勉強するのは大変ですが、C言語の方言と思えばゼロベースではありません。C言語を学んだことで Rust がすんなり自分の中に入ってくる実感があります。Rust を学ぶためにC言語を勉強するベキ!?ってことでもありますが、案外そんなもんかなと感じています。C言語でも Rust でもコードの裏側にあることは同じってことですかね。ハードウェアを動かすのがソフトウェアですから。
あまりに便利なので Python みたいに遅くねーの?って疑問はありますが、コンパイルされたバイナリはC言語やC++に匹敵するらしいのでその評価を信じましょう。
言葉は優しいですが、AI/Geminiさんのお言葉を要約するなら基板を作ってPIC16アセンブラを書いて RaspberryPi と協調動作する装置を作る素人(アマチュア)は斜め上過ぎる存在らしいです。私にとっては日常感覚ですケド、その延長かプログラム言語に対するアプローチも少し変みたいです。私からしたらパチンコやスロットで確率数値を操って常に勝ち続けてる人の方がどうかしてますケド。
#器具の製作 #C言語 #Rust
Rust が持つ標準機能が Art-Net 関連品を作るのに絶大に有益なことがわかったからです。コレクションと呼ばれる機能です。
新たな言語を勉強するのは大変ですが、C言語の方言と思えばゼロベースではありません。C言語を学んだことで Rust がすんなり自分の中に入ってくる実感があります。Rust を学ぶためにC言語を勉強するベキ!?ってことでもありますが、案外そんなもんかなと感じています。C言語でも Rust でもコードの裏側にあることは同じってことですかね。ハードウェアを動かすのがソフトウェアですから。
あまりに便利なので Python みたいに遅くねーの?って疑問はありますが、コンパイルされたバイナリはC言語やC++に匹敵するらしいのでその評価を信じましょう。
言葉は優しいですが、AI/Geminiさんのお言葉を要約するなら基板を作ってPIC16アセンブラを書いて RaspberryPi と協調動作する装置を作る素人(アマチュア)は斜め上過ぎる存在らしいです。私にとっては日常感覚ですケド、その延長かプログラム言語に対するアプローチも少し変みたいです。私からしたらパチンコやスロットで確率数値を操って常に勝ち続けてる人の方がどうかしてますケド。
#器具の製作 #C言語 #Rust
DMX-Timer は終わりが見えてきました。次の課題はArt-Net 関連機器と行きたいところです。
これらは RaspberryPi 上でのプログラミングが主となりますが言語どうするか。C言語か Rust の二択ですけど、未だに迷っております。この2種はハードウェアを扱うのに適した言語ですから Art-Net 関連機器を組むにはよいと思われます。両方を使いこなせればいいのですが、年齢的に一つでも辛いのに二つは無理。。。少し前までC言語でいくつもりで勉強していましたが、 Rust の教科書を斜め読みしたところ自分がやりたいことには Rust が向いているような気がして困っているワケです。
Rust の情報に接しますと「所有権がぁ、所有権がぁ」と脅しの様に書かれております。これはC言語での「ポインタがぁ、ポインタがぁ」や、C++での「オブジェクト指向がぁ、がぁ」と同じです。身に着けないと使えないし身に着ければよりよいコードが書けるのですから身に着ければいい。簡単でないことは確かですが、言語をデザインした神エンジニアたちは苦労や混乱をさせたかったワケではありません。たぶん。
開発には心の余裕とまとまった時間が必要です。なかなかそんな時間は取れませんので、引き続き妄想しながら勉強をしましょう。
#C言語 #Rust
これらは RaspberryPi 上でのプログラミングが主となりますが言語どうするか。C言語か Rust の二択ですけど、未だに迷っております。この2種はハードウェアを扱うのに適した言語ですから Art-Net 関連機器を組むにはよいと思われます。両方を使いこなせればいいのですが、年齢的に一つでも辛いのに二つは無理。。。少し前までC言語でいくつもりで勉強していましたが、 Rust の教科書を斜め読みしたところ自分がやりたいことには Rust が向いているような気がして困っているワケです。
Rust の情報に接しますと「所有権がぁ、所有権がぁ」と脅しの様に書かれております。これはC言語での「ポインタがぁ、ポインタがぁ」や、C++での「オブジェクト指向がぁ、がぁ」と同じです。身に着けないと使えないし身に着ければよりよいコードが書けるのですから身に着ければいい。簡単でないことは確かですが、言語をデザインした神エンジニアたちは苦労や混乱をさせたかったワケではありません。たぶん。
開発には心の余裕とまとまった時間が必要です。なかなかそんな時間は取れませんので、引き続き妄想しながら勉強をしましょう。
#C言語 #Rust
ChatGPT に RUST で Art-Net を受信するコードをリクエストしたら明快な答えが出た。
C言語と似てんなって思いつつ、なるほどって感じ。
コードの表現というより、潜在的なエラーをチェックしてくれる RUST のコンパイラの仕様がC言語コンパイラより進化してんだなってところ。
RUST はC言語の方言の一つで今時言語と同じ様に文字列を扱えてC++より解りやすいってのが自分の勝手な感想です。ならC#ぢゃダメなのかって話もありますケドね。
メモリやプロセス管理に気配りをせにゃならんC言語か、所有権に気配りをせにゃならん RUST かって感じもしますが、RaspberryPi の様な組み込みマイコンで最速を最小限の手間で狙うならどれを使っても手間は同じって気分にもなります。
#RUST
C言語と似てんなって思いつつ、なるほどって感じ。
コードの表現というより、潜在的なエラーをチェックしてくれる RUST のコンパイラの仕様がC言語コンパイラより進化してんだなってところ。
RUST はC言語の方言の一つで今時言語と同じ様に文字列を扱えてC++より解りやすいってのが自分の勝手な感想です。ならC#ぢゃダメなのかって話もありますケドね。
メモリやプロセス管理に気配りをせにゃならんC言語か、所有権に気配りをせにゃならん RUST かって感じもしますが、RaspberryPi の様な組み込みマイコンで最速を最小限の手間で狙うならどれを使っても手間は同じって気分にもなります。
#RUST