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

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
Слайд 4

No support Documentation Core 100% documented Standard library documentation in

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
Слайд 5

No one using it Companies using Ruby HP, Intel, NASA,

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
Слайд 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 =

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 #{...}
Слайд 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

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
Слайд 15

Ruby has many object orientation shortcuts Automatic constructor generation, unlike

Ruby has many object orientation shortcuts

Automatic constructor generation, unlike Perl
Easy accessors
Define

methods to interact with Core Ruby
Слайд 16

Procedural code allowed You can ignore the class system as

Procedural code allowed

You can ignore the class system as needed
You can

even mix and match objects with procedural code
Слайд 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

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
Слайд 20

Ruby uses single inheritance...

Ruby uses single inheritance...

Слайд 21

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

...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
Слайд 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”

Aren’t loops proven to work by now?

“N + 1” errors
foreach {

... } is conceptually backwards
Objects should manage their own traversal
Слайд 26

Iterators Objects manage their own traversal No more “N +

Iterators

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

still allow customizing behavior
Слайд 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

What is a code block?

Any method can accept a block
Blocks can

be called immediately or stored for later use
Blocks are closures
Слайд 30

What are they for? Blocks can allow your code to

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
Слайд 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

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
Слайд 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

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
Слайд 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
Количество просмотров: 15
Количество скачиваний: 0