Le 10 principali ragioni per cui Ruby fa pena

download Le 10 principali ragioni per cui Ruby fa pena

If you can't read please download the document

Transcript of Le 10 principali ragioni per cui Ruby fa pena

  • 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. Metodipericolosi!ebooleani? 22. Sintassi semplice e flessibile

  • Semplicit dichiarativa:
    • local_var = ...
  • 23. @instance_var = ...

24. @@class_var = ... 25. $global_var = ...

  • do...endoppure{...}

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:#$Tutto oggetto

    • Numeri, blocchi, tutto!
  • Nativamente, non per estensione
    • Non c' bisogno di mettere ovunque ilselfcome 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 classesystem

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 delcomportamento 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()emodule_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