0001デフォルトの名無しさん2021/11/26(金) 00:18:23.79ID:E6uR3cph
文字列から変数の中身を参照する
int v = 1;
print(variable(”v”));
→「1」が出力
文字列で関数を実行
variable(”print”)(”hoge”);
→「hoge」
文字列で値をセット
setVariable(”v”, 2);
print(v);
→「2」
変数の名前を文字列化するプロパティ
print(v.name);
→「v」
オブジェクトのプロパティを文字列で取れるメソッド
Dog d = new Dog();
d.prop(”age”) = 5;
print(d.prop(”age”));
→「5」
イコールの左辺を参照する特殊変数「left」(超便利)
v = left + 1;
print(v);
→「3」
まさにlispがその機能を持っているが
プログラムが複雑になりすぎるので
あまりはやらなかった
int v = 1;
print(variable(”v”));
→「1」が出力
↑?
print(v);でいいじゃん?
めんどくさくなってるよw
0008デフォルトの名無しさん2021/11/26(金) 12:13:44.22ID:8zV9VfmZ
>>6
変数名は値に化けてしまうから
プログラムで加工することが出来ない
一方文字列はsplitや結合 replaceなどを行えるし
値に化けずに引数や戻り値としてほかの処理と連携できる
>>1 の技術は単体で効果を発揮するものではなく
全て何行も同じようかコードを書かなければならない
時に記述量を減らすことを想定している
例えば100個のオブジェクトがあって
100個のプロパティを持ったものを全部処理しなきゃならないような
時に使う 0010デフォルトの名無しさん2021/11/26(金) 15:56:31.17ID:1PQpeNGS
eval()とかで、出来そうだけど。。
0014デフォルトの名無しさん2021/11/26(金) 19:54:40.23ID:OLQKN+EB
VisualStudioにはT4 テキストテンプレートというのがあるぞ
用途予測ではコレだな
出来るだけL3データキャッシュに乗せたい命令が欲しいです。。。
0017デフォルトの名無しさん2021/11/26(金) 22:29:34.92ID:J101Op7p
>>13
テーブル名も列名もめちゃくちゃ長いし列数も多い
し列同士の名前も見分けがつかないくらい似てるような
DB扱ってるのに継承が何になる
俺が欲しいのは大量の名前を文字列として処理する
技術なんだよ
オブジェクト指向もevalもキャッシュも知ったことか
俺の仕事が終わってくれればなんでもいいんだよ! コンパイル方式でもデバッグ情報として変数名関数名は持ち得るから
そのメタ情報でアクセスする枠組みを用意すれば済むとして
メリットは?
でも
「あったら絶対便利なのになぜないんだろう」から
「これに気がついたの世界で俺だけ?俺って天才?」と考えるより前に
「他の人は別の機能で解決してるんじゃないか?」と考えたほうが速く楽になることが多いよ
逆に辞書とか多次元配列とかオブジェクトない言語でプログラム書くときはこういうのしてたな
メモリのクリアとか諸々やたら面倒で今日の言語のありがたみを感じた
とはいえ魔法があるわけではなく収容テーブルを持つしかなく
文字列をハッシュ関数でインデックス化して衝突時処理後のインデックスの場所に収容しているだけね
0025デフォルトの名無しさん2021/12/04(土) 21:01:33.78ID:S0DJO4wc
良スレ
もう言語を統一すべきだろう
ノイマン型のシステム使ってる限りは必ず似たロジックになるんだから各言語のいいとこ取りをすればいい
変数や定数やクラスをフォーカスしたら予め作っておいたコメントが読めるようにして欲しい
そこにその役割やどう使ってるかを書く
やってることを説明してくれる
int n ; ←int型変数の宣言
みたいに
予約語の変数宣言だけなら別にこんなことしなくていいのはわかるけど構造体やらクラスやらポインタやら出てくると初学者には大変
クラス〇〇のメンバ関数△△の戻り値(アドレス)をポインタ変数Pに代入
って言葉で説明されるとわかりやすいし文法を知らない未習得の言語だとしてもすぐに理解できる
その機能が必要になるレベルの人は
結局、intって何? 構造体って何?
って話しになって、解説しても理解してくれないことが多い
上級者でそのレベルのことが分からない人は
言語仕様を30分ぐらい読んでくれ
ということだからなあ
5歳児にマイナス5歳肌のファンデーション塗ったら死んだ