Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
超絶技巧プログラミング
と Ruby 3.0
Transcendental Programming
with Ruby 3.0
遠藤侑介(mame)
Yusuke Endoh
1
自己紹介:遠藤侑介 (@mametter)
Introduction: Yusuke Endoh
2
• Ruby committer
(account: mame)
– 本を書きました →
I wrote a book
何の本?
The book theme
超絶技巧 プログラミング
3
Transcendental Programming
4
© 2015 Google Inc, used with permission.
Google および Google ロゴは Google Inc. の登録商標であり、同社の許可を得て使用しています。
今日のテーマ
超絶技巧 プログラミング
=世俗を超越したプログラミング
5
Transcendental Programming
実用的なプログラミング言語を使って
役に立たないプログラムを作る遊び
Write a unuseful progr...
1-1-4節 般若心経 Quine (Buddhist Sutra Quine)
6
eval$_=s=%q(~/<(.)>/;[$1]==$*&&(s[x=$`.size]=s[x+2]=?¥s;x>728&&x=(
' '
' 波 多 一 ...
1-7-4節 記念碑 Quine (Monumental Quine)
円柱 Column
3D モデルデータ
3D model data
Ruby program https://www.shapeways.com/shops/mamette...
詳しくは書籍で
See the book
8
• こんなプログラムばかり
約 40 個ほど載ってます
includes 40 programs like these
– ほぼRuby、一部C言語
written in Ruby (and C)
...
Ruby 3.0 と超絶技巧プログラミング
Ruby 3.0 and transcendental programming
• Immutable string literal [Feature #11473]
– Ruby 3.0では文字列リ...
「超絶技巧のために反対?」 No
”Are you against the change because of TP?”  No!
• 超絶技巧プログラミングは言語仕様の枠と戦う遊び
We enjoy TP within the langu...
実証 Proof
• 本に掲載されている全プログラムを
immutable string literal 対応してみた
I’ve made all programs in the book ready for immutable string ...
一番やばかったやつ
Worst case
12
); s[ 8] =s
$> << s[ 0,
17 << 3] #C
Y. En do h!
); s[ 8] =s
$> << s[ 0,
17 << 3] #C
s= %( s= %(
チェスボード上の Quine
Quine on the chessboard
13
); s[ 8] =s
$> << s[ 0,
17 << 3] #C
Y. En do h!
); s[ 8] =s
$> << s[ 0,
17 << 3]...
 全作り直しで対応
 Overhauled!
14
); $> << s[
0, +8 ]+ s+
s[ 9, 47 ]#
Y. En do h!
); $> << s[
0, +8 ]+ s+
s[ 9, 47 ]#
s= %( s= %(
感想
Discussion
• 思ったよりは大変でした
It was harder than I expected
– 問題個所を見つけにくい
very hard to find the cause
– レイアウトを手動で再調整した
neede...
まとめ
Conclusion
• 自著を紹介しました
I introduced my book
– 技術評論社から発売中
gihyo.jp
– 2,680円+税
¥2,680 + tax
• Ruby 3.0 でも
遊べます(予定)
you c...
Upcoming SlideShare
Loading in …5
×

超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)

12,372 views

Published on

http://regional.rubykaigi.org/oedo05/

Published in: Entertainment & Humor
  • Be the first to comment

超絶技巧プログラミングと Ruby 3.0 (大江戸 Ruby 会議 05 コミッタ LT)

  1. 1. 超絶技巧プログラミング と Ruby 3.0 Transcendental Programming with Ruby 3.0 遠藤侑介(mame) Yusuke Endoh 1
  2. 2. 自己紹介:遠藤侑介 (@mametter) Introduction: Yusuke Endoh 2 • Ruby committer (account: mame) – 本を書きました → I wrote a book
  3. 3. 何の本? The book theme 超絶技巧 プログラミング 3 Transcendental Programming
  4. 4. 4 © 2015 Google Inc, used with permission. Google および Google ロゴは Google Inc. の登録商標であり、同社の許可を得て使用しています。
  5. 5. 今日のテーマ 超絶技巧 プログラミング =世俗を超越したプログラミング 5 Transcendental Programming 実用的なプログラミング言語を使って 役に立たないプログラムを作る遊び Write a unuseful program in useful programming language
  6. 6. 1-1-4節 般若心経 Quine (Buddhist Sutra Quine) 6 eval$_=s=%q(~/<(.)>/;[$1]==$*&&(s[x=$`.size]=s[x+2]=?¥s;x>728&&x=( ' ' ' 波 多 一 大 提 波 倒 礙 提 集 明 眼 眼 不 諸 是 色 照<観> 摩 ' ' 羅 呪 切 明 故 羅 夢 無 薩 滅 尽 界 耳 減 法 色 不 見 自 訶 ' ' 僧 即 苦 呪 知 蜜 想 罣 埵 道 乃 乃 鼻 是 空 受 異 五 在 般 ' ' 羯 説 真 是 般 多 究 礙 依 無 至 至 舌 故 相 想 空 蘊 菩 若 ' ' 諦 呪 実 無 若 故 竟 故 般 智 無 無 身 空 不 行 空 皆 薩 波 ' ' 菩 曰 不 上 波 得 涅 無 若 亦 老 意 意 中 生 識 不 空 行 羅 ' ' 提 羯 虚 呪 羅 阿 槃 有 波 無 死 識 無 無 不 亦 異 度 深 蜜 ' ' 薩 諦 故 是 蜜 耨 三 恐 羅 得 亦 界 色 色 滅 復 色 一 般 多 ' ' 婆 羯 説 無 多 多 世 怖 蜜 以 無 無 声 無 不 如 色 切 若 心 ' ' 訶 諦 般 等 是 羅 諸 遠 多 無 老 無 香 受 垢 是 即 苦 波 経 ' ' 般 波 若 等 大 三 仏 離 故 所 死 明 味 想 不 舎 是 厄 羅 ' ' 若 羅 波 呪 神 藐 依 一 心 得 尽 亦 触 行 浄 利 空 舎 蜜 ' ' 心 羯 羅 能 呪 三 般 切 無 故 無 無 法 識 不 子 空 利 多 ' ' 経 諦 蜜 除 是 菩 若 顛 罣 菩 苦 無 無 無 増 是 即 子 時 ' ' ' x-660);x+=x<76?85:47;s[x]=?<;s[x+2]=?>);puts"eval$_=s=%q(#$_)"#YE)
  7. 7. 1-7-4節 記念碑 Quine (Monumental Quine) 円柱 Column 3D モデルデータ 3D model data Ruby program https://www.shapeways.com/shops/mametter Available for just $198 Ruby実行 execution 3Dプリント 3D print
  8. 8. 詳しくは書籍で See the book 8 • こんなプログラムばかり 約 40 個ほど載ってます includes 40 programs like these – ほぼRuby、一部C言語 written in Ruby (and C) – 実装技法の解説も implementation techniques are also disclosed – Matzによる前書きも必見 preface by matz
  9. 9. Ruby 3.0 と超絶技巧プログラミング Ruby 3.0 and transcendental programming • Immutable string literal [Feature #11473] – Ruby 3.0では文字列リテラルを破壊的に変更できなくなる In Ruby 3.0, all string literals are frozen by default – 導入理由:高速化などなど (for performance improvement) • 個人的にはネガティブ (I’m against this change) – Ruby には何事も「動的」であってほしい I hope Ruby is always dynamic, as far as possible 9 ""<<32 s="foobar" s.gsub!("ob", "OB")
  10. 10. 「超絶技巧のために反対?」 No ”Are you against the change because of TP?”  No! • 超絶技巧プログラミングは言語仕様の枠と戦う遊び We enjoy TP within the language spec – 言語が変わるならそれに合わせて遊ぶだけ If the language changes, we change how to enjoy • ていうか対応は難しくない(はず) Or rather, we also enjoy immutable string literals! 10 ""<<32 ""*1<<32 32.chr "".dup<<32
  11. 11. 実証 Proof • 本に掲載されている全プログラムを immutable string literal 対応してみた I’ve made all programs in the book ready for immutable string literals 11 http://github.com/mame/trance-book/tree/ruby-3.0
  12. 12. 一番やばかったやつ Worst case 12 ); s[ 8] =s $> << s[ 0, 17 << 3] #C Y. En do h! ); s[ 8] =s $> << s[ 0, 17 << 3] #C s= %( s= %(
  13. 13. チェスボード上の Quine Quine on the chessboard 13 ); s[ 8] =s $> << s[ 0, 17 << 3] #C Y. En do h! ); s[ 8] =s $> << s[ 0, 17 << 3] #C s= %( s= %(
  14. 14.  全作り直しで対応  Overhauled! 14 ); $> << s[ 0, +8 ]+ s+ s[ 9, 47 ]# Y. En do h! ); $> << s[ 0, +8 ]+ s+ s[ 9, 47 ]# s= %( s= %(
  15. 15. 感想 Discussion • 思ったよりは大変でした It was harder than I expected – 問題個所を見つけにくい very hard to find the cause – レイアウトを手動で再調整した needed to rearrange the layout – 別の Ruby のバグに遭遇した [Bug #11594] encountered unrelated Ruby bug  15 とても優雅な時間を過ごせました I enjoyed the change!
  16. 16. まとめ Conclusion • 自著を紹介しました I introduced my book – 技術評論社から発売中 gihyo.jp – 2,680円+税 ¥2,680 + tax • Ruby 3.0 でも 遊べます(予定) you can enjoy the book in 3.0 – 安心して お買い上げください Don’t hesitate to buy it! 16

×