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.