Why the Ruby programming language is bad презентация

Содержание

Слайд 2

10. Too young

10. Too young

Слайд 3

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

No Libraries A collection of good libraries, especially in something like Perl’s CPAN,

Слайд 4

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

No support Documentation Core 100% documented Standard library documentation in progress Tutorials available

Слайд 5

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

No one using it Companies using Ruby HP, Intel, NASA, and NOAA Uses

Слайд 6

10. Too young

Ahead of its time!

10. Too young Ahead of its time!

Слайд 7

9. Useless in obfuscation contests

9. Useless in obfuscation contests

Слайд 8

Optional Syntax

No ;s needed
Drop the “\n” characters
Optional ()s

Optional Syntax No ;s needed Drop the “\n” characters Optional ()s

Слайд 9

Objectified Syntax

obj.attribute = methods
dangerous! and query? methods

Objectified Syntax obj.attribute = methods dangerous! and query? methods

Слайд 10

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 #{...}

Simple, flexible syntax Simple declarations: local_var = ... @instance_var = ... $global_var =

Слайд 11

Compare with other languages

Ruby: puts “Hello world!”
Java: threeVeryLongLines.weHopeWork...
Perl: #$Lisp: ((a(((b)))(c)))

Compare with other languages Ruby: puts “Hello world!” Java: threeVeryLongLines.weHopeWork... Perl: #$ Lisp: ((a(((b)))(c)))

Слайд 12

9. Useless in obfuscation contests

Clean syntax!

9. Useless in obfuscation contests Clean syntax!

Слайд 13

8. Object Oriented

8. Object Oriented

Слайд 14

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

Ruby is object oriented Everything is an object Numbers, code blocks, everything Baked-in,

Слайд 15

Ruby has many object orientation shortcuts

Automatic constructor generation, unlike Perl
Easy accessors
Define methods to

interact with Core Ruby

Ruby has many object orientation shortcuts Automatic constructor generation, unlike Perl Easy accessors

Слайд 16

Procedural code allowed

You can ignore the class system as needed
You can even mix

and match objects with procedural code

Procedural code allowed You can ignore the class system as needed You can

Слайд 17

8. Object Oriented

Too flexible!

8. Object Oriented Too flexible!

Слайд 18

7. Uses “Mix-ins”

7. Uses “Mix-ins”

Слайд 19

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

You can’t win with multiple inheritance Multiple inheritance allows a class to inherit

Слайд 20

Ruby uses single inheritance...

Ruby uses single inheritance...

Слайд 21

...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

...and “Mix-ins” Similar to Java’s interfaces, plus implementation No limit to how many

Слайд 22

7. Uses “Mix-ins”

Makes too much sense!

7. Uses “Mix-ins” Makes too much sense!

Слайд 23

6. No loops

6. No loops

Слайд 24

The well-known loops

The well-known loops

Слайд 25

Aren’t loops proven to work by now?

“N + 1” errors
foreach { ... }

is conceptually backwards
Objects should manage their own traversal

Aren’t loops proven to work by now? “N + 1” errors foreach {

Слайд 26

Iterators

Objects manage their own traversal
No more “N + 1” errors
Code blocks still allow

customizing behavior

Iterators Objects manage their own traversal No more “N + 1” errors Code

Слайд 27

6. No loops

Rebellious!

6. No loops Rebellious!

Слайд 28

5. Code blocks everywhere

5. Code blocks everywhere

Слайд 29

What is a code block?

Any method can accept a block
Blocks can be called

immediately or stored for later use
Blocks are closures

What is a code block? Any method can accept a block Blocks can

Слайд 30

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

What are they for? Blocks can allow your code to react in according

Слайд 31

5. Code blocks everywhere

Too powerful!

5. Code blocks everywhere Too powerful!

Слайд 32

4. Wide open, even at runtime

4. Wide open, even at runtime

Слайд 33

Dynamic tools

Strong reflection
eval()
instance_eval()
class_eval() and module_eval()
Hooks for runtime events

Dynamic tools Strong reflection eval() instance_eval() class_eval() and module_eval() Hooks for runtime events

Слайд 34

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

Classes are open Add methods to a class at any time Even a

Слайд 35

4. Wide open, even at runtime

Lawless!

4. Wide open, even at runtime Lawless!

Слайд 36

3. Ruby gurus are obsessed with ducks

3. Ruby gurus are obsessed with ducks

Слайд 37

“If it walks like a duck and talks like a duck, it’s a

duck!”

“If it walks like a duck and talks like a duck, it’s a duck!”

Слайд 38

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

The “Duck Typing” philosophy We define an object by what it can do,

Слайд 39

3. Ruby gurus are obsessed with ducks

Too strange!

3. Ruby gurus are obsessed with ducks Too strange!

Слайд 40

2. Includes too many great toys

2. Includes too many great toys

Слайд 41

96 standard libraries

96 standard libraries

Слайд 42

2. Includes too many great toys

Too distracting!

2. Includes too many great toys Too distracting!

Имя файла: Why-the-Ruby-programming-language-is-bad.pptx
Количество просмотров: 9
Количество скачиваний: 0