ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

いろんなコンピューター言語の覚え方:その6 処理。

2007-11-11 15:11:54 | 土日シリーズ

 土日シリーズ「いろんなコンピューター言語の覚え方」、第3回に、コンピューター言語の覚え方の手順をかきました。
 で、今回は、「(3)宣言したデータの処理方法」についてです。




■処理部分

 プログラム言語は、値を宣言する部分と、実際に処理を行う部分に大きく分かれます。
 そして、処理する部分は、順番に処理する部分と、処理順序を制御する部分(繰り返しや条件によって行ったり行わなかったりする=制御文と呼ばれる)があります。

 で、今回やるのは、順番に処理する部分です。




■演算子と関数・メソッド

 この順番に処理するものに関しては、+、-、*、/などの演算子と呼ばれるものと、strcpyとかの関数があります。オブジェクト指向の場合は、関数でなくメソッドとなります。

 前回、変数を考えた時、文字や数字など、いろんな種類(型)がありました。 

 演算子の場合、処理を行う対象の型によって、使えるものと使えないものがあったり、作用が異なったりします。

 関数やメソッドも、使えるものと使えないものがあったり、作用が異なったりするほか、その対象の型でしかつかえないものがあります。オブジェクト指向の場合、同じ関数名でも、引数の型が違えば、違うものです。

 で、関数にしろ、演算子にしろ、その作用対象となるものがあります。
 演算子の場合は、演算の前とあとに書く(あと、または前にしか書かないものもある)のがふつうで、関数やメソッドの場合は、引数という形でもちます。

 この引数と関数の書き方や、使う前に宣言をするひつようがあるかないかで、各言語が違います。いいかえると、各言語を覚えるには、この関数の書き方を抑える必要があるということです。




■整数・小数の演算子、処理(メソッド・関数など)

 一般的に、整数小数に関しては、+-*/などの演算子が、ふつうに使えます
 (たいていの言語において。ただし、COBOLは、COMPUTE命令で使い、Addなど、これらを命令で行う方法もあるが)。

 そして、数学関係の関数として、三角関数、対数関数などが使える言語が多いです。

 言語によって使えるものが違うので注意だったりします。

 実務上、四則演算と、割り算のあまり、切り捨て切り上げ四捨五入の方法、数値比較方法を押さえておけば、とりあえず、いいかな(^^)




■文字・文字列の演算子、処理(メソッド・関数など)

 文字・文字列の演算に関しては、文字の連結について注意です。
 +が連結を表す言語と、連結はちがうもの(.や&など)で表す言語があります。

 +でできる場合、型が数字と文字、別れている場合はいいのですが、別れていない場合、
 a=1;b=1;a+b=11になってしまうことがあるので、注意です
 (このときa+(b+0)や、a+(b+””)でわけたりします)

 文字列用に、いろいろな関数があることがおおいです。
 なお、実務上、以下の操作をやるには、どうしたらよいかをはじめに抑えておくことがよいとおもいます。

   文字列の連結
   部分文字列の取り出し(mid,substringのこと)
   文字列から、特定の文字列を探す
   文字列の置換
   文字列の比較




■論理値・その他の演算子、処理(メソッド・関数など)

 論理演算といわれる、ANDとOR、そして、シフト(右シフト、左シフト)です。

 実務上、これらの操作をおさえておくこと、また、右シフト、左シフトのとき、最上位の桁はどうなるか(同じ言語でもコンパイラによって違う)を押さえておくことが大事なのですが、業務系の人は、あまり使わないので、押さえておかなくてもいいでしょう。




■配列やメモリ処理

 ポインタを使ってメモリ処理できる言語があります。
 memcpy,memsetなど。それらの言語においては、

 メモリ確保
 メモリ領域サイズの取得(sizeof)
 メモリ解放
 メモリセット
 メモリへのコピー
 メモリの内容比較

 をおさえておけばいいかな。。




■構造体、クラスの操作

 このほか、操作によっては、構造体、クラス全体に行える操作があります。
 ソートとか、(ハッシュ)マップとかです。
 (マップ=数学では写像のこと。キー(X)を指定したら値(Y)を返してくれる(=ってことは、一意にきまっているってこと)

 ソート方法
 マップ方法
 値設定方法

 などを押さえておく必要があります。




 次回は、制御文についてです。





  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

失われた20年-ソフト業界は変わったのか? その18:2000年ごろ(3)開発方法論

2007-11-10 23:24:18 | 土日シリーズ

 20年位前、1980年代終わりごろから、最近まで、ソフト業界とかその周辺の変遷について、特にソフト開発の立場を中心に見て行く、土日シリーズ「失われた20年-ソフト業界は変わったのか?」その第18回目。今回は、開発方法論。




■従来の開発方法論

 情報処理試験のテキスト「第一種共通テキスト 15応用システム開発技術」(ISBN 4-89078-452-7)にあるような、要求仕様、外部設計、内部詳細設計、プログラミング、テストのウォーターフォール型の開発の流れは、2000年ごろには確立していました。で、共通フレームSLCP-JCF98が、1998年に規定され、この手の開発の流れで、Cでやる開発は、まあ、安定してきました。
 現在も、制御系などでは、この流れのようです(最近UMLもありだけど)




■スパイラルからアジャイルへ

 このようなウォーターフォール型の開発は、仕様変更に弱いため、また、当時うまくいかない開発の理由を、ウォーターフォール型の開発のせいにした云々かんぬんのため、スパイラルの開発が注目されてきました。そして、すぐに開発できるアジャイルが人気になりだします。

 ただし、この時期、「なぜ、開発が失敗するのか、仕様変更が多いのか?」についての本質的な吟味はなされず、アジャイルで開発すればハッピー、PDCAを回せばハッピーという、今までうまくいかないのは、上司がウォーターフォールでやっていてバカだからみたいなおちでアジャイルが注目されてしまいました(独断と偏見です)。

 実際に、ビジネスモデルからUMLに、自動的に落としていくテクニックが普通のことになるのは、これよりちょっとあとの2004年ころからになります。




■DOAとUMLは?

 DOA自体は、佐藤正美氏のT字型ER図が注目されだし、のちにDOA+コンソーシアムを立ち上げ、IBMは、DFDの4点セットというかたちでDOAを進めていきます。一方UMLは、Rational社がRational ROSEを出し、さらに、RUPというかたちで、UMLの方法論をだしていきます。。

 が、今みたいに、要求文から、どこを着目して、どうやって開発をしていくかの流れが、だれにでもわかるように明白になる(動詞と名詞の意味など)のは、さっきもかいたように、2004年以降になっていきます。

 ただ、このころからJavaがかなり注目され、オブジェクト指向が一般的になってきます。
 また、Webによる開発も増えてきて、本格的に短納期の時代になってきます。

 それと、開発の中心がSEからプログラマ重視になってきます。




っていうことで、次はJavaとかの言語のお話。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

いろんなコンピューター言語の覚え方:その5 定数と変数と利用できる型

2007-11-04 14:11:25 | 土日シリーズ

土日シリーズ「いろんなコンピューター言語の覚え方」、第3回に、コンピューター言語の覚え方の手順をかきました。
 で、前回はその手順にしたがい、(1)をやったので、今日は、

(2)処理で扱えるデータとその宣言の仕方について

です。




■プログラム言語は、値と処理を定義する。

 プログラム言語の中心は、処理をすることです。

 だけど、入力した値を順々処理して、出力するだけがプログラムではありません(パイプライン=Linuxなどのパイプはこんなかんじですけど)。

 いったん処理したものを、どっかにおいておいて、あとで使うということもあります。
 このような、処理結果を置いておくところが、変数です。

 また、処理をするとき、入力した値や、変数を使うだけでなく、あるきまった値をつかうこともあります。たとえば、円の面積を求めるときは、半径*半径*3.14です。

 半径は入力値としても、3.14は決まっています。
 このような、きまった値が定数です。

 このような処理のほかに、変数や定数も、プログラム言語では定義する必要があります。




■変数は宣言するものと、しないものがある。

 ここで、まず、定数は、直接書くことがおおいわけです。
 書き方として、文字列は””などで囲み、数字は囲わないというかんじです。

 で、変数は、宣言するものと、宣言しないもの、しなくてもいいものがあります。
 Javascript,PHP,VBAなどは宣言してもしなくてもいいと。。(VBA等では、しないといけない指定もある)

 ただ、これらの場合、明示的に文字にさせる、数字にさせる方法を知っておかないと、勝手に数字、文字と解釈されて困ることがあるので注意です。

 変数を宣言するものは、たいてい

   型  変数

 の形でかきますが、このとき、書く場所が決まっているもの、書く位置によって意味が違ってくるものに注意です。

 COBOLなどでは、データ部(DATA DIVISION)というところに書きますし、Cの場合には、命令がはじまる前にかきます。Javaは始まってからでもかけますね。

 で、意味に関しては、グローバルとして、複数のモジュールで使えるもの、そうでなくて、局所的に使えるものとあります。とくに、名前が重ならないための名前空間の宣言ができる場合がありますね。




■プログラムで利用できる型

 で、変数にも、保存する値に応じた指定(=型指定)をするものと、あんまりしないものとありますよね。JavaScriptなどではvarで、変数をとり、あんまり型指定しないけど、cなどではする。

 で、型指定できる物の場合には、

単体の値
  整数:int(short,long,longlong)
小数:float(double)
  文字:char(byte)
  論理値:boolean

複数の値
  同じ種類:配列・ベクター、文字列、
  違う種類:構造体、クラス

なんでもあり
  ポインタ

などが、言語によって、宣言できるもの、できないものに分かれていきます。
配列においては、連想配列が使えるもの、配列とは違う形のもの(JavaのHashMap)、使えないものがあります。




今回のところはこんな感じ。

次回は、普通の処理について



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

失われた20年-ソフト業界は変わったのか? その17:2000年ごろ(2)Linux

2007-11-03 15:04:40 | 土日シリーズ

 20年位前、1980年代終わりごろから、最近まで、ソフト業界とかその周辺の変遷について、特にソフト開発の立場を中心に見て行く、土日シリーズ「失われた20年-ソフト業界は変わったのか?」その第17回目。

 今回から2000年ごろ(1998後半から2003年くらい)です。前回は概論だったので、今回は各論の1回目ということで、OSの話、とくにLinuxについて。




■2000年ころのWindows
 2000年ころのWindowsというと、Windows98とNTがさかんだったころ。
 Windowsがまずクライアント側では定着していました。

 一方サーバーでは?というと、IISを立てる人も多かったけど、Apacheを使う人も多くて・・
 という感じの状況で(いまもそうか ^^;)Apacheの人はサーバーにWindowsを立てるひつようはなく。。というところで、あとのLinuxの話になってきます。

 で、それこそ、Laoxのザ・コンピューター館にいくと、もう、このころはDOSのアプリはほとんどなく(って感じだった気がする)、WindowsのアプリとCDコーナー??(アプリじゃないやつ)が置かれるようになっていました。




■そのころのMac

 DTPの世界でかなり使われてたとおもうけど、いつの時代だったっけかなあ。。。

 と思い、Wikipediaみたら・・PowerPC G4 の時代みたいね(^^)あとiMac、iBookとか出た時代。

 うーん、Mac全盛期ですよねえ。。

 2000年ころには、日経Macなんていうのもあったんだよね(^^)
(まあ、当時も、デザイナーさん系の人は、MdNとか見ていたわけで。。)




■そのころのLinux

 しかし、いちばん大きな動きがあったのはLinuxじゃないかな?

 当時、LinuxJapanを出していた五橋研究所LASER5出版局は、RedHat Linuxのプロモーションとサポートを行っていたが、なんだーかんだーがあったのか??ある日突然、LASER5 Linuxという、自分たち独自のディストリビューションを出すことになり、発売する。一方RedHatは、独自に日本法人を設立する。

 これと、Turbo Linuxで、日本は3大Linuxディストリビューターがそろう。。

 とかいったら、怒られちゃいますね。

 おもいこんだらのKondaraっていう、ある意味過激な(先駆的なというべき)ディストリもあって、あと、MacのLinux PPCとか、おもいかねとか、ちょっとかわったホロンとか。。。あげればきりないけど、いろんなディストリがでました。
 また、KDEのユーザー会とかもさかんで。。

 で、こうなった背景には、サーバーはLinuxを使うということにあったと思う。
 IISでなく、Apacheでサーバーを組み立てる場合、サーバー側をLinuxにすることが多かった。

 それと、2000年ころのITバブルブームにのって、いろんなディストリなんかがでることになった。この勢いは、その後のネットバブルブームに移っていく。




■その後のLinux

 しかし、その後、Linuxブームは去り、OSはRedHat(Fedra coreを含めて)とCentOSに収束していく(ただし、日本の国ではKnoppixが力を持つようになる)。

 Laser5は、LinuxJapanが廃刊となり、パッケージからは手を引き、組み込みが中心となる。つい最近、Turboに買収される。

 一方、そのTurboは、SRAに買収された後、ライブドアに買収される。その後、いまもライブドアグループにとどまるが、かつてのパッケージ販売ほど・・・つーか、そもそも、Laoxのザ・コンピューター館なくなっちゃったしい。。ただ、会社は、ちゃんと上場している。

 Kondaraは、当時からデジファクとの関係は??(部外者には、よくわからん -_-)
 そして、Momongaに、いつのまにか、かわってたみたい(^^;)
 ・・・これも、部外者にはよくわからん。

 他のディストリも、よくわかんないけど、まあ、昔の隆盛は、Linux自体にないよね。。




 ってことで、次回は、開発方法論についてです。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

いろんなコンピューター言語の覚え方:その4 HelloWorldの意義

2007-10-28 23:34:48 | 土日シリーズ

 土日シリーズ「いろんなコンピューター言語の覚え方」、前回は、コンピューター言語の覚え方の手順をかきました。
 大雑把には、こんなかんじ

(1)処理を開始するところについて、処理が終了するところについて
(2)処理で扱えるデータとその宣言の仕方について
(3)宣言したデータの処理方法
(4)制御文
(5)入出力処理
(6)複数の処理を作ってまとめる

きょうはまず、そのうちの一番初め、
「(1)処理を開始するところについて、処理が終了するところについて」
についてです。




■はじめに確認することは

 言語を覚える際に、一番初めに確認することは書式です。

・まず、どの言語でも、コメントと、実行する部分の書き方があります。

・そして、実行する部分に関しては、

    FORTRANなどのように、書く桁が決まっているものもあります。

    COBOLの場合は、見出し部、環境部、データ部、手続き部の4つのDIVISIONと
     その中にSECTIONがあるものもあって、たいてい、書き方が決まっています

    クラスのあるJavaなどの言語は、クラスとメソッド、属性の書き方が決まっています

    そうでないCのような言語は、関数と変数の書き方が決まっています。

    Perl、BASIC、シェルスクリプトなどは、実行文を上から実行します

 というように、各言語において、正書法といいますか、実行文の大体の書き方が決まっています
 ので、それを覚えます。

・さらに、それらの実行文を実行するとき、

    FORTRANは上から(FORMAT文が先頭に来た場合は、そこの部分はとばされるけど)実行し
    STOPで止まります(プログラムの終わりにENDがはいる)

    COBOLの場合は、手続き部(PROCEDURE DIVISION)の上から行い、STOP RUNでとまります

    Javaは、実行時に実行するクラスを指定し、そのクラスの
      public static void main(String args[])を実行します

    Cははじめに、main関数を実行します

    Perl、BASIC、シェルスクリプトなどは、実行文を上から実行します

 というように、プログラムの一番初めに行うところを確認します。




■HelloWorldの意義

 このように、言語を覚えるには、まず、

     ・処理の書き方(書く場所など)―まず、一例文でよい。こまかいのは、あとで
     ・コメントの書き方
     ・実行開始ポイント・終了箇所

 を確認する必要があります。

 でも、それをマニュアルで確認してもわかりにくいです。
 そこで、上記のエッセンスをまとめて書いたものとして、HelloWorldを出力するサンプルプログラムで、上記の感触をつかむことになります。




 次回は、「(2)処理で扱えるデータとその宣言の仕方について」について



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

失われた20年-ソフト業界は変わったのか? その16:2000年ごろ(1)。

2007-10-27 22:02:39 | 土日シリーズ

20年位前、1980年代終わりごろから、最近まで、ソフト業界とかその周辺の変遷について、特にソフト開発の立場を中心に見て行く、土日シリーズ「失われた20年-ソフト業界は変わったのか?」その第16回目。

 今回から2000年ごろ(1998後半から2003年くらい)です。今日はその1回目-概論




■ネットバブルの2000年

 2000年ごろというと、ちょうどネットバブルのころです。
 このころから、インターネットのいろいろなサービスが一気に始まったころです。
 WebサイトでもCGIなどが使われ、集金代行も充実してきたことにより、ECサイトなども多くで出しました。

 「おんりーいえすたでぃ」っていうかんじなんだけど、もう、今の現実とはちょっとはなれてしまった、90年代バブルのような時代です(^^)
 ビットバレーでしたっけ・・
 渋谷中心の会社が話題になった時代ですよね




■WindowsとLinuxと・・・

 WindowsはWindows98とNTがさかんになってきましたが、この時期、3大ディストリビューター、RedHat,tarbolinux,LASER5が出揃い、さらに、Kondaraなどもでて、Linuxの隆盛期を迎えます。

 ただし、この時代のLinuxディストリと、今のディストリではちょと違う気がします。そんなことも、今後各論で書いていきたいと思います。




■開発はVC++,Java、方法論はUML

 開発の中心はVC++とJavaになっていきます。方法論としては、UMLかな・・
 羽生田氏、本位田先生が有名な時代??




ま、かんたんですが、こんなかんじで、あの2000年ころについて書いていきたいと思います。

P.S 2001年が、あの9.11テロですよね。あの時代です。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

いろんなコンピューター言語の覚え方:その3 覚える手順。

2007-10-21 23:41:59 | 土日シリーズ

 あたらしい土日シリーズ「いろんなコンピューター言語の覚え方」、前回は、コンピューター言語の体系というお話でした。
 コンピューターは、入力→(情報/データの)処理→出力という具合にながれますが、それを言語体系に合わせて考えると、こんなかんじ


・(さまざまなデバイスからの)入力
    画面
    ファイル
    ネットワーク
     :

  ↓

・処理
   ・変数宣言
      ・ある1つの値を宣言
         整数
         小数
         文字
         論理値
      ・複数の値を宣言
         配列
         (文字列)
         構造体
         ポインタ(1つの値でもOK,なんでもあり)

   ・処理命令
      ・処理命令
          ・演算子
          ・命令(関数・メソッド)
      ・制御文
          ・条件
          ・繰り返し
          ・ジャンプ

  ↓
・(さまざまなデバイスへの)出力
    画面
    ファイル
    ネットワーク
     :


今回はそれをもとに、覚え方の手順について考えてみたいと思います。




■覚え方の手順

 覚え方の手順としては、こんな感じかなあと思います。

(1)処理を開始するところについて、処理が終了するところについて
     処理の書式
     コメントの書式
     実行開始ポイント・終了箇所

(2)処理で扱えるデータとその宣言の仕方について
     変数について(整数、小数、文字、論理値など)
     変数の初期化について
     定数について
     複数の変数をまとめてあつかう
         配列とポインタ
         構造体・クラスなど

(3)宣言したデータの処理方法
     整数・小数の演算子、処理(メソッド・関数など)
     文字・文字列の演算子、処理(メソッド・関数など)
     論理値・その他の演算子、処理(メソッド・関数など)
     配列の処理など
     (ポインタの処理など=言語によってはない)
     構造体・クラスの処理など

(4)制御文
     条件
     繰り返し
     ジャンプ

(5)入出力処理
     ファイル
     画面
     DB
     ネットワーク

(6)複数の処理を作ってまとめる
     分割コンパイルなど




 次回から、上記の手順にそって、具体的な内容を書いていきたいと思います。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

失われた20年-ソフト業界は変わったのか? その15:1995年ごろ(8)

2007-10-20 23:56:38 | 土日シリーズ

20年位前、1980年代終わりごろから、最近まで、ソフト業界とかその周辺の変遷について、特にソフト開発の立場を中心に見て行く、土日シリーズ「失われた20年-ソフト業界は変わったのか?」その第15回目。

 今、1995~99年までについてです。今回は、そのころのネットワークのお話です。




 1990年代後半のネットワークはちょうど、パソコン通信から、インターネットに変わり始めた時期です。

 1994年に、たしかNetscape Navigatorができて、Webがだんだん。。というより、インターネットは、メールから入っていったと思います。

 PC-VANやNIFTYが、パソコン通信のIDのあとに、@pcvan.or.jpだったっけ?みたいな感じで@をつけて、インターネットにメールが遅れるサービスとかはじめて、それからだんだんとという感じだったと思います。

 その後、Web、そしてCGIとなっていきます。
 ちなみに、「千葉麗子とつくるインターネットホームページ」という本がでたのが、1996年ですから。。(千葉麗子さんは、さいきん、ヨガのせんせい??ですけど ^^;)

 当時は、ネットもモデムでつないで、モデムにプロバイダの案内が入っているという感じでした。多くはクレジットカード決済だったのですが、Internet Winは、銀行引き落としもやっていたなんていうことから(それ以外の理由もあるだろうけど)、Internet Winがはやりました。
(その後InterNetWinは、つい最近、突如、おわってしまった >_<!)

 商用的にも、はじめ、Internetを使うということは、あまり安全性などからかんがえていなかったけど、このころから、急に流行りだしたと思います。

 ま、簡単ですけど、当時のネット(1996年から98年ごろは)、こんなかんじですかね。。(^^;)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

CCNA1のお勉強をゆるーくやってみる。その5:IPアドレスからAND・ORまで。

2007-10-15 23:25:00 | 土日シリーズ

シリーズ「CCNA1のお勉強をゆるーくやってみる」です。

今日は、ANDとORの話・・・をするために、まずIPアドレスから・・・




■IPアドレスとドット区切り10進

 インターネットアドレスは、32ビットで表します。
 ただ、32ビットを2進数で並べたらわけわかんないので、
 8ビットづつ、4個の束に分けます。

 そして、それぞれの8ビットを10進数にして、ドット(.)で
つないだものを、「ドット区切り10進表記」とよびます。

 192.168.0.1などです。




■IPアドレスとサブネットマスク

 世の中には、A社のネットワーク、B社のネットワークと、さまざまなネットワークがあります。
 そして、そのネットワークの中に、いくつかのコンピューター(これをホストと呼びましょうか)がつながっています。
 ということは、ネットワークがあって、その中にホストがあるわけです。

 IPアドレスで、コンピューターが一意に決められるわけなのですが、
ということは、IPアドレスもネットワークを表す部分(ネットワーク部)と、そのなかのコンピューターを表すところ(ホスト部)があります。

 32ビットのうち、8ないし16ないし24ビットは、ネットワーク部と呼ばれ、のこりの部分がホスト部と呼ばれます。
 ネットワーク部が、8ビットがクラスA、16ビットがクラスB、24ビットがクラスCと呼ばれます。




■ネットワーク部だけ取り出す方法

 このとき、ネットワーク部を取り出したいという場合があります。
 どうするか。。

 取り出したいネットワーク部の部分のビットに1をたて、(これをサブネットマスクといいます)それを、ブール論理の論理積というのをとると、できます。




■ブール論理

 で、そのブール論理と呼ばれるものには、
   NOT
   AND(論理積)
   OR (論理和)
 などがあります。(ちなみにNANDとORがあると、全部表現できるらしいです)




次回から、もちょっとネットワークしている話になります。




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

いろんなコンピューター言語の覚え方:その2 コンピューター言語構造の体系

2007-10-14 23:43:30 | 土日シリーズ

 先週からはじまった、あたらしい土日シリーズ「いろんなコンピューター言語の覚え方」、今日は、前回登場した、コンピューター言語の体系について、ちょっと詳しく書きたいと思います。




■コンピューター言語は、情報を処理するためにある。

 コンピューター言語というのは、情報を処理するためにあります。
 つまり、情報を処理させる手順・方法などを記述したのがコンピューター言語なわけです。

 ここで、情報処理というのは、さまざまな入力デバイスからデータを入力し、データを処理して、さまざまな入力デバイスに、処理結果を出力することです。

 ということは、コンピューター言語もそれに対応して、入力するための記述、処理するための記述、出力するための記述の部分があります。
 ここまでをまとめると、こんなかんじ

・(さまざまなデバイスからの)入力
    画面
    ファイル
    ネットワーク
     :

  ↓
・処理

  ↓
・(さまざまなデバイスへの)出力
    画面
    ファイル
    ネットワーク
     :




■処理について着目してみると・・・

 ここで、入力→処理→出力の処理について考えてみます。

 入力してきたデータは、プログラムの内部に一時的においておき、処理加工します。この処理のとき、いっぺんに処理できないので、処理と処理の間でも、一時的に処理結果(=データ)を置いておきます。なので、処理部分の記述は、一時的にデータを置いておく部分と、処理命令部分に分かれます。

 一時的に処理データを置く部分は、変数となるのですが、変数は、コンピューター言語によって、宣言したり(使う前に事前に書いたり)、宣言しなくて良かったりします。
 宣言する言語においては、変数として保存するデータによって、宣言が変わったりします。

  整数
  小数(実数)
  文字
  論理値

 などが、1つの変数で1つの値をもつもので、

 複数の値を1つの変数としてまとめて宣言するものとしては、

  配列=同じ種類のものを、領域を決めて宣言
  構造体=ちがう種類のものを、1つのものにまとめて宣言

 があります。文字の配列が文字列となりますが、文字列の場合は、違う宣言をするものもあります。

 なお、ポインタを宣言できる言語があり、これは、なんでもありです。ただし、同じ種類のものを、「はじめに領域をきめず」処理中に、大きさを決めて使う場合に多いです。

 ここまでをまとめると、こんなかんじ。



・(さまざまなデバイスからの)入力
    画面
    ファイル
    ネットワーク
     :

  ↓
・処理
   ・変数宣言
      ・ある1つの値を宣言
         整数
         小数
         文字
         論理値
      ・複数の値を宣言
         配列
         (文字列)
         構造体
         ポインタ(1つの値でもOK,なんでもあり)

   ・処理命令

  ↓
・(さまざまなデバイスへの)出力
    画面
    ファイル
    ネットワーク
     :





■処理命令について詳しく見ると。。

 上記処理において、変数宣言について、詳しく見ましたけど、処理について考えると、順番にやる処理と、順番にやらない(条件分岐、ジャンプなど)ものがあります。順番にやらないものを制御文と呼びます。

 制御文には、条件制御、繰り返し制御、単純なジャンプなどがあります。例外は、ジャンプ的な性格を持っている??かな。

 順番にやる処理の場合は、演算子という、+-*/みたいなものと、関数やメソッドのような、処理命令を書くものがあります。
 なお、処理命令においては、変数のときにみた、整数、小数、文字(文字列)を操作する命令があり、それらを変換する処理もあります。
 演算子の場合は、整数、小数、文字(文字列)どれかしか操作できないものもあるし、(文字列の連結の . など)意味が違う場合もあります(JavaやJavaScriptの+ の文字の場合と数字の場合)

ここまでをまとめると、こんなかんじ


・(さまざまなデバイスからの)入力
    画面
    ファイル
    ネットワーク
     :

  ↓
・処理
   ・変数宣言
      ・ある1つの値を宣言
         整数
         小数
         文字
         論理値
      ・複数の値を宣言
         配列
         (文字列)
         構造体
         ポインタ(1つの値でもOK,なんでもあり)

   ・処理命令
      ・処理命令
          ・演算子
          ・命令(関数・メソッド)
      ・制御文
          ・条件
          ・繰り返し
          ・ジャンプ

  ↓
・(さまざまなデバイスへの)出力
    画面
    ファイル
    ネットワーク
     :




次回は、この体系をもとに、どのように、言語を理解していったらいいかについて考えてみたいと思います。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

失われた20年-ソフト業界は変わったのか? その14:1995年ごろ(7)

2007-10-13 21:25:24 | 土日シリーズ

20年位前、1980年代終わりごろから、最近まで、ソフト業界とかその周辺の変遷について、特にソフト開発の立場を中心に見て行く、土日シリーズ「失われた20年-ソフト業界は変わったのか?」その第14回目。

 今、1995~99年までについてです。今回は、そのころの開発方法論、その4 オブジェクト指向です。




■OMTとか、SmallTalkとか

 オブジェクト指向は、データと業務(メソッド)をカプセル化により、局所化することによって、修正箇所を局所化でき、また、ものをベースにしているため、ものをクラスとしてとらえ、そこから実社会をモデル化して開発できると「された」!

 しかし、いま「された」!に「」をつけたように、現代においては、これはもう、要求文の品詞レベルから、Javaのプログラミングまで一貫した流れになるけど、当時は、そこまではっきりしていなかった。

 small talkを使っていればオブジェクト指向とされるような風潮もあった。

 当時のはやりは、設計分野においてはOMTであり、手元にある「オブジェクト指向方法論OMT」が、1992年の出版であることから、95年の当時には、その考えは知られていたといえるが、実際には、うーん、どーなんでしょうねえ。。

 ま、当時から、羽生田氏と本位田氏は知られていたことは、たしかだ。




■九州大学病院

 ここで、問題になったのが、九州大学病院の開発だ。
 当時(たしか1997年か98年)IBMが開発した、九州大学病院のシステム、当初はオブジェクト指向でやるという話だったが、実際にはこれが。。。。

 結局、VBで納品することになった。

 このとき、大量のオブジェクト指向プログラマ、SEが導入されたが、それでも結局、SmallTalkではなく、VBで納品されたということは、オブジェクト指向開発に、冷や水を浴びせる格好となった。




■どうしてこうなったのか

 「どうしてこうなったのか」をウィリアムのいたずら的に推測すると、当時のオブジェクト指向開発方法論の未熟さであろう。

 現在なら、要求文を動詞にわけ、それに対するメソッドを書き、その動詞が対象とする「もの」(おもに名詞)をクラスとして(原則)、その中にメソッドを書き込むといった、一連の流れができている。

 しかし、当時はその流れがあいまいだった。
 この流れはJavaの登場と、2000年以降のUMLと仕様書、プログラムが融合することによってできる。




 きょうはここまで



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

CCNA1のお勉強をゆるーくやってみる。その4:2進数とか10進数とか

2007-10-10 19:42:25 | 土日シリーズ

 シリーズ「CCNA1のお勉強をゆるーくやってみる」です。
 今回は2進数とか10進数とか。。




■ビットのON、OFFとは

 一般に、コンピューターは、ON、OFFによる2進数で表現するといわれる。

 で、問題は、このON,OFFだけど、コンデンサなど、電気をためとくところ(こいつがメモリになる)で、電圧が1ボルトだったらON,0ボルトだったらOFFということにしている。

 じゃあ、途中の電圧はありえないのか?というと、急に電圧が上がるような素子を使っていると思った(なので、極超短時間で切り替わると思った)




■2進から16進、16進から2進

 これはかんたん
 2進を下から4桁ごとにくぎって、

  1桁目+2*2桁目+4*3桁目+8*4桁目

(各桁は0か1)で、16進をならべていく。

 16進から2進は、逆に16進を4桁ごとに2進にして、つなげていく。




■2進から10進、10進から2進

ここのサイトが分かりやすかった

初級シスアド講座 10進数と2進数の相互変換
http://www.pursue.ne.jp/jouhousyo/sysad/sysad010.htm





次回は、ANDとかORとか


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Hello World程度のデータベース(その39:実践編 配置)

2007-09-30 22:27:19 | 土日シリーズ

情報処理とは何から、データベースの基本的な話(情報処理試験のデータベーススペシャリスト程度の話まで)を書く、土日のシリーズ「Hello World程度のデータベース」です。

 このシリーズのはじめは、理論的なことを書いてきて、今は、実際にデータベースアクセスプログラムを書いてみましょう!ということになりました。

 一連の手順はここにあって

 今日は、最後の「配置と確認」について書きます。




■今まで作った物+必要なもののまとめ

今まで作ったものは、
  ・JSPファイルindex.jsp
  ・サーブレットHelloWorld.class
  ・DBアクセス DbAccess.class

です。なお、テーブルは、ここで作成したのですでにできているものとします。
 さらに、インストールについても、おわっているものとします。

さらに必要なものは、
   ・JDBCのライブラリ Connector/J 5.0
   ・web.xml
です。JDBCのライブラリについては書きましたので、ここでは、今まで説明していなかった、web.xmlについて説明します。




■web.xml

 これは、サーブレットをどこにおいて、どのように呼び出すかを指定するものです。
 こんな感じで書きます。

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
    <servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>HelloWorld</servlet-class>
     </servlet>
    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/servlet/HelloWorld</url-pattern>
    </servlet-mapping>
</web-app>

(上記 < > ¥は、本当は半角)
なお、上記はTomcat6.0用になってます。




■配置

 で、置き場所ですが、Tomcatのホームから見て、こんなふうに配置しました

Tomcatのホーム
  |- lib(フォルダ)
  |   |
  |    *-mysql-connector-java-5.0.7-bin.jar (JDBCライブラリ)    
    |
    *-  webapps(フォルダ)
          |
          *-zikken(フォルダ)
       |
              |-index.jsp
       |
              *-WEB-INF (フォルダ)
         |
         |-web.xml
         |
         *-classes (フォルダ)
           |-HelloWorld.class
             |
             *-db (フォルダ)
                         |
                         *-DbAccess.class            


 すでに入っているファイルについては書いていません。今回新しく入れるものについてです。
 Tomcat6.0には、commonフォルダがなかったので、libの中にMySQLのJDBCライブラリを入れてしまいました。
 今回のプログラムは、zikkenというフォルダの中に入れました(これ以外の名前でもOKです)




■確認

ローカルに以上のようにファイルを入れたら、Tomcatを起動して、
(Vistaの人は、Configure Tomcatを「管理者で実行」して、そうでない人はふつうにConfigure Tomcatを起動し、スタートしてください)

ブラウザから
http://127.0.0.1:8080/zikken/index.jsp
を呼び出し、Helloと入れると、下の結果にWorldとかかれます。

なお、index.jspのformタグのActionパラメタが、"http://127.0.0.1:8080/zikken/servlet/HelloWorld"になっていることを確認してください。
(そうでないと、サーブレットを呼び出せませんので)




以上で、「Hello World程度のデータベース」はおしまいです。
来週から、新シリーズをはじめます。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

失われた20年-ソフト業界は変わったのか? その12:1995年ごろ(5)

2007-09-29 23:15:07 | 土日シリーズ

20年位前、1980年代終わりごろから、最近まで、ソフト業界とかその周辺の変遷について、特にソフト開発の立場を中心に見て行く、土日シリーズ「失われた20年-ソフト業界は変わったのか?」その第12回目。

 今、1995~99年までについてです。今回は、そのころの開発方法論、その2 構造化分析やDFDについてです。




■情報関連図からDFDに

 1980年代から、90年代のはじめころまで、COBOLベースの開発のころは、要求仕様レベルで、機能を書くとき、情報関連図(FIO図っていうのと同じかな?)で書いてました。機能があって、入力、出力を書くものです。

 で、これをもっと、機能とデータをはっきり分け、他人でも検証可能な形にしたDFD(データフローダイアグラム)が盛んにつかわれるようになります。




■デマルコの構造化分析
 で、このDFD、デマルコが提唱したものです。
 今、デマルコっていうと、プロジェクト管理のほうで有名だけど(ピープルウエアをだしたので)
 その当時は、構造化分析、DFDの提唱者として有名で、そのDFDの書き方や、構造化分析に関しては、構造化分析とシステム仕様に書かれています。

 この構造化分析とシステム仕様は、はっきりいって名著だと思います。オブジェクト指向云々とか言っている人でも読むべきだとは思います。

 構造化分析は、まず、今回開発するシステムに対して、外部からの入出力を明確にし、今回作るシステムをおおきな楕円でかいて、そこに入出力を書きます。これをコンテキストダイアグラムといいます。
 そして、システムを分割し、分割した1つ1つの機能をプロセスといいます(楕円で書きます)。そして、そのプロセスへの入出力を書いていくわけですが、上位機能で出力しているのに分割した下位機能でその出力が出てこなかったらおかしいという感じにチェックができます。

 プロセスというのは、動詞なわけです。機能ですから。
 ということで、要件定義から動詞を取り出し、それを機能化して、その動詞に対する目的語、主語などを分析することで入出力が明確化するという、要求仕様に対するツールとなっている点で、このDFDは優れたものなわけです。




■DOAに、受け継がれていく

 構造化分析は、これと、ER図を合わせて、DOA開発で使われていきます。
 DOAは、DOA+という形で、いまでも残っている開発方法論であり、DFDも、IBMの4つ組セットだっけ?というかたちで、DFDが残っています。




ってことで、次回は、そのDOAとER図について書いてみたいと思います。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Hello World程度のデータベース(その38:実践編 JSP作成)

2007-09-23 14:31:50 | 土日シリーズ

情報処理とは何から、データベースの基本的な話(情報処理試験のデータベーススペシャリスト程度の話まで)を書く、土日のシリーズ「Hello World程度のデータベース」です。

 このシリーズのはじめは、理論的なことを書いてきて、今は、実際にデータベースアクセスプログラムを書いてみましょう!ということになりました。

 一連の手順はここに書いてあって、今回は、「JSP作成」です




■今回作るものの仕様

 で、今回作るものの仕様についてですが、今回は、以下のとおり

・キーワードを入力でき

・ボタンが押されたら、先週のサーブレットを呼び出し、
  (入力された値を、パラメータkeywordとして渡す)

・そのサーブレットで、結果をセッションにいれてくるから、その値を表示する
  (セッションに、valとして入れている。
   なお、入力されたkeywordも入ってくるので、それもだす)

・ファイル名はindex.jsp

・呼び出しサーブレットは
  http://127.0.0.1:8080/zikken/servlet/HelloWorld





■ソース

 で、ソースは、こんなかんじ

<%
	String keyword = (String)session.getAttribute("keyword");
	if ( keyword	==	null)
	{
		keyword		=	"";
	}
	String val = (String)session.getAttribute("val");
	if ( val	==null)
	{
		val	=	"";
	}
%>

<html>
<body>

<form method="POST" Action="http://127.0.0.1:8080/zikken/servlet/HelloWorld">
キーワード:
<input type="text" name="keyword" value=<%=keyword%> >
<input type="submit" value="実行">
</form>
<BR>
結果:<%=val%>
</body>
</html>

(上記< > ¥は、本当は半角)




で、今回のJSPは、これでおしまい。

次回は、今まで作ってきたものを配置します。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする