QR コードと URL

https://goo.gl/KFsnYq

QR コード

香川研究室について


香川 考司

教員紹介

  • 香川 考司 (かがわ こうじ)
    香川大学 創造工学部
    情報システム・セキュリティ (CSSS) コース
  • 専門分野
    プログラミング言語(特に 型システム
    プログラミング学習支援システム
  • 担当授業
    『プログラミング』『オートマトン』『コンパイラ』『オブジェクト指向言語』
    『プログラミング言語論』など

例えると…

Genie emoji clipart (F) Genie emoji clipart (M)
  • コンピューター   魔法のツエ
  • プログラム     呪文
  • プログラミング   呪文を組み立てること
  • プログラミング言語 呪文体系
  • 型システム     呪文のミスを減らす仕組み
  • 学習支援システム  魔法使いの弟子養成システム

コンピューターの仕組み

主に、計算する部分(CPU)と、 記憶する部分(メモリー)からなる

  • CPUは、+−×÷<>= などの計算をする
    • 単純な計算だが一秒に何十億回も実行する
  • メモリーは、いわば巨大なそろばんである
    • 億や兆を超えるケタを持つ

プログラム

CPU に与える手順・指示のまとまりである

  • CPU が理解できる指示は『機械語』という
  • プログラムはメモリーに記録されている
    フォン=ノイマン方式

機械語

  • メモリーの数ケタ分を一まとまりとみなす
    (すごろく🎲の“マス”みたいなもの)
  • CPU は各マスの指示を順々に実行する
  • 一つ一つの指示はとても単純である。例えば…
    • メモリーのあるケタに別のケタの数を足す(引く)
    • 直前の式が成り立つなら指定分マスを進む(戻る)
    など

プログラムの組立て

プログラムの組立ての基本は 順次反復分岐の 3 つである。 これだけあれば“何でも”できる

  • 順次 ⋯ いくつかの処理を、順に一つずつ実行していく
  • 反復 ⋯ 同じ処理をくり返す
  • 分岐 ⋯ 条件が成り立つかどうかによって、処理を選ぶ

プログラミング言語

機械語で大きなプログラムを作るのは難しい。
そこで…

  • 人にわかりやすい体系(プログラミング言語)でプログラムを作って機械語に翻訳する
  • 指示のまとまりを部品化することで、さらに複雑な指示を組み立てられる

部品化の考え方の違いによって、たくさんの種類のプログラミング言語がある

ポイント

コンピューターは、一つ一つは単純な指示を、 何億回・何兆回⋯でも疲れずくりかえす

  • たくさん覚えて忘れない速くて間違えない、
    『常識』は持ち合わせていない。つまり人間が指示を間違えると、間違ったまま実行する
  • プログラムはとても長い
    プログラミング言語を使って、うまく部品化することで、 大規模・複雑なプログラムを組み立てることができる

さまざまなプログラミング言語

Fortran, C, C++, Java, C#, Haskell, Scala, Scheme, Prolog, miniKanren, Perl, PHP, Ruby, Python, JavaScript, Clojure, Kotlin, Go, Swift, Rust, …

  • パラダイムによる分類
    命令型、オブジェクト指向、関数型、論理型
  • 型付けによる分類
    静的型検査、動的型検査、他
Pieter Bruegel the Elder - The Tower of Babel (Vienna) - Google Art Project - edited

言語によって得意分野が異なる

香川研究室の研究テーマ

  • プログラミング言語処理系(特に型システム
    大規模で複雑なプログラムを、部品化することで効率よく作り、 しかもプログラムの間違いを起こりにくくすることを目指す
  • プログラミング学習支援システム
    初心者が、楽しく、効率よく、プログラミングを学習できることを目指す

やってみよう

香川研究室の展示「お絵かきプログラミング」では、 ここまでで説明した、 順次反復分岐 を使って、コンピューターに規則正しい絵を描かせる体験をします。

Processing という言語を参考にして、お絵かき用の機能を部品化しました。

サンプル (1)

やってみる

サンプル (2)

やってみる

興味のある人は…

以下のリンクへ進んでください。