新しいものを表示
orange さんがブースト

もしゃもしゃ - ししゃも = もゃ

「Units of Measureならパフォーマンス上も問題ないよ」だけど、たぶんだけどAdaのコンパイラも静的にチェックすれば済む部分は都合のいい数値型に変換しちゃってパフォーマンスへの影響を抑えるってしてるだろうし、結局同じ事をしてるような気がしなくもない・・・><

orange さんがブースト

固定小数点数と浮動小数点数が外部表現は共通化できても内部表現は違うじゃんみたいな話は、それこと文法しっかり設計しろ案件でしかないので……

orange さんがブースト

外部表現のバリエーション情報を型にエンコードできるという意味では、まあ文法的な話も意味論レベルで強制はできる (ような言語もある) とはいえるか

スレッドを表示
orange さんがブースト

これは型に値をエンコードするかどうかの違いで、メンバ変数に単位を持つか型引数に単位を持つかみたいな

orange さんがブースト

12.3と1.23って固定小数点の発想で見たら型が違うとも言えなくもないし、
12.30と01.23にしたら『「10進で4桁でそのうち下の2桁は小数点以下」型』に型を揃えたと言えなくも無さそう?><;

Units of Measureのススメ - Qiita qiita.com/adacola/items/b65752
"...Height型や年齢を表すAge型をいちいち作るというのも非常に大変です。
また、Height型から身長の値を取り出すのにオーバーヘッドが発生し、わずかながらパフォーマンスが低下することになります。..."

Adaがdisられてる!><;

orange さんがブースト
orange さんがブースト

0xf だろうが 0x0F だろうが 15 だろうが 018 だろうが、本質的にその意味が15である (内部表現) 点に違いはなく、記法の揺れは外部表現の差にすぎない。型は内部表現を気にするときの概念であって、外部表現を型と強く紐付けるのは文法的な作法でしかない

スレッドを表示
orange さんがブースト

それは内部表現と外部表現の混同な気がするなぁ

12.3と1.23って固定小数点の発想で見たら型が違うとも言えなくもないし、
12.30と01.23にしたら『「10進で4桁でそのうち下の2桁は小数点以下」型』に型を揃えたと言えなくも無さそう?><;

オレンジ方式の理解、お約束の「おにぎりとおにぎりをくっつけたら大きいおにぎり1個じゃん! なんで2なの!?」って混乱が生じにくいであろうってメリットもある気がしてるし、
「とにかく複数の数値表現等はまず揃える」って「型が違うものを型を考慮せず不用意に計算するとヤバい事になる」にも繋がるし、
オレンジが「型システムは明示的でガチガチな方がいい!>< PythonやRubyみたいなのをは欠陥システム!><# 」って発想になった源流のひとつでもある気がしてる><

orange さんがブースト
orange さんがブースト

あるいは、抽象的な「桁をずらす」という操作として見ていて(つまり桁を揃えて減算するという操作)、実装のことは特に考えてなかったかもしれない。

スレッドを表示

それの思い浮かべかたの時に、とにかくアホでもイメージできる省力タイプの発想をしてるのがオレンジ方式かも?><;

orange さんがブースト
orange さんがブースト

念のため書いておくとIEEE754のbinary64みたいな実数部と仮数部に分けた扱い方は知ってるし、さっきから再三思い浮かべているからね…?

小数点は、『「その数値表現のユニット」(※1)の桁の位置がその点の位置の左であるって示す記号』がオレンジの解釈><
で、1とは「その数値表現や単位のユニット」であるみたいな解釈><
(※1 正しい数学用語知らないのでオレンジ語><; 基数って言えばいいのかも?><;)

1は1.0000でもいいし00001でもいいし0001.0とかでもいい><
仮想的な10進のメモリがあったとしてそれが5桁だったとして、12.3は00123で小数点の位置は右端からひとつ左って記憶することになるかも><

orange さんがブースト

いやでもこれ、 https://mstdn.maud.io/@unarist/111014896869839168 を書いたときには別に仮想的な桁が下に伸びること想定してなかった気がするな?桁落ち上等、でも落ちた桁はどのみち結果に残らんからいやんやろとか思ってた気がする(実際には、1の1割引とか考えた時に🤔になる)

古いものを表示
:realtek:

思考の /dev/null