Haskell study meeting #01

  • 1,250 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,250
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. Why Haskell?2012/05/15@Shimojo Lab.
  • 2. Agenda1.About me2.Why Haskell3.What is Haskell4.Let’s start Haskell
  • 3. About me
  • 4. About me• 髙橋 慧智• プログラミング• 写真• Apple
  • 5. MAROON 5
  • 6. COLDPLAY
  • 7. House Music
  • 8. Apple!
  • 9. Life with programming BASIC 中1∼ HSP 中2∼ C 中3∼ C++ 高2∼ Haskell 高3∼ C# 大学1∼
  • 10. Why Haskell
  • 11. Boilerplate code in C#1 List<int> a = new List<int> {1, 2, 3, 4, 5};2 List<int> b = new List<int>();34 for (int i = 0; i < a.Length; i++) {5 if (a[i] % 2 == 0) {6 b.Add(a[i]);7 }8 }
  • 12. That’s all1 foldl (*) 1 [1..10]
  • 13. Real mess• ヌルポ • 例外処理• デッドロック • スレッド間通信• ロックし忘れ • メモリリーク• キャスト • 初期化忘れ• 冗長な文法 • etc.
  • 14. In Haskell1 a = [1, 2, 3, 4, 5]2 b = filter even a
  • 15. Quick Sort1 qsort [] = []2 qsort (x:xs) = qsort smaller ++ [x] ++ qsort bigger3 where smaller = filter (<x) xs4 bigger = filter (>=x) xs
  • 16. Let’s talk about the future • マルチコア • OpenCL • メニーコア • MapReduce • マルチプロセッサ • Hadoop • GPGPU • BigTable • クラウド • etc.
  • 17. 6 Corehttp://news.kakaku.com/prdnews/cd=pc/ctcd=0510/id=14313/
  • 18. 10 Corehttp://www.mdn.co.jp/di/newstopics/17719/
  • 19. http://www.apple.com/macpro/
  • 20. 100 Corehttp://www.tilera.com/products/processors/TILE-Gx_Family
  • 21. “It changes the way youthink about programming” http://scienceblogs.com/goodmath/2006/11/why_haskell.php
  • 22. What is Haskell
  • 23. Functional Programming Language
  • 24. FunctionalProgramming Language• 関数がファーストクラスオブジェクト• 関数は値• 関数を変数に代入できる• 関数の関数の引数に渡せる• 関数の返り値として関数を返せる• 関数を返す関数を返す関数を返す関数?
  • 25. What are the benefits?• 高度な抽象化• モジュール性の向上
  • 26. Other FunctionalProgramming Languages LISP 関数型言語の父 Scala Twitterの実装言語 Erlang 強力な並列処理 F# .NETで動く
  • 27. Again, why Haskell• 参照透明性• 静的な型付け/型推論• 遅延評価• 代数的データ型/型クラス/モナドetc.
  • 28. Referentially Transparent• 参照透明でないものとは?• 入出力• グローバル変数• 変数への読み書き全般• 乱数etc.
  • 29. What are the benefits?• 読みやすい/デバッグしやすい• メモ化(memoization)• 自動並列化
  • 30. Lazy evaluation• 値が必要になるまで計算しない• 計算量の最適化• 探索などを自然に記述できる
  • 31.
  • 32. Example1 fib = unfoldr ((x, y) -> Just (x + y, (y, x + y))) (0, 1)2 take 100 fib
  • 33. Statically Typed• float x = 1 / 2• Cのvoid*• Java/C#のobject• Haskellでキャストはできません
  • 34. Type Inference• 変数• 関数の引数• 関数の返り値• これらを全て関数のシグネチャやリテ ラルの型から導く
  • 35. Boilerplate code in C#1 List<int> a = new List<int> {1, 2, 3, 4, 5};2 List<int> b = new List<int>();34 for (int i = 0; i < a.Length; i++) {5 if (a[i] % 2 == 0) {6 b.Add(a[i]);7 }8 }
  • 36. The benefits• これらが私たちにもたらしてくれるも のとは• コンパイルが通れば8割方バグはない• デバッグ/メンテナンスが簡単• 簡潔かつ自然なコーディング• テストデータの自動生成etc.
  • 37. Summary• メニーコア時代に生き残るために• 安全にコーディングするために• 楽しくコーディングするために• 美しくコーディングするために
  • 38. Let’s start Haskell!
  • 39. Thank you for listening.
  • 40. How to start http://hackage.haskell.org/platform/
  • 41. Learning materials• ふつうのHaskellプログラミング• プログラミングHaskell• すごいHaskellたのしく学ぼう!• Real World Haskell