ディレクトリの概念 [コンピュータ言語]

コンピュータ言語の中で理解しづらいのにポインタというのがありました。
しかし、UNIXに変わりディレクトリが導入されてから、見方が変わりました。
UNIXのファイルシステムにはiノードというものがあり、そのテーブルの中のファイルにはみんな番号が振られています。ちなみに前に上げた、TextInputViewで説明すると、ターミナルで次のコマンドを打ちます。移動コマンドのcdで前のディレクトリに移動します。$ ls -iaR TextInputViewを打ちます。ターミナルはbashです。すると、

TextInputView/build:
3069456 . 3069470 Debug
3069428 .. 3069457 TextInputView.build

TextInputView/build/Debug:
3069470 . 3069471 TextInputView.app
3069456 ..

TextInputView/build/Debug/TextInputView.app:
3069471 . 3069470 .. 3069472 Contents

TextInputView/build/Debug/TextInputView.app/Contents:
3069472 . 3069473 Info.plist 3069474 PkgInfo
3069471 .. 3069510 MacOS 3069475 Resources

TextInputView/build/Debug/TextInputView.app/Contents/MacOS:
3069510 . 3069472 .. 3069515 TextInputView

TextInputView/build/Debug/TextInputView.app/Contents/Resources:
3069475 . 3069476 English.lproj
3069472 .. 3069477 README.rtf

TextInputView/build/Debug/TextInputView.app/Contents/Resources/English.lproj:
3069476 . 3069479 Localizable.strings
3069475 .. 3069504 MainMenu.nib
3069480 InfoPlist.strings

TextInputView/build/TextInputView.build:
3069457 . 3069458 Debug
3069456 .. 3069519 TextInputView.pbxindex

TextInputView/build/TextInputView.build/Debug:
3069458 . 3069459 TextInputView.build
3069457 ..

TextInputView/build/TextInputView.build/Debug/TextInputView.build:
3069459 .
3069458 ..
3069461 Objects-normal
3069466 TextInputView-all-target-headers.hmap
3069467 TextInputView-generated-files.hmap
3069468 TextInputView-own-target-headers.hmap
3069460 TextInputView-project-headers.hmap
3126726 TextInputView.dep
3069469 TextInputView.hmap
3069517 TextInputView~.dep
3126725 build-state.dat
3069516 build-state~.dat

TextInputView/build/TextInputView.build/Debug/TextInputView.build/Objects-normal:
3069461 . 3069459 .. 3069462 i386

TextInputView/build/TextInputView.build/Debug/TextInputView.build/Objects-normal/i386:
3069462 . 3069509 FadingTextView.o
3069461 .. 3069463 TextInputView.LinkFileList
3069508 Controller.o 3069507 main.o
3126724 FadingTextView.mi

TextInputView/build/TextInputView.build/TextInputView.pbxindex:
3069519 . 3130355 pbxindex.header
3069457 .. 3130354 protocols.pbxbtree
3130352 categories.pbxbtree 3130351 refs.pbxbtree
3130350 cdecls.pbxbtree 3069520 strings.pbxstrings
3130349 decls.pbxbtree 3130353 subclasses.pbxbtree
3130347 files.pbxbtree 3130346 symbols0.pbxsymbols
3130348 imports.pbxbtree

TextInputView/build/TextInputView.build/TextInputView.pbxindex/strings.pbxstrings:
3069520 . 3069519 .. 3130344 control 3130345 strings

一部抜粋ですが、こう出て来ます。これはターミナルからしか見る事が出来ません。
このコマンドは、Bruce Molay氏の著書であるUnix/Linuxプログラミング理論と実践の中から参照しています。

. はそのディレクトリ(フォルダー)の番号で、.. はその上のディレクトリの番号でありリンクしています。
Finderでは、. は、そのものフォルダーとして見えます。
.. はその四角のエリアであり見えますが、通常意識する事はありませんし、その上のフォルダーでもあります。
システムから見ると、この番号が無ければファイルの階層が分からなくなるという訳です。.. はHTMLでも使われています。

Objective-Cに、よく使われる表現に、
NSString *XXX , NSArray *XXXとかあります。ポインタと呼ばれる* はコンパイラーが割り振るアドレスであり、XXXの部分の内容は後で変更可能な中身と言えそうです。私も大した自信があって言っているのではありませんから、参考程度にです。
NSで始まるクラスはクラスタクラスと呼ばれ、インスタンスを作成でき、それを変数として持つ事ができ、サブクラスとして振る舞う事が出来る、とあります。
Objective-Cには、デリゲートという親クラスがサブクラスに振る舞いを任せてしまう方法があります。そうすれば、親クラスは支障無くもっと多くのサブクラスを持つ事が出来ます。

こういった概念は、やはりUNIXならではのディレクトリの概念から来てるのだと思います。
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。