計算機言語

1. URL

http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/

2. スケジュール

  2011 年度 計算機言語スケジュール (予定)
  
  ※ スケジュール (休講日) が変更になっています
  
  10/ 5(水)             H1 ソフトウェア開発の問題
  10/12(水)             H2 プログラム言語
                        H3 プログラム言語と処理系
  10/19(水)             L0 構文記述
  10/26(水)             L1 言語の構成要素
  11/ 2(水)             L2 式
  11/ 9(水)             休講
  11/16(水)             L3 文
  11/30(水)             L4 データ型
  12/ 7(水)             L5 スコープ
  12/14(水)             L6 手続き・関数
  12/21(水)             L7 再帰呼び出し
   1/11(水)             L8 ブロック構造言語の実現
   1/18(水)             L9 抽象データ型   
   1/25(水)             L10 オブジェクト指向プログラミング
   2/1(水)              期末試験 @ G516 (予定)

3. 講義資料/ビデオ (ビデオの視聴にはパスワードが必要です)

4. 質問・要望・感想など (10/5 講義より)

質問

- H1のHって何ですか?

  History だと思います。

- OSがDebianである理由を教えてください。個人的にはArch Linuxをお勧め しますが。Gentooはコンパイルが…。

  GPL (GNU General Public License) に近い DFSG (Debian Free Software
  Guidelines) を採用していること、Debian ポリシーマニュアルが明文化され
  ているからです。
  
  Debian ポリシーマニュアル 
  http://www.debian.or.jp/community/devel/debian-policy-ja/policy.ja.html/

- Windowsは使いますか?

  基本的に使いません。(他の人が作成した) Office 文書を編集する必要があ
  る時くらいです。

- この学科を出たら、やはりPC系の仕事につかなければもったいないでしょうか…?

  そうですね。情報通信分野でぜひ専門性を活かしてほしいです。

- この授業は楽しいですか?

  そうあるよう努力します。

- ノーネクタイはこだわりですか?

  TPO (和製英語ですが) だと思います。

- ビデオだけで授業の内容を把握することは可能でしょうか?

  可能でしょうが、おすすめしません。ライブ講義をおすすめします。

- ビデオを見れるのはありがたいと思いました。ビデオは個人利用のみ許可 ということでよろしいでしょうか?

  どういう意味ですか? いわゆる (他のコンテンツと同様に) 著作権法に従い
  ます。

- プログラミングに数学はどの程度必要ですか?また、どの分野が必要ですか?

  数学的な発想は非常に重要だと思います。全部役立つと思いますが、特に、
  離散数学、確率統計、集合論が役立つと思います。

- プログラムとしてどのくらいプログラミング言語を身につけたほうが良いでしょうか

  「自分が欲しいソフトウェアは自分で作れる」くらいに修得してほしいです。

- ミニレポートについて詳しく

- ミニレポートについて、レポートの出される回数や出されてから提出まで の期間などを教えていただけないでしょうか?

- ミニレポートはどのくらいのペースで出されますか?あと難しいですか?

- 成績評価の、ミニレポートと試験の割合はどれくらいですか?あと、ミニレ ポートは全部で何回くらい出されますか?

- 期末試験とミニレポートの成績の割合はどれくらいですか?

  出題回数は 4〜5 回程度、出題から提出まで 2 週間程度を予定しています。
  単純な問題は出さないつもりです。配点比率はあえて公表しません。

- 期末試験はどのような問いが出題されますか?

  過去の期末試験をすべてどこかのタイミングで公開します。

- 先生の画面の上の方に表示されている情報が気になります。

  計算機のもろもろのステータスです。

- 先生は変数や関数などの名前はどのようにして決めていますか。

  基本的に GNU Coding Standards に従っています。
  
  GNU Coding Standards
  http://www.gnu.org/prep/standards/standards.html#Names

- 好きな言語,嫌いな言語は?

  好きな言語は Perl、嫌いな言語は BASIC です。

- 普段使ってるWebブラウザは何ですか?

  chromium です。

- 有ったら便利なツールは何ですか?

  私が普段使っているツールを以下で紹介しています。
  
  100 Tools for Your Joyful Computer Life
  http://www.ispl.jp/~oosaki/research/100-tools/

- Book Mark Took Bar のWiFisの意味

  スペースがもったいないので略称です。

- 僕はハロプロが好きですけど、どうですか?

  ほとんど知りません。

- 大学院の入試は学部の入試よりも厳しいですか。

  専門的なので内容は学部入試よりはるかに難しいです。倍率は学部入試より
  はるかに低いです。

- 大学生活って何ですか?

  時間を好きなように贅沢に使える至福の時。

その他

- パワーポイントを使った授業は強烈にねむたいです

- プロジェクタのチカチカが気になります。

- 人月の神話の話ですか…。

好きな言語

  21 C
  13 Perl
   4 Java
   3 Pascal
   2 C++
   1 Python
   1 Lisp
   1 HTML
   1 C#
   1 Haskell

嫌いな言語

  31 Pascal
   5 C
   3 CASL
   2 Perl
   1 PHP
   1 Java
   1 C++

5. 質問・要望・感想など (10/12 講義より)

質問

- C、java、perlはそれぞれどんなプログラムを書くのに向いていますか?

  それぞれスピード重視、大規模、プロトタイピングに向いていると思います。

- 最近、Googleが開発しているGO言語やDart言語について教えてください

  Go は入門記事を読みました。Dart も調べてみます。

- 何種類ぐらいの言語を使えるようになるのが理想ですか?

  アセンブラ、C、Java、スクリプト言語が使えれば十分でしょう。

- C→Hの具体例を教えて下さい

  インターフェースビルダとか、GP (Genetic Programming) とか。

- ゲームを作るのに向いてる言語は何ですか?

  ゲームの種類によるでしょうね。高速性が求められるなら C/C++ でしょう。

- 「PPTの理解」はどの程度の理解が求められますか?H1.3のスライドとテキス トの食い違いはどちらが正しいのですか?

  他人に説明できるくらいに理解してください。PowerPoint ファイルの 1:11
  は11:1 の間違いです。

- ボトムアップ式のプログラムはできるのですか?

  はい。

- 使う言語は数種類にしぼって、いろいろ手を出すべきではないのですか?

  そう思います。プログラム言語に限らず、万能を目指すのではなく、スペシャ
  リストを目指すほうがいいでしょう。

- 理系は就職で院に行ってないとキツいと思いますが、大学と大学院でどちら が評価されやすいのですか?例えば、阪大から東大の院に行った場合など

  学歴自体それほど意味がないと思います。どんな専門性を持っているか、でしょう。

- 大学院の修士課程や博士課程から、海外に行ってコンピューターサイエンス を学ぶのはどうですか?

  いいと思います。ぜひチャレンジしてください。

- プログラムを組んで計算をさせるのではなく、CGなどをいじれる技術が欲し いのですが、そういうのは一生やらないんですか?

  どういう技術をイメージしていますか? クリエータ向けの話はやりません。
  研究で画像処理はやっている研究室もあります。

- 僕たちは平均いくつぐらいの言語を知っていると思いますか?

  Pascal、C、CASL + α くらい?

- 「目grep」についでどう思いますか?

  機械が得意なことは機械にやらせましょう。

- Twitterについて(Twitterのシステムが流行している現状など)どう思います か?

  新しいメディアとして可能性はあると思います。その一方、「人とつながっ
  てないと不安」という人が多いのはどうかな……と思います。

- この先、Perlを使ってプログラムを書くことはありますか?

  演習でやると思います。

- HTML5って何が魅力なんですか?

  私も詳しく知りませんが、W3C のドキュメントに解説があります。
  HTML5 differences from HTML4
  http://dev.w3.org/html5/html4-differences/#apis

- 眠気を断ついい方法などが経験上あれば教えて下さい。授業が退屈という意 味ではありません

  早寝早起と、たくさん食べすぎないことかな?

- プログラミング言語を作ったことがありますか?

  簡単なアセンブラ、数式処理、コンパイラ、トランスレータはあります。最
  近の研究でネットワーク型の新しいプログラミングモデルを作りました。

- 医学と工学(情報含め)の連携は将来どうなると思いますか?

  より重要になると思います。

- 情報系の先生から見てiPhone4sはどう思いますか?

  あまり詳しく知りません。プロプラエタリ (proprietary) なものが好きじゃ
  ないので。

- Perlが好きな理由を教えて下さい

  生産性が高いのが一番の理由です。今後の講義でもおいおい話します。

- BASICはなぜ嫌いなのですか?

  言語構造が汚い (ugly) なのが一番の理由です。FORTRAN や ALGOL60 の表層
  だけ真似て、それらの哲学を学ばなかったのだと思います。

- どのようにEmacsのショートカットを習得しましたか?またどれくらい時間が かかりましたか?

  Richard Stallman の本、雑誌の記事と、M-x apropos です。2〜3 年くらい
  で慣れたと思います。

- 英語で書かれた利用規約やライセンスは最後まで読みますか?

  読む時も、読まない時もあります。

- スティーブ・ジョブズやAppleに思い入れがあれば教えて下さい

  製品発表のプレゼンテーション技術や、スタンフォード大学のスピーチに感
  動しました。プロプラエタリ (proprietary) なものが好きじゃないので、
  Apple 自体には思い入れはないです。

- ゲームを作ったりはしないのですか?

  マイコン少年の頃に、シューティングゲーム、シューティングゲーム用ライ
  ブラリ、オセロ、テトリス、ロールプレイングゲームなどは一通り作りました。

- 計算機言語の授業を担当されて何年目ですか?

  9 年目です。

- ずっと阪大で講義をされているんですか?

  はい。

- 結構本格的に音楽をされているようですが、レコーディングなどされていま すか?良ければどの録音機材や編集ソフトを使用しているかなどもお聞かせく ださい。

  ハードウェアシンセサイザやハードウェアシーケンサが好きです。あえて理
  由を挙げるなら、KISS (Keep It Simple, Stupid) の原則かなあ。

- サークルの後輩が一人やめました。どうすればいいですか?

  サークルを? 大学を?

- 今回の授業で「雑談ですけど」って何回言いましたか?

  覚えてません。

- オークションが好きなのですか?

  そうですね、よく使ってます。

- 結婚されていますか?

  はい。

作りたいプログラム

- 人力補助に強いエディタのようなもの

- 作成・更新したファイルの保存場所、日時などのリスト履歴

- その時思いついた雑多な物事を記録できるもので、関連付けがしやすくデー タを扱い易いもの(おすすめのものがあればお願いします)

  Emacs の org-mode と org-remember を愛用しています。

- 小さな画像処理システム

- 画像作成プログラム

- 画像をいじくる系のプログラム

- 軽い動画作成プログラム

  画像はただの二次元配列、動画はただの二次元配列の列なので、今持ってい
  る知識だけでもいろんなプログラムが書けますよ。

- いろいろなデータ構造の高速な実装

- 何かと便利なプログラム

- プログラミングを簡単にするプログラム

- 人生を無駄なく送るためのスケジューリングプログラム

- バイト先の個人塾で生徒、講師の担当を楽に配置できるプログラム

- フローチャート的なものからプログラムを作成してくれるプログラム

- 自分がよく使うソフトと似たようなものを自己流で作れるようになりたいです

  いいアプローチだと思います。私は、既存のソフトウェアの設定を変更して
  カスタマイズ → それでも物足らないのでソースコード修正 → それでも物
  足らないので自作、というパターンが多いです。

- Robocode

- より正確な翻訳プログラム

- Twitterでおおざっぱなnewsの中でkeywordを検索するプログラム

- Twitter関連アプリ

- ゲーム

- ゲームの思考ルーチン

- マリオ的なアクションゲーム等

- ゲームのプレイデータを集めるプログラム。スポーツではどんどんデータ化 が進んでいるのに、本来プログラムであるはずのゲームでデータ化が進んで いないのが非常に残念です。「競技としてのゲーム」の認知度が低いせいな のでしょうか

  面白い発想ですね。コントローラのデータは簡単に収集できるでしょうし、
  ゲーム側を変更できればもっといろんな情報が取れるでしょうね。

- 勝手に、株やFXで資産を増やしてくれるプログラム

- 情報を金に変える物

- 時系列を変えられるプログラム

要望

- PPTの間に出席表を回されると授業が聞きづらいです

- 黒字にオレンジ文字は読めません

その他

- Chromeのプラグインが頻繁にクラッシュします

- 作りたいというよりはイラレのようなお絵かきソフトがどうプログラムされ ているのか気になります

  tgif (20万行)、xfig (9.8 万行)、Dia (20 万行) あたりのソースコードを
  読んでみては?  もっと大規模なものなら、Inkscape とか。

- 学べば学ぶほどプログラミングが好きになれません。面白いプログラミング に出会いたいです

  たぶん、題材に興味が持てないんじゃないかな? 自分が作りたいもの (欲し
  いもの) を作るといいと思います。

6. 計算機言語 10/19(水) レポート課題

* 課題

以下は正しいメールアドレスの例である (RFC822 より抜粋)。メールアドレス を EBNF で記述せよ。

  A.  EXAMPLES
  
  A.1.  ADDRESSES
  
  A.1.1.  Alfred Neuman <Neuman@BBN-TENEXA>
  
  A.1.2.  Neuman@BBN-TENEXA
  
          These two "Alfred Neuman" examples have identical  seman-
     tics, as far as the operation of the local host's mail sending
     (distribution) program (also sometimes  called  its  "mailer")
     and  the remote host's mail protocol server are concerned.  In
     the first example, the  "Alfred  Neuman"  is  ignored  by  the
     mailer,  as "Neuman@BBN-TENEXA" completely specifies the reci-
     pient.  The second example contains  no  superfluous  informa-
     tion,  and,  again,  "Neuman@BBN-TENEXA" is the intended reci-
     pient.
  
     Note:  When the message crosses name-domain  boundaries,  then
            these specifications must be changed, so as to indicate
            the remainder of the hierarchy, starting with  the  top
            level.
  
  A.1.3.  "George, Ted" <Shared@Group.Arpanet>
  
          This form might be used to indicate that a single mailbox
     is  shared  by several users.  The quoted string is ignored by
     the originating host's mailer, because  "Shared@Group.Arpanet"
     completely specifies the destination mailbox.
  
  A.1.4.  Wilt . (the  Stilt) Chamberlain@NBA.US
  
          The "(the  Stilt)" is a comment, which is NOT included in
     the  destination  mailbox  address  handed  to the originating
     system's mailer.  The local-part of the address is the  string
     "Wilt.Chamberlain", with NO space between the first and second
     words.
  
  A.1.5.  Address Lists
  
  Gourmets:  Pompous Person <WhoZiWhatZit@Cordon-Bleu>,
             Childs@WGBH.Boston, Galloping Gourmet@
             ANT.Down-Under (Australian National Television),
             Cheapie@Discount-Liquors;,
    Cruisers:  Port@Portugal, Jones@SEA;,
      Another@Somewhere.SomeOrg
  
     This group list example points out the use of comments and the
     mixing of addresses and groups.

* 提出方法

11/2(水) 講義開始時に回収する。A4 数ページを目安に。様式は自由とする。

7. 質問・要望・感想など (10/19 講義より)

質問

- 現在多くのプログラミング言語がありますが、それらの多くに影響を与えた 言語というのはありますか?

  はい。以下のページを見ると面白いと思います。
  
  The History of Programming Languages
  http://oreilly.com/news/languageposter_0504.html

- この講義と併せて読んでおきたい参考書でおすすめのものはありますか?

- CやJavaを深く勉強するには、どのように何を学べばいいですか?

  大型図書館 (例:阪大図書館) か大型書店 (例: 紀伊国屋) に行って、面白そ
  うな本を片っ端から読むことをおすすめします。「計算機言語」に関する良
  い入門書 (和書) は残念ながらほとんどありません。

- PythonとRubyとPerlについてそれぞれどう思っていますか?

  基本的に Perl 一筋です。Python、Ruby は入門記事を読んだくらいの知識し
  かないです。

- 入門書のあるような有名なプログラミング言語はいくつくらいあるのですか?

  Amazon の「プログラム入門書」のカテゴリの上位 100 件を見ると、MATLAB、
  Java、C++、CUDA、Perl、PHP、C#、Objective-C、VBA、C、Visual Basic、
  Processing、COBOL、シェル、Fortran、JavaScript、CASL2、ARM (アセンブ
  ラ)、Emacs Lisp、Python ですね。総数はわかりませんが、100 くらいかなあ?
  
  本  コンピュータ・IT  プログラミング  プログラミング入門書
  http://www.amazon.co.jp/gp/search/ref=sr_nr_n_0?rh=n%3A465392%2Cn%3A%21465610%2Cn%3A466298%2Cn%3A492352%2Cn%3A525592&bbn=492352&ie=UTF8&qid=1319091466&rnid=492352

- 自分ではじめてソフトウェアを作るとしたら、どんなソフトウェアがおすす めですか?

  ちょっとした便利なツールがいいと思います。

- EmacsやLinuxのterminal commandなどの情報はどこで得て身につけたのです か。具体的なサイトがあったら教えてください

  学生〜大学院生の頃に、紀伊国屋で片っ端から本を買って読みました。雑誌
  や Web ページより、本をおすすめします。

- 市販されているゲームソフトのプログラムはだいたい何行くらいですか?

  少し前のゲームですが、Quake 3 v1.32 のソースコードが公開されているの
  で測ってみたら、約 50 万行でした。なので、今時のゲームなら大体 100 万
  行くらいじゃないかな?
  
  Quake 3 1.32 Source Code
  http://www.shacknews.com/file/7443/quake-3-132-source-code#

- 私もゲームを作りたいのですが、初めてゲームを作るのに一番手のつけやす いゲームジャンルは何ですか?

  何でもいいと思います。作りたいものを作りましょう。

- オセロを作ろうと思ったらどれくらい大変ですか?

  作る人のプログラミングのレベルにもよりますが、簡単なほうだと思います。
  こういう動画もありますね。
  
  【プログラミング】オセロを1時間で作ってみた【実況解説】
  http://www.nicovideo.jp/watch/sm8391299

- プログラミングがあまり好きじゃないんですけど、やばいですか?

  好き嫌い、得手不得手があって当然だから別にいいと思います。プログラミ
  ング以外で、自分の専門性を高めればいいと思います。

- インターネットショップのだいたいの構造の概要を教えてほしい

  基本的に、素朴に思いつく構造と同じです。
  
  my %zaiko = { book => 3, pencil => 4 };
  my %cart = {};
  while (<>) {
    my ($cmd, $item, $count) = split(/\s+/, $_);
    if ($cmd eq 'add') {
      if ($zaiko{$item} >= $count) {
        $cart{$item} += $count;
        $zaiko{$item} -= $count;
      } else {
        # display warining
      }
    } elsif ($cmd eq 'reset') {
       # clear cart
    } elsif ($cmd eq 'checkout') {
      last;
    }
  }
    
  みたいなプログラムを、複数ユーザで、暗号化した通信回線を使って、ユー
  ザを認証して、ステートレスな HTTP を使って、バックエンドにデータベー
  スを使って、インターフェースを非同期 HTTP (Ajax) を使って、広告やアイ
  テム推薦の機能を埋め込んで実装しているだけです。

- SMLをこれから先に使うことはありますか?

  講義・演習は使わないと思います。

- 情報関連の技術の中で、今最も注目されているものは何ですか?先生が注目し ている技術についてでもかまいません

  私が注目しているのは、人のコミュニティと、データ指向ネットワーク、ラ
  ンダム性を利用した情報通信です。

- 普段はどのような研究をなさっているんですか?

  ホームページで紹介しているのでぜひ見てみてください。
  
  Hiroyuki Ohsaki's Home Page
  http://www.ispl.jp/~oosaki/

- 某掲示板等で「ググれカス」と言われて、ググりましたが、満足に情報が得 られなかったとき、どうしたらいいですか?

  どんな情報ですか? 私なら、文献を調査するか、知ってそうな人に聞きます
  (もしくは検索方法が正しいか見直します)。

- どこの研究室がおすすめですか?

  今瀬研がイチオシです。

- 情報科学科とシステムと工学部の電子情報との違いはなんですか?

  私見ですが、情報 *だけ* やっているか、情報 *も* やっているかの違いだ
  と思います。

- この学科でプログラミングを学んだらどのような仕事につけますか?

- 卒業後の就職先でもやっぱりプログラミングを活用していくのでしょうか?

- この学科から公務員試験を受けた人はいますか?

  過去の卒業生の進路の情報が以下で公開されています。
  
  学生の進路
  http://www.ics.es.osaka-u.ac.jp/about/shuushokujoukyou.html
  
  卒業までに、どんな技術・能力を身につけられるか (もしくは今ある技術・
  能力をどれだけ伸ばすことができるか) がポイントでしょう。

- 大学院生の就活とはどのようなものなのでしょうか

  他大学と比べると圧倒的に恵まれていますが、ここ数年はそれなりに厳しい
  (場合もある) ようです。

- アルゴリズムはどうすれば身に付きますか?

  専門書を読みましょう。

- アルゴリズムで食べていくにはどのような勉強を続けると続けるとよいですか?

  難しいですね。大学で研究者になるくらいしか道がないと思います。

- ゲーム業界に行きたいのですが、グラフィック技術も身につけるべきでしょ うか?(プレゼン等のため)

  デザイン能力という意味かな? あればあったほうがいいけど、それよりむし
  ろ自分の専門性を伸ばすほうがいいと思います。

- 特にあれば良いと思われる資格があれば教えてください

- 情報関係の資格は取っておいたほうが良いのですか?

  阪大の大学院卒なら、弁理士くらいの (特に取得が難しい) 資格でなければ
  持っていても話のネタになるくらいだと思います。
  
  私も学生の頃、情報処理一種とネットワークスペシャリストを取りました
  が……。

- Linuxはいろいろありすぎて、自分に合うのを見つけるのに参考になるものは ありますか?

  Debian を使いましょう。

- GPLv3は、OSSコミュニティから激しく批判されていますが、どう思いますか?

  私は Richard Stallman の思想を支持します。「自由」を重視しないオープ
  ンソースソフトウェアのコミュニティはどうかな……と思います。

- Perlの一番便利だと思うモジュールはなんですか?

  一番は難しいですね。私がよく使っているモジュールのランキングを紹介し
  ます。Smart::Comments、HTML::TreeBuilder、WWW::Mechanize あたりは特に
  素晴しいモジュールですね。
  
    121 use strict;
    114 use File::Basename;
    102 use Getopt::Std;
     52 use warnings;
     45 use Smart::Comments;
     41 use diagnostics;
     22 use Carp;
     13 use Getopt::Long;
     12 use File::Find;
     11 use SDL;
     11 use List::Util qw(min max);
     10 use base qw(Class::Accessor::Fast);
     10 use English;
      8 use SDL::Video;
      8 use HTML::TreeBuilder;
      6 use Wharf::JDockApp;
      6 use URI;
      6 use List::Util qw(sum min max);
      6 use Graph::Enhanced;
      6 use Cwd;
      5 use feature qw(switch say);
      5 use WWW::Mechanize;
      5 use SDL::Surface;
      5 use SDL::Rect;
      5 use SDL::Event;
      5 use SDL::Color;
      5 use Mail::Internet;
      5 use IPC::Open2;
      4 use Term::ANSIColor;
      4 use SDL::Image;
      4 use SDL::GFX::Rotozoom;
      4 use Jcode;
      3 use integer;
      3 use encoding 'euc-jp';
      3 use URI::Escape;
      3 use Tk;
      3 use SDL::TTF::Font;
      3 use HTTP::Cookies::Netscape;

- 自作PCを作ったことはありますか?

  はい。クロックアップとか、静音化とかも楽しいですね。

- Google Chromeのプラグインが毎日のようにクラッシュします。対処法はない ですか?

  使うのをやめましょう。欲しいプラグインがあれば、自分で作ろう!

- 大学を出た後にはやっぱり音楽とかにさく時間は減りましたか?

  そうですね。激減しました。

- 音楽をジャンル分けすることに抵抗がなければ、日頃聞く曲とよく作る曲の ジャンルを教えてください

  ジャズ、フュージョン、サウンドトラックが好きですが、よく聞く (聞かさ
  れている?) のは嵐です。

- 何も思いつきません。何か書かないと駄目ですか?

  なければ書かなくていいですよ。

要望

- テキストに誤植があるそうですが、誤植のリストだけでも手に入らないでしょうか

  気付いたものを列挙します。
  H1 p.1 plane → plain
  H3 p.4 合成の図が「変換機械」になっているが「解釈機械」が正しい。
         (左端の変が直立じゃなくて、右に傾斜する)
  H3 p.6 仮想機械の図が「変換機械」になっているが「解釈機械」が正しい。
         (左端の変が直立じゃなくて、右に傾斜する)
  L1 p.2 anonimous → anonymous
  L1 p.12 言語を aliasing という → aliasing は alias するという動作を意味する (言語ではない)

その他

- 大半の授業が高専での内容の復習だった。単位がどうして認められないのか

  具体的な情報を担当の先生に伝えると、後輩が幸せになるかもしれません。

- BNFは人が理解できればよい程度に省略してもよいと聞いたことがありますが

  具体構文を記述するためのメタ言語なので、省略したらダメです。

大学で学んでよかったと思うこと/役立ったと思うこと/面白かったこと

- コンピュータで出来ることと、その大変さが少し分かった

- コンピュータが足し算と引き算ぐらいしかできないのは驚いた

- CASLみたいな低レベル言語の授業があったこと

- CASLでレジスタの動きを見れたりしたのが良かった

- UNIXと出会えたこと

- PBLなどで使った仮想計算機/プログラミングのアルゴリズムなど

- アルゴリズムいろいろ

- WindowsというOSの欠点が分かったこと。売れてるOSが良いOSではない

- Pascal→C→Perlと学び、Perlで変数宣言が消えたときの驚き

- Perlの文字列の扱いやすさ

- 様々な考え方、アルゴリズムがあると分かった

- この授業が一番面白いだろうと期待

- 実験Aの回路作製

- 回路作製

- 回路シミュレートソフトを使ったこと

- 数学が面白い(複素関数論とか)

- 統計学は「データに意味を付ける」っていう点ですごいと思います

- マッチ棒の使い方の無限の可能性に気づけたとき

8. レポート課題 (11/2 出題分)

  * 課題
  
  (1) 次の中置記法を前置記法および後置記法に変換せよ。
  
  (a) (a + b) * c - (d / f) * (-h)
  (b) (trunc(2.6 * M - 0.2) + D + Y + Y div 4 + C div 4 - 2 * C) mod 7
  
  (2) 電卓プログラム設計
  
  標準入力から式を入力し、標準出力に式の計算結果を出力するプログラムを設
  計せよ。式は、数、演算子、括弧、関数で構成されるものとする。どのような
  数・演算子・関数を入力可能とするかは自由に決めて良い。入力した式をどの
  ように解釈し、どのように計算すれば実現できるかを考えよ。
  
  レポート課題のねらいは、電卓プログラム設計を通して、プログラム言語実現
  の困難さを理解することにある。(1) 入力された式をどのように解釈すればよ
  いか、(2) 解釈におけるあいまいさをどのように解決すればいいか、(3) 入力
  された式の誤りをどのように検出すればよいか、(4) そのために入力される式
  にどのような制限を課せばよいか、などについて検討した結果を説明せよ。
  * 提出方法
  
  11/16(水) 講義開始時に回収する。様式は自由とする。
  * TA による見本レポート (「(2) 電卓プログラム設計」のみ)
  
  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/for-students/report1/report1.pdf
  
  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/for-students/report1/report1.zip

9. 質問・要望・感想など (11/2 講義より)

質問

- 変数の属性の詳細情報はどこに格納されますか

  いい質問ですね。処理系によりますが、(動的な型チェックを行わない) C 言
  語ではコンパイラの内部にあります。生成されたオブジェクトコードにはほ
  とんど残っていません。

- L1 の 15 ページの最後の行の意味がよくわかりません。高度な最適化とは何を言うのですか

  「そこまでやるか……」と思うような最適化です。今日の講義で紹介します。

- 答えられないレポートはあまり嬉しくないです

  みなさんの能力を高めるために、意図的にそういうレポートを出しています。
  
  みなさんは、小学生の頃からずっと、「答えられる (答が一意に定まる) 問
  題に答える」というトレーニングをずっとしています。大学入試も、レポー
  ト課題も、大学院入試も、ぜんぶそうです。
  
  そういう単純で、機械的なトレーニングを何年も、何年も、何年も続けるこ
  とは、本当の「問題解決力」をどんどん弱くし、低下させます。仕事するこ
  と、生活することは、すべて「答えがあるかもしれないし、ないかもしれな
  いし、複数あるかもしれない問題を解決する」ことです。
  
  本当の「問題解決能力」を磨いてください。

- PBL などで分担してソースコードを書くにはどうすれば効率が良いでしょうか

  難しいですね。コミュニケーションを密にすること、コーディングのスタイ
  ルや、インターフェースの規則を決めておくこと、上手にコメントを入れる
  こと、くらいから始めてみてください。

- Perl のオススメの入門書はありますか

  以下のページを見てみてください。
  
  充実した研究活動のための 100 の書籍 (草稿)
  http://www.ispl.jp/~oosaki/research/100-books/

- プログラミング関連でオススメのElispはありますか

  いっぱりありますが、とりあえずこのあたりを。Emacs 23.2 ではすべて標準
  で含まれています。
  
  M-x manual-entry
  M-x etags
  M-x indent-region
  M-x vc-next-action
  M-x gud
  M-x ediff

- 将来、数学はどのくらい重要ですか

  非常に重要だと思います。生き方によるでしょうが、私は「コミュニケーショ
  ン力 > 数学的な思考力 > プログラミング能力 > 語学力 (英語)」という重
  要度だと思います。

- ネットに上がってる講義の動画のスキップはどうしたらできますか、できない仕様ですか

  FLV をダウンロードして、好きなプレイヤーで観てください。

- ネットワークの実装 (IPv4、IPv6、ルーターとかの役割) やデータベース関係 (SQL 文やデータモデル) やセキュリティ (文字コードにひそむ脆弱性や Windows のレジストリ悪用や root を取る) といった実学的なことはやりませんか by セキュリティキャンプ参加者

- セキュリティキャンプには参加していませんが、ネットワーク実装でトラブったことがあるので、やるなら学びたいです

  ネットワーク専攻に来てください。上記の大半は講義や研究でやっています。

- この学科の授業間の連携がとれていない (実験や PBL で必要な知識を後に講義で学ぶ) と思いますが、改善できませんか

- セメスターごとに授業のコマ数が大きく違うのはなんとかならないのでしょうか (特に 3 セメと 4 セメ)

  現在、講義・演習のカリキュラム改訂ワーキンググループが立ち上がってい
  ます。ぜひ具体的な意見を聞かせてください。

- あのビデオは誰向けでいつ誰が作ったのですか

  高校生や、情報が専門ではない一般の人向けで、昨年度末に制作会社に発注
  して作ってもらいました。

- いつも講義をしている教授も普段はすごい人なのだろうと思える PV でした。曲は教授の作ですか

  いえ、編集・音声は制作会社におまかせで作ってもらいました。

- プロモーションビデオはすごいと思いました。自分もあんなのを作れるようになりたいです

  あれは映像のプロの作品です。みなさんは情報のスペシャリストを目指して
  ください。

- 動画はどこで見れますか

- 動画はアップロードしないのですか

  今のところ公開していません。

- ライバルの研究室などはあったりしますか

  特にそういう意識はしてません。

- 中学でプログラミングをするというのが想像できません。どのような環境で育ったのですか

  普通ですよ。当時は、単にゲームがやりたかっただけでした。

- プログラミングを覚えやすい学習方法とかないですか

  欲しいものを作りましょう!

- SCEへ行くとしたら、どのような業務を担当するのでしょうか

  ごめんなさい。わかりません。OB にコンタクトしてみては?

- 阪大の学祭について他大学と比べてどう思いますか

  ごめんなさい。他大学の学園祭をほとんど知らないので比較できません。最
  近の阪大の学園祭はいい感じだと思いますよ。もう少し屋台の食べ物を質を
  上げてほしい……。

- 情報で一番稼げる職は何ですか

  基本的に、ハイリスク・ハイリターンなので、どれだけリスクを取れるかで
  リターンが決まるでしょう。

- 先生の中で一番の神ゲーは何ですか

  沙羅曼蛇です。

- ニコ動は好きですか

  何度か観ましたが、あまり面白さがわかりませんでした。

- ピアノやキーボード以外の楽器を演奏することはありますか

  鍵盤だけです。

大阪大学の好きなところ

- いい意味で人が多い

- いろんな学部が集まっているところ

- おしゃれ

- のどかなところ

- オタ率が高い

- キャンパスの雰囲気

- テスト前になると真面目になる人が多い

- 一生懸命な人が多い

- 優秀な教員が多くて刺激になる

- 充実した教育環境

- 図書館

- 図書館

- 図書館

- 図書館

- 図書館などの学習環境がきっちり整っているところ

- 図書館の充実

- 基礎工棟が綺麗

- 変人が多い

- 大阪では良い扱いを受ける

- 学内に猫がいる(可愛い)

- 学食らふぉれがうまい

- 実家から近い

- 家から近い

- 平和

- 広い

- 広い

- 建物が綺麗

- 教室などの設備が綺麗

- 施設・設備が新しい

- 普通さ

- 景観

- 猫が多い

- 綺麗で使いやすい

- 綺麗な建物が多い

- 設備が新しい

大阪大学の嫌いなところ

- G棟から他の場所が遠いところ

- G棟が遠い

- G棟が遠い

- G棟が遠い

- G棟遠すぎ

- HTMLファイルをWordで開いた助教がいる所

- この時期のいちょう

- たまに教える気のない教員がいる

- わびしい

- 変な人も多い

- キャンパスの場所

- テスト前になると真面目になる人が多くて図書館で勉強できない

- バイク置き場と基礎工棟が遠い

- 広いのに原付とか自転車とかで入れない

  4 年生・大学院生になると入構できます。

- 一部の時間割

- 一部の詰め込みすぎる時間割だと思うことがある

- 一部の講義

- 休講通知がちゃんとされない場合が多い

- 出席が多い

- 単位

- 単位が厳しい、遠い、坂を登るのが辛い、事務室閉まるの早すぎ、G棟とB棟が遠い

- 単位の取得が厳しい

- 吹田と豊中のキャンパスが離れているところ

- 坂

- 坂を登ってこないといけない

- 基礎工G棟が遠い

- 多すぎて書き切れない

- 大学が山の上にあること

- 家から遠い

- 山の上にある

- 山の上にある、駅から遠い、建物が古い、Pascal

- 悪い意味で人が多い

- 授業に女の子が少ない

- 自転車や傘が盗られる

- 遠い

- 金曜日の時間割がひどい

- 銀杏臭い

- 阪大坂

- 阪大坂

- 阪大坂

- 阪大坂がつらい

- 阪大坂とG棟5階が遠い

- 院と学部のキャンパスが別

- 食堂が混みすぎ

- 食堂などゆっくりできる所が人が多すぎる

要望

- EBNFのレポートの解答例を教えて欲しいです

  見本レポートを公開する予定です。

その他

- スクリプト言語を 1 つ取得したいと思っていますが、Perl 以外でおすすめはありますか→ Python

  シェルスクリプトをお勧めします。

- 先生の学生時代の話を聞く度にヘコみます

  どうしてですか?

- この前、某先生が授業に来ませんでした(´・ω・`)

  何かトラブルがあったのでしょうか?

10. 計算機言語 11/16(水) レポート課題

* 課題

2 分岐 (two-way branch)・多分岐 (multi-way branch)・繰り返し (loop) が、 それぞれコンパイラでどのように実現されているか調査せよ。

実際のコンパイラが生成したコードを分析すること。対象とする言語・処理系 は自由に選んで良い。C 言語で、処理系に gcc を用いる場合には -S オプショ ンによりアセンブラのソースを生成することができる。

C 言語以外の言語、もしくは gcc 以外の処理系を用いた場合はボーナス点を 与える。

* サンプル

講義中に示したサンプルコードは以下からダウンロードできる。

  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/l03/ex1.c
  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/l03/ex1.s
  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/l03/ex2.c
  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/l03/ex2.s
  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/l03/ex3.c
  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/l03/ex3.s

* 提出方法

以下のいずれかの方法で提出せよ。

11. 質問・要望・感想など (11/16 講義より)

質問

- 正しくなくても信頼できるプログラムとはどんなものですか。

  どういう意味ですか?

- 講義ノートの赤線はどこにあるのか?

  ごめんなさい。先週は間違って自分用の資料を配布しました。

- cc と gcc はどう違うのでしょうか

  処理系によります。昔は cc = SVR4 のコンパイラ、gcc = GNU のコンパイラ
  でした。最近だと cc と gcc は同じことが多いです (どちらかへのシンボリッ
  クリンク)。

- 計算機科学コース,ソフトウェア科学コースは他の学科と比べ忙しいのか?

  基礎工の他の学科との違いは知りませんが、同じくらいじゃないかな? 情報
  系の大学の中では忙しい (授業料の割にお得な) ほうだと思います。

- 量子コンピュータを研究する研究室は阪大にありますか?

  ないと思います。

- 転部すると、実質的に留年することはありえますか? (例:基・情2年→来年:経済2年)

  どういう意味ですか?

- SML は将来的に使えますか?

  使う仕事を自分で選択すれば使えると思います。普通に生きていれば使う可
  能性は低いでしょう。

- 自宅サーバを構築してみたいけど、全くやりかたが分かりません。

  ダイナミック DNS 対応のブロードバンドルータと、PC を一台手に入れて、
  Debian をインストールすれば簡単です。やってみて駄目ならまた質問してく
  ださい。

- 未学習の分野を先に使う科目が多いのですが、そのこと自体に意味はあると思いますか?

  PBL は意図的にそうしています。他の講義/演習でもありますか?

- Elisp (?) とか、用語の解説をしてもらえるとありがたいです。

  Emacs Lisp (Lisp の方言) です。Emacs は Lisp の処理系になっていて、機
  能の大部分が Emacs Lisp で実装されています。

- これまで作った一番大きなプログラムは何ですか? (一人でもグループでも)

  シンセサイザーの音色管理プログラムとか、グラフ処理ライブラリくらいで、
  どちらも数千行の規模です。

- 通信速度は今は光が一番速いですが、これ以上速くできるのでしょうか。もしあるならば、一般に流通するのはいつごろでしょうか。

  光ファイバは、同一ファイバに収容する波長数を増やせるので、もっともっ
  と速くなります。身近なところでは、100 ギガビットイーサネットは IEEE
  で標準化が始まっています。

- ピアノ習った経験はありますか? 習っていれば期間もお願いします。

  ないです。独学です。

要望

- 情報科PVが欲しいです

  あるといいですね。

- 出席表が授業の最後にならないと回ってこないので、早めにまわしてください。

  了解です。

その他

- コンパイラの最適化の結果、「何もしない」実行ファイルが生成されるなら、結果が同じでもプログラマの意図とは異なっていることになりますよね。不思議です。

- コンパイラによる最適化のレベルが上がると予測できないこと以外はすべて結果のみ出力しているのがすごいと思った。

- 般教の単位がどうしても取れません

- 休日を作れるようにしたいです

- 何事にもやる気がでない

- 最近寒いですね

- 今日はレポートを忘れたので、来週提出します。

情報科学科カリキュラムのいいところ

- 忘れた頃に昔の授業の復習が入るところ

- どの授業も将来的に役立てられると思えるところ

- ハードに関しても学べる

- 昔の授業内容を復習できるのは良い

情報科学科カリキュラムの悪いところ

* プログラミング

- 実用的でない言語をやること

- 必修言語の選択がひどい。HTML半年、Python半年、C半年、Java半年、Haskell半年にしましょう。Pascalの価値なし。アセンブリもMASMとか他に実用的なのがあるでしょう。

- プログラミングのレポートをもう少し小出しにしてほしい。

- 2回になって、C,Perl,Javaなどを短期間で次々やるのだから、1回のプロAプロBは圧縮した方がいいと思います。言語じゃなくプログラミングの考え方を学ぶといいますが、そうなっているとは思えません。

- Pascalいらない。1セメのPBLが無駄。CとかPerlとか短期間すぎて頭にしっかりと残らない。

* 講義内容

- 学習内容が極端。アルゴリズムのことしかやってない。

- リスト/木の操作やソートなど、二年次に習うこと、1年次のプロAのPASCALで実装したが、順番は逆か同時が良いのでは

- 講義の前に演習があったりするところ

- 実験で、同期式回路の作成をしたが、論理設計の授業で作成方法を学んでいなかったのできつかった。

- 情報科学実験Aが前期と後期に分かれている理由がわからない。一つにしてほしい。

- 情報科学実験Aを通年授業にするのはやめてほしい

* PBL

- プログラミングの授業とPBLでプログラムをする順番

- プロDでJavaを扱う前にロボコードを触るので、1年時にCをして、プロCでJavaをすれば良いと思う

- PBL4のRobocodeでJavaを使うのに、Pro-DでJavaの開始時期が遅いと思います。

- JAVAをやってから、PBLでRobocodeやってほしい。

- PBL2でffproxyの改造を行うが、その時点の知識では理解するのが困難だった。

- PBL自体は良いが、半分けと課題内容に疑問点。総じて各授業の内容で連携が取れていない。

- 同じ分野の人間が集まってPBLを行っても得られるものが少ないと思う

* 講義選択の自由度

- 選択の幅が欲しい。同じ選択群の授業の時期をもっと散らばらせてほしい

- 必修の授業が固まり過ぎ。自由選択で認められる単位をもっと増やしてほしい。

- 必修としての授業が多く、他の興味を引く授業を取れないことが多い

- 取れる授業にもっと幅が欲しい

- 大学は自分で時間割を作れると入学前は聞いていたが、実際はほぼ固定ですよね。

* 時間割構成

- 授業数がセメスタごとに極端。ヒマな時にも授業を

- 時間割の組み方に疑問点。学期ごとの負担量を分担させるべき。また、出来る限り間にあきコマができないように配慮すべき。1->4限はひどい。

- 4セメは金曜日が、1限の英語のあとに4限のPBLまで時間が空いているので困る

- 金曜が1,4限で困る。

- 再履修のことを考えると、実験や演習の授業のコマを重ねるべきではない。例えば、情報科学演習Dと情報科学実験A

- 実験や演習の時間が重複しており、編入生や再履修者にとって非常に困る

- 1限と4限しかない日があるとすごく間の時間がひまでつらいです。

- 授業の間に空きコマがあるなら、1限や5限の授業をそこに入れるなどしてほしい

- セメスター間のコマ数の差が大きい、移動教室が多い

- 3セメの情報数学基礎(月4)が1日に1コマだけで凄く面倒だと思いました。できることなら、その授業を他の空きコマに移動させてほしかったです。

- 授業に空きコマがあるのは無い。

* 全体

- きつい

- テストとレポートが一気にくる時があるので、しんどいです。

- レポートが続けざまにあるのでしんどいです。

- レポートが(他の教科と重なると)大変です。

- レポート大変です。

- 3セメに比べてレポートが多すぎる

- MIT式でよい、合わない人間は切り捨てれば良い

- 計算機とソフトの差より、1年の1組2組の差のほうが大きかった

- 休講メールが30分前とかにくるのがつらいです。

- スライドだけの授業が多くてしんどいです。

- 画面を見るだけの授業が多くて集中が切れることが多いので、授業中も演習の時間を取ってほしいです。

- BSDを使うのは良いが、ただの端末として使うのはどうかと思う。サーバーとしての使い方を学ぶのなら良いが、その気配はない。デフォルトのウィンドウマネージャの使い勝手が悪すぎる。GNOMEやKDEは重すぎる。awesomeとか自分で入れていいのか?

12. レポート課題 (1/18 出題 *予定* 分)

課題


講義で学んだ以下の概念から、最も苦手 (よく理解できてない) と思うものを
2 つ選び、講義資料を読み返して復習せよ。その後、それらの概念に関する、
期末試験の予想問題 (それぞれ 1 問ずつ) と、出題の意図、問題に対する回答
を記述せよ。講義資料と同じ問題、過去の期末試験と同じ問題は禁ずる。

  - 計算機言語 (プログラム言語) を学ぶ意義
  - ソフトウェアの規模
  - ウォーターフォールモデル
  - ソフトウェアの品質と生産性
  - プログラム言語とは
  - プログラム言語の役割
  - プログラム言語の歴史
  - 拡張 BNF
  - 構文図
  - 変数とその 4 要素
  - L値と R 値
  - エイリアシング
  - 演算子と優先順位
  - 式の木表現
  - ポーランド記法
  - 分岐の実現
  - goto 文の利点・欠点
  - スコープとエクステント
  - グローバル変数の利点・欠点
  - 値渡しと参照渡し
  - 再帰呼び出しの解消
  - アクティベーションレコードとは
  - 抽象データ型とは
  - オブジェクト指向とは

提出方法


1/18(水) 0:00am 〜1/25(水) 5:00pm の間に、PDF 形式のレポートを
comp-lang-report[atmark]ispl.jp 宛に提出せよ。提出されたレポートは、パ
スワードによってアクセス制限がかかった状態で他の受講生に公開する。

PDF ファイルのファイル名は「学籍番号-名字.pdf」とせよ (例:
90828040-yamada.pdf)。

過去の期末試験問題

http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/for-students/exam/ex2010.pdf

http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/for-students/exam/ex2009.pdf

http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/for-students/exam/ex2008.pdf

http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/for-students/exam/ex2007.pdf

http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/for-students/exam/ex2006.pdf

http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/for-students/exam/ex2005.pdf

http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/for-students/exam/ex2004.pdf

http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/for-students/exam/ex2003.pdf

※ アクセスするにはパスワードが必要です。

13. 質問・要望・感想など (11/30 講義より)

質問

- プログラムのコードを LaTeX で書くのが面倒です。良い方法はないでしょうか? (レポートに書かれていた質問)

  verbatim 環境を使うのが簡単です。
  
  \begin{verbatim}
  int power(int x) {
    return (x * x);
  }
  
  main() {
    power(1 + 2 + 3);
  }
  \end{verbatim}
  とか
  変数名は \verb|counter| である。
  のように書きます。

- 先生が中学生(高校生)の時はパソコンは高くなかったんですか?

  ものすごく高かったです。20〜30 万円くらいしました。

- 豊中キャンパスにある研究室と吹田キャンパスにある研究室は理由がある分け方になっているんですか?

  今はすべて吹田キャンパスに移動しました。残っているのは協力講座だけだ
  と思います。

- SNSについてどう思いますか?これからどう変化していくと思いますか?

  興味深いと思います。情報通信によって、社会の構造が変化し続けるのでしょ
  うね。

- プログラミングと音楽と奥さんの中でどれが一番好きですか?

  もちろん妻です。

- Emacs使いの先生はviについてどう思いますか?

  vi も (設定ファイルの編集とかに) 使いますよ。でも、vi ですべての作業
  をしようとは思いません。

- 正しくなくても信頼できるプログラム:テキストH1,ソフトウェア開発の問題の8ページ最下行〜です。

  テキストのこの文脈では、「正しい = プログラム P が仕様 S を満たす」、
  「信頼できる = 高い確率で満足な動作をする」ですね。きっと、「プログラ
  ム P は仕様 S を満たさないが (たまたま人間の意図 I) に一致していて、
  高い確率で満足な動作をする」ようなプログラムを差しているのだと思いま
  す。

- 趣味でコーディングする際、どの程度計画を立てていますか?(いつまでに完成、全体の構造はこのようにしよう、など)また、拡張性や保守性はどの程度気にかけますか?

  単純なプログラムなら、トップダウンで気の向くままに書きます。ある程度
  の規模のプログラムなら、紙の上で設計して、ちゃんとコメントやバージョ
  ン管理をして、テストケースも作ります。

- 基礎工の他学科は授業で研究室の見学をするのに、なぜ情報科学科にはそれがないのでしょうか。計算機・ソフトウェア系の研究室が吹田にあるにしても、学祭期間以外で見学する機会が欲しいです。

  他学科は、「講義」の一部として研究室見学をやっているのですか? それは
  知りませんでした。事前に連絡して訪問すれば、普通の研究室なら対応して
  もらえると思いますよ。

- IPv4→IPv6の移行で障害となっているものについて考察してください。IPv6の話は10年前からあるのに、あんまり進んでない。

  米国が IP アドレスをたくさん持っていることと、NAT (アドレス変換) の技
  術が発達して、必ずしもエンド-エンド通信がなくても何とかなることが主な
  原因だと思います。

- 先生が取り組んでいたプログラムの中で一番大きな規模のプログラムはどれくらいですか

  数千行くらいです (前回の回答も参考にしてください)。

- 期末試験はどんな問題が出ますか?

  1/18(水) 出題 (予定) のレポート課題の範囲から期末試験を出題します。
  
  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/#12

- 授業のビデオはダウンロードできますか?

  普通の FLV (Flash Video) なので可能です。ダウンロード用のリンクを作成
  しておきました。

- C 言語で stdio.h などのヘッダファイルを使わずに実用的なプログラムというのは書くことができますか?

  何が「実用的か」によりますが、組込み系のプログラムならあり得るでしょ
  うね。でも、わざわざプログラムを再利用しないメリットはないと思います。

要望

- 年末年始は課題は出さないで欲しいです

- どんな研究をしてたのか知りたい

- 今までにどんな研究があったのか知りたい

- 各研究室の研究について詳しく知りたい

- 研究は具体的にどんなことをするか知りたいです。

- 今の 4 年生 or 数年前の 4 年生がどんな卒業研究をしているのか知りたい

  以下のページに学位論文のタイトル・アブストラクト等が公開されています。
  
  http://www.ics.es.osaka-u.ac.jp/paper/theses/

その他

- プログラミング初心者としては、言語はC,Perl,Java,CASLなど現状で良いと思ってます。Pascalはちょっと分かりませんが…

- 量子コンピューティングは誰か研究していると思い込んでいました

- 先輩方がどんな研究をしてきたかが知りたいです。見当がつきません。

- 研究については何も考えてないです

- これから (これを期に) 考えていきたい

- 今週の金曜に英語の中間テストがあることが発覚しました…orz

やりたい卒論のテーマ

- 卒業研究についてまだあまり意識していませんでした。仮想現実とかネット上でのコミュニケーションなどに興味はあります

- スポーツやゲームのプレイデータ収集と解析がやりたいです。今は特に視点の使い方に興味があります。

- 拡張現実の分野の研究をしてみたいです。

- 研究のことを考えることが今までほとんどありませんでした。これからは少しずつ考えようと思います。

- 人工知能とか教科学習とか最適化とか

- ネットワークに興味があったりします

- 何となく、ネットワークやセキュリティに興味があります

- 医療と情報の融合

- 分散システム関連の研究

- 機械学習関係

- ネットワークやセキュリティ関係

- GPGPUによる並列化アルゴリズムに関する研究

- 暗号の勉強

- アルゴリズムの勉強

- ネットワーク関係の勉強

- セキュリティ関係

- より理解しやすいアルゴリズム表記の作成

- アルゴリズムの研究

- ネットワーク関係

- ネットワークやシステム無関連

- 音楽関連ソフトの開発、音楽データに関わる商業面と技術面からのアプローチ または 今の動画サイトではアマチュアの良い音楽を探しづらいので、本当に良い音楽を見つけられるようなシステム構築の勉強

- ネットワーク関連

14. 中間授業アンケート結果

  3.2 (1)シラバスの記載内容は参考になった
  4.4 (2)講師は十分な準備と工夫をして授業に臨んでいた
  4.1 (3)講師の話し方は理解しやすかった
  4.2 (4)講師やTAは学生の質問に丁寧に回答してくれた
  3.9 (5)講師は学生に授業への積極的な取り組み・参加を促した
  3.4 (6)この授業の内容を理解した
  3.7 (7)受講してみて、この科目や関連分野への理解や興味が増した
  3.7 (8)この授業を受講して自分自身の将来に役立つと思う

1. 印象に残ったこと、よかったこと

- 自由アンケートの制度が良かったです。

- 毎回アンケートや質問をとって、結果や回答を発表しているのはすごい

- 学生の質問に対し、積極的に答えていた

- 質問への回答が丁寧でおもしろい

- 色々な質問に答えてくれるのがよかった

- 学生からの質問などに、一つ一つ解説していた

- 質問に答えてくれるのがよかった。思っていても教授とかには聞きにくかったので、そういう場を設けてくれてよかった

- 質問への解答にすごく時間をかけいているのが印象的だった。新しいことへのアプローチが積極的だと思った

- 質問に答えてくれること/質問しやすい環境/質問を公開してくれること。ただ、他の授業の質問がたまにされてるが、その授業の先生/TAに質問すべきだと思う。この授業が質問を積極的に歓迎しているのは確かだが、多くの授業はメール等で質問を受け付けている。

- ほとんど愚痴のような質問にも丁寧に答えてくれた。ただ単に講義内容だけを淡々と説明される講義と違ってタイクツしない。講義内容を録画してアップロードするのは印象的だった

- 質問に答えてもらえるのが良かった。参考になったしモチベーションにつながった

- 学生に一方的に講義内容を伝える訳ではなく、学生自身の考えを大事にしていた点

- 様々に授業を工夫してるとは思う。テキストが丁寧

- 授業の構成、楽しくしようと工夫してくれてること

- 話がききとりやすかった

- メリハリがあってよかった

- 授業のサイトが充実している。授業が面白い

- 授業のWebページが充実していて良い

- 授業スタイルが他の授業と大きく違うので印象に残った

- 授業中のデモンストレーション

- コンピュータでデモンストレーションをおこなっているので講義の内容を理解する助けになった

- レポートを提出しそこねたときの対応がよかった

2. 不満に思ったこと、改善してほしいこと

- プラグイン等、コンピュータ (ソフト?) 関連の用語を僕たちが知っている前提で話すのではなく、説明をしてもらえいるとありがたいです。

  確かにそうですね。できるだけ説明するように心掛けます。

- まだ半分しかたってないからかもしれないですけど、より深い内容について講義してほしいです

  基本的な話と、応用的な話をうまく混ぜて話したいと思います。

- 体系立った知識を得られない。授業の仕方を工夫するのはよいが、何をやっているのかを明確にしていない。

  うーん、なるほど。整理 (復習) する時間を取ります。

- 最初は勉強するのはパワーポイントだけでいいみたいなことを言っていたと思うんですが、課題はそれに比べて難しく、抽象的なものが多い

  PPT ファイルは 100% 理解してください。期末試験はそこから出します。レ
  ポート課題は意図的にチャレンジングなものを出しています。

- 解説の時間が長すぎて授業自体の時間が短いように感じる

- 授業内容の解説が少なく感じた

- 重要な部分を行う時間をけずらなければならなくなるほどの長いムダ話

  質疑応答の時間を取りすぎないように注意します。

- スライドが見にくい

  具体的にどう見づらいか教えてください。

- レポートの間隔をもう少し長くしてほしい。授業のビデオの音声が聞こえにくいです

  今くらいでどうでしょう? FLV プレイヤの音量設定がおかしかったので直し
  ました。

- レポートの課題で、レポートをどのように書いたらいいかわからなかった

- レポート課題が曖昧

  意図的に、「答が一意に定まる問題」を出していません。がんばってつきあっ
  てください。

- 章末問題などの解答が載っていない

  どうしても解けない (そもそも回答が一意に定まらないものも多いですが)
  ものがあれば聞いてください。

- 動作の実験の際、出来るかわかりませんが、が多い気がします

  事前に動作確認しておくのが普通ですが、ライブ感を大事にしたいのでわざ
  と即興でやっています。

- 出席点をつけてほしい。レポートを減らしてほしい

  気持はわかるのですが、学習にかけた時間 (出席率) じゃなくて、学習の到
  達度 (理解度) で評価するのが正しいと思います。

- でもどうせなら認定単位にしてほしかった

  どういう意味ですか?

- 教室が若干せまい

  そうですよね。来年度は変更してもらえるよう依頼します。今年度のみなさ
  んはごめんなさい。

- 特にないです

- 特にありません

3. 自身で反省すべきこと

- 授業内容を理解する姿勢が足りないこと

- もう少し、自分で復習する時間を持つべきであると思った

- わからない用語は自分で調べるべき

- 授業にもう少し集中したい

- 授業に集中できてきない。復習不足

- (朝からなので) 授業中に寝ることが多かった

- レポートに妥協が入ったこと

- 可能ならもっとレポート課題に力を注ぎたかった

- 授業が生かせていないような気がします

- 今まであまり知識をつけれていなかったなあと思いました

- 欠席が多かった

- なし

4. 後輩にアドバイスしたいこと

- 特になし。この授業はわかりやすいので問題がないということ

- この授業は問題ないです

- 質問すれば(直接でなくても)答えてもらえるので、どんどん質問した方がいい

- 雑談も興味深いのでしっかりきくべき

- レポートは早めに終わらせましょう

- レポートが講義の復習的な内容ではないので、早くから取り組むべき

- 興味をもって授業に臨むこと。出席すること

- 出席しましよう

5. その他自由に

- テストででる問題は、講義資料の文章の方でたまに出題されているもののような形式なんでしょうか?

- 他の授業で爆発するほどのレポートを出されていて、一つ一つの授業に集中できない。他の授業でこのことを伝えても一向にフィードバックされないので、大崎教員からも伝えてほしいです

- なにもありませんでした

- ゆるい感じが良いと思います

- 特になし

- 特になし

15. 質問・要望・感想など (12/7 講義より)

質問

- Facebookは何で流行っているのですか

  うーん、なぜでしょう。基本は winner takes all だと思います。

- この学科に来た以上、プログラミングをすることorできることは当たり前ですか

  外大を卒業した学生が語学に堪能なのを期待されるのと同じように、みなさ
  んはプログラミングに堪能なのを期待されるでしょうね。

- サーバの構築について勉強したいのですが、おすすめの書籍はありますか

  O'Reilly の本を片っ端から読むといいでしょう (図書館にもあると思います)。

- IPv6への以降が進まない理由を教えてもらいましたが、もっと根本的にIPv6は必要だと思いますか

  十年以上のスパンで考えると、ベストエフォートの IPv4 ではダメでしょう。
  でも、IPv6 が解ではないでしょうね。

- JavaがJVM上で動き、環境に依存しないコーディングを行えることについてどう思いますか

  ある意味理想的なことだと思います。

- Pascalの存在意義および学習意義について考察してください。なおプログラミング言語の歴史的な観点は除外して純粋に言語として数ある言語の中から選択する意味を知りたいです

  Pascal は成功した (唯一の) 教育用言語 (教育のために設計された言語) で
  すし、言語仕様も美しいと思います。

- アセンブリ言語の中からCASL2を選ぶ意味を教えて下さい

  教育用として成功しているかは ??? ですが、命令セットは単純で直交性があ
  り、仮想計算機 COMET2 の仕様もコンパクトで明確なので教育用には悪くな
  いと思います。おまけで国家資格も取れますし。

- 実用性のない言語を学ぶ意味を教えて下さい。ただしここでの実用性のない言語は同様の特徴を持つ言語の中で、あえて利用率の低い物のことです。先進的な実験用言語等ではありません

  教育用言語「を」学ぶ意味はあまりないでしょうね。歴史を学べる、くらい
  かな。教育用言語「で」プログラミングを学ぶことには学習効率の点で意味
  があります。

- VPNについてどう思いますか。最近は個人間でも簡単に利用できるようになりました。今後どう発展すると思いますか

  いいポイントですね。今の VPN そのままではありませんが、グループ通信は
  ネットワークのコア技術になると思います (私はそういう研究をやっていま
  す)。

- もし先生がWindowsの脆弱性、Windowsアプリケーションの脆弱性、Webサイトの脆弱性、Linuxカーネルの脆弱性、GNUソフトウェアの脆弱性を発見した場合、それぞれどのような対処をしますか

  フリー (自由) ソフトウェアや公共の Web サイトなら作者/メンテナ/管理者
  に報告します。プロプリエタリソフトウェアや企業の Web サイトなら何もし
  ません。

- 音響処理や音源処理などのような音の処理側面からのアプローチを行うような研究をしている研究室はありますか。あればどの研究室かも教えてほしいです

  画像処理はいくつかの研究室でやってますが、音声処理はやってませんね。
  ネットワーク上の音声転送/処理ならうちに来てください。

- ネットワーク関係の研究室って具体的にどんなことをしてるんですか

  いわゆるレイヤ 3 (ネットワーク層) 〜レイヤ 4 (トランスポート層) の研
  究が多いですね。

- 前回の授業でだんだんサクラが手を挙げなくなりましたが、これは予想の範囲内でしたか

  想像以上に手を挙げなくなるスピードが速かったです。

- 学期末に向けて冬休みのうちにやっておいたほうが良いことがあれば教えて下さい。できれば計算機言語の範囲に留めずに

  何でもいいので熱中してみてください。何もないなら、クラウド上に新しい
  ネットワークサービスを立ち上げる、とかがホットで面白いと思います。

- Perlの特殊変数($_とか@_)は多言語ではあまり見かけませんが、どう思いますか。また積極的に使っていますか

  可読性が落ちるので、あまり好きじゃないです。私は use English すること
  が多いです。

- Javaの仮想マシンはどんな言語で書かれていますか

  予想ですが、Sun の JDK は C もしくは C++ とアセンブラじゃないかな?
  GNU の gij (GNU interpreter for Java) は C とアセンブラのようです。

- 資料は勝手に読んでいれば良いのでしょうか

  どういう意味ですか?

- 授業の動画を見ようとしたら「ページが表示できません」となっていました

- レポートをやるときに授業の動画を見直そうとしたが表示されなかった

  ディレクトリ構成を変更したので一時アクセスできない状態になっていまし
  た。今は治っているはずです。

- 前回レポートの資料で配布されたCのコードは2文字インデントだった気がしますが、インデントについての考えを教えて下さい(Linusさんは8文字インデントを使っているらしいです。ネストが深くなるプログラムは悪いプログラムだと言っています。私は4文字インデントです)

  私は GNU coding standards に従っています。なのでインデントは 2 文字で
  す。
  
  GNU Coding Standards
  http://www.gnu.org/prep/standards/standards.html

- AT&T記法とintel記法についてどう思いますか (intel記法の方がわかりが良いと思います)

  最初に覚えたアセンブラが Z80 なので、私もインテル記法のほうが自然に見
  えます。

- PBL等は「解決法のわからない問題に立ち向かう」ものとご説明いただきましたが、それであれば解決後にでも、それらについて自分たちはどんなことをしたのか、どんな方法があったのかについてフォローがもっとほしいです。ただの放置になっていませんか

  おそらく、PBL (Problem-Based Learning) とは何か? が正しく伝わっていな
  いのでしょうね。PBL は、student-centered pedagogy (学生中心の教育法)
  であり、self-directed learning (自己指導型の学習) ですので、PBL とし
  ては今の (教員が基本的に関与しない) スタイルで正しいのです。
  
  Problem-based learning (PBL) is a student-centered pedagogy in which
  students learn about a subject in the context of complex,
  multifaceted, and realistic problems (not to be confused with
  project-based learning). The goals of PBL are to help the students
  develop flexible knowledge, effective problem solving skills,
  self-directed learning, effective collaboration skills and intrinsic
  motivation.[1] Working in groups, students identify what they
  already know, what they need to know, and how and where to access
  new information that may lead to resolution of the problem. The role
  of the instructor (known as the tutor in PBL) is that of facilitator
  of learning who provides appropriate scaffolding and support of the
  process, modelling of the process, and monitoring the learning.[2]
  The tutor must build students confidence to take on the problem,
  encourage the student, while also stretching their understanding.[3]
  
  Problem-based learning
  http://en.wikipedia.org/wiki/Problem-based_learning

- レポート数枚って何枚くらいですか

  何枚でもいいです。

講義でよくわからなかったもの

- 授業中の動作実験が分からないときがある

  講義ビデオを見てみてください。数年たったら分かるものも多いと思います。

- boolean型を用いる言語では、なぜメモリを1byteまで取るか理解できません。例えば、1bit設定すると値の確認のときにも便利だし、メモリもそんなに食べないと思いますが…

  ほとんどの計算機で、効率的に操作できるデータの単位がバイト (8 ビット)
  だからです。バイト単位で格納すればゼロフラグを見れば真偽が判定できま
  す。しかし、ビット単位で格納すると該当するビットを取り出して (例えば
  論理積を取って) からゼロフラグを見る必要があり、圧倒的に遅くなります。

- 言語ごとの良さとは例えばJavaだとどのようなものでしょうか

  相対的なものなので、どの言語と比較するかによりますが、(比較的厳しい)
  静的な型チェック (L4.6)、オブジェクト指向プログラミング (L10)、実行環
  境への非依存性 (H3)、ガーベージコレクション (L5.3) などでしょう。
  
  このあたりも参考に。
  
  Comparison of programming languages
  http://en.wikipedia.org/wiki/Comparison_of_programming_languages#cite_note-40

- レポート課題にあった前置記法、後置記法でのtruncやmodの扱いが、どうすれば良いのかわからなかった。解答を示してほしいです

  基本通り、式を木で表現して、前順序、後順序で辿ればいいです。見本レポー
  トを後日公開します。

要望

- ビデオを見るためのパスワードをメモできなかったので、もう一度発表してほしい

  講義中にアナウンスします。

- PowerPoint のスライドの後ろに付いてる資料のほうも Web にあげてほしい

  ごめんなさい。私の著作物じゃないのでできません。

- 質問要望の時間をとりすぎ。授業の内容を聞きたい

- 質問要望の時間が長い気がします。スライドの内容をじっくりやってほしい

- もっと詳しい授業をして欲しい

  うまくバランスを取ります。

- Emacs の (先生が使ってる) 便利機能の一覧表が欲しいです

  Emacs の基本的なコマンドは M-x describe-bindings を見てください。普段
  使っているコマンドの一覧は作ってませんが、「Emacs でこんなことできな
  いか?」と聞いてもらえれば答えられかもしれません。

- レポートをメールで受信したら受信確認メールを送ってほしいです

- メールでレポートを提出したときに、ちゃんと送れたか確認できるようにしてほしい

  提出状況を確認できるようにしました。
  
  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/#10

- 回答者をランダムに選ぶと欠席の場合やり直す時間がかかるのでサクラのほうが良い

  そうですね。今週はサクラ方式でやってみます。

その他

- 先週と腕時計が違いますね

  見た目は 500 円の時計ですが、アスリート用の GPS 内蔵時計だったりしま
  す (運動は苦手ですが……)。

16. レポート課題 (12/14 出題分)

課題

手続き・関数の値渡し (pass by value) および参照渡し (pass by reference) が、それぞれコンパイラでどのように実現されているか調査せよ。

実際のコンパイラが生成したコードを分析し、特に、実引数・仮引数・返り値 の受け渡しがどのように実現されているを説明せよ。

分析した結果をふまえて、値渡し (pass by value) および参照渡し (pass by reference) それぞれの利点・欠点を述べよ。

対象とする言語・処理系は自由に選んで良い。C 言語で、処理系に gcc を用い る場合には -S オプションによりアセンブラのソースを生成することができる。

C 言語以外の言語、もしくは gcc 以外の処理系を用いた場合はボーナス点を与 える。

サンプル

講義中に示したサンプルコードは以下からダウンロードできる。

  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/l06/ex1.c
  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/l06/ex1.s
  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/l06/ex2.c
  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/l06/ex2.s

提出方法

1/11(水) 講義開始時までに PDF ファイルを comp-lang-report[atmark]ispl.jp 宛に添付ファイルとしてメールで送付せよ。 A4 数ページを目安に。ファイル名は「学籍番号-名字.pdf (例: 09a32402-oosaki.pdf)」とすること。

PDF ファイルでの提出を推奨するが、 1/11(水) 講義開始時にハードコピーで提出してもよい。

PDF ファイルで提出されたレポートの提出状況は以下のページで見ることがで きる。

  http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/for-students/report3/list.txt

17. 質問・要望・感想など (12/14 講義より)

質問

- この先、よく使われるようになる計算機言語はどんな言語になるのでしょうか

  5〜10 年くらいの未来なら、オブジェクト指向言語なら Java、LWP (Light
  Weight Programming) 言語なら Python かな?

- 新しくノートパソコンを買おうと思っているのですが、おすすめは何でしょうか?

  私は Lenovo の ThinkPad 一択です。

- やるべき事の優先順位をどのように決めていますか?

  難しいですね。まず、やるべき事を顕在化する (例えばリストアップする)
  のが大事かと思います。

- 1/18のレポートは思考過程が必要なのでしょうか

  なくてもいいですが、ぜひ書いてください (思考過程が書かれてないレポー
  トを採点するのはつまらないので……)。

- メモリのどこに変数が確保されているのか(ヒープとか)がよくわかりません

  フォン・ノイマン型である限りメモリのどこかです。データ領域もスタック
  も主記憶の一部ですので。ごく例外的に、レジスタ上だけに存在する変数も
  あります。

- 前回、出席表を後ろから回したことで何か変化はありましたか

  うーん、どうでしょう。

- 大学院で必要な数学は何ですか。院試ではあまり必要ないので勉強する動機付けが欲しいです

  大学院で何をするかによります。例えば、ネットワーク専攻で、ネットワー
  クの理論的解析をやりたいなら、線形代数、微積分、確率が絶対に必要です。
  ネットワーク専攻で、制御機構を設計したいなら、情報数学、統計が絶対に
  必要です。

- 提出しても提出してもレポートが減りません。幻覚でしょうか。

  幻覚でしょう。

- 化応やシステムが一年次のPBLで研究室見学に行くらしいです。

  そうなんですね。

コメント

- 一週間で練り上げたとは思えない出来でした。特別レポートおつかれさまでした。

- 発表すごいわかりやすかったです。

- 四條が発表していて、出席書けていません(北田の前後)が、出席していますよ。

- 寒くなってきましたね

- ランダムで指名するようになってから出席率が下がったような気がします。

今後の授業でやってほしいこと

- 実際の企業ではどうやってプログラミングを開発しているのか教えてほしいです。

  基本的に、「H1 ソフトウェア開発の問題」で紹介したものから大きく変わっ
  てないです。

- プログラミング言語がおおすぎて、特徴がわからないです。何が何をつくるのにむいているのか教えてほしいです。

- 院試の難易度とか勉強方法、あと勉強のモチベーションの挙げ方とか先生なりにあれば

- 上にもありますが、院試について教えてほしいです。特に難易度について

- 大学教授にどのようにしてなるか教えてほしいです。

- MIDIなどの演奏データ規格の構成はなんとなく知っているのですが、音源などの音データをどのようにデジタルで保存しているのかがわからないので良ければ教えて下さい。やはりフーリエ変換は必要なのでしょうか?

18. 質問・要望・感想など (12/21 講義より)

質問

- CPANの使い方、目的のモジュールの探し方を教えて下さい。また参考書籍があれば紹介してください

  簡単にデモンストレーションします。私は O'Reilly の本で勉強しましたが、
  今は絶版になってますね。

- 優秀な人財を集めてつまらないソーシャルゲームを作る会社をどう思いますか。私は早く倒産してほしいです

  そこまで強くは思いませんが、私も社会にとってあまり有益だとは思いません。

- 先生はプログラミングがやりたくなったりするときってありますか

  ありますよ。最近は、これを読んでプログラミングしたくなりました。
  
  7つの言語 7つの世界
  http://www.amazon.co.jp/%EF%BC%97%E3%81%A4%E3%81%AE%E8%A8%80%E8%AA%9E-%EF%BC%97%E3%81%A4%E3%81%AE%E4%B8%96%E7%95%8C-Bruce-Tate/dp/4274068579

- 最も美しいと思うプログラムは何ですか

  難しいね。Brian Kernighan の本に出てきたプログラム (とその背後にある思想)
  かなあ。

- 1/18のレポートは提出用と公開用の2つに分けても良いのでしょうか

  非公開のレポートを提出したい場合は comp-lang-enq[atmark]ispl.jp 宛に
  別に提出してください。

- 授業中にたまに表示されるプログラム表示部とコマンドライン(?)が二分割された画面と同じようなものを設定している人を同じ学科の中で何人か見かけたのですが、あれは何を使っているんですか

  Emacs のシェルバッファのことかな? M-x shell です。

冬休みの計画

- 期末が少しでも楽になるようにちまちま復習や課題をやっていこうと思っています。夢がないと言えばそれまでなのですが…

- アプリ作ったりしたいです

- 冬休みが「何もせずに終わる」ということのないようにしたいです

- 1月提出のレポート課題を終わらせておきたいです

- 授業の理解の遅れを取り戻したいです

- レポート課題と授業の復習

- 短期バイトと自動車学校の教習。あと大量のレポートを少しでも減らす

- レポート課題

- 盛大に忙しい実家の魚屋の手伝いで、冬休みは強制ログアウト処理されました。どうせ年明けまで何も無いので、余った時間を耳コピや練習につぎ込めるかどうかです、多分

- 冬休みは12/11に行った所属サークルの演奏動画を編集し、Webページのリフォームを行う予定。phpを用いたWebアプリケーションを導入すると思われる。Dartについても少し調べるかもしれない。阪大ピアノの会 http://handai-piano.org

- 冬休みは新歓に向けてホームページを一新するとともに、音ゲーの練習もしていく

- PBLのRobocodeをいじりたいと思います

- ゆっくりします

- 忘年会、成人式、新年会の流れです

- レポート終わらせて寝正月

- 撮り溜めているやつを消化する

- 成人式

- 宿題終わらせてダラダラする

- レポートを終わらせてHaskell勉強する

- 1月提出のレポートを終わらせる

- レポートをして寝る

- いろいろとたまっているもの

- たまっていたゲーム(主にゼルダとか)とレポート作成、あと冬コミ

- 実家でのんびりすごします

- 成人式

- レポートだけで終わると思います

- 演習D(コンパイラ作成)の作業を進めておく予定です

- 4セメの授業で興味を持ったことについて自習する予定です

- 課題や復習をしつつ、バイトもやって年明けの出費に備えたいです

- 死ぬほど遊びます

- ギョーザをたくさん食べたい

- バイトが…('・ω・`)

その他

- C言語既修者にとってPascalのような"教育用"言語を用いるのは苦痛でしかなかった。また現在のカリキュラムでは教育用言語"で"学んでいるとは言いがたいと思う。教育用言語(の文法)"を"学んでいる。そのようなものは非実用的であり無駄であり悪だ。Pascalの文法表現も極めて不快である。これは個人的な好みだが、begin-end構文は使うべきでないと考えている。文字数が多い、従って瞬時のブロック分解の妨げとなる。また、変数宣言等も利用者の多い、C、C++、Java、Javascript等の表記とはかけ離れている。他の一般的な言語を既習済みの者にとってPascalはゴミ以外の何者でもない。結果、私は昨年の課題では、Cでコードを書き、それをPascalの文法書を見ながら変換するという無駄としか言いようのない行動を強いられた。早急にPascalを阪大から消し去るべきである。Pascalの授業後も数々の授業で例としてPascalのコードが表れる。またPascalでやったように等と言われる。苦痛でしかないし、阪大以外で通用するとも思えない。また何より読みにくく理解しがたい。Cのコードで統一してほしい。

19. 質問・要望・感想など (1/10 講義より)

質問

- 今現在流通しているゲーム機はスペック(描写能力)の割にPCと比べて遥かに低価格で発売できている気がするのですがそれはゲーム機を発売している会社の努力によるものなのでしょうか。それとも描写だけに焦点をあてればあのくらいになるものなのでしょうか。

  ビジネスモデルの違いでしょう。ハードウェアを安く提供して、ソフトウェ
  アで儲ける。プリンタがタダ同然 (インク販売で利益を得る) なのと同じだ
  と思います。

- 再帰解析の問題はアルゴリズムを覚える必要があるのか。それとも、問題に対してから結果が同じで再起がなくなれば良いのか。

  前者です。末尾再帰形という概念と、その解消法を理解してください。

- 提出状況を見るときなどのパスワードとかはいつ、どこで教えていただきましたか?

  講義ビデオのパスワードと同じです。再度アナウンスします。

- 期末試験の問題は1/18のレポートを参考にして作成しますか?

  はい。良い問題があればそのまま使いたいですね。

- コマンドラインとプログラム表示部が 2 分割〜とありましたが、縦に 2 分割するのも emacs でできるんですか?

  はい。C-x 3 か、M-x split-window-horizontally です。

要望

- 今回のレポート提出メール確認ページでは前回のレポートの提出状況が表示されていたように思います。ご確認ください。

- レポート確認のページが更新されていないと思います。

- 講義のページにある、レポート提出状況のファイルが前回レポート分のものになっています。

  指摘ありがとう。更新に失敗していましたので治しました。

- ビデオやレポート確認ページのパスワードをもう一度アナウンスしてほしいです。

  再度アナウンスします。

今年の豊富

- ICPCがんばりたいです。

- Python…。

- Pythonの勉強をする。

- だらだらしない。

- サークルの職責を果たす。

- バランスの良い食事。

- プログラム等の実力を高めたい。

- メリハリをつけた正確をしたいです。

- 今年は単位を全部取りたいです。

- 今年も健康に過ごせたらと思います。

- 健康な生活を。

- 先延ばしにしてやれていなかったことを始める年にしたい。

- 前もって行動する。

- 勉強・サークルを両方頑張る。

- 単位を取る。

- 単位を落とさない。

- 単位を落とさない。

- 単位取る。

- 単位落とさない。

- 去年やり残したことを終わらせる。

- 向上心を持つ。

- 多くの作品(本など)に触れてみる。

- 希望の研究室への配属を目指す。

- 授業でキツイ課題が提示された程度で左右されない程度の技術力を維持して音楽に時間を配分できるようにしたい。聴力と音感をなんとかしたい。

- 日々を楽しんで過ごす。

- 時間を有意義に使いたいです。

- 決めた目標は確実にこなす。

- 演習以外でプログラムを作成する。

- 生きのびる

- 目標を持って生活する。

- 目標を確実に達成する。

- 英語ちょっとできるようになりたい。

- 語学力をつける。

- 頑張る。

- 飛び級するか早く決めて、どちらにせよ院試に向けての準備をする。

20. 質問・要望・感想など (1/18 講義より)

質問

- L8のテキスト側であらわれるC2等てなんですか

  確認しましたが L5.1 に C2 の記述はありませんね。誤植だと思います (お
  そらく古い版には C1、C2 等の説明があったのでしょう)。

- 今セメは回路に関する授業が多かったのですが、後々に役立つんでしょうか

  はい。コンピュータサイエンス基礎知識はきっと役立ちます。

- 最近 Java でチェスを (友人と?) 一緒に作っています。ちょっとだけ完成するとapplicationの形になると思います。先生はスマフォのアプリを作ったことありますか

  ないです。その昔、ポケコンでアプリケーションを作ってたことはありますが……。
    
  PC-E500系 (Wikipedia)
  http://ja.wikipedia.org/wiki/%E3%83%9D%E3%82%B1%E3%83%83%E3%83%88%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E8%A3%BD%E5%93%81%E4%B8%80%E8%A6%A7#PC-E500.E7.B3.BB

- 期末試験が不安です。パワーポイントの内容だけで本当に解けるのでしょうか

  PowerPoint のスライドは 100% 理解してください。過去の講義資料、ミニレ
  ポート、予想問題、講義ビデオで復習しておいてください。

- 期末試験とレポートの配点は期末試験の採点が終わってから決めるのでしょうか

  事前に決めてあります。

- 期末試験の日程がどの授業も同じような日にかたよっていますが、これは意図的なものなのでしょうか

  試験期間が設定されていて、そこに固められているのだと思います。

- 第3、4回のレポートはpdfでの提出でしたが、それらは返却されないのですか

  点数とコメントをメールで送付する予定です。

最近興味を持っていること

- C++11のハッシュテーブルに使われているMurmurHashとFnvHashについて

- C/JAVA

- HTML5とスマホ用のWebサイトの作成に関心を持っています

- Haskell、Scalaなどの関数型言語

- JAVA

- JAVA

- JAVAで色々プログラムを作りたい

- JavaScriptや Perl(CGI)などWeb系プログラミング

- Java以外のオブジェクト指向型言語に手を付けてみようと考えています

- RoboCodeの強いのを作りたい

- ゲームのAIや計算過程など

- ゲームの面白さはどこにあるのか

- パソコンのいろいろ

- マスタリング?

- 実際に社会で発揮できるような実践力、音楽などでも発揮できるアドリブ力の向上

21. 質問・要望・感想など (1/25 講義より)

質問

- 抽象データ型の「モジュールが定義するデータ」って何ですか

  L9 のスライド 3 ページ「モジュールを発展させ、モジュールが定義するデー
  タを一つの (独自の) 型の値として扱えるようにしたものが抽象データ型で
  ある」の部分ですね。抽象データ型 = (モジュール + データ + データへの
  操作) によって定義される型、です。ここでの「データ」を「モジュールが
  定義するデータ」と呼んでいます。例えば、4 ページの RE、IM、I のことで
  す (ちなみに、I はモジュールが定義するデータですが、(private を指定し
  ていないので) public となり、提供される「データへの操作」でなくても操
  作可能です)。

- クロームの便利なアドオン教えてください

  あまり使い込んでいませんが、私は以下の拡張機能を使っています。他に便
  利なものがあれば教えてください。
  
  Adblock Plus (Beta)1.2
  広告やバナーを削除
  
  Autofill5.5
  フォームを自動的に入力
  
  AutoPagerize0.3.4
  複数ページを連続して表示
  
  Chrome Clipper1.9.3
  フォームに定型文を入力できる
  
  NotScripts0.9.6
  サイト単位で JavaScript を有効/無効に
  
  Smooth Gestures0.15.4.12
  マウスのジェスチャでブラウザを操作
  
  Vimium1.30
  Vi ライクなキー操作を可能に

- 研究職についてどう思いますか

  夢がある仕事だと思います。

- 研究室ではどのようなプログラミング言語を使用しているのですか

  実装の目的と、実装する人の好みで選んでいます。最近使っている/いたのは
  Perl、Java、Python、Ruby、C、C++、Processing あたりです。

- 先生が一番好きな言葉や尊敬する人を教えて下さい

  ここに書いてあるので、よければ見てみてください。
  
  http://www.ispl.jp/~oosaki/research/sccrs05/10-tips.pdf
  
  一番好きなのはこれです。
  
  ``Happiness is a journey, not a destination. Happiness is to be
  found along the way, not at the end. For then the journey is over
  and it is too late. The time for happiness is today, not tomorrow.''
  --- Joseph Smith Jr.

- 阪大のスーパーコンピュータを利用して研究を行なっている研究室はありますか

  阪大のスパコン (NEC 製) のサービスを利用しているのは、大規模計算をし
  たい研究室なので、情報系の研究室では少ないと思います。情報系の研究室
  では、(スパコンより優れた) 計算環境を作る研究をしています。ネットワー
  ク、ハードウェア、アルゴリズム、GPU 等、各研究室がいろんなアプローチ
  を取ってます。

本セメスターを振り返って

- やっとまともな授業が出てきた

- コマ数が多くて忙しかった

- テストの波が押し寄せてきて辛いです

- テストやレポートが重なって大変だった

- ミニレポが多くて大変だった

- モチベーションが低すぎた

- レポート、テストが重くて今までで一番大変でした

- レポート、課題が非常に多く、多すぎて逆にやる気がなくなってダレてしまった

- レポートが多かった

- レポートが多く、常に学生が何か課題を抱える状況が約4ヶ月間ずっと続いたので問題だと思う。個人的にも音楽に使える時間が学生なのに極端に減ったのは残念だった

- レポートが多すぎた

- レポートが大変だった

- レポートが鬼畜すぎる

- レポートだらけだった

- レポートで忙しくて、何回も徹夜したので体力的にしんどかったです

- レポートの数

- レポートや試験がたくさんあってしんどかった

- レポート多すぎです

- 今セメはレポート類が途絶えなかった

- 他の授業で聞けないようなことを質問で聞けて良かった

- 再履修でしたが、3年次の演習D(コンパイラの制作)に必要な要素が濃縮されている講義だと気づきました。1年早く気づいていれば……

- 前セメと比べて忙しかったように思います。生活が大きく変わりました

- 学生参加の授業を目標に様々な工夫・取り組みがなされていた印象的な授業でした

- 実験があったり試験が集中していたりして、厳しいと思った

- 実験がとても大変だった。まだ終わってないけど

- 実験が一番大変だった。量、ソフトのバグ、課題文に書いてない落とし穴が多かったため

- 実験と数学で手いっぱいでした

- 必修科目が詰まりすぎている。3セメとバランスを取るべき

- 授業が多くて大変でした……

- 授業によって難しさが変わるので、コマ数と忙しさが比例するわけではないと実感した

- 本格的に専門科目が多くなって忙しかった

- 毎回アンケートで質問を募集してくれたのが良かったです

- 苦手な分野の科目が多くてしんどかった

- 難しい試験が多くなって、かつ同じ日に試験が実施されるのが辛い

その他

- 部屋を借りる時に口ぞえなどで協力してほしいです

22. 提出された第 5 回レポート

http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/for-students/report5/

23. 第 1 回、第 2 回レポートの見本

http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/for-students/model/report1/

http://www.ispl.jp/~oosaki/lecture/comp-lang/2011/for-students/model/report2/

24. 質問・要望・感想など (2/1 講義より)


- スコープは言語によって差がありますよね?

- 期末試験のスコープの問題で、過去資料の P2 と解答例が違った答えだった気がします。

  指摘ありがとう。配布資料とスライドでは、P0 (ルート) の扱いが違ってい
  ました。Pascal のスコープは、配布資料が正しい (P0 は意味を持たない)
  です。Pascal の仕様 (ISO 7185:1990) の 6.10 章 Programs では以下のよ
  うに規定されています。
  
    The identifier of the program-heading shall be the program name.
    It shall has no significance within the program.
  
  講義「L5 スコープ」の配布資料・スライド両方を正解にします。

- 第 3 回、第 4 回のレポートでよくできているものは公開されないのですか?

  第 3 回、第 4 回については公開しません。

- マウスを使わないブラウザで便利なものがあれば教えてください。

  単純な Web ページしか見られませんが、w3m、w3m-el くらいかな? 他にいい
  ものがあれば教えてください。

- グーグルプライバシーポリシーが改定されますね。サービスが幅広いので容易に個人をプロファイルできる情報を収集されるのは怖いです。

- Google があらゆる情報を収集しているのは何の野望でしょうか。何らかの信念によるものと思いますが不気味です。

  同感です。私は、google.co.jp、google.com の JavaScript 実行は禁止して
  います。

- 春休みに Emacs についての知識をつけたいのですが、オススメの本があれば教えて頂きたいと思います。

  Emacs の良い本は読んだことがありません。最近だと、Emacs Lisp 関係の書
  籍もいろいろ出ているので、それらを読んでみてもいいかも知れません (私
  自身は読んでないです)。
  
  Amazon.co.jp を「Emacs Lisp」で検索した結果
  http://www.amazon.co.jp/s/ref=nb_sb_noss?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&url=search-alias%3Dstripbooks&field-keywords=emacs+lisp&x=5&y=18

- Emacs で表示するフォントをゴシック体系にすると、より見やすくなるかもしれない。

  なるほどね。来年の講義で試してみます。

Hiroyuki Ohsaki (oosaki[atmark]ist.osaka-u.ac.jp)