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

正確に言えば、伝える努力はする(うまく伝えられるかはわからん)

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

ていう素朴な疑問からにわか知識を仕入れたところに(わたしの知りたいに沿った)講座開いてくれる友人がほしい気がするな(分野によってはある気もする)

となると例えば
「全ての変数等には明示的な型の宣言が必要で、一方でインタプリタであり、全体の実行前には型検査は行われず、実行時に型検査を行う」って珍妙な環境があったとしたら、それは「実行時までに型検査は行われないけど、静的型つけな言語」になる?><;
検査が実行時ってだけであって、実行前に型は決まってる(ただしエラーが含まれている可能性がある)ので><;

古典的BASICは、動的型つけでは無く、「タグつき共用体をフル活用する事で結果的にまるで動的型つけでゆるふわな言語かのように振る舞ってる(し、表面上はゆるふわ)」って、
最初にBASIC使ってから30年くらい?経つけど、そんな話聞いた事無かったけど、よく考えてみると初歩の初歩である「なんでドルがついてない変数には文字列が入らないの?><」を突き詰めて考えれば、厳密にはたしかになるほど><;

orange さんがブースト

まあ厳密な話をするなら、システムプログラミング言語はハードウェア由来の不確定性とか諸々と向き合うことになるので完全無欠な保証は難しかったりするんだけど、 C/C++ の穴はそういう次元ではないので……

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

みんな外付けで不完全な仕組みをゴテゴテ付けながら騙し騙し頑張ってるんだけど、土台が腐ってるからどうしようもないのよ。だから、これだけ長く使われていて多数のプラットフォームで動くという圧倒的アドバンテージを持ちながら、他の言語に移行したい! とかいう声が沢山ある

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

C/C++ が安全だと心から思ってる人、地球上に存在するん?

orange さんがブースト

「文字列と数値を足せるこの言語ヤバすぎィ!」に対して「この言語は型安全です! (文字列と数値を足すと必ず異常終了します)」はヤバさを全く否定できてないんよ。挙動とか以前の問題でそもそも実行できる時点でヤバいと言っているわけで。

スレッドを表示

ていうか、今の議論で今さらふと気づいたけど、古典的BASICって、厳密には動的型つけ環境じゃなくて静的型つけ環境であり、
バリアント型は持っていても動的型は持っていないのでつまり定義上、環境としては静的型検査は行われないのに(ただしプログラム実行時に行単位で静的型検査をしてるとも言える?)、しかしながら静的型つけな言語?><;

orange さんがブースト

C/C++ は、あれだけ使われていながら、すべての実行可能な記述について挙動がちゃんと定義されているわけではないという、類稀なるクソ言語です (歴史的経緯ェ……)

実用性はそれはそうだけど、TaPLとかで説明されてる型安全はそうではなく、C/C++は、そういう厳密な意味で型安全では無い環境ではないの?><;

orange さんがブースト

良い喩えかは知らないけど、「この車は状況と操作に対して必ず再現性のある振る舞いをします。たとえば時速128kmでブレーキを踏むとブレーキは壊れて確実に効かなくなります!」というのは型安全のいう “安全” の範疇なわけ。クソ。
我々が求める安全性ってのはそうじゃなくて「ブレーキが壊れて効かなくなるような速度をそもそも出せません」でしょう

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

じゃあ “実用的” な観点での型システムが保証してくれる安全性とは何なのかといえば、「『はい異常終了!!!』とか『手遅れになってから例外飛ばしてあげるね♡』とかいう挙動がそもそも起きない」という点で、巷で言われている安全とかそうでないとか静的型付きがどうとかの話はだいたいこれ

スレッドを表示

CはTaPLでも型安全では無い言語って扱われてるんじゃないの?><;

orange さんがブースト

狭義の型安全性すら持たない実用言語、探してくる方が難しいぞ (言うまでもないが C/C++ はカウントしない)

orange さんがブースト

例外として C/C++ はそのベースラインを大幅に下回る史上最強の殿堂入りクソ言語です、掛け値なしに

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

だから結局のところ型安全かどうかをというのは言語や型システムの設計者の心配事なのであって、ユーザはそれを当然のベースライン保証として考えるんだから、巷の実用言語について “型安全性” を論ずることに実用的な意味はほとんどなくない? ということです

orange さんがブースト

型安全の範疇ではあるかもしれないが、その有難味は如何程か、という話

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

mastodon.cardina1.red/@lo48576

で、プログラム書いてるとき気付けなくて実際にある程度動かしてから突然「はい異常終了!」と言われるの、未定義動作より “少しマシ” な程度でしかなくない? という

古いものを表示
:realtek:

思考の /dev/null