日記に戻る

14-コンピュータ2

ロボット

#include <stdio.h>
#include <stdlib.h>
struct _obj {
    int p;
    int hara;
};
int getlp(struct _obj *obj){
    obj->p = rand()%4;
    return 1;
}
void action(struct _obj *obj){
    if(obj->p==0){
        printf("はらは");
        if(obj->hara==0){
            printf("減った。\n");
        }
        else{
            printf("減っていない。\n");
        }
    }
    if(obj->p==1){
        printf("楽しい。\n");
    }
    if(obj->p==2){
        printf("はらが減る\n");
        obj->hara=0;
    }
    if(obj->p==3){
        printf("おいしいごはんを食べた\n");
        obj->hara=1;
    }
}
int main(void){
    struct _obj obj;
    obj.hara=1;
    while(getlp(&obj)){
        action(&obj);
    }
}

----

ロボットの今後。

記憶を作って、覚えて考えるようにする。

認識を覚えて、知らないものを考える。

学習と考え方を作る。証明の仕方を覚えて、証明するようにする。

改良するためには、パラメータとメソッドを増やす。

ランダムが悪い。優先順位をつければ良い。

ロボット

#include <stdio.h>
#include <stdlib.h>
struct _obj {
    int p;
    int w;
    int t;
};
int getlp(struct _obj *obj){
    obj->p = rand()%5;
    return 1;
}
void action(struct _obj *obj){
    if(obj->p==0){
        printf("ここは");
        if(obj->w==1){
            printf("日本です。\n");
        }
        if(obj->w==2){
            printf("ドイツです。\n");
        }
    }
    if(obj->p==1){
        printf("日本にやってきました。\n");
        obj->w=1;
    }
    if(obj->p==2){
        printf("ドイツにやってきました。\n");
        obj->w=2;
    }
    if(obj->p==3){
        printf("想像力を使います。");
        printf("りんごは赤い。\n");
        obj->t=1;
    }
    if(obj->p==4){
        printf("想像力を使います。");
        printf("りんごは白い。\n");
        obj->t=0;
    }
    if(obj->p==3||obj->p==4){
        if(obj->t==1){
            printf("正しい。\n");
        }
        else{
            printf("間違っている。\n");
        }
    }
}
int main(void){
    struct _obj obj;
    obj.w=1;
    obj.t=1;
    while(getlp(&obj)){
        action(&obj);
    }
}

----

僕のロボットは、Cでオブジェクト指向だ。パラメータとメソッドを保持し、getとsetをしている。Javaにすると分かりやすいかもしれない。

ロボットが最初から、りんごが赤いのを正しいと知っているのがおかしい。そこだけ設定ファイルにすればいいかもしれない。

何が何なら正しいか、覚えて分かるのも良いが、複雑なプログラムになってしまう。

思考がすべてランダムなのはおかしい。優先順位をつけるのもいいが、それより、思考の後の次の思考を決めて、続けて言うようにすれば良いかもしれない。

◇◇

Linuxなんか、ただのスカイネットだ。

(スカイネットは、ターミネーター2に出てくる、悪いロボットの会社だ。)

◇◇

Cでは、close()したときにfree()するのを、JavaやC#では、ガベージコレクタでメモリ管理を自動にできる。

おそらくC++では、コンストラクタとデストラクタ時に破棄すれば良い。

そして、使うものを作る。作ったものを使う。

あとは、Perlのパクリや、それと同様に、JavaのC#が賢い。

◇◇

JavaScriptのようなLisp、HTMLのようなLispを作れば、

簡単にコンパイラが出来るような気がする。

JavaScriptのHTMLを処理するだけは、Lispと同じだ。

◇◇

パソコンは賢い。

悪いものが多いから、それで賢くなる。

Lispなど、賢いものも多いから、それで賢くなる。

◇◇

自動車は、死ぬのが悪いが、楽だ。

コンピュータは、壊れるのと、滅びた世界があるのが悪いが、

便利で、色んな事に使え、情報がある。

テレビは、馬鹿なのが悪いが、情報があり、面白い。

競争は、戦う、金もうけしかしないのが悪いが、日本が発展する。

◇◇

パソコンのハードウェアにメニューボタンをつけて、押すと「ホーム」を表示し、画面いっぱいの中から、クリックして項目を選ぶ。

ドコモのケータイのように、4つのボタンを配置し、サブメニューを表示したりする。これも、画面いっぱいを使う。

アプリケーションは、通常はボタンを表示せず、メニューはメニューボタンを押すと表示するか、マウスを一番上に持って行ったときにスライドで表示する。

あとは、画面いっぱいにビューを表示する。

画面いっぱいを使えば分かりやすくなるようで、そういうことはない。今のままの方が分かりやすい。

◇◇

自分が治さない方が、病気は治る。

自分が悪いせいで、みんなが悪く見える。自分は普通だし、みんなも普通だ。

出来るようになれば、簡単にできる。覚えれば、出来る。

初期投資をすれば、後で簡単にできる。Wiki記法やプログラミングがそうである。

完璧なコマンドや関数を作って、簡単に命令して使うのが、パソコンである。

Wikiのマクロの分かりやすい点は、ページ名を引数として、簡単に自動化できる点である。

おすすめの言語は、RubyとC#。

◇◇

パソコンのおかしな点は、IBM-PCに全て統一した点。

その前の多様な文化は消え去った。しかし、Windowsが発展した。

あとは、キーボード配列がおかしい。打ちやすいわけでもないのに、アルファベット順になっていない。

理由は、タイプライターがそうだったから。

あとは、マウスでメニュー、ボタン、タスクバー、スクロールをクリックして選択するのがおかしい。

ダブルクリックとドラッグ・ドロップがさらに難しい。

アップルが考えたのだろう。なれると使いやすいが。

◇◇

Linuxが成り立つのは、インターネットの共有は結構面白くて、

GNUはストールマンが勝手にコマンドとコンパイラとエディタを作っていて、

トーバルズがインターネットに投下したカーネルが、みんなの反響を呼び、

適当にハッカーが集まって作っていると、色んなプロジェクトが出来て、

それを全部GPLの所有にして、金が無く、インターネットで平等分配していた。

◇◇

Linuxはクズだ。論外なのに、グーグルなどで多い。

FLOWと良く似ている。

◇◇

Linuxは、どのインターネットでも悲惨だから、やめた方が良い。

マイクロソフトやアップルの世界が分からなくなる。

悲惨に、カーネルのコードは、見ると誰でも分かるのが、Linuxだ。

なぜか、Androidのカーネルとして採用されている。

◇◇

最近、右翼になったが、昔から自由、平等の左翼だ。

オープンソースは普通だ。Mac OS XもBSDだ。サーバーは、Linuxが普通だ。

コードは、Cではポインタがオブジェクトを持ち、それぞれの関数の中で、同じデータを保持する。

メモリともいうが、ポインタだけをコピーした方が楽だ。

あとは、変数名で分かる。

普通、返り値と引数を統一してオブジェクト指向を行う。

Getを行い、ポインタを取得する。=で代入しても良い。

それから、繰り返しと代入がある。辿って分かれば良い。

Javaは、特に同じだが、賢い。C#も、特に同じだが、さらに機能が多い。

◇◇

普通の機械の方が良い。時計や車の方が面白い。

人間は、キモイ方が賢い。

どのように行うか、その原因はなぜか、を考えれば良い。

かもしれない、おそらく、はずだ、と考えれば良い。

Windowsは、中身が見れないのが悪い。GNU/Linuxのハッカーが多いのは、中身が見れるから、誰でも分かるからだ。

それはどこから来たか。それは、誰がどうしたか。

◇◇

Linuxは、UNIX互換OSで、コマンドラインでは安定して動く。

フリーで、オープンソース、みんなで作るのが賢い。

作り方を馬鹿とはいうが、Wikiも似たようなものだし、Windowsだって同じように作っている。

プログラミングでは、データを関数で運んで、処理する部分で処理している。

UNIXは、入出力とパーミッション、マルチタスクとファイルシステムのシンプルなOSだが、

LinuxはUNIXよりは賢い。

他のオープンソースなソフトウェアは、スクリプト言語のPerlやPHP、コンパイラのGCC、

画像編集ソフトのGIMP、オフィススイートのLibreOffice、OSのFreeBSDやOpenSolarisなどがある。

あとは、GoogleのOS、Androidもオープンソースである。

良い点は、無料で、コードを見れるところだ。

Windowsでは、グラフィックの表示は、デバイスコンテキストを操作して行う。

Windowsがウィンドウを管理しているため、ハンドルを用いる。

詳しくは、検索して。

MSDNライブラリ:http://msdn.microsoft.com/ja-jp/library/default.aspx

ユーザーインターフェース:http://msdn.microsoft.com/ja-jp/library/65dtx4a4.aspx

ウィンドウオブジェクト:http://msdn.microsoft.com/ja-jp/library/kc6x1ya0.aspx

OpenOffice.orgやMozillaのWindows版は意味がない。Windowsが全部やっているのに、MS/Windowsと戦っている。

オープンソースは全部GNU/Linuxの方が良い。みんな同じオープンソースコードだ。

Linuxは醜い。コンパイラ、ライブラリ、カーネルとシステムコールに、インタープリタ、X、GTK+がある。インタープリタがXとGTK+を表示していると、最悪に見える。

給与を払わない。Linuxのものになる。誰も更新していない。

QtとGTK+アプリケーションが共存していると、キモく見える。KDEとGNOMEが戦っていると、最悪に見える。

Androidに統一すべきなのだ。

ディストリビューションは、Red Hat、SuSE、Debian、Ubuntuと無数にあるのが悪い。パッケージ管理システムも、バージョン管理も馬鹿に多い。

Windowsみたいに出来ないなら、しなくていい。何かになるように見える。

◇◇

データを運んで、処理して表示する。データは、メモリのどこかにあり、たまに操作する。

◇◇

世界と違うになる。

可能性を考える。

することを考える。ただ従うだけでなく、何かの決まりごとや原因と結果を、たらればで分かる。

Linuxは、みんなで作っているのが賢い。システム的には、シェルスクリプトの技術と、aptitudeが賢い。

あとは、ウィンドウを管理しているXと、その上の技術が賢い。X以上がカスタマイズできる。

GNOMEとKDEは、コンポーネント技術と見た目、統一性が賢い。

サーバーサイドは、無数に技術がある。スクリプトと言語、SQL、サーバーが多様で、安定している。

あとは、カーネルのコードが見れるのが優れている。

劣っている点は、無料では給与が払われない。フリーソフトだから、それでいい。

Google 16:06

Googleは、子供だ。

Microsoftは、大人だ。

パソコン 16:54

パソコンには、まず、Windowsのスタートメニューと終了の方法、タスクバーがある。

これを使って、アプリケーションを実行する。

アプリケーションには、ウィンドウごとに、最大化、最小化、閉じる、のボタンがあり、

メニューとボタンから機能を選び、ビューに表示して編集する。

マウスとキーボードを使った機械だ。

アプリケーション 16:58

アプリケーションは、インターネットエクスプローラは、インターネットを表示し、移動する。

エクスプローラは、ファイルを選択し、作り、削除し、コピーする。

テキストエディタは、テキストの編集と保存を行う。

ワードは、高度な文章を編集する。

エクセルは、表計算をする。

パワーポイントは、プレゼンテーションを作る。

Visual Studioは、アプリケーションとソースコードを開発し、コンパイルする。

他に、お絵かきソフトや、音楽プレイヤーなどがある。

ハードウェア 16:58

ハードウェアから見ると、起動時にOSを起動する。

機械語をインテルのCPUが計算している。

おそらく、論理和と論理積で2進数を計算している。

ハードウェアに保存されたデータとプログラムをメモリに読み込んで

CPUがその機械語セット通りに、プログラムを実行する。

キーボードとマウスで、イベント駆動を行う。

周辺機器は、USBなど。

表示は、ディスプレイやモニターで行う。

パソコン 17:01

パソコンは、そのままで良い。

さらに簡単にしなくていい。十分簡単だ。

クラシック音楽のように残せばいいように見える。

作る 21:45

作るためには、仕組みを知って考えるしかない。

しかし、プログラミングは、そういう風には出来ない。

知性が必要なのだ。

戦わない 19:21

僕は、何も戦わないに治った。

その方がつらい。戦っていた方が楽だ。

いつも通り、ビルゲイツやヒトラーを倒せばいい。

ビルゲイツ 19:22

ビルゲイツを倒すためには、どうしたらいいか。

アンドロイドを自社製品に採用すれば、すぐ倒せる。

Googleは賢い。

そうすると、ゲイツにあまり意味がない。

ゲイツ 19:23

ゲイツは倒さない。どうでもいいことにする。

誰が見ても、ゲイツが儲けると、世界が発展するから、良い。

Linux 19:26

Linuxはどうするか。

あれはバカだが、分かる。

コンパイルしてネットで会話するとよく分かる。

だが、低い。

Linux 19:27

Linuxはやめた方が良い。

倒さないが、使わない方が良い。

狂って、後でつらくなる。

つらいから、悪い。