The Top 10 Reasons The Ruby Programming Language Sucks

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

25 comments

Comments 1 - 10 of 25 previous next Post a comment

  • + joe99999 joe99999 6 months ago
    then stick it up your ass
  • + guestb771db guestb771db 9 months ago
    we all know that he just hates ruby and thats it..
  • + guest8c25fb guest8c25fb 10 months ago
    Yet another baited 'Ruby is the best language in the world' video. Well done.
  • + guest85221 guest85221 11 months ago
    language wars are pointless, grow up.
  • + guestc33abf guestc33abf 2 years ago
    Turing complete means that all these languages are the same. Its a matter of preference and purpose of task as to which language 'rules'. For programmers, the fact you are even arguing this point shows flaws in your reasoning.
  • + guest90b93b7 guest90b93b7 2 years ago
    Nice one. :)
  • + guest1392dc8 guest1392dc8 2 years ago
    what I hate about python is the lack of 'end'
  • + mexpolk mexpolk 2 years ago
    You’re an asshole!!!
  • + guest7ead34 guest7ead34 2 years ago
    Eh, this was from 2003 anyways.
  • + gueste53782 gueste53782 2 years ago
    Ruby is great , Perl is great , Python also is great , i am using them all

    why you are fighting for nothing , go and improve your favorite programming language.

Comments 1 - 10 of 25 previous next

Post a comment
Embed Video
Edit your comment Cancel

62 Favorites & 1 Group

The Top 10 Reasons The Ruby Programming Language Sucks - Presentation Transcript

  1. The Top 10 Reasons The Ruby Programming Language Sucks!
  2. 10. Too young
  3. No Libraries
  4. No Libraries A collection of good libraries, especially in something like Perl’s CPAN, means less work to achieve better results, faster
  5. No Libraries A collection of good libraries, especially in something like Perl’s CPAN, means less work to achieve better results, faster Ruby libraries:
  6. No Libraries A collection of good libraries, especially in something like Perl’s CPAN, means less work to achieve better results, faster Ruby libraries: 96 standard libraries
  7. No Libraries A collection of good libraries, especially in something like Perl’s CPAN, means less work to achieve better results, faster Ruby libraries: 96 standard libraries Ruby Application Archive (RAA) catalogs over 1,200 applications and libraries
  8. No Libraries A collection of good libraries, especially in something like Perl’s CPAN, means less work to achieve better results, faster Ruby libraries: 96 standard libraries Ruby Application Archive (RAA) catalogs over 1,200 applications and libraries RubyForge is hosting over 800 open source projects
  9. No Libraries A collection of good libraries, especially in something like Perl’s CPAN, means less work to achieve better results, faster Ruby libraries: 96 standard libraries Ruby Application Archive (RAA) catalogs over 1,200 applications and libraries RubyForge is hosting over 800 open source projects RubyGems has served over 900,000 gems
  10. No support
  11. No support Documentation
  12. No support Documentation Core 100% documented
  13. No support Documentation Core 100% documented Standard library documentation in progress
  14. No support Documentation Core 100% documented Standard library documentation in progress Tutorials available for various skill levels
  15. No support Documentation Core 100% documented Standard library documentation in progress Tutorials available for various skill levels Facets of Ruby book series
  16. No support Documentation Core 100% documented Standard library documentation in progress Tutorials available for various skill levels Facets of Ruby book series Community
  17. No support Documentation Core 100% documented Standard library documentation in progress Tutorials available for various skill levels Facets of Ruby book series Community Mailing lists in multiple languages
  18. No support Documentation Core 100% documented Standard library documentation in progress Tutorials available for various skill levels Facets of Ruby book series Community Mailing lists in multiple languages Usenet groups (with ML gateway)
  19. No support Documentation Core 100% documented Standard library documentation in progress Tutorials available for various skill levels Facets of Ruby book series Community Mailing lists in multiple languages Usenet groups (with ML gateway) Web forums
  20. No one using it
  21. No one using it Companies using Ruby
  22. No one using it Companies using Ruby HP, Intel, NASA, and NOAA
  23. No one using it Companies using Ruby HP, Intel, NASA, and NOAA Uses for Ruby
  24. No one using it Companies using Ruby HP, Intel, NASA, and NOAA Uses for Ruby Simulation, data munging, code generation, image processing, prototyping, and more
  25. No one using it Companies using Ruby HP, Intel, NASA, and NOAA Uses for Ruby Simulation, data munging, code generation, image processing, prototyping, and more “Killer app”
  26. No one using it Companies using Ruby HP, Intel, NASA, and NOAA Uses for Ruby Simulation, data munging, code generation, image processing, prototyping, and more “Killer app” Ruby on Rails
  27. No one using it Companies using Ruby HP, Intel, NASA, and NOAA Uses for Ruby Simulation, data munging, code generation, image processing, prototyping, and more “Killer app” Ruby on Rails Already being used in profitable web applications like Basecamp and Blinksale
  28. 10. Too young
  29. e! im t ts i 10. Toof young o d ea h A
  30. 9. Useless in obfuscation contests
  31. Optional Syntax No ;s needed Drop the “ ” characters Optional ()s
  32. Objectified Syntax obj.attribute = methods dangerous! and query? methods
  33. Simple, flexible syntax Simple declarations: local_var = ... @instance_var = ... $global_var = ... do...end or {...} Real exception handling, like Java String interpolation: any Ruby code inside #{...}
  34. Compare with other languages
  35. Compare with other languages Ruby: puts “Hello world!”
  36. Compare with other languages Ruby: puts “Hello world!” Java: threeVeryLongLines.weHopeWork...
  37. Compare with other languages Ruby: puts “Hello world!” Java: threeVeryLongLines.weHopeWork... Perl: #$<!&;
  38. Compare with other languages Ruby: puts “Hello world!” Java: threeVeryLongLines.weHopeWork... Perl: #$<!&; Lisp: ((a(((b)))(c)))
  39. 9. Useless in obfuscation contests
  40. ! x ta n y s 9. Useless in obfuscation n ea contests l C
  41. 8. Object Oriented
  42. Ruby is object oriented Everything is an object Numbers, code blocks, everything Baked-in, not bolted-on No need to use “self” everywhere, like Python
  43. Ruby has many object orientation shortcuts Automatic constructor generation, unlike Perl Easy accessors Define methods to interact with Core Ruby
  44. Procedural code allowed You can ignore the class system as needed You can even mix and match objects with procedural code
  45. 8. Object Oriented
  46. e! l ib x eOriented fl 8. Object o o T
  47. 7. Uses “Mix-ins”
  48. You can’t win with multiple inheritance
  49. You can’t win with multiple inheritance Multiple inheritance allows a class to inherit from more than one parent
  50. You can’t win with multiple inheritance Multiple inheritance allows a class to inherit from more than one parent The good: Makes modeling complex object trees easier
  51. You can’t win with multiple inheritance Multiple inheritance allows a class to inherit from more than one parent The good: Makes modeling complex object trees easier The bad: The diamond inheritance problem
  52. You can’t win with multiple inheritance Multiple inheritance allows a class to inherit from more than one parent The good: Makes modeling complex object trees easier The bad: The diamond inheritance problem You can’t please both sides
  53. Ruby uses single inheritance...
  54. ...and “Mix-ins” Similar to Java’s interfaces, plus implementation No limit to how many you use The benefits of multiple inheritance, without the minuses
  55. 7. Uses “Mix-ins”
  56. e! s n se h c u m o 7. Uses “Mix-ins” to es k a M
  57. 6. No loops
  58. The well-known loops
  59. The well-known loops Most languages Ruby
  60. The well-known loops Most languages Ruby while { ... } while ... end until { ... } until ... end
  61. The well-known loops Most languages Ruby while { ... } while ... end until { ... } until ... end do { ... } while begin ... end while do { ... } until begin ... end until
  62. The well-known loops Most languages Ruby while { ... } while ... end until { ... } until ... end do { ... } while begin ... end while do { ... } until begin ... end until foreach { ... } each do ... end
  63. The well-known loops Most languages Ruby while { ... } while ... end until { ... } until ... end do { ... } while begin ... end while do { ... } until begin ... end until foreach { ... } each do ... end for(...;...;...) { ... }
  64. The well-known loops Most languages Ruby while { ... } while ... end until { ... } until ... end do { ... } while begin ... end while do { ... } until begin ... end until foreach { ... } each do ... end for(...;...;...) { ... }
  65. The well-known loops Most languages Ruby while { ... } while ... end until { ... } until ... end do { ... } while begin ... end while do { ... } until begin ... end until foreach { ... } each do ... end for(...;...;...) { ... }
  66. Aren’t loops proven to work by now?
  67. Aren’t loops proven to work by now? “N + 1” errors
  68. Aren’t loops proven to work by now? “N + 1” errors foreach { ... } is conceptually backwards
  69. Aren’t loops proven to work by now? “N + 1” errors foreach { ... } is conceptually backwards Objects should manage their own traversal
  70. Iterators Objects manage their own traversal No more “N + 1” errors Code blocks still allow customizing behavior
  71. 6. No loops
  72. s! u io l el 6. No loops b e R
  73. 5. Code blocks everywhere
  74. What is a code block? Any method can accept a block Blocks can be called immediately or stored for later use Blocks are closures
  75. What are they for? Blocks can allow your code to react in according to user code Blocks are a great way to pass around behavior Blocks are ideal for transactions
  76. 5. Code blocks everywhere
  77. l! fu r e w 5. Code blocks o p oo everywhere T
  78. 4. Wide open, even at runtime
  79. Dynamic tools Strong reflection eval() instance_eval() class_eval() and module_eval() Hooks for runtime events
  80. Classes are open Add methods to a class at any time Even a core class Customize individual objects Overload operators Hook into Ruby’s math and conversion operations
  81. 4. Wide open, even at runtime
  82. ! at seven es l 4. Wide open, w a runtime L
  83. 3. Ruby gurus are obsessed with ducks
  84. “If it walks like a duck and talks like a duck, it’s a duck!”
  85. The “Duck Typing” philosophy We define an object by what it can do, not its type Most of the time, you shouldn’t even check for methods
  86. 3. Ruby gurus are obsessed with ducks
  87. ! eare g n ra ducks 3. Ruby gurus t obsessedswith o o T
  88. 2. Includes too many great toys
  89. 96 standard libraries
  90. 96 standard libraries Read/Write CSV XML YAML
  91. 96 standard libraries Read/Write CSV XML YAML Talk to Email FTP Web
  92. 96 standard libraries Read/Write CSV XML YAML Talk to Email FTP Web Serve Code Servlets XML-RPC
  93. 96 standard libraries Read/Write CSV XML YAML Talk to Email FTP Web Serve Code Servlets XML-RPC Work with Math Templates Threads
  94. 96 standard libraries Read/Write CSV XML YAML Talk to Email FTP Web Serve Code Servlets XML-RPC Work with Math Templates Threads Tools for Debugging Docs Testing
  95. 2. Includes too many great toys
  96. ! g n ti many 2. Includesrac too t toys is d great o o T
  97. 1. “It's entirely too fun and productive for most people.” — Mike Clark

+ vishnuvishnu, 4 years ago

custom

53383 views, 62 favs, 24 embeds more stats

Matz's keynote presentation from RubyConf 2003, fro more

More info about this presentation

© All Rights Reserved

  • Total Views 53383
    • 52806 on SlideShare
    • 577 from embeds
  • Comments 25
  • Favorites 62
  • Downloads 2
Most viewed embeds
  • 246 views on http://blog.shabdar.ws
  • 225 views on http://rubisobrerieles.blogspot.com
  • 34 views on http://juandedios.blogspot.com
  • 28 views on http://zawaarudo.blogspot.com
  • 12 views on http://mett.ru

more

All embeds
  • 246 views on http://blog.shabdar.ws
  • 225 views on http://rubisobrerieles.blogspot.com
  • 34 views on http://juandedios.blogspot.com
  • 28 views on http://zawaarudo.blogspot.com
  • 12 views on http://mett.ru
  • 6 views on http://www.planetacodigo.com
  • 5 views on http://csipanama2007.com
  • 3 views on http://squashedthoughts.blogspot.com
  • 2 views on http://phuha.net
  • 2 views on http://www.filescon.com
  • 1 views on http://localhost
  • 1 views on http://blog.nwwo.de
  • 1 views on http://banusha.blogspot.com
  • 1 views on http://www.slideshare.net
  • 1 views on http://sol.at.nsu.ru
  • 1 views on http://s3.amazonaws.com
  • 1 views on http://www.seminarioweb.es
  • 1 views on http://64.233.183.104
  • 1 views on http://www.blogger.com
  • 1 views on http://www.lonerunners.net
  • 1 views on http://hackety.org
  • 1 views on http://www.akitaonrails.com
  • 1 views on http://kakutani.com
  • 1 views on http://dydaktyk.ae.katowice.pl

less

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

Cancel
File a copyright complaint
Having problems? Go to our helpdesk?

Categories

Groups / Events