SlideShare a Scribd company logo
x
2
→ Code: x*x,Doc: $x^2$

OpenGL計算ライブラリ実装の
経験から
脇田建 ‒ 東京工業大学
Ken Wakita ‒ Tokyo Tech
Motivation
Let’s make a program that computes
p
2
Wikipedia says:
A square root of a is y such that y2
= a.
Wikipedia says:
A square root of a is y such that y2
= a.
Ok, fine! Newton-Raphson method over y2
= a.
Let’s see, how this idea is put into a working code.
So far so good
but …
but 1: my x2
a = 0 gone?
but 2 (redundancy): the same math
formula appears in the doc and the code.
but 3 (complexity): I hate
to write this math formula.
まとめ
• Python万歳,SymPy万歳,Jupyter万歳
• 数式処理便利,もっと活用しましょう
• なんてことで,まとめたいわけじゃなくって,
まとまらないのだけど
• ひとつのプログラミング言語で文書を含めたすべてを記述する試みに無理がある.Jupyter
(Code + Markdown + LaTeX)的な文芸的プログラミングはひとつの突破口かもしれない.
• 今回は,数学というドメインを扱ったから,数式処理システムが輝いた.数式のドメイン:
数式の構成,Symbolicな計算,コードとドキュメントの生成
• 二つの意味でのコードの再利用性
• 記号処理[数式] → 数式 による「記号処理」の再利用性 (c.f. NewtonRaphson)
• 数式 → Python, 数式 → LaTeX による「数式」の再利用性
• 数式だけでなく,世の中のありとあらゆるドメインがドメイン固有の「言語」を要している.
ドメインに特化した知識の表現,ドメイン上での計算,ドメイン固有の知識 → コード,ド
キュメントの変換が求められている.
• 要するに DSL は重要だというあたりまえの落ちなの?
数式 → コード,文書:OpenGL計算ライブラリ実装の経験から

More Related Content

What's hot

PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法Yosuke Onoue
 
NetBSD6.X (i386)が2038年問題に対応、その余波
NetBSD6.X (i386)が2038年問題に対応、その余波NetBSD6.X (i386)が2038年問題に対応、その余波
NetBSD6.X (i386)が2038年問題に対応、その余波
洋史 東平
 
C++の未来と演算子オーバーロード
C++の未来と演算子オーバーロードC++の未来と演算子オーバーロード
C++の未来と演算子オーバーロードSigureya
 
Scoped BASIC Presentation1
Scoped BASIC Presentation1Scoped BASIC Presentation1
Scoped BASIC Presentation1
Kazuhiro Hishinuma
 
Lisperはじめました
LisperはじめましたLisperはじめました
Lisperはじめました
Nobutada Matsubara
 
[DLHacks]Topic‑Aware Neu ral KeyphraseGenerationforSocial Media Language
[DLHacks]Topic‑Aware Neu ral KeyphraseGenerationforSocial Media Language[DLHacks]Topic‑Aware Neu ral KeyphraseGenerationforSocial Media Language
[DLHacks]Topic‑Aware Neu ral KeyphraseGenerationforSocial Media Language
Deep Learning JP
 

What's hot (6)

PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法PythonistaがOCamlを実用する方法
PythonistaがOCamlを実用する方法
 
NetBSD6.X (i386)が2038年問題に対応、その余波
NetBSD6.X (i386)が2038年問題に対応、その余波NetBSD6.X (i386)が2038年問題に対応、その余波
NetBSD6.X (i386)が2038年問題に対応、その余波
 
C++の未来と演算子オーバーロード
C++の未来と演算子オーバーロードC++の未来と演算子オーバーロード
C++の未来と演算子オーバーロード
 
Scoped BASIC Presentation1
Scoped BASIC Presentation1Scoped BASIC Presentation1
Scoped BASIC Presentation1
 
Lisperはじめました
LisperはじめましたLisperはじめました
Lisperはじめました
 
[DLHacks]Topic‑Aware Neu ral KeyphraseGenerationforSocial Media Language
[DLHacks]Topic‑Aware Neu ral KeyphraseGenerationforSocial Media Language[DLHacks]Topic‑Aware Neu ral KeyphraseGenerationforSocial Media Language
[DLHacks]Topic‑Aware Neu ral KeyphraseGenerationforSocial Media Language
 

Similar to 数式 → コード,文書:OpenGL計算ライブラリ実装の経験から

Swiftによる関数型プログラミング超入門
Swiftによる関数型プログラミング超入門Swiftによる関数型プログラミング超入門
Swiftによる関数型プログラミング超入門
Hisakuni Fujimoto
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
NTT DATA Technology & Innovation
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Shiqiao Du
 
Cocos2dx 8hour
Cocos2dx 8hourCocos2dx 8hour
Cocos2dx 8hour
Tomohiko Okita
 
Ohotech特盛 #11 Box2DWebを触ってみよう
Ohotech特盛 #11 Box2DWebを触ってみようOhotech特盛 #11 Box2DWebを触ってみよう
Ohotech特盛 #11 Box2DWebを触ってみよう
Fumihito Yokoyama
 
Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会
Ryuichi Ueda
 
Life with jupyter
Life with jupyterLife with jupyter
Life with jupyter
Etsuji Nakai
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelerease
Shiqiao Du
 
エクストリームC++11/14プログラミング
エクストリームC++11/14プログラミングエクストリームC++11/14プログラミング
エクストリームC++11/14プログラミング
egtra
 
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しようCognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
Taketo Sano
 
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2
Kuniaki Igarashi
 
TOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
TOPPERSプロジェクトの紹介 OSC2017 Tokyo FallTOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
TOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
Center for Embedded Computing Systems, Nagoya Univ.
 
Learning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for GraphsLearning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for Graphs
Takuya Akiba
 
Learning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for GraphsLearning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for Graphs
Takuya Akiba
 
ChainerMNをDocker containerで動かす
ChainerMNをDocker containerで動かすChainerMNをDocker containerで動かす
ChainerMNをDocker containerで動かす
Daisuke Taniwaki
 
Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討
Shinya Takamaeda-Y
 
120418 tokyo node5_lin_qonnodejs
120418 tokyo node5_lin_qonnodejs120418 tokyo node5_lin_qonnodejs
120418 tokyo node5_lin_qonnodejsTakayoshi Tanaka
 
Swift歴2ヶ月でアプリを8本リリースしてみた話
Swift歴2ヶ月でアプリを8本リリースしてみた話Swift歴2ヶ月でアプリを8本リリースしてみた話
Swift歴2ヶ月でアプリを8本リリースしてみた話
Makoto Nishimoto
 
C#言語機能の作り方
C#言語機能の作り方C#言語機能の作り方
C#言語機能の作り方
信之 岩永
 

Similar to 数式 → コード,文書:OpenGL計算ライブラリ実装の経験から (20)

Swiftによる関数型プログラミング超入門
Swiftによる関数型プログラミング超入門Swiftによる関数型プログラミング超入門
Swiftによる関数型プログラミング超入門
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
 
Cocos2dx 8hour
Cocos2dx 8hourCocos2dx 8hour
Cocos2dx 8hour
 
Ohotech特盛 #11 Box2DWebを触ってみよう
Ohotech特盛 #11 Box2DWebを触ってみようOhotech特盛 #11 Box2DWebを触ってみよう
Ohotech特盛 #11 Box2DWebを触ってみよう
 
Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会Linux女子部第二回勉強会usp友の会
Linux女子部第二回勉強会usp友の会
 
Life with jupyter
Life with jupyterLife with jupyter
Life with jupyter
 
Cython intro prelerease
Cython intro prelereaseCython intro prelerease
Cython intro prelerease
 
エクストリームC++11/14プログラミング
エクストリームC++11/14プログラミングエクストリームC++11/14プログラミング
エクストリームC++11/14プログラミング
 
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しようCognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
 
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2
 
TOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
TOPPERSプロジェクトの紹介 OSC2017 Tokyo FallTOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
TOPPERSプロジェクトの紹介 OSC2017 Tokyo Fall
 
Learning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for GraphsLearning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for Graphs
 
Learning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for GraphsLearning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for Graphs
 
ChainerMNをDocker containerで動かす
ChainerMNをDocker containerで動かすChainerMNをDocker containerで動かす
ChainerMNをDocker containerで動かす
 
Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討Pythonを用いた高水準ハードウェア設計環境の検討
Pythonを用いた高水準ハードウェア設計環境の検討
 
120418 tokyo node5_lin_qonnodejs
120418 tokyo node5_lin_qonnodejs120418 tokyo node5_lin_qonnodejs
120418 tokyo node5_lin_qonnodejs
 
Swift歴2ヶ月でアプリを8本リリースしてみた話
Swift歴2ヶ月でアプリを8本リリースしてみた話Swift歴2ヶ月でアプリを8本リリースしてみた話
Swift歴2ヶ月でアプリを8本リリースしてみた話
 
C#言語機能の作り方
C#言語機能の作り方C#言語機能の作り方
C#言語機能の作り方
 

More from Tokyo Tech (Tokyo Institute of Technology)

Cl1503
Cl1503Cl1503
Interactive High-Dimensional Visualization of Social Graphs
Interactive High-Dimensional Visualization of Social GraphsInteractive High-Dimensional Visualization of Social Graphs
Interactive High-Dimensional Visualization of Social Graphs
Tokyo Tech (Tokyo Institute of Technology)
 
2015年度 コンピュータリテラシ (2)
2015年度 コンピュータリテラシ (2)2015年度 コンピュータリテラシ (2)
2015年度 コンピュータリテラシ (2)
Tokyo Tech (Tokyo Institute of Technology)
 
2015年度 コンピュータリテラシ (1)
2015年度 コンピュータリテラシ (1)2015年度 コンピュータリテラシ (1)
2015年度 コンピュータリテラシ (1)
Tokyo Tech (Tokyo Institute of Technology)
 
My presentation at International Lisp Conference 2014 (ILC 2014): Hygienic Ma...
My presentation at International Lisp Conference 2014 (ILC 2014): Hygienic Ma...My presentation at International Lisp Conference 2014 (ILC 2014): Hygienic Ma...
My presentation at International Lisp Conference 2014 (ILC 2014): Hygienic Ma...
Tokyo Tech (Tokyo Institute of Technology)
 
2014年度 計算機科学概論・第14回 技術者倫理篇
2014年度 計算機科学概論・第14回 技術者倫理篇2014年度 計算機科学概論・第14回 技術者倫理篇
2014年度 計算機科学概論・第14回 技術者倫理篇
Tokyo Tech (Tokyo Institute of Technology)
 
Computer Literacy 2011-3
Computer Literacy 2011-3Computer Literacy 2011-3

More from Tokyo Tech (Tokyo Institute of Technology) (7)

Cl1503
Cl1503Cl1503
Cl1503
 
Interactive High-Dimensional Visualization of Social Graphs
Interactive High-Dimensional Visualization of Social GraphsInteractive High-Dimensional Visualization of Social Graphs
Interactive High-Dimensional Visualization of Social Graphs
 
2015年度 コンピュータリテラシ (2)
2015年度 コンピュータリテラシ (2)2015年度 コンピュータリテラシ (2)
2015年度 コンピュータリテラシ (2)
 
2015年度 コンピュータリテラシ (1)
2015年度 コンピュータリテラシ (1)2015年度 コンピュータリテラシ (1)
2015年度 コンピュータリテラシ (1)
 
My presentation at International Lisp Conference 2014 (ILC 2014): Hygienic Ma...
My presentation at International Lisp Conference 2014 (ILC 2014): Hygienic Ma...My presentation at International Lisp Conference 2014 (ILC 2014): Hygienic Ma...
My presentation at International Lisp Conference 2014 (ILC 2014): Hygienic Ma...
 
2014年度 計算機科学概論・第14回 技術者倫理篇
2014年度 計算機科学概論・第14回 技術者倫理篇2014年度 計算機科学概論・第14回 技術者倫理篇
2014年度 計算機科学概論・第14回 技術者倫理篇
 
Computer Literacy 2011-3
Computer Literacy 2011-3Computer Literacy 2011-3
Computer Literacy 2011-3
 

数式 → コード,文書:OpenGL計算ライブラリ実装の経験から