Your SlideShare is downloading. ×
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Le 10 principali ragioni per cui Ruby fa pena
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Le 10 principali ragioni per cui Ruby fa pena

819

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
819
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • A free scripting (or dynamic) language invented by Yukihiro Matsumoto. Similar to Perl, Python, TLC, Lisp, Lua, and more.
  • Ruby 0.95 was posted to the newsgroups in December of 1995. Now 10 years old. Early forms of C where around in the mid-1960s. Almost 50 years old now.
  • Chris Pine’s Learn to Program tutorial is great for beginners. Why’s (Poignant) Guide to Ruby by Why the Lucky Stiff is just a fun romp through Ruby. Facet’s first book is out: Agile Web Development with Rails. The Best of Ruby Quiz is coming soon.
  • Abbreviations: Hewlett-Packard, National Aeronautics and Space Administration, National Oceanic and Atmospheric Administration. Hurricane Katrina image analysis is being done with Ruby. Basecamp is a project and task management web application. Blinksale is a web application for sending and tracking invoices.
  • We will see examples of the attribute methods a little later. (slide 15)
  • We will see examples of variable scope a little later. (slide 15)
  • Inspired by Smalltalk, not Python or Perl.
  • This makes sense: Java’s main is procedural code in disguise.
  • Comparable isn’t actually needed here, since String already implements it.
  • each do ... end is really and iterator, and we’ll talk about that shortly. begin ... end while/until is a syntax trick that isn’t quite equivalent to do { ... } while/until in most languages.
  • Loops work fine for simple arrays, which is their primary use, but what about when we want to start doing custom iteration.
  • This is powerful in prototyping. You can mock-out solutions with basic Ruby objects like String and Array, then gradually replace then with custom objects and specialize behavior. This gets your code running fast, but allows for later customization as development progresses.
  • REXML transformations are easier than XSLT. YAML literally handles persistence with two lines of code: Load and save. Ruby can open web pages and read, just like it opens a file. DRb is similar to CORBA or Java’s RMI, and standard Ruby. WEBrick is Ruby’s Tomcat. Ships with Ruby. SOAP is also included, on top of XML-RPC. ERb makes templating simple and flexible. Similar to JSP style templates, but for any format. RDoc is similar to JavaDoc and can build web documentation, or command-line documentation. Test::Unit uses reflection to make testing trivial.
  • Seriously, most languages are equivalent. They can all be used to do our work. You just need to find what speaks to you. Ruby speaks to me.
  • Transcript

    • 1. Le 10 principali ragioni per cui Ruby fa pena!
    • 2. 10. Troppo giovane
    • 3. Nessuna libreria
      • Una collezione di buone librerie, specialmente se organizzate in qualcosa di simile al CPAN del Perl, vuol dire meno lavoro da fare per raggiungere migliori risultati in minor tempo
      • 4. Librerie Ruby:
        • 108 librerie standard
        • 5. Ruby Application Archive (RAA) censisce 1800 applicazioni e librerie
        • 6. RubyForge ospita oltre 9100 progetti
        • 7. RubyGems ha fornito 118.000.000 di gem
    • 8. Nessun supporto
      • Documentazione
        • Core documentato al 100%
        • 9. Documentazione delle librerie standard completa
        • 10. Disponibilità di tutorial per vari livelli di abilità
        • 11. Pletora di libri sui vari aspetti di Ruby
      • Community
        • Mailing list in varie lingue
        • 12. Presenza di gruppi Usenet
        • 13. Forum Web
    • 14. Nessuno lo usa
      • Alcune aziende che lo usano
        • HP, Intel, NASA e NOAA
      • Usi di Ruby
        • Simulazione, data munging, generazione di codice, image processing, prototyping, e altro
      • Killer application
        • Ruby on Rails
          • Già usata in applicazioni di successo come Basecamp, Twitter, Slideshare, Vimeo, ...
    • 15. 10. Troppo giovane In anticipo sui tempi!
    • 16. 9. Pressoché impossibile offuscare il codice
    • 17. Sintassi opzionale
      • Il ; è opzionale
      • 18. Eliminazione del carattere n
      • 19. () opzionali
    • 20. Sintassi OO
      • obj.attributo = metodo
      • 21. Metodi pericolosi! e booleani?
    • 22. Sintassi semplice e flessibile
      • Semplicità dichiarativa:
        • local_var = ...
        • 23. @instance_var = ...
        • 24. @@class_var = ...
        • 25. $global_var = ...
      • do...end oppure {...}
      • 26. Gestione delle eccezioni come in Java
      • 27. Interpolazione delle stringhe: qualsiasi codice Ruby dentro a #{...}
    • 28. Confronto con altri linguaggi
      • Ruby: puts “Hello world!”
      • 29. Java: treRigheMoltoLunghe.speriamoFunzioni...
      • 30. Perl: #$<!&;
      • 31. Lisp: ((a(((b)))(c)))
    • 32. 9. Pressoché impossibile offuscare il codice Codice pulito!
    • 33. 8. Object Oriented
    • 34. Ruby è Object Oriented
      • Tutto è oggetto
        • Numeri, blocchi, tutto!
      • Nativamente, non per estensione
        • Non c'è bisogno di mettere ovunque il self come in Python
    • 35. Ruby ha molte facilities Object Oriented
      • Generazione automatica del costruttore (Perl no)
      • 36. Accessor smart
      • 37. Definisce metodi di interazione col Core Ruby
    • 38. Codice procedurale ammesso
      • Si può ignorare la classe system
      • 39. Si può mixare e far coesistere oggetti con codice procedurale
    • 40. 8. Object Oriented Troppo flessibile!
    • 41. 7. Uso dei «Mixin»
    • 42. L'ereditarietà multipla non va bene
      • L'ereditarietà multipla permette a una classe di estendere da più di una sola altra classe.
        • PRO: rende più semplice la modellazione di alberi di oggetti complessi.
        • 43. CONS: il problema del diamante.
      • Non si possono soddisfare entrambi gli aspetti
    • 44. Ruby adotta l'ereditarietà singola...
    • 45. … e i «Mixin»
      • Analogo alle interfacce Java, più l'implementazione
      • 46. Nessun limite sul numero
      • 47. I benefici dell'ereditarietà multipla, senza i problemi che si porterebbe dietro
    • 48. 7. Uso dei «Mixin» Troppo sensato!
    • 49. 6. Mancano i cicli
    • 50. I ben noti cicli Molti linguaggi Ruby while { ... } until { ... } while ... end until ... end do { ... } while do { ... } until begin ... end while begin ... end until foreach { ... } each do ... end for(...;...;...) { ... }
    • 51. Non è già dimostrato che i cicli funzionano a priori?
      • Errori «N + 1»
      • 52. foreach { ... } è concettualmente alla rovescia
        • Gli oggetti dovrebbero essere responsabili del proprio attraversamento
    • 53. Iteratori
      • Gli oggetti gestiscono il proprio attraversamento
      • 54. Mai più errori «N + 1»
      • 55. I blocchi consentono di agire sui singoli elementi
    • 56. 6. Mancano i cicli Ribelli!
    • 57. 5. Blocchi ovunque
    • 58. Cos'è un blocco?
      • Ogni metodo può accettare un blocco
      • 59. I blocchi possono essere utilizzati subito, oppure essere salvati per un loro utilizzo a posteriori
      • 60. I blocchi sono closure
    • 61. A cosa servono?
      • I blocchi permettono al codice scritto da te di reagire a seconda del codice scritto da chi li usa
      • 62. I blocchi sono un modo molto elegante per passare del comportamento
      • 63. I blocchi sono ideali per le operazioni transazionali
    • 64. 5. Blocchi ovunque Troppo potente!
    • 65. 4. Troppo aperto, persino a runtime!
    • 66. Strumenti dinamici
      • Forte introspezione
      • 67. eval()
        • instance_eval()
        • 68. class_eval() e module_eval()
      • Agganci per eventi di runtime
    • 69. Classi aperte
      • Si possono aggiungere metodi alle classi in qualunque momento
        • Anche alle classi core
      • Personalizzazione dei singoli oggetti
      • 70. Operatori di overloading
      • 71. Agganci alla matematica di Ruby ed agli operatori di conversione
    • 72. 4. Troppo aperto, persino a runtime! Anarchico!
    • 73. 3. I guru di Ruby sono ossessionati dalle «papere»
    • 74. «Se cammina come una papera e parla come una papera, allora è una papera!»
    • 75. La filosofia «Duck Typing»
      • Definizione di oggetti in base a ciò che sanno fare, non a quello che sono
      • 76. Nella maggior parte dei casi, non ci si deve nemmeno preoccupare della presenza dei metodi
    • 77. 3. I guru di Ruby sono ossessionati dalle «papere» Troppo strani!
    • 78. 2. Include troppi giochini fantastici
    • 79. 108 librerie standard Lettura/Scrittura CSV XML YAML Comunica con Email FTP Web Fornisce Code Servlets XML-RPC Lavora con Math Templates Threads Strumenti per Debugging Docs Testing
    • 80. 2. Include troppi giochini fantastici Troppo distraente!
    • 81. 1. «It's entirely too fun and productive for most people» — Mike Clark

    ×