MountainWest RubyConf 2010

Ruby 124c41+

by Yukihiro "Matz" Matsumoto

The video titled "Ruby 124c41+" features Yukihio 'Matz' Matsumoto at the MountainWest RubyConf 2010. The central theme is the evolution and future of the Ruby programming language, drawing on insights from history, technological trends, and Matsumoto's personal journey in creating Ruby.

Key points discussed in the presentation include:
- Historical Context: The title "Ruby 124c41+" references the science fiction novel 'Ralph 124C 41+' by Hugo Gernsback, which foreshadowed many modern technologies. Matsumoto uses this reference to indicate that just as visionary writers predict technology, software developers can forecast the future of programming languages like Ruby.
- Impact of Moore's Law: Matsumoto explains how Moore's Law, which states that computing power doubles approximately every two years, has significantly influenced technology. The decrease in the cost of computing power, alongside advances in storage and internet access, has revolutionized software development.
- Changing Programming Paradigms: The discussion shifts towards programming paradigms such as object-oriented and functional programming. Matsumoto emphasizes programming's growing complexity and the need for increased productivity and enjoyable coding experiences.
- Growth of Software Dependency: Highlights the crucial role software plays in modern life and asserts that software development is one of humanity's most complex endeavors.
- Evolution of Ruby: Matsumoto shares anecdotes from Ruby's inception in 1993, noting early challenges faced while developing the language, such as achieving Googleability and implementing garbage collection. He emphasizes Ruby's unique qualities, especially its ability to apply object-oriented principles to a scripting language.
- Future Prospects: The future of Ruby looks promising, with prospects for improvements in speed, modularity, and functionality through advancements like Just-In-Time (JIT) compilation, distributed programming, and integration of functional programming concepts. Matsumoto expresses a vision for Ruby to excel in environments of high-performance computing and embedded systems.

In conclusion, Yukihio ‘Matz’ Matsumoto envisions a future for Ruby that is faster, more modular, and more user-friendly, encouraging collaboration within the Ruby community to enhance documentation, improve programming experiences, and maintain Ruby's influential status in software development.

00:00:15.040 Good morning, everyone! It’s great to see you all here at this conference. I hope this session will not disappoint you.
00:00:20.400 As someone who has been a member of the LDS church for most of my life, visiting Utah feels quite special to me. This is my third visit to Salt Lake City, but the first for the Ruby conference, and it is truly a pleasure to speak before you today.
00:00:40.160 I am going to talk about Ruby 124c41+. Many people have asked me about what that number means. It refers to the science fiction book titled 'Ralph 124C 41+', which was written in the year 2660.
00:01:00.920 This book, written by Hugo Gernsback, is one of the very early science fiction novels. The storyline is set in the year 2660, where a genius inventor named Ralph 124C 41+ must save his girlfriend from being kidnapped by a rogue merchant. The plot features advanced technology for its time.
00:01:28.320 In this age, individuals had names encoded with a combination of numbers based on their birthplace and other identifiers. This book, although a simple story, was visionary. It was written in 1911, and yet it predicted many modern inventions. Remember, back in 1911, we did not yet have planes, rockets, or even television.
00:02:01.440 Hugo Gernsback forecasted technologies such as television and solar power in aviation, which was quite incredible for the time. The term 'Hugo Award,' which is given for outstanding science fiction works, is named after him as well. The title of the book 'Ralph 124C 41+' demonstrates the predictive capabilities of writers if they have enough insight.
00:02:35.840 This notion leads to the idea that if we also have enough input and insight, we too can foresee the future, including the future of Ruby. Thus, the title of my presentation 'Ruby 124c41+' reflects this idea of looking ahead towards the evolution and future of the Ruby programming language.
00:02:54.120 One of the most influential vectors in the IT industry is Moore's Law, named after Gordon Moore, the co-founder of Intel. In 1965, he published a paper stating that the number of transistors on a microchip would double approximately every two years, which translates to exponential growth in computing power.
00:03:09.280 Today, computers are incredibly fast, with personal computers outperforming supercomputers from just twenty years ago. The prices for these computers are continually falling, and we can now buy powerful laptops for just a few hundred dollars. Additionally, we also enjoy much cheaper internet connections.
00:03:43.680 In Japan, for example, connections are exceedingly affordable, with many hotels offering free Wi-Fi. The capabilities of storage have also expanded dramatically. When I first began working with computers, we had only 32 Kilobytes of RAM and 320 Kilobyte floppy disks. Now, it’s common to find laptops with four gigabytes of RAM or more.
00:04:07.680 Remarkably, Moore's Law still holds, although we are starting to see saturation in clock speeds. While the number of transistors continues to increase, the improvement in clock speeds has slowed down due to two primary concerns: heat generation and power consumption.
00:04:24.160 Currently, the temperature levels within CPUs are increasingly comparable to that of an oven. This has led to a shift towards multi-core processors, and one should not be surprised if we see thousands of cores integrated into chips in a decade or so.
00:04:54.240 As we move forward, we can even expect data centers to be built into chips, as computers become ubiquitous. An excellent example of this ubiquity can be seen in modern smartphones. My daughter's smartphone, manufactured by Panasonic, possesses an impressive array of features.
00:05:05.440 It allows for calling, texting, and internet access, complete with a browser and music player. Moreover, it even supports mobile payments and contains a JVM along with the capability to receive digital television. She can watch her favorite shows on her phone.
00:05:27.760 We now have computers everywhere, and many people own several devices. The ongoing trends in the IT field are moving towards faster, cheaper, more ubiquitous, and multi-core hardware.
00:05:44.240 This results in hardware changes that influence software, which means runtime efficiencies are becoming less critical. Thirty years ago, languages like Ruby were often deemed too slow, but nowadays, it’s become more acceptable to overlook the speed.
00:06:05.440 Software is increasingly becoming a core requirement in various fields. For instance, during my flight from Japan, there were no planes flying or reservations made without the assistance of software. This indicates how indispensable software development has become in the modern world.
00:06:24.720 With rising complexity in software development, it’s fair to argue that software may be the most complex construct in human history, even more so than buildings or traditional engineering projects.
00:06:46.000 As demand for software increases, it’s critical to boost productivity. This is achievable through abstractions like object-oriented programming and functional programming. Such paradigms do not make implementing tasks impossible, but rather allow for greater efficiency and convenience in software development.
00:07:07.200 Consequently, as runtime efficiency becomes less important, we must focus on the human factors of programming. With the sheer power of modern computers, we can create satisfying and enjoyable programming experiences.
00:07:43.680 Furthermore, with an explosion of information, it has been noted that the data produced in 2010 was astonishingly high, at around 988 exabytes, nearing one yottabyte.
00:08:01.040 This extraordinary amount of data surpassed anything humanity has produced in a single year. As we noted, the machines we possess are faster and our connections are cheaper; we are witnessing the demand for more software alongside large data volumes in our computing landscape.
00:08:23.760 This sets the stage for predicting the future of software development. Reflecting back to 1993, I began working on a modest 6800 machine clocked at 200 megahertz with a small hard drive, running BSD Unix.
00:08:36.560 In that year, I primarily worked on C and some C++, and the dominant operating systems were Windows 3.1, SunOS, and Mac OS before the shift to OS X.
00:08:55.760 At that time, many programmers did not engage with object-oriented programming. Instead, if someone wanted to program in an object-oriented style, they had to use C++, Smalltalk, or Objective-C, which, at the time, was not widely known.
00:09:17.440 I had always been fascinated by object-oriented programming, and I believed there was potential to create a better scripting language that implemented these concepts. People warned me that it may be too slow or too complex, especially for scripting tasks, but I was determined to try.
00:09:39.760 I officially started working on Ruby on February 24, 1993. I named the language 'Ruby' simply because I found it to be beautiful. While I admired Perl, I wanted a name that was short and pretty.
00:10:03.360 After selecting the name, I later learned that ruby is the birthstone for the month of July and that pearl is the birthstone for June, which adds a nice touch to the naming of the language.
00:10:29.920 However, one challenge I faced in the early days was ensuring proper 'Googleability' of the language. Given that Google was not widely available at the time, searching for 'Ruby' resulted in many irrelevant returns.
00:10:47.520 It took me six months to achieve the simple task of printing 'Hello, World!' While this may sound simple, I had to implement several components before reaching that point, including string objects and an object class system.
00:11:10.520 So, to see 'Hello, World!' appear on the console after six months of effort was a significant moment. Soon after, I realized the necessity of implementing garbage collection due to memory management challenges we faced.
00:11:31.760 Adventurously, I continued to work on arrays, I/O systems, and many other components until Ruby was usable. Ultimately, I released version 0.95 to the public on December 21, 1995, marking that as Ruby's birthday.
00:11:45.760 Interestingly, the timeline of Ruby aligns quite closely with Java. Both projects began in 1993 and were released in 1995, sharing roughly the same age.
00:12:04.400 Initially, I never expected Ruby to become as influential as it is today. Ruby has demonstrated that object-oriented programming can be applied effectively in scripting and various other use cases.
00:12:27.840 The language has proven its value, not only for small tasks but also for more extensive programming needs, emphasizing the importance of making programming enjoyable.
00:12:47.040 For some, Ruby is considered an agile language, though I’m not sure how agile it truly is. However, I wholeheartedly agree with the principles of extreme programming.
00:13:07.040 The same principles can be applied to Ruby, meaning if code reviews improve quality, we should implement pair programming and test-driven development to ensure success.
00:13:26.720 This sentiment leads to the idea that if object-oriented programming is effective, then everything should incorporate these principles; if scripting is useful, all tasks should leverage scripting.
00:13:48.720 In web programming, Ruby on Rails exemplifies this approach, using a domain-specific language (DSL) to streamline web development, making it accessible and efficient.
00:14:09.600 Allowing higher-order functions entails every method accepting blocks, enabling exceptional flexibility in programming. While we may have opted out of multiple inheritance, we can rely on mixins to provide similar functionality.
00:14:32.480 In summary, the current trend indicates that machines are growing faster, cheaper, and increasingly complex, while software is becoming more essential as a tool for developers, pushing us to work with vast amounts of data.
00:15:00.560 As we endeavor to predict the future of Ruby, we can foresee improvements in speed by allowing multiple virtual machines to operate together and implementing garbage collection enhancements.
00:15:23.760 Ruby’s garbage collector was crafted with small tasks in mind, so adapting it for longer-lived processes is an area ripe for development.
00:15:45.520 Additionally, we are also exploring the possibilities of just-in-time (JIT) compilation to improve performance. The future of Ruby could involve distributed programming, enhancing our capability to harness multiple cores.
00:16:09.760 We may see Ruby utilized in high-performance computing and embedded systems as our applications expand. I initiated a project called 'ATM Ruby' to make Ruby more pluggable, ensuring that components can be adjusted depending on the needs of smaller devices.
00:16:32.560 Another initiative targets high-performance computing, imagining a future where Ruby can thrive in environments traditionally dominated by languages like C++.
00:16:53.040 As we anticipate the future of Ruby alongside innovations like traits and selector namespaces, we hope to enhance Ruby's modularity and streamline its functionality for both development and execution.
00:17:11.560 Furthermore, I envision Ruby integrating functional programming paradigms through lazy evaluation, enhancing its appeal for developers targeting complex tasks.
00:17:34.320 With rising expectations for ease of use and efficiency, we are exploring how Ruby can facilitate better development experiences, delivering results swiftly with greater user satisfaction.
00:17:52.720 In summary, the future of Ruby is set to become faster, broader, more modular, and more functional. We are committed to ensuring that Ruby continues to evolve, enhancing its capabilities and user experience.
00:18:11.760 As the Ruby community, let’s pursue these goals together. We have a lot of work ahead, from improving documentation to enhancing code and all aspects of development.
00:18:32.080 Together, we can contribute positively to the world, ensuring that Ruby embodies our aspirations and remains a powerful force in software development.
00:19:01.680 I am immensely proud to see how far Ruby has come and how it has positively influenced various facets of technology and programming. Thank you all for being here, and let’s work together toward a bright future.