SlideShare a Scribd company logo
1 of 14
見よ、これが lisper だ
FU7MU4 @ HISTUDY ON FEB 18 th 2017
この文書について
この資料は、 2017 年の
2 月の HISTUDY の発表
資料です。
Lisp の凄さをしらしめたい !
誤: Lisp の凄さ
正: Lisper のおかしさ
Lisp は安全
● FORTRAN や C と同時期からの実績
● ガーベッジコレクタがある
● ANSI など、外部が仕様や規格を決定する
( 一部の団体が規格や動作が変更できない )
→ 長期にわたって動作が保証される
→ 仕様や規格によりプログラマが確保できる
安全の意味が違う !
現代の C 言語
● I Do Not Know C
http://qiita.com/yohhoy/items/960ee7a7b502e5c764
→ 身近な未定義動作の紹介
● 2016 年 C はどのように書くべきか
http://postd.cc/how-to-c-in-2016-1/
→ 「もし避けられるなら C 言語を使うな」
Scheme で C 書けばいいよ
Lisp は早い
● Lisp は一部に型宣言ができる
● 型あり:型チェックなしで C と同等の早さ
● 型なし:すばやく開発できる
● Lisp は S 式を交換することで容易に開発できる
早さの意味が違う !
C で書くコードの方が Common Lisp で
書くより速いって人がいたら、
それは彼の C の技量が
高すぎるってことだね。
— Eric Naggum
Lisp は実用
● Autocad, ルンバ .................................[Product]
● Emacs.....................................[The Text Editor]
● Gimp(script-fu), Make(Guile)...............[glue]
● Scim/SKK............................................[IM]
● Viaweb(Yahoo shop), Kahua, ningle,..[Web]
その他の採用例
ゲームプログラムのスクリプト言語
遺伝的プログラミング
プロトタイプ
DSL
Lisp の種類
● Lisp 1
– 関数と変数の名前空間が同じ
– R5RS, R6RS, R7RS, SRFI 規格
– 代表例 Scheme
● Lisp 2
– 関数と変数の名前空間が別
– HyperSpec, ANSI 規格
– 代表例 Common Lisp, ANSI Lisp
Lisp1 の種類
● Gauche Scheme
– インタプリタ ( スクリプト向け )
● Cheken Scheme
– インタプリタ + コンパイル ( 中間言語は C)
● Racket (aka PLT Scheme)
– 統合開発環境こみ
– 画像がネイティブ対応
– 言語を変更できる
– あたまおかしい ( 褒めことば )
今日のメインは
Gauche Scheme の話
です !
Lisp2 の種類
● Clozure CL
macOS 向け、統合開発環境あり
● SBCL 、 Clisp
コンパイル型
● Embedded CL
C 言語に変換または埋め込み
● Clojure
Java VM で動作する、最新の実装
他の Lisp の種類
● Emacs Lisp
Emacs 向けで文書専用だが遅い
● Guile
GNU 公式のグルー言語 (Gnu Make など )
● Script-fu
Gimp 向け拡張言語
● Autolisp
Autocad 向けの拡張言語
Emacs と Gnu Make
と Gimp とルンバ
のユーザーは
Lisp ユーザー
非 Lisp と Lisp
非 Lisp
● 構文はおしきせ
● コードジェネレータはない
● カスタマイズはほどほど
● 問題にあわせてプログラミ
ング言語を選ぶ
Lisp
● 構文は拡張可能
● コードジェネレータは拡
張可能
● カスタマイズは善
● 評価タイミングも自由
● 問題のためにプログラミ
ング言語を拡張
突然ですが
PowerPoint や
Impress って
Lisp ではないですよ
ね ?
Presentation/Lisp
Lisp
● Emacs/org-mode
● Lisp で画面を生成
● Racket/Slideshow
Lisp じゃないもの
● MS PowerPoint
● Libreoffice/Impress
● Keynote
● PDF
ただし PostScript は除
く

More Related Content

What's hot

KOF2017 東海道らぐLT
KOF2017 東海道らぐLTKOF2017 東海道らぐLT
KOF2017 東海道らぐLTMasataka Kondo
 
やってみようAWS IoT (ROS Japan UG #44 LT大会)
やってみようAWS IoT (ROS Japan UG #44 LT大会)やってみようAWS IoT (ROS Japan UG #44 LT大会)
やってみようAWS IoT (ROS Japan UG #44 LT大会)Seiya Shimizu
 
Iron rubyとsinatraで作るデスクトップアプリ
Iron rubyとsinatraで作るデスクトップアプリIron rubyとsinatraで作るデスクトップアプリ
Iron rubyとsinatraで作るデスクトップアプリYamamoto Kazuhisa
 
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介豊明 尾古
 
Androidの忌しきStackOverFlowをどうにかする
Androidの忌しきStackOverFlowをどうにかするAndroidの忌しきStackOverFlowをどうにかする
Androidの忌しきStackOverFlowをどうにかするKoji MATSUBARA
 
FukuokaDec09
FukuokaDec09FukuokaDec09
FukuokaDec09tengu
 
Ruby City Matsue
Ruby City MatsueRuby City Matsue
Ruby City MatsueTetsuo NODA
 
【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWayTakayuki Shimizukawa
 

What's hot (8)

KOF2017 東海道らぐLT
KOF2017 東海道らぐLTKOF2017 東海道らぐLT
KOF2017 東海道らぐLT
 
やってみようAWS IoT (ROS Japan UG #44 LT大会)
やってみようAWS IoT (ROS Japan UG #44 LT大会)やってみようAWS IoT (ROS Japan UG #44 LT大会)
やってみようAWS IoT (ROS Japan UG #44 LT大会)
 
Iron rubyとsinatraで作るデスクトップアプリ
Iron rubyとsinatraで作るデスクトップアプリIron rubyとsinatraで作るデスクトップアプリ
Iron rubyとsinatraで作るデスクトップアプリ
 
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介
 
Androidの忌しきStackOverFlowをどうにかする
Androidの忌しきStackOverFlowをどうにかするAndroidの忌しきStackOverFlowをどうにかする
Androidの忌しきStackOverFlowをどうにかする
 
FukuokaDec09
FukuokaDec09FukuokaDec09
FukuokaDec09
 
Ruby City Matsue
Ruby City MatsueRuby City Matsue
Ruby City Matsue
 
【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay【修正版】Django + SQLAlchemy: シンプルWay
【修正版】Django + SQLAlchemy: シンプルWay
 

Similar to Look at-the-lisper.2017.02.18

ログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてcyberagent
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部Masahiro Wakame
 
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみたYasushi Kato
 
Zappa で Serverless CMS を作ってみる
Zappa で Serverless CMS を作ってみるZappa で Serverless CMS を作ってみる
Zappa で Serverless CMS を作ってみるIosif Takakura
 
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたサーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたItaru Kitagawa
 
TypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdfTypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdfRyo Higashigawa
 
わかりやすい資料作成の基本(文章編)
わかりやすい資料作成の基本(文章編)わかりやすい資料作成の基本(文章編)
わかりやすい資料作成の基本(文章編)juntoku_yoshizawa
 
グローバルなエンジニアを目指す為の入門的な話
グローバルなエンジニアを目指す為の入門的な話グローバルなエンジニアを目指す為の入門的な話
グローバルなエンジニアを目指す為の入門的な話Yuichiro Nagaoka
 
Cプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧めCプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧めMITSUNARI Shigeo
 
F# で ASP.NET
F# で ASP.NETF# で ASP.NET
F# で ASP.NETm ishizaki
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0Kiwamu Okabe
 

Similar to Look at-the-lisper.2017.02.18 (14)

ログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについて
 
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
 
Oss coding style
Oss coding styleOss coding style
Oss coding style
 
絶望しない! コミケ
絶望しない! コミケ絶望しない! コミケ
絶望しない! コミケ
 
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
 
Zappa で Serverless CMS を作ってみる
Zappa で Serverless CMS を作ってみるZappa で Serverless CMS を作ってみる
Zappa で Serverless CMS を作ってみる
 
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたサーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
 
TypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdfTypeScript で型を上手く使う試み.pdf
TypeScript で型を上手く使う試み.pdf
 
わかりやすい資料作成の基本(文章編)
わかりやすい資料作成の基本(文章編)わかりやすい資料作成の基本(文章編)
わかりやすい資料作成の基本(文章編)
 
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPANSAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
 
グローバルなエンジニアを目指す為の入門的な話
グローバルなエンジニアを目指す為の入門的な話グローバルなエンジニアを目指す為の入門的な話
グローバルなエンジニアを目指す為の入門的な話
 
Cプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧めCプログラマのためのカッコつけないプログラミングの勧め
Cプログラマのためのカッコつけないプログラミングの勧め
 
F# で ASP.NET
F# で ASP.NETF# で ASP.NET
F# で ASP.NET
 
スタート低レイヤー #0
スタート低レイヤー #0スタート低レイヤー #0
スタート低レイヤー #0
 

More from home

Gitてへぺろ.pdf
Gitてへぺろ.pdfGitてへぺろ.pdf
Gitてへぺろ.pdfhome
 
Julia is your friend (Japanese)
Julia is your friend (Japanese)Julia is your friend (Japanese)
Julia is your friend (Japanese)home
 
My first Eclipse (on Kansai Lisp User Group)
My first Eclipse (on Kansai Lisp User Group)My first Eclipse (on Kansai Lisp User Group)
My first Eclipse (on Kansai Lisp User Group)home
 
My first eclipse (Japanese)
My first eclipse (Japanese)My first eclipse (Japanese)
My first eclipse (Japanese)home
 
会場紹介(さくらインターネットイベントスペース)
会場紹介(さくらインターネットイベントスペース)会場紹介(さくらインターネットイベントスペース)
会場紹介(さくらインターネットイベントスペース)home
 
Look at-the-lisper
Look at-the-lisperLook at-the-lisper
Look at-the-lisperhome
 
slide for Himeji study Nov, 2016 by fu7mu4
slide for Himeji study Nov, 2016 by fu7mu4slide for Himeji study Nov, 2016 by fu7mu4
slide for Himeji study Nov, 2016 by fu7mu4home
 

More from home (7)

Gitてへぺろ.pdf
Gitてへぺろ.pdfGitてへぺろ.pdf
Gitてへぺろ.pdf
 
Julia is your friend (Japanese)
Julia is your friend (Japanese)Julia is your friend (Japanese)
Julia is your friend (Japanese)
 
My first Eclipse (on Kansai Lisp User Group)
My first Eclipse (on Kansai Lisp User Group)My first Eclipse (on Kansai Lisp User Group)
My first Eclipse (on Kansai Lisp User Group)
 
My first eclipse (Japanese)
My first eclipse (Japanese)My first eclipse (Japanese)
My first eclipse (Japanese)
 
会場紹介(さくらインターネットイベントスペース)
会場紹介(さくらインターネットイベントスペース)会場紹介(さくらインターネットイベントスペース)
会場紹介(さくらインターネットイベントスペース)
 
Look at-the-lisper
Look at-the-lisperLook at-the-lisper
Look at-the-lisper
 
slide for Himeji study Nov, 2016 by fu7mu4
slide for Himeji study Nov, 2016 by fu7mu4slide for Himeji study Nov, 2016 by fu7mu4
slide for Himeji study Nov, 2016 by fu7mu4
 

Look at-the-lisper.2017.02.18

  • 1. 見よ、これが lisper だ FU7MU4 @ HISTUDY ON FEB 18 th 2017
  • 2. この文書について この資料は、 2017 年の 2 月の HISTUDY の発表 資料です。
  • 3. Lisp の凄さをしらしめたい ! 誤: Lisp の凄さ 正: Lisper のおかしさ
  • 4. Lisp は安全 ● FORTRAN や C と同時期からの実績 ● ガーベッジコレクタがある ● ANSI など、外部が仕様や規格を決定する ( 一部の団体が規格や動作が変更できない ) → 長期にわたって動作が保証される → 仕様や規格によりプログラマが確保できる 安全の意味が違う !
  • 5. 現代の C 言語 ● I Do Not Know C http://qiita.com/yohhoy/items/960ee7a7b502e5c764 → 身近な未定義動作の紹介 ● 2016 年 C はどのように書くべきか http://postd.cc/how-to-c-in-2016-1/ → 「もし避けられるなら C 言語を使うな」 Scheme で C 書けばいいよ
  • 6. Lisp は早い ● Lisp は一部に型宣言ができる ● 型あり:型チェックなしで C と同等の早さ ● 型なし:すばやく開発できる ● Lisp は S 式を交換することで容易に開発できる 早さの意味が違う ! C で書くコードの方が Common Lisp で 書くより速いって人がいたら、 それは彼の C の技量が 高すぎるってことだね。 — Eric Naggum
  • 7. Lisp は実用 ● Autocad, ルンバ .................................[Product] ● Emacs.....................................[The Text Editor] ● Gimp(script-fu), Make(Guile)...............[glue] ● Scim/SKK............................................[IM] ● Viaweb(Yahoo shop), Kahua, ningle,..[Web] その他の採用例 ゲームプログラムのスクリプト言語 遺伝的プログラミング プロトタイプ DSL
  • 8. Lisp の種類 ● Lisp 1 – 関数と変数の名前空間が同じ – R5RS, R6RS, R7RS, SRFI 規格 – 代表例 Scheme ● Lisp 2 – 関数と変数の名前空間が別 – HyperSpec, ANSI 規格 – 代表例 Common Lisp, ANSI Lisp
  • 9. Lisp1 の種類 ● Gauche Scheme – インタプリタ ( スクリプト向け ) ● Cheken Scheme – インタプリタ + コンパイル ( 中間言語は C) ● Racket (aka PLT Scheme) – 統合開発環境こみ – 画像がネイティブ対応 – 言語を変更できる – あたまおかしい ( 褒めことば ) 今日のメインは Gauche Scheme の話 です !
  • 10. Lisp2 の種類 ● Clozure CL macOS 向け、統合開発環境あり ● SBCL 、 Clisp コンパイル型 ● Embedded CL C 言語に変換または埋め込み ● Clojure Java VM で動作する、最新の実装
  • 11. 他の Lisp の種類 ● Emacs Lisp Emacs 向けで文書専用だが遅い ● Guile GNU 公式のグルー言語 (Gnu Make など ) ● Script-fu Gimp 向け拡張言語 ● Autolisp Autocad 向けの拡張言語 Emacs と Gnu Make と Gimp とルンバ のユーザーは Lisp ユーザー
  • 12. 非 Lisp と Lisp 非 Lisp ● 構文はおしきせ ● コードジェネレータはない ● カスタマイズはほどほど ● 問題にあわせてプログラミ ング言語を選ぶ Lisp ● 構文は拡張可能 ● コードジェネレータは拡 張可能 ● カスタマイズは善 ● 評価タイミングも自由 ● 問題のためにプログラミ ング言語を拡張
  • 14. Presentation/Lisp Lisp ● Emacs/org-mode ● Lisp で画面を生成 ● Racket/Slideshow Lisp じゃないもの ● MS PowerPoint ● Libreoffice/Impress ● Keynote ● PDF ただし PostScript は除 く