Ruby language: history of development and development prospects

Man was created for creativity, and I always knew that I like to create. Alas, I am deprived of the talent of an artist or musician. But I can write programs. I want the computer to be my servant, not my master, so I must be able to quickly and efficiently explain to him what to do.
Yukihiro Matsumoto, creator of the Ruby language

Before everyone who wants to follow the path of a programmer, sooner or later the question arises of choosing the field of software development (web, desktop, mobile, game, system, ..) and related tools (programming languages, frameworks, development environments ...). Moreover, here, as in construction, the important role is played by the materials and tools that you use. In fact, they largely determine what will ultimately be built, how fast, what properties it will have, etc.

For example, a builder working with wood will be prone to calm and thoughtful activity, painstaking fitting of parts, the use of a hand tool, and individuality in the approach. At the same time, the mason can act much faster, using a power tool and compensating for some inaccuracies with the help of an extra mortar trowel :) Well, the concrete monolithic worker does not bother at all, his task is to make everything as simple and reliable as possible in the shortest possible time, and who already there he will be engaged in decorating and designing premises for years - he is not interested.

So with programming languages: in each of the areas of software development, there are usually at least two or three languages ​​that can, in principle, cope with the task. However, the approach to solving these languages ​​is usually somewhat different, and this raises the question of development priorities and individual preferences of the programmer. Ultimately, your thinking and understanding of what needs to be done and how to support it later is important. So it makes sense to choose the language in which it will be easier and more convenient for you to write, which will give you the opportunity to reach your potential.

It usually takes at least a month to more or less closely get to know the new language. This article is intended to answer the question of whether it is worth spending this month on Ruby, or it makes sense to look in the direction of other languages. I myself also now have a choice: to improve my knowledge in PHP (while I worked with it myself in freelance — and at a fairly simple level, now I have a desire to grow further) or try “from scratch” in Ruby (immediately having mastered with using it, the latest trends in web-programming and at the same time having, as I hope, a fairly modern and convenient tool for work).

Trying to figure out if Ruby has a future, and if I have a place in it :), I read several hundred articles, discussions, comparisons, etc. I will try to bring my thoughts in a more or less systematic form:

1.
Ruby was conceived in 1993 by the Japanese Yukihiro Matsumoto, who strove to create a language that combined the best approaches from other languages ​​that facilitate the work of a programmer. He acted in many respects according to the postulate of Abelson and Sassman: "Programs should be written so that people can read them, and only sometimes so that machines can execute them." At the same time, Matsumoto really wanted it to be a truly object-oriented, easy-to-use, high-level language. Thus, the main purpose of Ruby is to create powerful and at the same time understandable programs, where it is not so much the speed of the program that matters, as the short development time, the comprehensibility and simplicity of the syntax. The language follows the principle of "least surprise": the program should behave as the programmer expects. He also inherited the ideology of Perl in providing the programmer with the ability to achieve the same result in several ways. People are different, and for freedom they need the opportunity to choose:“I prefer to provide many paths, if possible, but to encourage or guide users to choose the best path, if possible .

2.
Ruby has become popular in Japan since the first publicly available version appeared in 1995 (from 1995 to 2002, it published about twenty books about Ruby, and Ruby became a more popular language in this country than Python) The acquaintance of the international community began after the translation of its documentation into English and the creation of the first mailing lists in 1998. After the year 2000, Ruby began to spread around the world, which was facilitated by the advent of English-language books, primarily, “Programming Ruby: The Pragmatic Programmers' Guide” and “Why's (Poignant) Guide to Ruby”. Until 2004, Ruby was not widely known in Europe and the USA, however, due to its capabilities and the large number of supported platforms, Ruby slowly but surely expanded its ranks. The real surge of interest in Ruby provoked the appearance of Ruby-On-Rails (RoR) - a framework for developing web applications. RoR became so-called for Ruby killer application, the catalyst through which Ruby is now recognized worldwide.

3.
The real leap in development and interest in using the language for serious commercial projects began after the release of Ruby 1.8.0 in 2003 and the new version of the Ruby on Rails 2.0 framework in 2007, which brought programming to Ruby to a new level. Ruby on Rails includes pre-built functionality for solving almost all the mundane tasks that modern web professionals face. This means that the speed of development increases markedly. As evidence, you can watch the videoin which with the help of Ruby on Rails a full-fledged blog is created in just fifteen minutes. Unfortunately, the speed of the application itself was still quite low, and this was one of the reasons that the popularity of the language grew quite slowly. As one of the Russian developers stated in 2007: “Speaking of rails, this is naturally a breakthrough. Everything that I did for myself on my knee for 5 years was suddenly presented within the framework of a single excellent framework. Frustrating performance. Moreover, the scalability is quite decent for itself, but it is necessary to build up servers for rail applications more often than for Python and pearl analogues. If not for this, we would have already gone over to the rails. For now, we’re using it to educate new developers on the right approaches to development and prototyping. ". In addition, it was still problematic to find a hosting (all the more free), on which it would be possible to place the application on Ruby.

4.
If, before version 1.8, the language developed, while maintaining compatibility with previous versions, then later Ruby developers, led by Yakihiro Matsumoto, decided that 100% compatibility should be abandoned to move forward. Therefore, Ruby development was divided into two branches: support for versions 1.8. * And the creation of new versions 1.9. *, Which are the forerunner of the next version of the language, Ruby 2. Major changes for the better have occurred with the release of Ruby 1.9.1 in 2009 and Rails 3.0 in 2010, when most of the language rebukes lost their foundation and nothing else prevented Ruby from taking its rightful place among other programming languages.

Here is an example of significant changes in the runtime of applications in Ruby:




According to the ratingTIOBE Programming Community Index , as of September 2011, Ruby ranks 11th (Python - 8th, PHP - 5th), and this is 1.5% of the total market, which is quite good on a global scale;) if we turn to Web And Scripting Programming Language Job Trends analytics , then in August 2011 the situation would be like this:



The first graph shows the number of job offers, and, in principle, everything is clear, it coincides with the conclusions of the TIOBE Index - demand for There are Ruby programmers, and quite high, but it is lower than the demand for Python, and significantly lower than the demand for PHP, which is understandable - the terms of active use of these languages ​​are incomparable ov.



And here you can see how interest in various languages ​​is growing, and the pace of development of Ruby is impressive: over the past 2.5 years they have increased 2.5 times! This gives hope that Ruby has every chance in the near future to occupy its niche and continue to hold a fairly large part of the web development market. And if in 2009, the publishing house “Peter” doubted whether it made sense to publish the book “The Ruby Programming Language” in Russian, then in early 2011 it still came out , indicating that there was an increasing interest in this language and among Russian-speaking programmers. Especially inspiring notes like these .

There is also available analytics from the Open Source project repositories.



According to statistics from Black Duck Software, in January-May 2011, 1,153,059 commits (entries) were published on Github, 624,989 on Sourceforge, 287,901 on Google Code, and 49,839 on CodePlex. Here are statistics on programming languages:
  • C ++ (362,077 commits)
  • Java (335 992 commits)
  • Python (296,896 commits)
  • C (264,468 commits)
  • JavaScript (251,557 commits)
  • Ruby (234,980 commits)
  • PHP (154,250 commits)
  • C # (125,848 commits)
  • Perl (89 720 commits)

In addition, Ruby / Rails currently represents the implementation of almost all of the most promising technologies and approaches to programming, such as development through testing (TDD), a full-fledged model for implementing the MVC concept, working with databases through ORM (ActiveRecord), and design patterns (Design Patterns), the use of the convenient Prototype JavaScript framework (for simple work with AJAX), work with the distributed version control system Git ( Github.com ), and, of course, its application in the development of SaaS ( Cloud computing ), for example, on projects such as Heroku.com , Engineyard.com , Basecamphq.co m .

However, here you need to understand that learning languages ​​and learning new technologies are two different things. Learning new technologies is always worth it! Learning technology gives knowledge and experience (the main thing is that your programming language supports this technology). And experience in our difficult business is more valuable than certificates. Of course, new cutting-edge-technologies are always some risks, no matter how good words such technologies sign and whatever qualities they possess. These are risks associated with timelines, with personnel in the market, with their experience and level, and many other problems. However, as a conclusion, I would like to quote the words of Yehuda Katz (the chief developer and architect of Ruby on Rails at EngineYard), which he said at RailsConf in 2010: “I don't know any Ruby developers who are unemployed”;)

Also popular now: