2007年10月31日水曜日

計算機言語II:第5回

  • 実施日:2007-10-31(水)3限
  • 講義内容:クラスフィールド・クラスメソッド、配列
  • 配布資料(クラスフィールド・クラスメソッドは前回の資料を使用)
詳細は後で追記する予定

2007年10月29日月曜日

計算機言語I:第4回

(内容は後で追記します)

計算機言語II:第4回

  • 実施日:2007-10-24(水)3限
  • 講義内容:メモリ上でのオブジェクト、簡単なクラスの実装
  • 講義ノート1(前回公開済)、講義ノート2
(内容は後で追記します)

計算機言語I:第3回

(内容は後で追記します)

情報システム論:第3回

  • 実施日:2007-10-22(月)2限
  • 内容:インターネットの標準語・TCP/IP、IPアドレス
  • 講義ノート
(内容は後で追記します)

2007年10月17日水曜日

計算機言語II:第3回

  • 実施日:2007-10-17(水)3限
  • 講義内容:文字列(Stringクラス)
  • 講義ノート
この講義では、Javaにおけるクラスの典型例として、文字列を表すStringクラスを取り上げ、その使い方、内部の実装の一部について説明しました。これを通して、クラスというもののイメージをつかんでもらうのが目的です。

この講義でのポイントを整理しておきましょう。
  • クラスの記述(宣言)はフィールド(変数)とメソッド(関数)とから構成されている
  • クラスに属する値をオブジェクトと呼ぶ。オブジェクトは実行時にメモリ領域の割り付け+初期化を行うことで動的に生成される
  • オブジェクトの生成は、コンストラクタという特別なメソッドを呼び出すことで行われる。クラス宣言中では、コンストラクタはクラス名と同名で、返り値の宣言がないメソッドの形をしている
  • メソッド呼び出しは、構造体のメンバアクセスと同様、ドット演算子を用いて記述される
実行時のメモリ領域割り付けということから想像できる通り、オブジェクトとメモリアドレス参照(Cでのポインタ参照)とは大きな関わりがあります。来週は、今週の続きとして、この辺りから話をしていく予定です。

2007年10月15日月曜日

計算機言語I:第2回

  • 実施日:2007-10-15(月)5限
  • 講義内容:MLの式、型
  • 講義ノート
今回からMLの文法について説明を始めました。MLでプログラムを書き始めるのに必要な文法知識は、Cほど多くありません。今日の講義で説明した各種演算子に加え、次回以降で説明する組、リスト、関数の説明を行えば、一通りのプログラムは書けるようになります。

今回の講義では、MLとCとの文法の違いに重点を置いて説明しました。比較的簡単な内容の講義だったと思いますが、後の内容の基盤になりますので、整理のつもりで練習問題を解いてみて下さい。次回の講義の冒頭に解答例を示します。

情報システム論:第2回

  • 実施日:2007-10-15(月)2限
  • 講義内容:通信、ネットワーク、インターネット
  • 講義ノート
本講義の主題であるインターネットについて説明を始めました。今日はまず、この分野でよく使われる「通信」「ネットワーク」という用語の意味を整理し、それを基にインターネットとは何か、その歴史、インターネット接続の種類などについて説明しました。ポイントを簡単にまとめると、次のようになります。
  • 機器同士の「会話」が通信であり、「会話」のやり方をプロトコルという
  • ネットワークは、互いに通信できる機器が複数接続された「網」
  • LANとWANの違い、インターネット=inter(相互の)+net(ネットワーク)
講義中に少しだけ触れましたが、インターネットは単にパソコンなどの機器が接続されたネットワークではありません。繋がり方に制限があります。次回はその辺から話をしていく予定です。

計算機言語II:第2回

この講義では、Java言語の文法のうちメソッド内部に関する部分について説明を行いました。メソッドはC言語の関数に似ており、Javaでは文法もC言語に非常に似ています。そのため、上の講義ノートでは一通りまとめてありますが、講義ではC言語との違いについてのみ重点的に説明しました。主な違いは次のようになります。
  • 基本型(byte, booleanなどが新設。型の意味がアーキテクチャ非依存)
  • 条件式の型がboolean
  • for文におけるループ変数の宣言方法、その有効範囲
次週では、この講義で少しだけ登場した、文字列を表すクラスStringを題材にして、クラスとはどのようなものかについて話を始める予定です。

2007年10月5日金曜日

計算機言語II:第1回

今回は第1回目ということで、講義の概要を説明した後、この講義で取り上げるプログラミング言語Javaの特徴、動かし方などについてお話しました。Javaに代表されるオブジェクト指向プログラミング言語は、現代のプログラム開発において幅広く使われています。しかし、皆さんはこれまでCに代表される手続き型言語を学んでいますので、その点から言えば、発想の転換(手続き中心のプログラム開発からデータ中心のプログラム開発)が必要となり、馴染むまで少々苦労するように思われます。この講義では、Javaの全貌を紹介する(これは時間的に不可能です!)よりも、オブジェクト指向プログラミングとはどのようなものか、ご紹介することを中心にしたいと考えています。

上でも述べた通り、Javaの全貌を講義中にご紹介するのは時間的に不可能です。プリント等で可能な限り補足はしますが、それとは別に、各自で1冊、Javaの解説書を購入し、講義と並行して利用することを強くお進めします。Javaの解説書はたくさん出版されていますので、どれか自分に合いそうなものを選んでください。適切な本を選べるようになることも、社会に出る前の練習だと思ってください。

2007年10月1日月曜日

計算機言語I:第1回

  • 2007-10-01(月)5限
  • 講義内容:導入、プログラミング言語MLの概要、この講義の狙い
  • 講義ノート
第1回目の講義ということで、この講義の狙いを中心に、概要をお話しました。

この講義の中心は、Standard MLというプログラミング言語の紹介、そして、Standard ML を道具として再帰アルゴリズムを理解することです。Standard MLはCに比べて文法が習得しやすく、再帰やリスト、木、二分木などを理解するのに適しています。Cが苦手だと言う人も、リセットのつもりで取り組んでもらえればと思います。また、型推論、高階関数、多態など、プログラミング言語に関する研究の成果がいろいろ盛り込まれた言語であり、プログラミングが得意な人でも興味深い話がいろいろ出てくるのではないかと思います。

個人的な経験や認識から言えば、再帰は、プログラムが書けるようになるかどうかの大きな関門の一つです。アルゴリズムそのものも重要ですが、これを理解できると、プログラムを書く上でのある種のエッセンスが得られると思っています。この半期、実験IIとともに、皆さんとは、再帰を通して接する機会が増えます。是非、この半期で再帰を理解して頂ければと思います。

情報システム論:第1回

  • 2007-10-01(月)2限
  • 講義内容:導入、情報システムとは、情報システムとインターネットとの関わり
  • 講義ノート
第1回の講義ということで、この講義の概要をお話しました。講義中でお話しした通り、情報システム一般について論じても皆さんにとって面白いか疑問がありますので、現代の情報システムに欠かせない技術であるインターネットについてお話していこうと思っています。ただし、単なるインターネットの使い方ではなく、基盤技術にまで踏み込んで話をします。また、その基盤技術の話を基にして、セキュリティについてもお話していく予定です。

講義の最後でも述べましたが、インターネットの技術は進歩が早く、皆さんが社会に出るときには、この講義の話はもう古くなっているかもしれません。インターネットを使うには、そしてインターネットで身を守るには、ある程度技術を知っている必要があります。それと同時に、普段から、日々のニュースや記事などの中からインターネットに関するものに気を留めて注意しておく必要があります。その訓練という意味で、この半年間、インターネットに関するニュース、記事、本、出来事などに注意しておいて、自分が興味を持ったものを記録しておいて下さい。

それでは、半年の間ですが、よろしくお願いします。