If the past OS was discontinued, Ruby might not have progressed this far. Mr. Yukihiro “Matz” Matsumoto, as known as the inventor of Ruby, displayed this surprising point of view while looking back on the 25 years of Ruby development.
Ruby, a programming language, had its 25th anniversary. It was born on February 24th, 1993. 25 years later, on February 24th, 2018, Ruby Association and Nihon Ruby-no-kai held the 25th-anniversary event, Ruby25, at Shinagawa Intercity in Tokyo.
Matz gave a thought-provoking keynote speech at the event such as the changes in the computing environment in the future and the direction of the technology that Ruby would be developing. In this post, I’m going to focus on the past and future of Ruby based on the speech by Matz and the preceded speech, “Ruby’s Quarter Century,” by Mr. Masayoshi Takahashi, the founder of Nihon Ruby-no-kai.
Landscape of OS Converged to UNIX
The lifespan of many software products is a couple of years. As for software, a decade would be considered as a long life. On the other hand, the lifespan of programming languages is longer. But it is astonishing that Ruby has been actively used in programming for 25 years.
One of the reasons for Ruby’s success is the web development framework, Ruby on Rails. Ruby on Rails was introduced in 2005, the midpoint of 25 years of Ruby’s history. We cannot ignore how impactful it was to Ruby’s ecosystem.
Today, many services such as Twitter, GitHub, Airbnb, Uber, Cookpad, MoneyForward, and Tabelog are developed with Ruby on Rails. It is hard to deny the fact Linux took over the server and cloud environment, and Unix became the dominant OS for the development platform. Matz pointed out:
“The changes in 25 years are minute. For example, OS is converged to the Unix system. The servers are on Linux. Super computers are also running on Linux. CPU is converged to X86 while we have now ARMS emerging. ”
He said the basic internet architecture, which hadn’t changed much, might have helped the longevity of Ruby.
“If the OS was disrupted in the past, there’s a high chance of Ruby not surviving this long.”
The Reason Behind the Name “Ruby”
What was the intention behind the name “Ruby” chosen in 1993? Matz told the birth story of Ruby’s name.
“I gave a name of a jewel following Perl (a scripting language). I wanted it to do what Perl could do. There were candidates like sapphire and diamond but I turned them down because I felt typing up those names seemed a little complicated. Coral was also a candidate but I decided on ruby because ruby sounded more luxurious.”
He said he designed Ruby as the next Perl and there were interesting coincidences.
“The birthstone for June is pearl, and ruby for July. Also, as old English type sizes, pearl is 5 point, and ruby is 5.5 point. ”
Considering those coincidences, Ruby was indeed next to Perl .
Ruby also shared many elements of Perl in addition to its name. Matz said he went too far with designing a programming language in that manner with a forced smile. He joked that nowadays “Ruby is said to be next to or diagonally behind Python instead of Perl” and made the Ruby fans who celebrated the anniversary burst into laughter.
25 Years of Ruby Development
Even though Ruby’s birthday is February 24th,1993, the implementation of Ruby actually became available to the public in 1995. So what day is February 24th?
“To be specific with the birthdate of Ruby, I consider it to be when the concept of Ruby was created. When you start a new software project, you need to pick a name. So, February 24th is when I named Ruby. If the name Ruby created the concept and the language itself, the birthdate would be February 24th, 1993. ”
Matz was developing Ruby by himself through 1993 and 1994. When his email announcing the Ruby project was posted on the NetNews forum on December 21st, 1995, that became the first appearance of Ruby to the public.
According to Mr. Takahashi of Nihon Ruby-no-kai, only a handful of people who were interested in programming could get their hands on Ruby back in 1995 and 1996. However, in 1997, the web media and magazines started publishing articles on Ruby, and Ruby received an Online Software Prize. “Finally, Ruby started reaching people who were interested in programming languages,” said Mr. Takahashi.
In 1999, “The Object-oriented Scripting Language Ruby” (Matsumoto et al., ASCII), a definitive guidebook for Ruby, was published. Furthermore, “Programming Ruby” published in English-speaking countries in 2000 became a best-seller. According to Mr. Takahashi’s view on the 25 years of Ruby, 1998 through 2003, when Ruby became widely known in the programming community, was the period of recognition.
The next five years were the period of change. Especially the popularity of Ruby on Rails, which debuted in 2004 and officially released in 2005, helped Ruby gain recognition and encouraged the development of an ecosystem for Ruby’s package management, which was yet to be standardized.
Even though there were many events related to Ruby during this period, most of the attendees were people who were fond of Ruby. Many people used Java and Visual Basic for work, and Ruby for their personal projects. Since 2008, Ruby’s ecosystem had been developed and widespread. In the United States and Japan, led by startup companies, Ruby and Ruby on Rails were used for producing many tech services.
40 companies including the top eight Ruby sponsors supported this event, Ruby25. When the attendees were asked if they were using Ruby for work, most of them raised their hands. It was unimaginable ten years ago. On top of the commercial use of Ruby, many Ruby awards such as Ruby Prize, Fukuoka Ruby Award, Ruby Heroes, and RubyKaja have appeared. Mr. Takahashi described the path of Ruby and the programming community: “Individual Ruby fans support Ruby. The community supports those individuals.”
A Good Programming Language Doesn’t Mean It Can Do Something Magical
Matz moved to Shimane Prefecture and is an honored citizen of Matsue. Soon after his move to Shimane, he had an interview in which he had trouble answering the local reporter’s question.
“The reporter asked me ‘What can you do with Ruby?’ I had a hard time answering that,” he said.
If programming languages are Turing complete, what they can do is the same. It is not like Language A can do this but Language B can’t.
“We can program anything including algorithms that are yet to exist with Ruby. It can be done,” said Matz.
But, of course, it doesn’t mean all programming languages are the same. Whatever the language is, programming languages have made their progress, improving productivity along the way.“Humans invented programming languages because there is a limit to human understanding of machines. If we can understand machine language, we can just write it. ”
So, a good programming language should allow engineers to quickly code on, write directly and concisely, and should offer excellent abstraction such as object-oriented programming and MVC.
Ruby3: Three Times Faster, Distributed Computing, Static Program Analytics
The latest Ruby is Ruby2.5, released in December 2017. The version in development is Ruby2.6. The next significant milestone is Ruby3. When will Ruby3 be released, and what will it be like?
Matz emphasized one crucial point that he was trying to apply changes gradually. When Ruby was updated from Version 1.8 to 1.9 in 2007, it was a significant change. Even though it was an update within Version 1, the contents and grammar drastically changed as if it was an update from Ruby1 to Ruby2. Matz said “the incompatibility between 1.8 and 1.9 divided the Ruby community. It was unfortunate, so I want to avoid that with Ruby3.” This kind of division happened in the past with Python and Perl.
Matz said he had not decided on when to release Ruby3. If three critical points could get to a satisfactory level, he would name the version Ruby3. He used the Linux kernel development community’s approach as a reference.
The three critical points are the following: faster processing, distributed computing, and static program analytics. If a new version can perform three times faster than the current version, handle distributed computing, and implement static program analytics, Matz will label it as Ruby3.
It was two and half years ago when Matz declared to make Ruby three times faster and created a slogan Ruby3x3 (Ruby three by three). He talked about the progress.
“When I started talking about making Ruby three times faster two and half years ago, I was thinking ‘I might be able to do it or I might not.’ But recently, I started thinking it is possible with JIT. Probably, I won’t be able to make it work tomorrow. But it is doable to make Ruby three times faster compared to the 2013 version in one or two years.”
JIT stands for Just-in-Time compilation which is used in language processing systems like Java for faster execution. JIT compiles data at startup, so it is not suitable for scripting languages that repeatedly start small command line tools. On the other hand, once JIT starts running, it gradually increases its processing speed, so it is great for server applications. Matz hasn’t decided whether he should enable JIT as a default setting. The next version, Ruby2.6 already has MJIT implemented. If “ — jit” is selected as a startup option, programmers can use JIT.
Other than reaching faster speed for Ruby3, processing in a distributed environment such as multi-core, multi-node, and multi-datacenter that can be written like Ruby is a challenging goal, but it is necessary when considering the current direction of the computing environment.
Now, Mr. Koichi Sasada, a Ruby core developer, is working on a project called Guild. Although Ruby has threading implementation called Thread class, its performance of parallel execution is quite limited. On the other hand, Guild can perform parallel execution while avoiding the difficulty of programming such as lock and unlock controls.
Presentation on Guild at RubyKaigi 2016 (https://www.youtube.com/watch?v=WIrYh14H9kA)
Slides of the presentation (http://www.atdot.net/~ko1/activities/2016_rubykaigi.pdf)
Ruby is one of the most dynamic programming languages by nature, so static program analytics might be a challenge. But some projects are trying to combat this issue. JetBrains, which is known with its development environment tools such as IDE, is working on profile analysis with Ruby. At Ruby, engineers are working on the implementation of static type inference called Steep. In Steep, type data is stored in a separate file from the source code such as in TypeScript. Matz has a firm belief in code writing. He wants to avoid writing data type and declaration such as “int” in “int a=5” if he can. His opinion is not in the majority. Quite a few programmers believe it is better to write data type here and there if that allows faster processing. But Ruby’s ideology is DRY (Don’t Repeat Yourself) because writing the same thing over and over again is considered as counterproductive. Matz believes data type declaration should be unnecessary if the processing system can guess or execute from the source code. There shouldn’t be any need for humans to compromise with computer’s convenience. It is not fun. That seems to be the position of Ruby.
Making Ruby faster with distributed computing and static program analytics is not easy. Matz says that is why it is important. “For Ruby to survive, exciting and challenging goals are necessary.” Just like President John F. Kennedy declaring to send humans to the moon in the 1960’s, it is crucial to have goals that seem impossible even for experts to reach and say “We will do it!”
The Future of Programming Will Be Like Teddy Bear Pair Programming!?
Matz predicted “software development will be more interactive.” In the current version of Ruby, if you mistype the name of a method and execute, Ruby displays “did you mean: ” like how Google Search asks in the search results. The idea is that this kind of question or reminder will be displayed while coding.
Matz mentioned another example of the near-futuristic programming, teddy bear pair programming. Teddy bear pair programming is, you might be able to guess, programming with an actual teddy bear. You put a teddy bear on your desk and talk to the little furry guy about what you are trying to implement and what problems you are facing. It sounds like a ridiculous joke but having a discussion is believed to clear thoughts and lead to productivity improvement. This technique is originated from pair programming where two people work on coding while verbalizing their ideas. This seems to work even if your coding partner is not a person. Now, a teddy bear can be your partner. Matz, as a matter of fact, came up with block, a unique and powerful grammar for Ruby, while holding his baby and talking to her.
Matz dreams to be able to program interactively with a system like further-evolved IDE instead of teddy bears. His dream is based on his philosophy: fun Ruby, fun programming. He wishes Ruby would be a tool for ideation and clarification of ideas.
“I’ve been tenaciously developing Ruby only for people, and this will not change for another 25 years.”
For example, even though the processors can run faster if programmers write data types, this shows we are compromising with computers. It doesn’t mean it is terrible. Programming languages compromise with us more or less, so, there is a balance considering computers’ convenience. But Ruby sticks to its philosophy: “for people.” This is why Ruby is a rare programming language that many programmers love.
Many people used to say “programming is hard” but the number of people who enjoy coding is increasing over the 25 years. From seeing this change, Matz ended his speech with his hope that “‘programming is fun’ will be a common perception.”
Ruby is 25 years old. If it were a person, it would be adult yet still young. It would be exciting to see how Ruby would grow in another 25 years.
As a surprise, two daughters of Matz got on the stage after his speech and gave him flowers. He is usually known as a programmer, but his eldest daughter revealed: “he is a devoted father and never raised his voice at us.” His youngest daughter proudly said, “I grew up seeing my father who is a physical proof of doing what you love for a living’”
(SideCI Special Reporting Team)
In our next post, we will feature a talk by Mr. Matsumoto and Mr. Tatsuhiko Miyagawa, the host of Rebuild fm, as a part of Ruby25 series.
For more information about Sider, please go to our website.