In 1976, I took a course at Tulane University entitled Comparitive Languages. I recollect it covered Snobol, Fortran, Cobol, APL, Algol, Pascal, & Lisp but my memory is fuzzy. It was taught by a lecturer from industry. There was no computer science major at the time. I loved this course because it explored very different ways of programming.
I transferred to CMU where faculty created Alphard (in the hopes of winning the DoD's language contest), Bliss (a systems programming language), & OPS (a rule-based language). At a summer job at Texas Instruments, I learned Jovial (the Air Force's language). A famous professor taught us the moniker F***tran.
In grad school at UC Berkeley, I worked with declarative languages for circuits: EDIF, CIF, STL, STIF. The awful language tcl
(Terrible Computer Language :)) was invented there.
In my first job (SDA which became Cadence Design Systems), one of our products was a Lisp dialect dubbed Skill. I programmed in C through my first three jobs. I used C++, Perl, & Javascript in my 4th job, excite, during the early days of the web. In my 5th job, IGN Entertainment, I used Java & Perl. We bought companies which used C# & Php
(Pretty Horrible Programming language :)). In my 6th job, vudu, I used Java but Python, Lua, Ruby, & C++ were used by teammates. I used Python for
Collectrium's proof of concept.
My most recent experience is using Ruby on Rails for
Hands for Science. Ruby is a clean, elegant language. Interesting features include blocks/lambdas/Procs, default arguments, collecting hash arguments, dynamic types, symbols, mixins/modules, multi-line strings, string interpolation, eval, hash initializers.
Having used Python, Ruby, & Javascript heavily, I'll never understand the appeal of dynamic types. Dart is a new language which offers static & dynamic types. Related to this is collecting hash arguments. Keyword arguments are more robust & Dart has them.
Rails is a vast web framework. Declarative model validation & the asset pipeline are nice features. The worst problem is the long load time slows the iteration cycle. Other big problems include the form builder's weak support for relationships & the deep, obtuse stack traces. I'm not a fan of the verbose template language but there are many alternatives.
The asset pipeline supports Coffeescript. Perhaps its best feature is the addition of classes to Javascript.
I doubt I'll use this stack in the future. Currently, I'm studying node.js & Dart.