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エンジニアが
pythonをdisるために
pythonを勉強してみた
@kon_yu
2015.10.24 PyLadies Tokyo - 一周年記念パーティ
のみなさんはじめまして
どうも
です
Who am I
• オンライン英会話サービス CTO
• フリーランスエンジニア
• Railsでサービス開発、実はRails使っている人エン
ジニア募集中です
• 趣味でルンバをRubyで制御したりしているひと
きっかけ
Railsプロジェクトのテンプレートエンジンにslim
を適用したら存外良かった
例
.layout__lesson--right
.buttons--downloads
.buttons__left.tooltip-item
= p...
これって何かに似てない?
 そうだねPythonだね
基本構文やライブラリで
RubyとPythonを比較して(disって)みよう
こういう新しいことを勉強するときはドットインストールって便利ですね
REPL起動終了
Ruby
> pryやirbで起動
Cntrl-Cで抜ける

exitでも抜ける
Python
> python
Cntrl-Dで抜ける

exit()でも抜ける
exit() <- の括弧

括弧書くのだだるい
変数
Ruby
ruby_val = "hello ruby"
Python
python_val = "hi python"
スネークケースで変数を書くのが一般的なのも同じ
代表的なデータセット
Ruby
Array

Set

Hash
Python
List -> RubyのArrayと大体一緒

Set -> RubyのSetと大体一緒

Directory -> RubyとHashと大体
一緒

Taple...
TapleはRubyにないけど、
タプルっぽいことは出来る
Ruby
タプルはないが固定した配列
は作れる
> rb_tupple

= [1, 2, 3].map(&:freeze).freeze
Python
> py_tupple = (...
制御構文 ifを例にあげて
Ruby
a = 0

if a > 0

puts "if"

elsif a == 0

puts "else if"

else

puts "else"
puts "kouti if saikou" if 1...
mapメソッド
Ruby



> [1, 2].map{¦i¦ i * 2}

[2, 4]
Python
> map(lambda i: i * 2, [1,
2])

[2, 4]
eachメソッド
Ruby



> [1, 2].each{¦i¦ puts i}

1

2
Python
> for i in [1,2]: print i

1

2
mapとeachの使い方を合わせると

Rubyの方が直感的
文字列
Ruby



str = "abcdefg"

長さ

> str.length

検索

> str.index( b")

切り取り

> str.slice(0,2)
Python
str = "abcdefg"

長さ

> ...
インタプリタ以外の実行環境
RubyもPythonもインタプリタで
実行する関係上

実行速度に度々問題にあがる
AltRuby, AltPythonを対決形式で
やっぱりあるよねJVM
Ruby



JRuby
Python
Jython
Javaのバーチャルマシンで走らせるのって

作りやすいのかな?
C言語にコンパイルできれば早い
Ruby



Crystal
Python
Cython
両方とも完全にRuby, Python互換ではない?

この辺よくわかってない
ライブラリ名比較
Rubyは中学生が考えたようなライブラリ名が多い
メジャーなライブラリでも
• kaminari(雷)
• nokogiri(鋸)
Pythonにもおんなじ何じゃないの?
実際に調べてみた
Knight
Knight
Ruby
ある
https://rubygems.org/
gems/knight
Python
ある
https://pypi.python.org/
pypi/knight-001/1.2.0
Ninja
Ninja
Ruby

ある
https://rubygems.org/
gems/ninja
Python
ある
https://pypi.python.org/pypi/
ninja/1.5.3
Samurai
Samurai
Ruby
ある
https://rubygems.org/
gems/samurai
Python
ある
https://pypi.python.org/
pypi/samurai/0.6
Dragon
Dragon
Ruby
ある
https://rubygems.org/
gems/dragon
Python
なし
ドラゴンは無いけど

ドラゴンフライ(トンボ)は両方ある



ライブラリ名の中二臭さはどっこい
まとめ
• 基本構文は似てるけど、Rubyのほうが好き
• インデントでブロック制御するのはけっこういい
• 新しい言語を学ぶのは楽しい
• 作るものにあった言語やライブラリを選定をするの
がプロ
結論: Pythonのこと、オレきらいじゃないぜ
RubyエンジニアがPythonをdisるためにPythonを勉強してみた
Upcoming SlideShare
Loading in …5
×

RubyエンジニアがPythonをdisるためにPythonを勉強してみた

Pyladies Tokyo 一周年記念 LT

  • Be the first to comment

RubyエンジニアがPythonをdisるためにPythonを勉強してみた

  1. 1. Rubyエンジニアが pythonをdisるために pythonを勉強してみた @kon_yu 2015.10.24 PyLadies Tokyo - 一周年記念パーティ
  2. 2. のみなさんはじめまして
  3. 3. どうも です
  4. 4. Who am I • オンライン英会話サービス CTO • フリーランスエンジニア • Railsでサービス開発、実はRails使っている人エン ジニア募集中です • 趣味でルンバをRubyで制御したりしているひと
  5. 5. きっかけ Railsプロジェクトのテンプレートエンジンにslim を適用したら存外良かった 例 .layout__lesson--right .buttons--downloads .buttons__left.tooltip-item = pdf_download_btn これがHTMLになる インデントでブロックを制御しているのええやんけ
  6. 6. これって何かに似てない?  そうだねPythonだね
  7. 7. 基本構文やライブラリで RubyとPythonを比較して(disって)みよう こういう新しいことを勉強するときはドットインストールって便利ですね
  8. 8. REPL起動終了 Ruby > pryやirbで起動 Cntrl-Cで抜ける
 exitでも抜ける Python > python Cntrl-Dで抜ける
 exit()でも抜ける exit() <- の括弧
 括弧書くのだだるい
  9. 9. 変数 Ruby ruby_val = "hello ruby" Python python_val = "hi python" スネークケースで変数を書くのが一般的なのも同じ
  10. 10. 代表的なデータセット Ruby Array
 Set
 Hash Python List -> RubyのArrayと大体一緒
 Set -> RubyのSetと大体一緒
 Directory -> RubyとHashと大体 一緒
 Taple -> ? Rubyにはタプルがない、、、
  11. 11. TapleはRubyにないけど、 タプルっぽいことは出来る Ruby タプルはないが固定した配列 は作れる > rb_tupple
 = [1, 2, 3].map(&:freeze).freeze Python > py_tupple = (1, 2, 3)
 > py_tupple[0] = 4 => 代入 しようとすると代入不可なの でエラーになる VimerがVimのプラグインを入れたら
 何でもできるっていうのに近いかも・・・
  12. 12. 制御構文 ifを例にあげて Ruby a = 0
 if a > 0
 puts "if"
 elsif a == 0
 puts "else if"
 else
 puts "else" puts "kouti if saikou" if 1 > 0 Python a = 0
 if a > 0:
 print "if"
 elif a == 0:
 print "else if"
 else:
 print "else" if 1 > 0: print "kouti if ga nai!!!!!"
 後置ifがない!!!
  13. 13. mapメソッド Ruby
 
 > [1, 2].map{¦i¦ i * 2}
 [2, 4] Python > map(lambda i: i * 2, [1, 2])
 [2, 4]
  14. 14. eachメソッド Ruby
 
 > [1, 2].each{¦i¦ puts i}
 1
 2 Python > for i in [1,2]: print i
 1
 2 mapとeachの使い方を合わせると
 Rubyの方が直感的
  15. 15. 文字列 Ruby
 
 str = "abcdefg"
 長さ
 > str.length
 検索
 > str.index( b")
 切り取り
 > str.slice(0,2) Python str = "abcdefg"
 長さ
 > len(str)
 検索
 > str.find("b")
 切り取り
 > s[0, 2] OOP的にもどう?ここはRuby良くない?
  16. 16. インタプリタ以外の実行環境 RubyもPythonもインタプリタで 実行する関係上
 実行速度に度々問題にあがる AltRuby, AltPythonを対決形式で
  17. 17. やっぱりあるよねJVM Ruby
 
 JRuby Python Jython Javaのバーチャルマシンで走らせるのって
 作りやすいのかな?
  18. 18. C言語にコンパイルできれば早い Ruby
 
 Crystal Python Cython 両方とも完全にRuby, Python互換ではない?
 この辺よくわかってない
  19. 19. ライブラリ名比較 Rubyは中学生が考えたようなライブラリ名が多い メジャーなライブラリでも • kaminari(雷) • nokogiri(鋸) Pythonにもおんなじ何じゃないの? 実際に調べてみた
  20. 20. Knight
  21. 21. Knight Ruby ある https://rubygems.org/ gems/knight Python ある https://pypi.python.org/ pypi/knight-001/1.2.0
  22. 22. Ninja
  23. 23. Ninja Ruby
 ある https://rubygems.org/ gems/ninja Python ある https://pypi.python.org/pypi/ ninja/1.5.3
  24. 24. Samurai
  25. 25. Samurai Ruby ある https://rubygems.org/ gems/samurai Python ある https://pypi.python.org/ pypi/samurai/0.6
  26. 26. Dragon
  27. 27. Dragon Ruby ある https://rubygems.org/ gems/dragon Python なし ドラゴンは無いけど
 ドラゴンフライ(トンボ)は両方ある
 
 ライブラリ名の中二臭さはどっこい
  28. 28. まとめ • 基本構文は似てるけど、Rubyのほうが好き • インデントでブロック制御するのはけっこういい • 新しい言語を学ぶのは楽しい • 作るものにあった言語やライブラリを選定をするの がプロ 結論: Pythonのこと、オレきらいじゃないぜ

×