日記に戻る

コンピュータ3

IBM 16:04

会社には、パーソナルなものと、ビジネス向けの顧客戦略がある。

家庭だけではなく、企業向けの商売もある。

IBMなどが、スーパーコンピュータやワークステーションを作っていると、

それは普通、企業や公職向けに作る。

それはそれで儲かる。

そういうところに賢い技術が多い。

Microsoft 16:09

IBM、Microsoftは、本当に賢いから、誰も勝てない。

それこそ、ソフトバンクやGoogleが頑張れば勝てる。

誰もしない。すぐに負ける。

IBM 16:40

IBMは、山ほど金がある。Eclipseを作るしかない。

Java、Oracleは賢い。

考え方として、オープン技術や自社の囲い込みがある。

企業向けの技術としては、普通、Microsoftを使う。

バカではないが、出来ない人間が多いから、C#と.NETにする。

そういうこともないか。

日本のIBM 16:48

日本のIBMとしては、富士通や日立、NTTがある。

スマートフォンはバカだが、ああいうものはバカで良い。

しかし、結構賢いのがスマートフォンだ。

アプリケーションが多すぎていい。

パソコン 15:50

パソコンは、ハードウェアを考えないと分からない。

僕は、そこが分かっていない。

Intelと2進数を考え、メモリを知らなければ、何も分からない。

Linux/UNIX 16:36

Linux/UNIXのコマンド。

http://itpro.nikkeibp.co.jp/article/COLUMN/20060224/230573/

http://x68000.q-e-d.net/~68user/unix/

http://linuxjm.sourceforge.jp/

Coreutilsのマニュアル。左下の方にあります。

http://www.bookshelf.jp/

LFS。

http://www.linuxfromscratch.org/lfs/

Coreutilsは、GNU/Linuxの基本的なコマンド。

BASHは、GNU/Linuxのコマンドラインの中心となるシェル。

GCCなど、GNUツールチェインは、開発に必要なツール。

Xは、ウィンドウを管理し、表示する。

GTK+/QtはXのツールキット(ウィジェット)で、ボタンやメニューを表示する。

GNOMEはGTK+、KDEはQtを利用した統合デスクトップ環境だ。

Windows 16:39

Windowsの基本は、NTカーネルと、ウィンドウを管理するOS、MS-Windows。

COMやGDI、レジストリなどの技術がある。

最近は、.NETなどのさらなる技術を搭載している。

ハードウェア 16:53

出典:入門ビジュアルテクノロジー 半導体のすべて

導体は電気を良く通すもので、絶縁体は通さないものだが、

その中間の性質をもつものを、半導体と呼ぶ。

半導体の材料として一番使われているものは、シリコン。

地球上では、酸素についで多く存在している。

集積回路(IC)は、回路素子を多数集めて、何らかの電気的働きをさせたもの。

ICの中で、最もポピュラーなのがトランジスタである。

ICを分類すると、メモリ、ロジック、ASIC、システムLSIがある。

続き 17:00

半導体をつくる材料には、シリコン単体と化合物の2種類がある。

そして、シリコン半導体はその基本動作と使用するキャリアの違いで、

(1)バイポーラ型、(2)MOS型の2種類に分けられる。

バイポーラ型とは「2極性」という名前の通り、

ホールの正電荷と、電子の負電荷の「両方の極性」という意味で、

その動作において2つのキャリアを用い、

CMOSより高速という利点がある。

バイポーラ型トランジスタは3端子を持つデバイスで、

エミッタ(E)、ベース(B)、コレクタ(C)の3導電領域を持っており、

その電動型の組み合わせの違いによって、

さらに「NPN型」「PNP型」の2つがある。

メモリ 17:04

半導体メモリとは、さまざまな情報を記憶し保持し、

必要に応じて取り出せる機能を持った半導体デバイスのことである。

メモリでは、ワード線と呼ばれるXアドレスと、

デジット線またはビット線と呼ばれるYアドレスが

マトリックス状に配列されている。

足し算 17:09

2進法で足し算をするためには、

「下位の桁からの桁上がり」を考慮した上で、

「各桁の和」を取れば良い。

これから2つの2進数A、Bの和について、

各桁の、1または0の組み合わせと、

和、桁上がりの関係を示す

真理値表と、論理式が得られる。

この論理を実現するために、

さまざまな論理回路が考えられるが、

例として、AND-OR構成などで実現できる。

引き算と掛け算 17:12

減算機は、加算機とインバータで作ることが出来る。

加減算機も作れる。

掛け算は、論理積(AND)である。

NANDゲートは、「A NAND B」で「AかつB」の否定である。

NORゲートは、「A NOR B」で「AまたはB」の否定である。

ANDゲートは、「AかつB」、ORゲートは、「AあるいはB」である。

それらの論理回路を作る。

これ以上 17:16

これ以上を読みたい人は、本を買ってください。

論理回路 17:22

論理回路が半導体の通り動いているだけなのかもしれない。

Java 17:39

出典:Javaの道

出典:とほほのJava入門

繰り返しの例。

public class ExControl {
  public static void main(String[] args) {
    //初期値i=0、iが5以下の間forループ内を実行
    for(int i = 0; i <= 5; i++) {
      System.out.println("iは" + i + "です。");
    }
  }
}

条件式の例。

public class ExControl2 {
  public static void main(String[] args) {
    int score = 70;
    char grade;

    if (score >= 90) {
      grade='A';
    } else if (score >= 70) {
      grade='B';
    } else if (score >= 50) {
      grade='C';
    } else {
      grade='D';
    }

    System.out.println("あなたは" + grade + "判定です。");
  }
}

クラスの例。

class Person {
    String myName;
    int myAge;
    public void SetName(String name) {
        myName = name;
    }
    public String GetName() {
        return myName;
    }
    public void SetAge(int age) {
        myAge = age;
    }
    public int GetAge() {
        return myAge;
    }
}

クラスの利用例。

class PersonTest {
    public static void main(String[] args) {
        Person tanaka = new Person(); // 田中さんオブジェクトを作る
        tanaka.SetName("Tanaka");     // 田中さんの名前を設定する
        tanaka.SetAge(26);            // 田中さんの年齢を設定する

        Person suzuki = new Person(); // 鈴木さんオブジェクトを作る
        suzuki.SetName("Suzuki");     // 鈴木さんの名前を設定する
        suzuki.SetAge(32);            // 鈴木さんの年齢を設定する

        System.out.println(tanaka.GetName());
        System.out.println(tanaka.GetAge());
        System.out.println(suzuki.GetName());
        System.out.println(suzuki.GetAge());
    }
}

メソッドの例。

class MethodTest {
    public static void main(String[] args) {
        System.out.println(add(3, 5));
    }
    static int add(int x, int y) {
        return (x + y);
    }
}

JavaとC++ 17:48

JavaとC++の違いは、メモリ管理である。

C++では、メモリを自分で管理する。

パソコンは、メモリの機械だ。

クラスなどの機能は、基本的に同じだ。

C++でないCでも、オブジェクトのポインタとして、

基本的に似たように作る。

それが、Linuxカーネルである。

public 20:12

publicの重要な点は、それだけが他から参照できるところ。

つまり、IDEの入力補完で表示される。

Java 14:54

文字列を検索する。

import java.io.*;

class Sample
{
  public static void main(String args[]) throws IOException
  {
    System.out.println("文字列を入力してください。");
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String str1 = br.readLine();
    System.out.println("検索文字を入力してください。");
    String str2 = br.readLine();
    char ch = str2.charAt(0);
    int num = str1.indexOf(ch);
    if(num != -1)
      System.out.println(str1 + "の" + (num+1) + "番目に「" + ch + "」がみつかりました。");
    else
      System.out.println(str1 + "に「" + ch + "」はありません。");
  }
}

エンジニア 19:38

エンジニアは、技術を学ぶ。

設計する。それは、きちんと「正しく」動くべきである。

パソコンの悪い点は、何も分からず、コードで作っている。

普通の機械の良い点は、作る人間が、作るものを、きちんと分かっている。

パソコンは、分かっていない。

パソコン 19:40

パソコンの良い点は、なんでも自動で動く。

サーバー・アプリケーションをPerlで作れば、

何もしなくても、自動で掲示板が表示される。

内容を手動で管理しなくても、きちんと動く。

一般ユーザー 19:41

一般ユーザーから見れば、ファイルという概念が賢い。

新規作成したものを、コピー・削除出来る。

それだけではない。

形式を変換して、スマホや音楽プレイヤーで再生できる。

ネット 16:31

ネットを作ったのは、ネットスケープだ。

あれのおかげで、URLが世界に広まった。

ブラウザ戦争で、無残にもマイクロソフトに負けた。

Mozillaという名前でオープンソース・プロジェクトになり、

Firefoxがどこかいつかに流行っていたが

最近はGoogleに負けそうだ。

ケータイ 16:34

ケータイはつまらないから、悪い。

メールがそのままツイッターになって、

アンドロイドになっている。

要らないものだ。

しかし、アンドロイドは、バカに見えて賢い。

モバイルでブログを更新でき、

世界中のラジオが聞け、

音楽をシャッフルで再生できる。

それくらいを使えば賢い。

Google 16:39

Googleは、ネットを賢いと思っている。

そこが悪い。

それに、皆をロボットにしたい、悪い会社を買収した。

そこがおかしい。一番悪い。

Sun 16:42

Sunも買収された。

商用UNIXのSolarisと、CPUのSPARC、言語のJava、ネットワーク・ファイルシステムの会社だった。

ビルゲイツに負けた。

声高らかに批判していたから仕方ない。

Oracleが買収した。

Java坊やが、Oracle坊やになっている。

永遠なのがJavaだ。

Apple 16:44

Appleは、ジョブズが死んで意味がない。

一番意味がないのは、ビルゲイツが、Windowsのタスクバーをバカにした。

賢くなったとはいうが、そんなところだけを変えるのがバカだ。

ビルゲイツも、バカをしたいだけだ。

パソコン 16:46

パソコンなんか要らない。

大型のアンドロイドがあれば、それでいい。

そういうものに変わる。

意味がないが。

IBM 16:46

IBMは、いつも通り、上の方で、業務用を作っているだけだ。

むしろ、IBM製に戻るのではないか。

Linux 16:50

Oracle, Adobe, IBM, Google, AOL, Yahoo, AppleがつるんでOSを作るのが良い。

それが、Linuxだ。

まだトーバルズがやっているのが悪い。

それこそ、そんなことを言う人間はクズだ。

メール 16:52

メールもしないから、顔文字も分からない。

昔ネットで見ていたが、キモイ。

GNU 17:03

GNUという発想は誰でも分かる。

皆のものを、フリーに作りたい。

無償、自由、共有、ボランティアで作りたい。

金はとらない。同じコードで、クローズドなものを作ってはならない。

Linux 17:04

Linuxは、適当に楽しいだけの主義だ。

プログラミングは、作曲みたいに簡単だ。

Red HatとSuSE、Debian、Ubuntuが、適当にそれぞれ作っている。

Java 17:11

Javaのドキュメント

http://docs.oracle.com/javase/7/docs/

日本語(バージョン6)

http://java.sun.com/javase/ja/6/docs/ja/

I/Oなどを見ればいい。

MSDN 17:11

MSDNライブラリ

http://msdn.microsoft.com/ja-jp/library/ms123401.aspx

Java 17:21

Javaは無料だ。Eclipseも無料だ。

Javaが一番優れている。AndroidもJavaだ。

Linux 22:13

Linuxは、悪くはないが、悲惨だ。

パソコン 22:46

パソコンは、メッセージとクラスの機械だ。

本当は、プログラムを動かす機械だ。

LispはEmacsなどで動く、マクロ的な言語だ。

PerlやPHPは、サーバーアプリケーションを作ることの多い、スクリプト言語だ。

Cは、手順通り動く、手続き型言語だ。

C++は、機能の増えたCで、オブジェクト指向であり、クラスが動く。

Javaは、VMで動く、オブジェクト指向の賢い言語だ。

プログラム 22:48

まず、Cでプログラムを知ろう。

ポインタと関数と構造体のパラメータから、簡単なプログラムを動かす。

メッセージループや返り値も分かると、なおいい。

条件式と繰り返しを分かること。

そして、C++である。

クラスとオブジェクト指向で、グラフィカルで高度なプログラムを動かせる。

再利用 01:19

プログラムは、再利用性が重要である。

コマンドや関数、クラスやライブラリが完璧で、

パイプやシェル、シェルスクリプトからの再利用性が高く、

共有度が多いのがUNIXだ。

マイクロカーネルならば、なお良い。

たくさんの小さな機能の積み重ねである。

ロボット 20:45

#include <stdio.h>
#include <stdlib.h>

struct _obj {
  int o;
  int n;
};

void action(int* p, int* q, struct _obj *obj){
  if(*p==0){
    if(*q==0){
      printf("[1] テレビは、つまらない\n");
    }
    if(*q==1){
      printf("[2] テレビは、面白い\n");
    }
  }
  if(*p==1){
    if(*q==0){
      printf("[3] パソコンは、つまらない\n");
    }
    if(*q==1){
      printf("[4] パソコンは、面白い\n");
    }
  }
  if(*p==2){
    if(*q==0){
      printf("[5] テレビやパソコンは、機械だ。\n");
    }
    if(*q==1){
      printf("[6] テレビやパソコンは、生き物ではない。\n");
    }
    if(*q==2){
      printf("[7] テレビって何なのだろう。\n");
    }
  }
  if(*p==3){
    if(*q==0){
      printf("[8] テレビとパソコンは好きだ。\n");
    }
    if(*q==1){
      printf("[9] テレビとパソコンは嫌いだ。\n");
    }
    if(*q==2){
      if(obj->n==0){
        printf("[10] 比較すると、テレビの方が普通だ。\n");
      }
      if(obj->n==1){
        printf("[11] 比較すると、パソコンの方が普通だ。\n");
      }
    }
    if(*q==3){
      if(obj->n==0){
        printf("[12] テレビよりパソコンの方が普通かな。\n");
        obj->n=1;
      }
      else if(obj->n==1){
        printf("[13] パソコンよりテレビの方が普通かな。\n");
        obj->n=0;
      }
    }
  }
  if(*p==4){
    if(*q==0){
      if(obj->o==0){
        printf("[14] リンゴが好きです。\n");
      }
      if(obj->o==1){
        printf("[15] みかんが好きです。\n");
      }
    }
    if(*q==1){
      if(obj->o==0){
        printf("[16] リンゴより、みかんが好きになりました。\n");
        obj->o=1;
      }
      else if(obj->o==1){
        printf("[17] みかんより、リンゴが好きになりました。\n");
        obj->o=0;
      }
    }
  }
}

int main(void){
  int p;
  int r;
  struct _obj obj;
  p=0;
  r=0;
  obj.o=0;
  obj.n=0;
  while(1){
    p=rand()%5;
    r=rand()%5;
    action(&p, &r, &obj);
  }
}

全部 21:00

なぜか、自分は全部分かっている。

パソコンは、つまらない機械だ。

誰も居なかった。最近、友人も多い。そう、最近が良い。

悪い人間に悪い方が良い。

心理を考えなさい。心を落ち着かせれば、治る。

全部嫌いになっただけで、何も分からない。何か好きな方が良い。

ヒトラーが好きになったのが間違っている。

Linuxやソ連が好きになったのが間違っている。

このロボットには、物理世界がない。

あとは、すでに書いたことしか思えない。

それから、正しいかどうか判断しない。

あとは、ループして出力しているだけで、何も考えていない。

Linuxを消して、安心が好きになると良い。

Linuxは悪い。全て滅びた世界だ。

分からなくていい。一切わかるのは、つらい。

Linuxが悪かった。消すだけで楽になった。

ifは1つで良く見える。ifの中にifがある意味がない。

2つあると、何かが賢いような気がする。

プログラム 15:54

プログラムとは何なのだろうか?

コンピュータは、プログラムを動かすだけの機械だ。

プログラムは、コンピュータという基礎を使って、

全ての処理を考えられるだけ詰め込んでいる。

それで、全部出来る。

計算は、高度だ。

しかし、やっていることは、文字をコピーしているだけだ。

ストレージ 15:56

ストレージの大量化によって、いよいよ、全て賢くなった。

あとは、全てのコンピュータを1つに繋げる、クラウドやサーバーが賢い。

最近の流行は、モバイルだ。

そうすると、次は何だろう。

パソコン 15:57

パソコンには、もう何もない。

ブルーレイはつまらない。ビデオなんか、醜くていい。

コミュニケーション 15:58

コミュニケーション・サイトを賢くすればいい。

Blogやツイッター、フェイスブックをさらに改良する。

Google 16:01

Googleという発想は、意味がないが、賢い。

なぜなら、ストリートビューまで見れるのは、ありえない。

そのうち、音声で対話して、

世界中と通訳を交えて話が出来るようになるかもしれない。

部品 18:25

機械は、部品が賢い。

アンテナや、ブラウン管、スピーカー、マイクなど。

パソコン 18:26

それを、USBで高度に組み合わせることが出来るのが、

ハードウェアとしてのパソコンと、OSである。

つまり、なんでもできる、可能性あふれた機械がパソコンである。