I graduated in 1990 in Electrical Engineering and since then I have been in university, doing research in the field of DSP. To me programming is more a tool than a job.
It has a flexible syntax that allows you to use the best solution depending on the context, for example,
a.each{|x|puts(x)}
vs.
a.eachdo|x|puts(x)end
or
iffooreturnend
vs.
returniffoo
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)
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
vs.
or
vs.
yield
allows for some nice construct like theFile.open do ...
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)