勉強会を開催するつもりです。以前アナウンスした「自分でつくるPDFリーダー」の内容になります。勉強会の成果物をココに載せていき、最後は同人誌として執筆したいです。
場所は県立長野図書館(長野市)、日時は1月25日(土)を予定しています。
Connpassで【まえがき】以下の内容で募集をかけています(https://connpass.com/event/159833/)。
Connpassアカウント持っていない人は、私の方に連絡ください。
【まえがき】
プログラミング言語Haskellの勉強会です。
具体的なガジェット(速読・精読を可能とする電子文書リーダー)を作成することを通じて勉強していきます。
電子文書リーダーは、自然言語処理技術を利用しています。そちらも併せて勉強します。
【Haskellの紹介】
1. 先端領域に使われる言語
1.1. A.I.言語としての本命
Lispとならんで本命とされます。
型理論、圏論等に立脚した学術的バックボーンを持った言語(関数型プログラミング言語)です。
現在流行りの機械学習ベースのA.I.の先、すなわち
「人の言っていること(論理)を理解するA.I.」
みたいなのをやる際には、これら理論が必要となりHaskellが台頭してくるのが予想されます。
1.2. ロボット、量子コンピューティング
ロボット向け言語、量子コンピューティング向け言語としても注目されています。
数学に立脚しているので抽象度が高く、最適化のポテンシャルは極めて高いです。
1.3. 数学の定理証明
数学の定理証明もできてしまいます(正確には親戚筋のCoq、Agda、Idris等ですが)。
この辺り、高度なA.I.の条件になってくるのが分かりますね。
2. Haskellにまつわる誤解 -不人気の理由
しかし学術的な専門用語がたくさん出てきて小難しい感じがする、具体的なプロダクトは作れない学者の玩具、
と見られてしまっていて、やる人がまだまだ少ないのが現状です。
他言語と比べてライブラリが貧弱という印象も持たれています。
3. Haskellの真実
3.1. 実は初心者向け言語
本当は段階を踏んで要点を押さえれば、シンプルで素直な言語です。
プログラマがルーズに書く為の例外ルールがほぼなく、初心者には分かりやすいです。
情報科学の基礎概念が系統立ってそのまま出てきますので、
他言語理解の際にも役立ちます。
実はですが、Excelとも深い関係があると見ています。
3.2. 学習投資が全く無駄にならない件
それ系(関数型プログラミング)の学者さん達のプッシュ(例えばこういうサマースクール)があるので、
陳腐化の恐れはほぼ無いです。
最近注目されていますが、Haskellの登場は遥か1990年まで遡ります。
実はPythonよりも年上です。
また、最近になって、Haskell(正確には関数型プログラミング)で当たり前とされてきた概念が、他言語に移植されつつあります。
流行の最先端に位置する、そういう言語です。
新しい物好きの人は要チェックです。
4. すごいH (Happy Haskell Hacking)
最後にこれが一番大事ですが、書いててすごく楽しいです(すごいH)。
私は2年間、ほぼ毎日書いていましたが全く飽きませんでした。
結構やりこんだと思っていますが、まだまだ知らないことがたくさんあります。
一緒にHaskell、勉強しませんか?
【おしらせ】
私は趣味でプログラミングをやっていますが、本格的な商業ソフトウェアをつくったことはありません。
その方面でフォローしていただける方いたら大歓迎です。
また、最近の機械学習のトレンドはフォローしきれていないので、是非詳しい人サポートおねがいします。
全体の方向性と取りまとめは私が行いますが、みなさんが知恵を出して最後に何かを持ち帰る、
そんな感じの勉強会にしていけたらなと思います。
プログラミングしたことないという方も、大歓迎です。
上で述べましたとおり、Haskellは初心者向けなんじゃないかと思っています。
【対象者】
- Haskellを勉強したい人
- 自然言語処理を勉強したい人
- 現在主流のA.I.(機械学習ベース)とは違う路線のA.I.をやりたい人
- 何かおもちゃ的(しかし実用的)なプログラムをつくってみたい人
- プログラミングをこれから勉強しようと思っている人(初心者)
【題材】
プログラミングの勉強では、モチベーションの観点で題材(何をつくるか)が重要になってきます。
やっぱりプログラムをやった結果が目に見えるGUIが題材として適していると思います。__
手前味噌ですが、私が開発しているガジェット(速読・精読を可能とする電子文書リーダー)を題材にします。
詳しくは、このサイトを見てください。
プログラミングのシンタクスハイライトにヒントを得て作りました。
構文解析技術といった自然言語処理技術が必須になってきます。
これに似たようなものを皆さんが自作できるようになるのを最初の目標とします。
出来上がったものは、皆さんご自身が実用(勉強や読書)に使うもよし、
子供のおもちゃに使うもよし、といった感じです。
ガジェットをつくる過程で、
1. 文章をHaskellで構文解析するだけの力
2. 型理論(あわよくば圏論)
などといった、冒頭に述べた高度なA.I.をやる上でのスキルや背景知識を得られるはずです。
このガジェットをつくった後で、これらを勉強していこうと考えています。
【教科書】
プログラミングHaskell第二版(Graham Hutton著)
他にも、いくつか自分の持っている教科書を当日、ご紹介する予定です。
【会場】
【タイムテーブル】
初回は環境構築のみです。
ある意味、環境構築がプログラミング学習で最もむずかしいところなので、
最初の回だけ参加して後はお家で勉強、というのもありかと思います。
時間 | 内容 |
---|---|
13:00 – | 自己紹介等 |
13:30 – | オリエンテーリング(今後の計画) |
14:00 – 17:30 | 環境構築など |
【持ち物】
ノートPC
教科書については初回は不要です(環境構築のみなので)。