No.4ベストアンサー
- 回答日時:
#3 です.
基本的 (原始的?) な Lisp では,あらゆるデータおよびプログラムを二分木で
表現します.したがって,その要素は葉 (数値,文字列,シンボル (後述) など)
と,中間節点 (リスト・セル,ドット対,cons などと呼ばれる) に分けられます.
後者は二分木またはその部分木 (の根節点) なので,さらに左の部分木 (car)
と右の部分木 (cdr) に分けられますが,葉は分けられません.このため葉は
アトム (atom:不可分なもの) と呼ばれます.
(ただ実際には,アトムも物理的な原子と同様,内部構造を持っています.)
S式
http://nicosia.is.s.u-tokyo.ac.jp/pub/staff/hagi …
⇒ アトム,ドット対
Lisp の「シンボル (記号)」は,他のプログラム言語の「変数」を拡張したような
もので,名前を持ち,値やその他のデータ (へのポインタ) を格納できる構造体と
考えればいいでしょう.コンパイル言語の変数とは異なり,シンボルは実行時に
生成できます.
機能的にはスクリプト言語の連想配列と似ていますが,連想配列はコードの実行時に
検索を行うのに対し,シンボルの場合は Lisp プログラムを読み込む時に検索を行い
コードの実行時には検索なしで対応するデータにすぐアクセスできます.
X-Window の Atom が Lisp のアトムとどう関係しているかというと,
上記の「シンボル」に似た使い方をしているので Atom と名付けたのだと思います.
つまりデータが必要になるたびにその名前 (文字列) から検索するのではなく,
最初に文字列を intern しておいて (この時だけ検索を行う),検索結果へのポインタ
の役割を果たす数値 (つまり Atom) を求めておき,データへのアクセスにはこれを
使用する,という点が共通しています.
なお intern とは,(正確な定義は知りませんが私の理解では)
・指定された文字列が所定のデータベースに登録されていなければ登録する.
・登録済ならば,それをそのまま使用する.(二重登録エラーにはしない.)
Xlib - C Language X Interface:4章 ウィンドウ情報関数
http://xjman.dsl.gr.jp/X11R6/X11/CH04.html
⇒ Properties and Atoms
「Lisp car cdr "二分木" アトム」で検索.
http://www.google.co.jp/search?hl=ja&q=Lisp+car+ …
お礼、遅くなり申し訳ございません。
noocyte様の造詣の深さに脱帽いたしました。
完全に理解することができました。
どうもありがとうございました。
No.3
- 回答日時:
全くの個人的推測ですが,Windows の ATOM は X-Window の Atom を
真似たものだろうと思います.これはいわば「動的列挙型」(実行時に
文字列と番号の対応を定義する) で,登録された文字列に対応する番号
が Atom (X-Window の場合は32ビット無符号整数) です.
一旦登録してしまえば,文字列を使うよりも Atom を使う方が,
・比較や検索が高速に行える.
・可変長データではなく固定長整数なので,メモリ管理がしやすい.
・X-Window の場合はネットワーク経由で Atom を送受信することがあり,
そのメッセージを固定長かつ短くでき,通信の高速化につながる.
などの利点があります.ただし Windows の ATOM は X-Window に比べて使用
範囲が極めて限定されているので,あまりメリットはないように思います.
X-Window の Atom の起源を更に遡ると,(少なくとも用語は) Lisp の
アトムに由来しているのではないかと思います.X-Window には文字列を
登録して Atom を取得する関数 XInternAtom() がありますが,
「atom を intern する」という言い方は Lisp 特有の言い回しだと思います.
今は時間がないので,X-Window の Atom と Lisp のアトムの関係や,"Atom"
(原子) と呼ぶ理由についてはまた後で書くつもりです.
お礼が遅れて申し訳ございません。
歴史的ご解説、どうもありがとうございました。
ずいぶんとお詳しいですね。
Lispを調べてみます。
No.2
- 回答日時:
>ATOMは何の略でしょうか。
略称だと思われた理由はなんでしょうか?
MSDNなどを見る限り略称などとは書かれていませんが。。。
>ATOMは具体的にどのようなメンバ変数をもつ構造体でしょうか。
ATOM型の実態は構造体ではなく、WORD型の変数です。(参考参照)
ATOMテーブルとはOSなどがアプリケーションを一意に
認識させる為の仕組みとして作られています。
初心者レベルならWindowsプログラミングを行う上で、
開発者側が気にすることは特に無くウィンドウクラスの登録、
成功可否の判断が出来れば十分です。
私の考えですが、ATOMプログラミングを使う場合は、
使わないと本当に出来ないのか検討するべきです。
参考URL:http://mtbeta.msdn.microsoft.com/ja-jp/library/a …
おっしゃるとおり、WORD型でした。
>略称だと思われた理由はなんでしょうか?
まさか、原子という意味の単語が唐突に出てくるとは思わなかったというのが理由です。
No.1
- 回答日時:
オレはWindowsプログラミングやらないから正確な説明をしてあげられないけど、
要はATOMは「原子」のことだから、「分割不可能」という意味合いを持つんじゃないかな。
例えばJavaで、void synchronized aaa() { (略) } とした場合は、synchronized というキーワードが分割不可能の役割を果たして、
あるスレッドがaaa()を実行中は、他のスレッドがaaa()を実行できない(同時実行できない)、ということになるんだ。
実際、「シンクロナイズドにした」なんて言いにくいから、「アトミック」にした、っていう言い方をします。
要はスレッドの観点からすると、分割不可能な関数ということになる。
だからたぶん、質問者さんが書いているATOM型ってのも、そんなような意味合いを持つ型なんじゃないかな。
ハズしてたらすまん。
なるほど原子という意味かも知れません。
ここだけ単語のそのままでてくるというのはおかしい気もしますが。
ご意見ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(パソコン・周辺機器) Atomとスナドラどっちが性能いいんですか? Atom Z3795搭載のタブレットにandroid 1 2022/07/18 21:34
- アプリ androidエミュレーターでアプリが見つかりません 2 2022/11/25 15:00
- CPU・メモリ・マザーボード Atom x5-Z8550 と Cortex-A72 どちらがハイスペック? 2 2022/08/16 17:43
- その他(プログラミング・Web制作) pythonのプログラムについての質問です。 1 2023/05/26 10:31
- その他(プログラミング・Web制作) Spyder上のPythonでinputが実行されません。 2 2022/08/15 11:57
- 中古パソコン どこで売ったら一番高く売れるでしょう? 5 2022/10/01 10:01
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- HTML・CSS ATOMというパソコンのアプリでノートに下のノートに写したような画像を反映させないといけません。 や 1 2022/12/14 17:39
- 高校 物理の問題の解説お願いします。 1 2023/03/04 16:42
- プリンタ・スキャナー いらないプリンターの処分はリネットジャパンでいらないパソコンと一緒に引き渡せば無料で処分できるの?? 6 2023/03/01 19:46
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel実行時エラー-2146959355?
-
latexでのエラー
-
パソコンのスクリーンセーバー...
-
C列に”済”が入力されたら入力さ...
-
管理者として実行を毎回すると...
-
パソコンに何かが勝手にダウン...
-
C言語再帰アルゴリズム
-
chatGPTで次々と質問をしていく...
-
VBA中断モードの解除
-
COBOLで集団項目から符号...
-
ターミナルからemacsへのコピペ...
-
VB.NETを実行するにはどうした...
-
VBA コントロールパネルの機能...
-
VB.NETでボタンのクリックイベ...
-
eclipseで、「ポート番号が使用...
-
PC版のMinecraftが応答なしにな...
-
動的ライブラリ中のグローバル変数
-
トレースの方法 十進BASIC
-
Linux:pygame 音が出ない HDMI...
-
Pythonについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パソコンに何かが勝手にダウン...
-
パソコンのスクリーンセーバー...
-
Excel実行時エラー-2146959355?
-
chatGPTで次々と質問をしていく...
-
PC版のMinecraftが応答なしにな...
-
VSコード
-
プログラミングについてです。...
-
latexでのエラー
-
VB.NETでボタンのクリックイベ...
-
管理者として実行を毎回すると...
-
エクセルVBA、ステップモードと...
-
Windows10 で青鬼を遊びたいの...
-
eclipseで、「ポート番号が使用...
-
EXCEL-VBAでコマンド...
-
プログラム実行中に強制停止さ...
-
VB.NETでDataTableにデータ追加...
-
pythonで他のアプリを操作する...
-
COBOLで集団項目から符号...
-
実行中のVBSをタスクバーに非表...
-
C言語再帰アルゴリズム
おすすめ情報