DEV Community

Cover image for Pitch me on Ruby
Ben Halpern
Ben Halpern Subscriber

Posted on

Pitch me on Ruby

Part of a new series! Feel welcome to dip in and weigh in on a past question.

Let's say I've never used Ruby before. Can anyone give the run down of what the language does and why you prefer it? Feel free to touch on drawbacks as well.

Latest comments (13)

Collapse
 
w3ndo profile image
Patrick Wendo

General request, could you do a pitch me on Elixir series?

Collapse
 
pinotattari profile image
Riccardo Bernardini
  • Minimal surprise and a very consistent structure.
  • It has a flexible syntax that allows you to use the best solution depending on the context, for example,
a.each {|x| puts(x)}
Enter fullscreen mode Exit fullscreen mode

vs.

a.each do |x|
   puts(x)
end
Enter fullscreen mode Exit fullscreen mode

or

if foo 
   return
end
Enter fullscreen mode Exit fullscreen mode

vs.

return if foo
Enter fullscreen mode Exit fullscreen mode
  • Moderately strongly typed; not as much as Ada, but at least it does not try to be "smart" converting everything to everything else (yes, JS and PHP, I am looking at you...)
  • Duck typing is maybe the best middle ground for a language like Ruby: it offers you some protection, while allowing some flexibility
  • Strong reflection features. Although I wouldn't use them for critical code, they are too fun to use 😄
  • yield allows for some nice construct like the File.open do ...
  • It does not make spaces significant... well, almost. If you put some space between a procedure name and the parenthesis, you could have some trouble; but at least it is not like in Python or Occam where white space plays a critical role
  • Really nice for programs that are too complex for a shell script, but that would be an overkill to write them in something more structured (e.g., Ada, C, C++)
  • Regexp make really easy to process text files. For a small script to extract data from a text file, Ruby is my first choice

On the cons side, I would not suggest it for medium complexity code and/or code with a "long life" that will require maintenance in the future. Duck and dynamic typing is nice for its flexibility, but when the code is too complex it gets difficult to keep track of the type of the different variables and this makes maintenance more difficult (at least, according to my experience)

Collapse
 
xuwupeng2000 profile image
Jack Wu

如果我自己开一个公司,我肯定用ruby,因为效率高,写着舒适。

Collapse
 
kojix2 profile image
kojix2

Ruby has a lot of room to reinvent the wheel. This is one of the reasons I love Ruby.

Collapse
 
darkwiiplayer profile image
𒎏Wii 🏳️‍⚧️ • Edited
$ ruby -e 'puts "".methods.count'
183
Enter fullscreen mode Exit fullscreen mode

Whether this is a good or a bad thing depends entirely on what you need the language for 😉

Collapse
 
sylwiavargas profile image
Sylwia Vargas • Edited
Collapse
 
canolcer profile image
Can Olcer

There are two main reasons I fell in love with Ruby: 1) Ruby optimizes for developer happiness, 2) Ruby on Rails

Collapse
 
k_penguin_sato profile image
K-Sato • Edited

Active Record(IMO still one of the best ORMs)

Collapse
 
n8chz profile image
Lorraine Lee

Ruby is a force multiplier.

Collapse
 
polterguy profile image
Thomas Hansen

Jekyll ...? ;)