Che cosa ha fatto Ruby nel modo giusto (o era Rails)? [chiuso]


13

La maggior parte dei linguaggi di programmazione ha alcune decisioni di progettazione che ne influenzano l'utilizzo e l'applicabilità.

Per esempio:

  • Python si concentrava sulla manutenibilità / leggibilità del codice e faceva rientrare il rientro nel linguaggio stesso.
  • L'intenzione di Java era di rendere la OOP multipiattaforma "più semplice" e "più amichevole" del C ++
  • Objective-C è stato creato come un wrapper OO attorno a C che non conosceva il futuro di C ++ al momento
  • Erlang è progettato per sistemi con elevata tolleranza ai guasti e concorrenti
  • PHP progettato per gestire la creazione dinamica di pagine Web
  • CoffeeScript progettato per esporre le parti buone di Javascript e aggiungere zucchero sintetico OOP e nascondere le sfumature (globi ecc.) Di "dietro le quinte" di JS ecc.

Ogni linguaggio di programmazione ha cercato di sfruttare e capitalizzare una particolare nicchia IMHO. Quanto sopra sono le mie prospettive su quali fossero i principi fondanti dei linguaggi di programmazione e che ne governavano l'evoluzione e l'adozione diffusa. Naturalmente ce ne sono molti altri, ma l'elenco è inteso solo come esempio

Tuttavia, ho faticato a capire i principi fondanti su cui si basa Ruby e la sua crescente popolarità. Quali erano i principi fondanti di Ruby che lo rendono popolare oggi? O è il genio di un uomo che ha progettato il framework Rails? In quest'ultimo caso, Ruby ha reso la progettazione di Rails migliore / più facile / più veloce? In che senso?

Il motivo più comunemente citato dal suo creatore è "... voleva un divertente linguaggio di programmazione debolmente tipizzato" - non lo vedo come un motivo per creare del tutto un nuovo linguaggio di programmazione! La programmazione è IMHO divertente a prescindere dalla lingua (ogni lingua ha alcune parti cattive, ma si aggira o vive con essa).

Quindi quale nicchia ha sfruttato (o sfruttato) Ruby che non è sfruttato dalle lingue attuali? Qual è il "punto di forza" (USP) di Ruby che ha portato alla sua adottabilità diffusa? Cosa ha fatto Ruby che non è stato fatto prima (o è stato estremamente difficile)?

Non sono un programmatore di Ruby, ma solo un nocciolo di Ruby e quindi la confusione.

Disclaimer : NON si tratta di una guerra di fiamma e non sto cercando il tipo di risposta tra Ruby e linguaggio di programmazione. Sto cercando le decisioni di progettazione su cui si basa Ruby che ha portato all'adozione diffusa. Quale nicchia soddisfa Ruby per essere diventato popolare o è puramente attribuito a Rails?

Risposte:


11

Immagino che Ruby sia decollato per molte ragioni:

  • Il framework Rails. Le rotaie hanno assemblato molti modelli utili per facilitare lo sviluppo di applicazioni Web e aumentare la produttività degli sviluppatori. Confronta questo con lo sviluppo web dettagliato e noioso di Java e la piattaforma .NET "one man show". La creazione di applicazioni web per blog in pochi minuti è stata strabiliante.
    Puoi vedere gli "effetti Rails" su molti nuovi framework Web JVM come Grails, Play! e Spring Roo.
  • Storie di successo come Twitter e Github. Le startup devono raggiungere il mercato il più presto possibile e con Rails questo è possibile. Le storie di successo sono state una prova.
  • Lo stesso linguaggio di programmazione Ruby è bello, potente ed espressivo. IMHO, Ruby è la salsa segreta del successo di Rails.
    Guarda la bellezza di Cetriolo e Sinatra, la bellezza di DSL fatta bene.
  • Comunità entusiasta e coraggiosa che non ha paura di sperimentare e innovare.
  • (Opinione personale e potrebbe non essere un motivo vitale) È stato creato in Giappone. Nulla batte l'immagine del "Made in Japan".
    Per me, imparare i linguaggi di programmazione creati in diversi paesi equivale a incontrare nuove persone. È divertente ed educativo.
    Rubino / Giappone, OCaml / Francia, Lua / Brasile, Lisp / Marte :)

5
Sei curioso di sapere cosa intendi con "la piattaforma .NET di one man show ", non è una frase che ho sentito prima?
Carson63000,

2
+1 per Lisp / Marte. Dov'è quel posto Haskell?
Adam

2
Haskell viene dal profondo della terra dove un esercito di piccoli nani come gli sviluppatori lo ha creato con l'intenzione di confondere i programmatori OO
Daniel Gratzer

1
@Adam "The Atlantis Civilization"
Chirone

13

Questo non risponde direttamente alla domanda del titolo, ma affronta alcuni punti sollevati (cioè perché è stato creato Ruby)

Citazioni di Yukihiro 'Matz' Matsumoto, creatore di Ruby, che possono aiutare a spiegare ciò che ha ispirato la sua creazione:

  • "Volevo un linguaggio di scripting più potente di Perl e più orientato agli oggetti di Python"
  • "Spero di vedere Ruby aiutare tutti i programmatori del mondo a essere produttivi, a godersi la programmazione e ad essere felici. Questo è lo scopo principale del linguaggio Ruby."

Quindi, in pratica, Matz voleva un linguaggio estremamente orientato agli oggetti progettato per la felicità del programmatore.


1
È estremamente orientato agli oggetti. Intendo che +in 1+1è un metodo.
bpromas,

5

Ruby (insieme con le rotaie) ha reso popolare la convenzione sulla configurazione .

Il vecchio modo (non rubino su rotaie) era

  • Definire una tabella di database "persone" con un campo denominato "compleanno"
  • Definire una "persona" di business class con un "compleanno" di proprietà
  • scrivere una helperclass per il trasferimento dei dati tra database e businessclass
  • creare una gui che come le persone in un elenco
  • creare una GUI per modificare le proprietà di una persona

Con la convenzione sulla configurazione, il lavoro di base per questo viene fatto automaticamente:

  • si definisce una persona nel codice
  • tabella di database, mappatura, elementi gui, vengono creati automaticamente da un potente interprete o codegeneratore

contras: devi imparare tutti i cenni, quindi imparare il rubino su rotaie al primo giro è più difficile.

pro: una volta che conosci le convenzioni è abbastanza facile capire il codice di altri rubini sugli sviluppatori di binari perché ognuno è costretto a seguire le stesse convenzioni.

nel frattempo la convenzione sulla configurazione è entrata in molti ecosistemi di codifica


4

Innanzitutto, Ruby è una "lingua corrente". Forse intendi "Lingue che erano popolari quando è stato creato Ruby nel 1995."

Mi piace Ruby per gli stessi motivi per cui mi è piaciuto Perl:

  1. È potente ed espressivo. Posso scrivere una riga di codice Ruby anziché cinque righe di Java o C ++. Non c'è ripetizione che non può essere presa in considerazione con il minimo sforzo.

  2. È dinamico. Metodi e proprietà possono essere creati in fase di esecuzione, quindi posso avvolgere gli oggetti attorno a cose definite esternamente, come le tabelle del database, senza duplicare la definizione di tali cose e senza ricostruire l'applicazione.

  3. Esiste un libro eccellente sul linguaggio ( Programmazione di Ruby ) che è sia leggibile che completo.

  4. Esiste un unico repository per i pacchetti di dominio pubblico e una comoda interfaccia da riga di comando per il repository.

Ma mi piace Ruby meglio di Perl perché è più leggibile.

Esistono numerose pagine che confrontano Ruby con Python. Mi piacciono entrambi. Preferisco Ruby, ma ho un'esperienza limitata con Python.


Ricordo di aver letto che si sperava che (quello che sarebbe diventato Ruby) sarebbe diventato abbastanza buono da sostituire Perl nella prefazione di Programmazione di Ruby.
Rig

@kevin: queste sono alcune delle caratteristiche del linguaggio e ne sono ben consapevole. Tuttavia, mi piacerebbe conoscere la "ragione per creare Ruby" oltre a "Voglio un linguaggio divertente / debolmente tipizzato" (o è questa ragione abbastanza grande ???
Dottorato

1
@Nupul: queste cose non sono fatte dal comitato. Matz prese un'idea e scrisse Ruby. Lo mostrò ad altre persone dopo un po 'e ad alcuni piaceva. Ecco come sono stati creati LISP, Smalltalk, C, C ++, Pascal, Perl, Ruby e Python. Penso che sia lo stesso per la maggior parte dei linguaggi di programmazione. Solo pochi sono stati creati da comitato o iniziativa aziendale.
Kevin Cline,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.