00:00:06.359
Video equipment rental costs were paid for by PeepCode.
00:00:19.000
Okay, let's get started.
00:00:24.680
I have exactly 100 slides, so I can talk for the full two hours.
00:00:34.200
If you understood Japanese, I could speak for that long, but since you don't, I'm going to provide a digest version.
00:00:46.000
Today, I will talk about the past, present, and future of Ruby, its history, philosophy, and future forecasts.
00:01:00.000
More than 400 years ago, we had one language, and we sought the one true language. However, it wasn't great.
00:01:13.680
Some people thought about emulating natural languages, which were good for that time but not suitable for multipurpose applications.
00:01:32.520
It was a business-oriented language, a common business oral language. So, they decided to draw from mathematics.
00:01:52.759
Unfortunately, some people disliked it too much, leading them to create less parenthesis-laden versions with algorithmic language.
00:02:07.000
This eventually evolved into C and C++. It took some ideas from Lisp and Smalltalk, which became Java and C. However, these languages were very static and heavy.
00:02:34.239
On the other hand, more flexible languages like Perl or Python emerged, which led to the development of Ruby.
00:03:02.400
I don't claim that Ruby is the one true language, but it does have its unique charm.
00:03:11.340
I started creating Ruby 15 years ago. Before that, I worked with various other languages.
00:03:24.840
The Ruby project officially started on February 24, 1993, and at that time, it was just a hobby for me.
00:03:38.159
I was passionate about programming and loved languages, which inspired me to develop Ruby.
00:03:47.879
It's amazing to think that building something like Ruby could impact the world to such an extent, going beyond my expectations.
00:04:00.959
The primary goal of Ruby was to provide scripting capabilities with a nice, clean syntax and robust object-oriented features.
00:04:20.359
What I really wanted was to enjoy the process of creating the language itself and to see how people enjoy its use.
00:04:44.000
During the design process, I drew ideas from various languages: Lisp semantics, a small object-oriented system, conservative syntax from C, features from Perl, and influences from Python.
00:05:12.960
I released the first public version of Ruby on December 21, 1995, in a Japanese news group.
00:05:27.360
In 1997, I was hired by a company called NSCL, which stands for Network Applied Communication Laboratory.
00:05:34.520
I became a full-time open-source software developer there, and in 1995, the first Japanese book on Ruby was published.
00:05:51.520
The English version followed a year later, and since then, Ruby has continued to grow, notably with the introduction of Rails around 2004.
00:06:02.840
About ten years back, many people were unfamiliar with Ruby.
00:06:20.960
Many would hear the name Ruby and say, 'Oh, I've heard of it, but I haven't used it yet.' They usually associated it with Rails.
00:06:51.120
However, the situation has been changing. We now have popular books from Java that help guide developers to Ruby.
00:07:07.080
The connection that Ruby has with Rails is undeniable. Rails has indeed boosted Ruby's popularity.
00:07:26.319
The joy of programming is a vital factor, overshadowed in the industry by productivity metrics.
00:07:39.680
The popularity of Rails can be attributed to its productivity; it can be seen as a domain-specific language for web applications built on Ruby.
00:07:49.680
So, in a sense, it's appropriate to think of Rails as being built on top of Ruby.
00:08:10.040
Recently, BSL (Business Specification Language) has become popular in programming circles.
00:08:31.200
This brings us to Ruby. The flexibility of Ruby beautifully accommodates BSL.
00:08:49.599
It allows for simpler expressions for specific domains, demonstrating that Ruby can help make BSL cleaner.
00:09:08.240
As Dave Thomas once said, programming is a process of designing a DSL for your own application.
00:09:19.200
I propose the concept of meta DSL, which serves as a good language for designing DSLs in applications.
00:09:37.959
While I coined the term meta DSL recently, Japan has had a form of meta DSL for quite some time.
00:09:55.360
Lisp is the oldest example of a meta DSL, with its simple syntax, flexible structure, and macro features.
00:10:13.360
The simplicity and flexibility of Lisp make it an ideal language for experimenting with language development.
00:10:42.919
But don't worry; I can help you navigate these languages even if they seem too complex.
00:11:06.480
If you look closely at the coding examples I'm sharing, you might be surprised to find that they aren't written in Ruby, but in other languages.
00:11:25.640
The challenge lies in learning to adapt to these languages without feeling overwhelmed by their complexity.
00:11:42.800
Learning a new language can be costly and daunting for beginners, so we must balance flexibility with simplicity.
00:12:01.200
Sometimes, smart individuals create complex languages that can lead to confusion rather than clarity.
00:12:17.200
I consider myself an example of an ordinary person with a normal brain.
00:12:27.640
We need to bring back balance to meta DSLs, emphasizing both flexibility and understandability.
00:12:44.600
As a meta DSL, Ruby possesses a comprehensive model, with clear syntax that is both natural and stable.
00:13:06.200
Without macros, Ruby enables users to define their syntax easily. Therefore, any new DSL derived from Ruby should adhere to its basic syntax.
00:13:30.000
Writing DSLs on top of Ruby allows users to grasp semantics and meanings more intuitively, fostering easier comprehension.
00:13:47.720
As the popularity of DSLs grows, so does the power of Ruby as a meta DSL.
00:14:06.639
Now let’s talk about Ruby's journey into enterprise development.
00:14:28.179
Today, many major companies—such as Microsoft, Oracle, and IBM—are using Ruby.
00:14:44.360
According to a recent report, there are over one million professional Ruby developers worldwide.
00:15:02.440
However, we project that number could rise to four million by 2013.
00:15:19.960
While this growth is exciting, we must ensure we maintain our focus on the core values of programming.
00:15:42.400
We must emphasize joy in programming and prioritize the programmers themselves.
00:16:02.360
A surge in novice Ruby programmers may not always be beneficial, especially if they lack an understanding of the language's nuances.
00:16:19.600
Ruby may be viewed as a 'young' language, yet it has matured significantly over the past 15 years.
00:16:32.080
It’s essential for us to keep a positive attitude even as new Java programmers and others join the community.
00:16:51.640
Programming languages have long lifecycles, unlike applications and frameworks, which tend to have shorter lifespans.
00:17:04.440
Although Ruby on Rails is very popular now, we must expect new trends to emerge within the next few years.
00:17:21.280
We believe Ruby will endure and evolve, and it's crucial that we actively pursue its future.
00:17:37.160
But before discussing the future, let’s shift to the present.
00:17:50.720
Currently, there are multiple Ruby implementations including MRI, JRuby, Rubinius, and others.
00:18:04.640
Each of these serves different needs; JRuby, for instance, can work on the JVM, offering a faster alternative to MRI.
00:18:21.120
Moreover, JRuby is designed to be compatible with Ruby 1.8 and aims to be an official implementation.
00:18:43.880
JRuby developers strive to ensure its performance meets user expectations, especially as they have their eyes on Ruby 1.9.
00:19:03.800
The Y variant of Ruby aims for speed and efficiency, labeling itself as the fastest Ruby available.
00:19:31.080
Ruby is advancing with every new iteration and has begun exploring multi-threading with tools like fibers.
00:19:51.640
Ruby 1.9 introduced additional asynchronous features that allow developers to utilize more efficient programming paradigms.
00:20:10.920
Recently, I've also presented at Google Tech Talks, detailing more about influential features.
00:20:22.760
The significance of Ruby has been acknowledged, and it’s evolving with added functionality.
00:20:39.520
The developments around fibers need to be closely observed, as they may lead to groundbreaking applications.
00:20:55.120
MTL (Multilingualization) is another effort we're focusing on, exploring how Ruby handles characters in various languages.
00:21:15.920
We need to ensure Ruby handles a variety of character sets, as language use is diverse and ever-growing.
00:21:40.560
Working with Unicode will enable us to avoid issues with legacy data, which has plagued software development for years.
00:22:02.040
However, this transition should not come with excessive complications that hinder user experience.
00:22:26.080
Nearly every software tool and language today is grappling with these challenges, and Ruby must adapt to continue being relevant.
00:22:49.920
The goal for Ruby moving forward is to create a pluggable architecture that accounts for these variations.
00:23:05.560
As we address these challenges, we must also consider performance and efficiency.
00:23:27.760
After implementing our findings, Ruby will continue generating effective solutions with robust performance.
00:23:44.640
Even though the challenges are significant, a collaborative approach to development can yield fruitful results.
00:24:02.640
I envision a future where Ruby can seamlessly handle varied languages, ensuring accessibility for all.
00:24:19.920
However, we must not forget that flexibility comes with the responsibility of maintaining usability.
00:24:35.920
Maintaining a balance between flexibility and simplicity will determine Ruby's sustainable growth over time.
00:25:06.840
In conclusion, we have various exciting developments on the horizon, and collaborations will be crucial moving forward.
00:25:25.680
Ensuring the community remains robust and vibrant is vital for Ruby's future.
00:25:41.560
We are poised for growth, and with your support and involvement, the possibilities are endless.
00:26:07.360
Thank you for your attention, and I look forward to the future of Ruby with all of you.
00:26:20.640
With excitement and hope, I continue my work in Ruby for the next 40 years or more!
00:26:40.560
Thank you once again, everyone!
00:27:04.640
Video equipment rental costs were paid for by PeepCode.
00:27:08.240
Thank you for joining us for the screencasts.