Coding雑記

(作成:2005/10)

hoge, fuga, piyo...

それにしても、 hoge なるキータッチを考え着いた人はスゴいと思ふ。何て打ち易いんだ hoge

変数ii、jj...

人様のプログラム見てると、たまーにこういう訳解らん変数名が出て来るときがある。
これはどうやら、FORTRANからの慣習のよう。

FORTRANでは、変数がi~mの範囲だと整数型変数として宣言なしで使用できるらしい。そういう意味で楽なのは for 文のカウント用関数等の一時的な使用だわね。まぁその場合だと i とか j とか一文字で良いわけだけれど。

for(int i = 0;i < 10;i++) {
    for(int j = 0;j < 20;j++) {
        System.out.println("ほげ");
    }
}

そうでなくて一時的な関数として使用したいなーと思った時に、後々エディタで楽に変換できるようにと、連続した文字列、 ii とか jj とかが使われるようになった、らしい。所謂 tmp だの temp だのと似たような変数名、という訳だ。

int ii = 0;
for(int i = 0;i < 10;i++) {
    // 何がしかややこしい処理

    ii = i * hogehoge;

    // 何がしかややこしい処理
}

しかしぶっちゃけ今こういう使い方すんのは時代錯誤も甚だしいね。 for 文の i だの j はまだ許せるけれど、 ii だの jj だのはソースの可読性を低下させるだけの害悪に他ならないと思う。特にコメントも無いソースなんかだともう泣くしか。
変数名は解りやすいものにしようね。うん。

色んな標準入出力

テキスト出力なんかにはちょっと便利。

C C++ Java Fortran リダイレクト
標準入力 stdin cin System.in 5 command < file
標準出力 stdout cout System.out 6 command > file
標準エラー stderr cerr / clog System.err (大抵) 0 command 2> file

C言語の配列

配列は普通 a[1] のように書くけど、 1[a]でも同じ意味で表現できるらしい。

#include<stdio.h>

int main(int argc, char *argv[]) {
    char a[4] = {'h', 'o', 'g', 'e'};


    printf("%c%c%c%c\n", a[0], a[1], a[2], a[3]);
    printf("%c%c%c%c\n", 0[a], 1[a], 2[a], 3[a]);

    exit(0);
}

わーお。コンパイルも通るし出力も同じ。
これは、例えば配列 a[1] を内部表現として *(a+1) みたくポインタ表現しており、これは *(1+a) のように足し算の順序を入れ替えても成立する、つまり 1[a] と書ける、ということらしい。
まぁ、ぶっちゃけ特に意味はないけれども。

旧ライブラリとの共存法

ライブラリを導入した場合、ディレクトリさえ違えば以下の環境変数を登録するだけで
ライブラリを使い分けることができる。

例: bash の場合で、 /usr/local/lib 内のものを優先して使う

#### ~/.bashrc

export LD_LIBRARY_PATH=/usr/local/lib