Ruby 124C41+ - Matz

1,967 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,967
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
20
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Ruby 124C41+ - Matz

  1. 1. Ruby 124C41+ Yukihiro "Matz" Matsumoto まつもと ゆきひろ Powered by Rabbit 0.6.4
  2. 2. FAQ What's 124C41+? 1/54 Powered by Rabbit 0.6.4
  3. 3. Ralph 124C41+ A romance of the year 2660 2/54 Powered by Rabbit 0.6.4
  4. 4. Ralph 124C41+ ✓ The very early science fiction story ✓ In the year 2660, a genius inventor Ralph 124C41+ saves his girlfriend kidnapped by a bad Martian. 3/54 Powered by Rabbit 0.6.4
  5. 5. Ralph 124C41+ ✓ Written by Hugo Gernsback ✓ in 1911 ✓ Predicted a lot of modern inventions ✓ Television ✓ Solar power ✓ and lot more 4/54 Powered by Rabbit 0.6.4
  6. 6. Ralph 124C41+ Check Wikipedia 5/54 Powered by Rabbit 0.6.4
  7. 7. Ralph 124C41+ ✓ One to foresee for one ✓ means if we have enough input and insight, we can foresee the future. ✓ The future of Ruby 6/54 Powered by Rabbit 0.6.4
  8. 8. Ruby 124C41+ We try to foresee the future of Ruby the language 7/54 Powered by Rabbit 0.6.4
  9. 9. Moore's law The number of transistors in LSI doubles every 24 months 8/54 Powered by Rabbit 0.6.4
  10. 10. the CPU Moore's law means the power of CPU grows exponentially 9/54 Powered by Rabbit 0.6.4
  11. 11. Faster Computers PCs are faster than super computers of 20 years ago 10/54 Powered by Rabbit 0.6.4
  12. 12. Cheaper Computers We can buy a laptop PC at appliance stores for $400 or less 11/54 Powered by Rabbit 0.6.4
  13. 13. Cheaper Connection $50 or less for 100M optic fiber connection in Japan 12/54 Powered by Rabbit 0.6.4
  14. 14. Bigger Storage ✓ Bigger RAM ✓ Bigger HDD 13/54 Powered by Rabbit 0.6.4
  15. 15. The end of Clock grow 14/54 Powered by Rabbit 0.6.4
  16. 16. Many Cores ✓ Dual core ✓ Quad core ✓ Many core ✓ or even DC in a chip 15/54 Powered by Rabbit 0.6.4
  17. 17. Ubiquitous Computer Japanese cell phone from Panasonic 16/54 Powered by Rabbit 0.6.4
  18. 18. Hardware Trend ✓ Faster ✓ Cheaper ✓ More ubiquitous ✓ More cores 17/54 Powered by Rabbit 0.6.4
  19. 19. Software Trend ✓ hardware changes ✓ cause software changes 18/54 Powered by Rabbit 0.6.4
  20. 20. Runtime Efficiency ✓ Less important ✓ CPUs are fast 19/54 Powered by Rabbit 0.6.4
  21. 21. No More Assembler ✓ haven't heard lately? 20/54 Powered by Rabbit 0.6.4
  22. 22. Software Becomes ✓ More important ✓ More complex ✓ We just need more software 21/54 Powered by Rabbit 0.6.4
  23. 23. Abstraction ✓ Object-oriented programming ✓ Functional programming 22/54 Powered by Rabbit 0.6.4
  24. 24. Software Trend ✓ Runtime efficiency less important ✓ We can emphasize human factor ✓ More abstraction ✓ More confortable tools 23/54 Powered by Rabbit 0.6.4
  25. 25. Information Explosion ✓ We will produce 988 Exabytes in the year 2010 ✓ Bigger data than human kind have ever produced 24/54 Powered by Rabbit 0.6.4
  26. 26. Summary ✓ Machines are faster ✓ Connections are cheaper ✓ We need more software ✓ We have huge amount of data 25/54 Powered by Rabbit 0.6.4
  27. 27. Ruby in the Past ✓ back in 1993 ✓ mc68000 200MHz ✓ 200MB HDD ✓ BSD UNIX 26/54 Powered by Rabbit 0.6.4
  28. 28. The year 1993 ✓ C / C++ ✓ Windows 3.1 / SunOS / MacOS ✓ Perl4 / AWK ✓ No one use OOP in scripting 27/54 Powered by Rabbit 0.6.4
  29. 29. The year 1993 ✓ OOP fanboy ✓ Language geek ✓ UNIX hacker 28/54 Powered by Rabbit 0.6.4
  30. 30. OO Scripting ✓ Too slow ✓ Too complex ✓ Too much 29/54 Powered by Rabbit 0.6.4
  31. 31. No One Stopped Me ✓ Project started on February 24, 1993 ✓ The day I choose the name Ruby ✓ The name is so important for software ✓ one thing I regret Googlability 30/54 Powered by Rabbit 0.6.4
  32. 32. No One Stopped Me ✓ Took me 6 months for simple "hello world" ✓ that made me realized GC needs ✓ Released publicly December 21, 1995 31/54 Powered by Rabbit 0.6.4
  33. 33. Ruby the Language Ruby has proven ✓ OOP for scripting is useful ✓ OOP can be simple and easy ✓ Programming can be fun again 32/54 Powered by Rabbit 0.6.4
  34. 34. Extreme Language Design ✓ if OOP is good, make everything OOP ✓ if scripting is good, make everything scripting ✓ if DSL is good, make everything DSL 33/54 Powered by Rabbit 0.6.4
  35. 35. Extreme Language Design ✓ if higher order function is good, allow every method to be higher order function ✓ if mixin is good, disallow multiple inheritance 34/54 Powered by Rabbit 0.6.4
  36. 36. Background ✓ Machines are faster / cheaper / ubiquitous ✓ More cores ✓ Connections are cheaper 35/54 Powered by Rabbit 0.6.4
  37. 37. Background ✓ We need more software ✓ Productivity become more important ✓ We have huge amount of data (988 Exabytes) 36/54 Powered by Rabbit 0.6.4
  38. 38. Background ✓ Ruby focus on programmers ✓ Ruby focus on productivity ✓ Ruby tend to choose extreme design 37/54 Powered by Rabbit 0.6.4
  39. 39. The Future of Ruby What do you think? 38/54 Powered by Rabbit 0.6.4
  40. 40. The Future of Ruby Faster ✓ Multiple VM ✓ GC improvement ✓ JIT? 39/54 Powered by Rabbit 0.6.4
  41. 41. The Future of Ruby More Powerful ✓ Distributed programming ✓ dRuby / Rinda ✓ Message Queue ✓ faster IPC (messagepack) ✓ Multi-core aware (via MVM) 40/54 Powered by Rabbit 0.6.4
  42. 42. The Future of Ruby Broader ✓ small → embedding ✓ large → HPC 41/54 Powered by Rabbit 0.6.4
  43. 43. Embedding Smaller Implementation ✓ Alternative (not planned yet) ✓ Atomic Ruby 42/54 Powered by Rabbit 0.6.4
  44. 44. HPC High Performance Computing ✓ improve NArray (w/ libjit) ✓ MPI Ruby ✓ AOT compiler ✓ and other HPC stuff 43/54 Powered by Rabbit 0.6.4
  45. 45. The Future of Ruby More Modular ✓ Selector namespace ✓ classbox ✓ Traits 44/54 Powered by Rabbit 0.6.4
  46. 46. Selector Namespace ✓ limit the effectiveness of name overriding ✓ scoped mathn, for example 45/54 Powered by Rabbit 0.6.4
  47. 47. Traits ✓ Operational combination of features (methods) ✓ module operation +, - 46/54 Powered by Rabbit 0.6.4
  48. 48. The Future of Ruby More Functional ✓ Explicit lazy evaluation ✓ Enumerator as Lazy List 47/54 Powered by Rabbit 0.6.4
  49. 49. Functional Ruby explict vs implicit ✓ obj.foo vs obj.method(:foo) ✓ foo() vs foo.call() ✓ or foo[] or foo.() 48/54 Powered by Rabbit 0.6.4
  50. 50. Functional Ruby explict vs implicit ✓ (take 10 (lines f)) vs f.each.take(10) ✓ not f.lines.take(10) 49/54 Powered by Rabbit 0.6.4
  51. 51. Functional Ruby (to be) ✓ map etc. do not work for infinite enumerable ✓ mapx (assumed name) would return enumerator 50/54 Powered by Rabbit 0.6.4
  52. 52. The Future of Ruby ✓ Faster ✓ More powerful ✓ Broader ✓ More modular ✓ More functional 51/54 Powered by Rabbit 0.6.4
  53. 53. The Future of Ruby ✓ We will keep moving forward ✓ Stay tuned 52/54 Powered by Rabbit 0.6.4
  54. 54. We need you ✓ Help us ✓ Let's make Ruby even better! ✓ See you at ruby-core 53/54 Powered by Rabbit 0.6.4
  55. 55. Make the World Better Thank you 54/54 Powered by Rabbit 0.6.4

×