Thanks to visit codestin.com
Credit goes to www.slideshare.net
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
sohta
PDF, PPTX
10,152 views
Clojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
Lisp Meetup #30の発表資料です。
Software
◦
Read more
10
Save
Share
Embed
Download
Download as PDF, PPTX
1
/ 21
2
/ 21
3
/ 21
4
/ 21
5
/ 21
6
/ 21
7
/ 21
8
/ 21
9
/ 21
10
/ 21
11
/ 21
12
/ 21
13
/ 21
14
/ 21
15
/ 21
16
/ 21
17
/ 21
18
/ 21
19
/ 21
20
/ 21
21
/ 21
More Related Content
PDF
Imagerをつかってみた
by
Tohru Shinohara
PPTX
Lispのべんきょう
by
Hatori Kouiti
PPTX
俺とGitHubとcodeシリーズ
by
Masayuki KaToH
PDF
REPLライフをもっと快適に
by
sohta
PDF
会社でClojure使ってみて分かったこと
by
Recruit Technologies
PDF
高速!Clojure Web 開発入門
by
Kazuki Tsutsumi
PDF
とにかく始めるClojure
by
Masayuki Muto
PDF
Light TableでClojure入門
by
Tokusei Noborio
Imagerをつかってみた
by
Tohru Shinohara
Lispのべんきょう
by
Hatori Kouiti
俺とGitHubとcodeシリーズ
by
Masayuki KaToH
REPLライフをもっと快適に
by
sohta
会社でClojure使ってみて分かったこと
by
Recruit Technologies
高速!Clojure Web 開発入門
by
Kazuki Tsutsumi
とにかく始めるClojure
by
Masayuki Muto
Light TableでClojure入門
by
Tokusei Noborio
Viewers also liked
PDF
Patterns
by
David Nolen
PPT
A little exercise with clojure macro
by
Zehua Liu
PDF
Writing Macros
by
RueiCi Wang
PDF
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
by
Leonardo Borges
PDF
不自然なcar/ナチュラルにconsして
by
mitsutaka mimura
PDF
A Dive Into Clojure
by
Carlo Sciolla
ODP
Clojure: Practical functional approach on JVM
by
sunng87
PDF
入門ClojureScript
by
sohta
PDF
Macros in Clojure
by
sohta
PDF
Continuation Passing Style and Macros in Clojure - Jan 2012
by
Leonardo Borges
PPTX
Clojure的魅力
by
dennis zhuang
PPTX
Clojure概览
by
dennis zhuang
PDF
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
by
AboutYouGmbH
PDF
AndroidでScalaを使う際の問題点と対策
by
Mogi Isamu
PDF
AndroidStudioとGradleを利用したScala言語によるAndroidアプリの開発
by
Mogi Isamu
PDF
React系(別言語含む)の サーバーサイドレンダリング について考えよう
by
Kazuhiro Hara
KEY
(map Clojure everyday-tasks)
by
Jacek Laskowski
KEY
Clojure: a LISP for the JVM
by
Knowledge Engineering and Machine Learning Group
PDF
Introduction to clojure
by
Abbas Raza
PDF
DSL in Clojure
by
Misha Kozik
Patterns
by
David Nolen
A little exercise with clojure macro
by
Zehua Liu
Writing Macros
by
RueiCi Wang
Clojure Macros Workshop: LambdaJam 2013 / CUFP 2013
by
Leonardo Borges
不自然なcar/ナチュラルにconsして
by
mitsutaka mimura
A Dive Into Clojure
by
Carlo Sciolla
Clojure: Practical functional approach on JVM
by
sunng87
入門ClojureScript
by
sohta
Macros in Clojure
by
sohta
Continuation Passing Style and Macros in Clojure - Jan 2012
by
Leonardo Borges
Clojure的魅力
by
dennis zhuang
Clojure概览
by
dennis zhuang
Stefan Richter - Writing simple, readable and robust code: Examples in Java, ...
by
AboutYouGmbH
AndroidでScalaを使う際の問題点と対策
by
Mogi Isamu
AndroidStudioとGradleを利用したScala言語によるAndroidアプリの開発
by
Mogi Isamu
React系(別言語含む)の サーバーサイドレンダリング について考えよう
by
Kazuhiro Hara
(map Clojure everyday-tasks)
by
Jacek Laskowski
Clojure: a LISP for the JVM
by
Knowledge Engineering and Machine Learning Group
Introduction to clojure
by
Abbas Raza
DSL in Clojure
by
Misha Kozik
Similar to Clojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
PDF
Reactive Extensionの紹介
by
Dev Ogiwara
PDF
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
by
Yahoo!デベロッパーネットワーク
PPTX
C# 3.0 以降
by
Fujio Kojima
PDF
ツイートID生成とツイッターリアルタイム検索システムの話
by
Preferred Networks
PDF
初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~
by
kmiyako
PDF
LightSwitch 結局何ができるの
by
Yoshitaka Seo
PDF
関数型言語ElixirのIoTシステム開発への展開
by
Hideki Takase
PDF
ハッカソンに使うSwift & Swift 3.0のGCD
by
翔新 史
PDF
React Native vs React Lynx (React Native Meetup #22)
by
Taiju Muto
PPTX
もしSIerのエンジニアがSRE本を読んだら
by
Tomoki Ando
PDF
[DL輪読会]StyleNet: Generating Attractive Visual Captions with Styles
by
Deep Learning JP
PDF
Yet Another DLR for Silverlightの試作
by
terurou
PPTX
進化するArt
by
Takuya Matsunaga
PPTX
HoloLens参考書読書会 vol9
by
Shoji Oshima
PDF
デザインパターンを用いたリファクタリング
by
kei takakuda
PDF
ログ管理でウキウキAndroid Life (Log Management in Android)
by
Tomoaki Imai
PDF
Dalvik仮想マシンのアーキテクチャ 改訂版
by
Takuya Matsunaga
PDF
印刷APIのサポート事情 - DevRel Meetup in Tokyo #17
by
Yasunori Kihara
PDF
最新ゲームを支える文言
by
miki koganei
PDF
アイコンで組み立てる Spark MLlib + ETLプログラム
by
tatsumi_air
Reactive Extensionの紹介
by
Dev Ogiwara
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
by
Yahoo!デベロッパーネットワーク
C# 3.0 以降
by
Fujio Kojima
ツイートID生成とツイッターリアルタイム検索システムの話
by
Preferred Networks
初心者からプロフェッショナルまで~データベース開発ソフト4Dの魅力を徹底紹介~
by
kmiyako
LightSwitch 結局何ができるの
by
Yoshitaka Seo
関数型言語ElixirのIoTシステム開発への展開
by
Hideki Takase
ハッカソンに使うSwift & Swift 3.0のGCD
by
翔新 史
React Native vs React Lynx (React Native Meetup #22)
by
Taiju Muto
もしSIerのエンジニアがSRE本を読んだら
by
Tomoki Ando
[DL輪読会]StyleNet: Generating Attractive Visual Captions with Styles
by
Deep Learning JP
Yet Another DLR for Silverlightの試作
by
terurou
進化するArt
by
Takuya Matsunaga
HoloLens参考書読書会 vol9
by
Shoji Oshima
デザインパターンを用いたリファクタリング
by
kei takakuda
ログ管理でウキウキAndroid Life (Log Management in Android)
by
Tomoaki Imai
Dalvik仮想マシンのアーキテクチャ 改訂版
by
Takuya Matsunaga
印刷APIのサポート事情 - DevRel Meetup in Tokyo #17
by
Yasunori Kihara
最新ゲームを支える文言
by
miki koganei
アイコンで組み立てる Spark MLlib + ETLプログラム
by
tatsumi_air
More from sohta
PDF
入門Transducers
by
sohta
PDF
Clojure Language Update (2015)
by
sohta
PDF
入門core.async
by
sohta
PDF
プログラミング言語Clojureのニャンパスでの活用事例
by
sohta
PDF
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
by
sohta
PDF
ClojureではじめるSTM入門
by
sohta
PDF
Clojureによるバイトコードプログラミング
by
sohta
入門Transducers
by
sohta
Clojure Language Update (2015)
by
sohta
入門core.async
by
sohta
プログラミング言語Clojureのニャンパスでの活用事例
by
sohta
genuine-highlighter: マクロを認識するClojure向けのシンタックスハイライター
by
sohta
ClojureではじめるSTM入門
by
sohta
Clojureによるバイトコードプログラミング
by
sohta
Clojureシンタックスハイライター開発から考えるこれからのlispに必要なもの
1.
Clojureシンタックスハイライター 開発から考える これからのLispに必要なもの Lisp meet up
#30 @athos0220
2.
genuine-highlighter ‣ マクロを認識するシンタックス ハイライター ‣ Clojureの細粒度解析器 symbol-analyzer上に実現 ‣
技術的な詳細はShibuya.lisp TT #8を参照 lein-highlight genuine-highlighter symbol-analyzer
3.
シンタックスハイライターから感じたこと ‣ 解析の精度を上げようとすればするほど、リーダやコン パイラがやっていることの再実装をするハメに ‣ リーダやコンパイラ等、標準機能は再利用できなかった ‣
Lispはメタプログラミングに強い言語だったのでは…?
4.
LispはLispコードを扱うのが得意
5.
LispはLispコードを扱うのが得意
6.
LispはLispコードを扱うのが得意 LispはS式を扱うのが得意
7.
Lispの強力さの秘訣 ソースコード マクロ 展開済みS式 S式 read macro expand compile
8.
Lispの強力さの秘訣 ソースコード マクロ 展開済みS式 S式 read macro expand compile コンパイラが感知するのは これ以降 最終的にコンパイラの知るフォームに落ちれば マクロやリーダマクロで自由に拡張可能
9.
Lispの強力さの秘訣 ‣ Lispは「プログラマが実際にどういうコードを書いているのか」に 無頓着になることで強力な拡張性を得てきた ‣ そのことがコードの静的解析を難しくしている ソースコード マクロ 展開済みS式 S式 read macro expand
compile コンパイラが感知するのは これ以降 最終的にコンパイラの知るフォームに落ちれば マクロやリーダマクロで自由に拡張可能
10.
Clojure界隈での事情 ‣ コード解析が不完全なツールたち • Kibit:
コーディングチェッカ • bikeshed: コーディングチェッカ • Yagni: コールグラフ解析ツール • cloverage: カバレッジツール • clojail: サンドボックスツール • etc. etc. ‣ tools.analyzerの登場により、状況はある程度改善したが tools.analyzerを使っても不十分なケースも少なくない
11.
コードの“読み手” プログラマ 処理系コード
12.
コードの“読み手” カバレッジツールコードフォーマッタ IDE・エディタ メトリクス計測ツール プログラマ 処理系 コーディングチェッカ コード
13.
コードの“読み手” ‣ プログラマと処理系だけがコードを読む牧歌的な時代は終わり、 今や多くのCASE ツールがコードを読む時代 ‣
これらのツールの多くが知りたいのは「プログラマがどういう コードを書いたか」≠ コンパイラにどんなコードが渡るか *1 カバレッジツールコードフォーマッタ IDE・エディタ メトリクス計測ツール プログラマ 処理系 コーディングチェッカ *1 CASE: Computer-Aided Software Engineering, 一般にはもっと高機能なものを指すが、ここでは「コードを解析するツール」程度の意味。 コード
14.
グリーンスパンの第10法則
15.
グリーンスパンの第10法則 十分に複雑なCまたはFortranのプログラムは全て、後付けで 正式な仕様がなく、バグがてんこもりの遅いCommon Lisp の半分の実装を含んでいる “
16.
グリーンスパンの第10法則 十分に複雑なCまたはFortranのプログラムは全て、後付けで 正式な仕様がなく、バグがてんこもりの遅いCommon Lisp の半分の実装を含んでいる “ 十分に複雑なLispのコード解析器は全て、後付けで正式な仕 様がなく、バグがてんこもりの遅いLispの半分の実装を含ん でいる…?
17.
グリーンスパンの第10法則 ‣ LisperもまたLispを(ムダに)再実装している ‣ 共通で使える汎用的なしくみは用意できないのか? 十分に複雑なCまたはFortranのプログラムは全て、後付けで 正式な仕様がなく、バグがてんこもりの遅いCommon
Lisp の半分の実装を含んでいる “ 十分に複雑なLispのコード解析器は全て、後付けで正式な仕 様がなく、バグがてんこもりの遅いLispの半分の実装を含ん でいる…?
18.
JavaScriptの場合… ‣ Esprima:汎用的なJSコード解析器 ‣ 多くのJS
CASEツールがEsprima上に実装されている ‣ Lispの場合はマクロがあるので、問題はこんなに簡単で はない(が目指す状況はこんな感じ)
19.
処理系ごとの対応 ‣ コード解析は処理系におまかせ、という手もある? • (例)いくつかのCL処理系は独自にテストカバレッジ機能を提供 •
他の機能についても処理系の対応を待つ…? ‣ 言語機能自体はマクロで拡張できるのに、コード解析に ついては処理系の対応待ちが必要というのは歯がゆい
20.
では、どうするか? ‣ 標準化 • Schemeのシンタックスオブジェクト的な方向性はよさそう •
Common Clojure Source Metadata Model ‣ 汎用的なコード解析器 ‣ 解析器が解析しやすいコードをプログラマが書く • スタイルだけで解決できる問題か? • 解析しやすいようにアノテーションをつける? ‣ etc.
21.
まとめ ‣ コードをプログラマと処理系だけが読めればいい時代は すでに終わり ‣ CASEツールの解析で必要なのは「プログラマがどうい うコードを書いたか」 ‣
マクロがあることを口実にまともにコード解析できない 現状から逃げ続けていいのか?
Download