SlideShare uma empresa Scribd logo
1 de 43
Le 10 principali ragioni per cui Ruby fa pena!
10. Troppo giovane
Nessuna libreria ,[object Object]
Librerie Ruby: ,[object Object]
Ruby Application Archive (RAA) censisce 1800 applicazioni e librerie
RubyForge ospita oltre 9100 progetti
RubyGems ha fornito 118.000.000 di gem
Nessun supporto ,[object Object],[object Object]
Documentazione delle librerie standard completa
Disponibilità di tutorial per vari livelli di abilità
Pletora di libri sui vari aspetti di Ruby ,[object Object],[object Object]
Presenza di gruppi Usenet
Forum Web
Nessuno lo usa ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
10. Troppo giovane In anticipo sui tempi!
9. Pressoché impossibile offuscare il codice
Sintassi opzionale ,[object Object]
Eliminazione del carattere
() opzionali
Sintassi OO ,[object Object]
Metodi  pericolosi!  e  booleani?
Sintassi semplice e flessibile ,[object Object],[object Object]
@instance_var = ...
@@class_var = ...
$global_var = ...  ,[object Object]
Gestione delle eccezioni come in Java
Interpolazione delle stringhe: qualsiasi codice Ruby dentro a  #{...}
Confronto con altri linguaggi ,[object Object]
Java:  treRigheMoltoLunghe.speriamoFunzioni...
Perl:  #$<!&;
Lisp:  ((a(((b)))(c)))
9. Pressoché impossibile offuscare il codice Codice pulito!
8. Object Oriented
Ruby è Object Oriented ,[object Object],[object Object],[object Object],[object Object]
Ruby ha molte facilities Object Oriented ,[object Object]
Accessor smart
Definisce metodi di interazione col Core Ruby
Codice procedurale ammesso ,[object Object]
Si può mixare e far coesistere oggetti con codice procedurale
8. Object Oriented Troppo flessibile!
7. Uso dei «Mixin»
L'ereditarietà multipla non va bene ,[object Object],[object Object]
CONS: il problema del diamante. ,[object Object]

Mais conteúdo relacionado

Semelhante a Le 10 principali ragioni per cui Ruby fa pena

Scala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéScala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéEdmondo Porcu
 
Corso Python Deltapromo lezione 1
Corso Python Deltapromo   lezione 1Corso Python Deltapromo   lezione 1
Corso Python Deltapromo lezione 1Paolo Ferretti
 
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!Codemotion
 
GAE python GDG Milano - L02
GAE python GDG Milano - L02GAE python GDG Milano - L02
GAE python GDG Milano - L02Paolo Dadda
 
PHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggioPHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggioMassimiliano Arione
 
Javascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webJavascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webRoberto Messora
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaCristina Attori
 
La mia prima lezione di pozioni
La mia prima lezione di pozioniLa mia prima lezione di pozioni
La mia prima lezione di pozioniGianluca Padovani
 
NHibernate in Action (Parte 2)
NHibernate in Action (Parte 2)NHibernate in Action (Parte 2)
NHibernate in Action (Parte 2)DotNetMarche
 
Esempi di AOP (Gian Maria Ricci)
 Esempi di AOP (Gian Maria Ricci) Esempi di AOP (Gian Maria Ricci)
Esempi di AOP (Gian Maria Ricci)DotNetMarche
 

Semelhante a Le 10 principali ragioni per cui Ruby fa pena (20)

Corso Java 1 - BASE
Corso Java 1 - BASECorso Java 1 - BASE
Corso Java 1 - BASE
 
Scala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perchéScala: come recuperare la programmazione funzionale e perché
Scala: come recuperare la programmazione funzionale e perché
 
Java basics
Java basicsJava basics
Java basics
 
Corso Python Deltapromo lezione 1
Corso Python Deltapromo   lezione 1Corso Python Deltapromo   lezione 1
Corso Python Deltapromo lezione 1
 
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
Maze Enterprise: front-end e back-end. Trova la miglior soluzione!
 
GAE python GDG Milano - L02
GAE python GDG Milano - L02GAE python GDG Milano - L02
GAE python GDG Milano - L02
 
PHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggioPHP, non lo stesso vecchio linguaggio
PHP, non lo stesso vecchio linguaggio
 
Javascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webJavascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il web
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in Java
 
La mia prima lezione di pozioni
La mia prima lezione di pozioniLa mia prima lezione di pozioni
La mia prima lezione di pozioni
 
Intro to JavaScript
Intro to JavaScriptIntro to JavaScript
Intro to JavaScript
 
Dsl in Lisp e Java
Dsl in Lisp e JavaDsl in Lisp e Java
Dsl in Lisp e Java
 
Corso Java - Introduzione
Corso Java - IntroduzioneCorso Java - Introduzione
Corso Java - Introduzione
 
Pycon
PyconPycon
Pycon
 
Variabili
VariabiliVariabili
Variabili
 
Java introduzione
Java introduzioneJava introduzione
Java introduzione
 
Java 8
Java 8Java 8
Java 8
 
NHibernate in Action (Parte 2)
NHibernate in Action (Parte 2)NHibernate in Action (Parte 2)
NHibernate in Action (Parte 2)
 
Esempi di AOP (Gian Maria Ricci)
 Esempi di AOP (Gian Maria Ricci) Esempi di AOP (Gian Maria Ricci)
Esempi di AOP (Gian Maria Ricci)
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented Programming
 

Último

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIinfogdgmi
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 

Último (9)

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AI
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 

Le 10 principali ragioni per cui Ruby fa pena

Notas do Editor

  1. A free scripting (or dynamic) language invented by Yukihiro Matsumoto. Similar to Perl, Python, TLC, Lisp, Lua, and more.
  2. 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.
  3. 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.
  4. 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.
  5. We will see examples of the attribute methods a little later. (slide 15)
  6. We will see examples of variable scope a little later. (slide 15)
  7. Inspired by Smalltalk, not Python or Perl.
  8. This makes sense: Java’s main is procedural code in disguise.
  9. Comparable isn’t actually needed here, since String already implements it.
  10. 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.
  11. Loops work fine for simple arrays, which is their primary use, but what about when we want to start doing custom iteration.
  12. 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.
  13. 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.
  14. 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.