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を勉強してみた

22,299 views

Published on

Pyladies Tokyo 一周年記念 LT

Published in: Software
  • 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のこと、オレきらいじゃないぜ

×