359 lines
13 KiB
Plaintext
359 lines
13 KiB
Plaintext
[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 didn’t get that way overnight. Let’s 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 didn’t like it because it
|
||
wasn’t 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: it’s
|
||
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 Ruby’s 21st birthday (February 24, 2014). Ruby is
|
||
now legally allowed to drink in the US (not that we’d 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 can’t 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 can’t 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
|