Files
davideisinger.com/static/archive/www-sitepoint-com-6vwmef.txt
2024-01-17 12:05:58 -05:00

359 lines
13 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[1]
• [3][ ]
• [4]Blog
□ [5]Free Tech Books →
□ [6]AI →
□ [7]JavaScript
□ [8]Computing
□ [9]Design & UX
□ [10]HTML & CSS
□ [11]Entrepreneur
□ [12]Web
□ [13]PHP
□ [14]WordPress
□ [15]Mobile
□ [16]Programming
□ [17]Python →
• [18]Forum
• [19]Library
• [20]Login
• [21]Join Premium
[22]Join Premium
[23][ ]
• [26]Free Tech Books
• [27]AI
• [28]JavaScript
• [29]Computing
• [30]Design & UX
• [31]HTML & CSS
• [32]Entrepreneur
• [33]Web
• [34]PHP
• [35]WordPress
• [36]Mobile
• [37]Programming
• [38]Python
[41]Ruby
The History of Ruby
[42][1433174717]
[43]Jesse Herrick
July 26, 2014
Share
rubygrows
The Ruby language is 21 years old. Its strong community and adoption by the
open source community has kept this language steady and improving. Ruby has
changed drastically over the years. It has grown from a young child to the
strong adult that it is today. But it didnt get that way overnight. Lets take
a look at the life of the Ruby programming language.
Note: This article is packed with metaphors (language to human), so be
prepared.
Birth (1993)
Ruby was born in 1993, conceieved in a discussion between Yukihiro Matsumoto
(“Matz”) and a colleague. They were discussing the possibility of an
object-oriented scripting-language. Matz stated in [49]ruby-talk:00382 that he
knew Perl, but did not like it very much; that it had the smell of a “toy”
language. He also discussed that he knew Python, but didnt like it because it
wasnt a true object-oriented programming language.
Matz wanted a language perfect for his needs:
• Syntactically Simple
• Truly Object-Oriented
• Having Iterators and Closures
• Exception Handling
• Garbage Collection
• Portable
Having looked around and not found a language suited for him, Yukihiro
Matsumoto decided to create his own. After spending several months writing an
interpreter, Matz finally published the first public version of Ruby (0.95) to
various Japanese domestic newsgroups in December, 1995. You can still download
the infant version of Ruby [50]here at your own risk.
Toddler Years
Ruby became a toddler (n.: a young child who is just beginning to walk) when
Ruby 1.0 was released in December, 1996. Ruby 1.1 shortly followed in August of
1997, and the first stable version of Ruby (1.2) was released in December of
1998.
At this point in time, Ruby was localized to Japan only, but it would soon
spread to other parts of the world…
Primary School Years
In 1998, Matz created a simple English homepage for Ruby. However, Ruby was
still very localized to Japan. In trying to further this expansion, the first
English language Ruby mailing list, [51]Ruby-Talk, was created. Ruby was
beginning to spread beyond Japan.
Ruby-Talk is still very active today, and you can subscribe to it [52]here.
In October of 1999, Yukihiro Matsumoto and Keiju Ishitsuka wrote the first book
on the Ruby programming language: The Object-oriented Scripting Language Ruby.
Ruby was beginning to get very popular in Japan, and spreading rapidly to
English-speaking countries.
In 2001, the first English book on Ruby, Programming Ruby (“The Pickaxe”), was
published in 2001. With this new information on Ruby, many more people were
able to learn the language.
Ruby 1.8 was released in 2003. This release made large amounts of changes to
the agile 10-year-old language. Including:
• Duck Typing (looks like a duck, swims like a duck, quacks like a duck: its
a duck)
• Fully Qualified Names (Foo::Bar)
• Native YAML Support
• WEBrick
• StringIO
• open-uri
• PP (Pretty Printer for Hash#inspect)
• ruby -run (UNIX commands for all! ruby -run -e mkdir foo)
• And many other minor features
In 2004, RubyGems was released to the public. Good things started happening
next…
The Rebellious Teenager
In 2005, Ruby use took off. The reason: Ruby on Rails. This new framework
changed the history of rapid web development. Ruby had been used in the past to
write CGI scripts, but Ruby on Rails took this a step further. Rails has a
Model-View-Controller structure that focuses on “convention over
configuration”, which is great for developing web applications.
People loved it. So much so that, the Ruby community was almost taken over by
the Rails framework. Ruby in turn became very popular.
In March of 2007, Ruby 1.8.6 was released, with 1.8.7 following in May of 2008.
At this point, Ruby was at its peak. Mac OS X even began shipping with it in
2007. At this point, Ruby was 15 years old.
Ruby 1.9 (development version) was released in December, 2007, then stabilized
4 years later (2011) as Ruby 1.9.3. Ruby 1.9.3 was the production version of
1.9.2. These versions brought new changes to the language, such as:
• Significant speed improvements
• New methods
• New hash syntax ({ foo: 'bar' })
• RubyGems included
• New Socket API (IPv6 support)
• Several random number generators
• Regular Expression improvements
• File loading performance improvements
• Test::Unit Improvements
• New encoding support
• More string formatting tweaks
• And so much more
Ruby was making the transition from a rebellious teenager to a strong adult as
it turned 18 with Ruby 1.9.3.
Strong Adult
Ruby 2.0.0 was released in February 2013 and brought many stabilizing changes
to the language. Among them are:
• More speed improvements
• Refinements (safe monkey patching)
• Keyword arguments
• UTF-8 by default
• New regular expressions engine
• Optimized garbage collection
• The addition of built-in syntax documentation (ri ruby:syntax)
Unlike 1.9.x, which broke numerous gems with its changes, 2.0.0 was almost
completely backwards compatible with 1.9.3. In addition, Heroku, one of the
leading Ruby/Rails hosts upgraded to 2.0.0 quickly, causing earlier than usual
adoption by new and existing projects. The Ruby language was (and is) in its
golden age.
Ruby 2.1.0 was released on Christmas day of 2013. It brought several minor
changes to the language. But the biggest news of 2.1.0 was [53]semantic
versioning, a way to properly version a project without breaking dependencies
by accident.
Ruby 2.1.1 was released on Rubys 21st birthday (February 24, 2014). Ruby is
now legally allowed to drink in the US (not that wed want it to). This version
was mainly speed improvements and bugfixes. Shortly after 2.1.1, Ruby 2.1.2 was
released in May of 2014. 2.1.2 consists of more bugfixes and is the current
stable version of Ruby.
The Future
Ruby is a great language. Matz wanted a programming language that suited his
needs, so he built one. This is an inspiring story of software development: if
you cant find something that you like, program it yourself. From 0.95 to
2.1.2, Ruby has struck the awe of those who wished to program the way they
wanted, not the way the machine wanted.
We cant know the future of the Ruby language, but we can predict it based on
the past. I believe that the Ruby language, and its fantastic community will
continue furthering the language above and beyond what others think is
possible, and projects built using it will do the same.
Share This Article
[59]Jesse Herrick
[60]Jesse Herrick
Jesse Herrick is an avid Ruby developer who specializes in web development. He
is a back-end developer at [61]Littlelines and loves programming. You can read
his personal blog at: [62]https://jesse.codes.
[63][64]
GlennGhistoryruby
Up Next
[65]How to Build an Interactive History Map with WRLD
[66]How to Build an Interactive History Map with WRLD[67]Adrian Try
[68]Digital Fonts: A Condensed History
[69]Digital Fonts: A Condensed History[70]Alex Bigman
[71]A History of CSS Image Replacement
[72]A History of CSS Image Replacement[73]Baljeet Rathi
[74]Making Alternative 80s Film History Come to Life with Photoshop
[75]Making Alternative 80s Film History Come to Life with Photoshop[76]
Gabrielle Gosha
[77]10 Years of Mobile Industry History in 10 Minutes
[78]10 Years of Mobile Industry History in 10 Minutes[79]Dirk Reagle
[80]How to Modify the Browser History in Complex HTML5 and JavaScript
Applications
[81]How to Modify the Browser History in Complex HTML5 and JavaScript
Applications[82]Craig Buckler
• Stuff we do
• [83]Premium
• [84]Newsletters
• [85]Forums
• About
• [86]Our story
• [87]Terms of use
• [88]Privacy policy
• [89]Corporate memberships
• Contact
• [90]Contact us
• [91]FAQ
• [92]Publish your book with us
• [93]Write an article for us
• [94]Advertise
• Connect
• [95][96][97]
© 2000 2024 SitePoint Pty. Ltd.
This site is protected by reCAPTCHA and the Google[98] Privacy Policy and[99]
Terms of Service apply.
<img height="1" width="1" style="display:none" src="https://www.facebook.com/
tr?id=721455246308784&ev=PageView&noscript=1"} />
References:
[1] https://www.sitepoint.com/
[4] https://www.sitepoint.com/blog/
[5] https://www.sitepoint.com/premium/library/free/?ref_source=blog_nav
[6] https://www.sitepoint.com/ai/
[7] https://www.sitepoint.com/javascript/
[8] https://www.sitepoint.com/computing/
[9] https://www.sitepoint.com/design-ux/
[10] https://www.sitepoint.com/html-css/
[11] https://www.sitepoint.com/entrepreneur/
[12] https://www.sitepoint.com/web/
[13] https://www.sitepoint.com/php/
[14] https://www.sitepoint.com/wordpress/
[15] https://www.sitepoint.com/mobile/
[16] https://www.sitepoint.com/programming/
[17] https://www.sitepoint.com/python/
[18] https://www.sitepoint.com/community/
[19] https://www.sitepoint.com/premium/library/
[20] https://www.sitepoint.com/premium/sign-in/
[21] https://www.sitepoint.com/premium/pricing/?ref_source=sitepoint&ref_medium=topnav
[22] https://www.sitepoint.com/premium/pricing/?ref_source=sitepoint&ref_medium=topnav
[26] https://www.sitepoint.com/premium/library/free/?ref_source=blog_nav
[27] https://www.sitepoint.com/ai/
[28] https://www.sitepoint.com/javascript/
[29] https://www.sitepoint.com/computing/
[30] https://www.sitepoint.com/design-ux/
[31] https://www.sitepoint.com/html-css/
[32] https://www.sitepoint.com/entrepreneur/
[33] https://www.sitepoint.com/web/
[34] https://www.sitepoint.com/php/
[35] https://www.sitepoint.com/wordpress/
[36] https://www.sitepoint.com/mobile/
[37] https://www.sitepoint.com/programming/
[38] https://www.sitepoint.com/python/
[41] https://www.sitepoint.com/ruby/
[42] https://www.sitepoint.com/author/jherrick/
[43] https://www.sitepoint.com/author/jherrick/
[49] http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/382
[50] https://ftp.ruby-lang.org/pub/ruby/1.0/
[51] http://blade.nagaokaut.ac.jp/ruby/ruby-talk/index.shtml
[52] https://www.ruby-lang.org/en/community/mailing-lists/
[53] http://semver.org/
[59] https://www.sitepoint.com/author/jherrick/
[60] https://www.sitepoint.com/author/jherrick/
[61] http://www.littlelines.com/
[62] https://jesse.codes/
[63] https://github.com/JesseHerrick
[64] https://twitter.com/JesseHerrick
[65] https://www.sitepoint.com/how-to-build-an-interactive-history-map-with-wrld/
[66] https://www.sitepoint.com/how-to-build-an-interactive-history-map-with-wrld/
[67] https://www.sitepoint.com/author/atry/
[68] https://www.sitepoint.com/digital-fonts-condensed-history/
[69] https://www.sitepoint.com/digital-fonts-condensed-history/
[70] https://www.sitepoint.com/author/alex-bigman/
[71] https://www.sitepoint.com/css-image-replacement-text-indent-negative-margins-and-more/
[72] https://www.sitepoint.com/css-image-replacement-text-indent-negative-margins-and-more/
[73] https://www.sitepoint.com/author/brathi/
[74] https://www.sitepoint.com/making-alternative-80s-film-history-come-life-photoshop/
[75] https://www.sitepoint.com/making-alternative-80s-film-history-come-life-photoshop/
[76] https://www.sitepoint.com/author/ggosha/
[77] https://www.sitepoint.com/the-advancements-in-mobile-design-and-how-it-has-developed-into-a-strong-industry/
[78] https://www.sitepoint.com/the-advancements-in-mobile-design-and-how-it-has-developed-into-a-strong-industry/
[79] https://www.sitepoint.com/author/dreagle/
[80] https://www.sitepoint.com/javascript-history-pushstate/
[81] https://www.sitepoint.com/javascript-history-pushstate/
[82] https://www.sitepoint.com/author/craig-buckler/
[83] https://www.sitepoint.com/premium/library/
[84] https://www.sitepoint.com/newsletters/
[85] https://www.sitepoint.com/community/
[86] https://www.sitepoint.com/about-us/
[87] https://www.sitepoint.com/legals/
[88] https://www.sitepoint.com/privacy-policy/
[89] https://www.sitepoint.com/premium-for-teams/
[90] https://www.sitepoint.com/contact-us/
[91] https://support.sitepoint.com/hc/en-us
[92] https://sitepoint.typeform.com/to/HtAXVN
[93] https://www.sitepoint.com/write-for-us/
[94] https://www.sitepoint.com/partnerships/
[95] https://www.facebook.com/sitepoint
[96] https://twitter.com/sitepointdotcom
[97] https://www.sitepoint.com/sitepoint.rss
[98] https://policies.google.com/privacy
[99] https://policies.google.com/terms