Matz on Ruby, Functional Programming and Programming Languages Design
Ruby Creator Yukihiro "Matz" about Ruby, Functional Programming and Programming Languages Design

                                        
                                        
                                            
                                            
                                        
                                            
                                                
                                                    2.
                                                    In your talk today, you mentioned that if you recreate Ruby, you'll include more functions and laziness into the language. Can you talk more about this?
                                                At the time I started designing Ruby, my knowledge about the functional programming was limited to Lisp, the very traditional functional programming language. Actually, it is quite similar to Ruby in concept, not the syntax, but recent functional programming languages like Haskell and OCaml has a lot of advanced functional features. Some of them cannot be introduced without changing the language like for example, returning the lazy evaluation. We need to change the language in a fundamental way. I don't think I'm going to introduce the lazy evaluation like Haskell into Ruby, even if I design the language of the whole, but still, some part of the lazy evaluation is useful in the languages like Ruby. 
                                                
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                                
                                                    4.
                                                    You are talking about lazy lists, the yield keyword of other languages. Languages like to mix object orientation with functional programming, for example, Scala. There is, at some point, a clash between the 2 paradigms. Sometimes they don't mix really well. What do you think about this? Do they mix well, like treating functions as first class citizens in that language that is object oriented?
                                                To get all the good attributes of functional programming, the language should be purely functional, like Haskell. The hybrid language, the object oriented programming and the functional programming had to be some kind of trade off. Now, I'm thinking about the fact that with side effects we could write some kind of imperative programming, which is not sure for most of the people. I'm thinking about isolating the side effect into a small part of the program, like an actor, so they communicate with the channels without any sharing data is the solution for that. 
                                                
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                                
                                                    14.
                                                    Is there anything than laziness that you would like to incorporate in Ruby?
                                                I feel sometimes uneasy by lazy evaluation. You don't specify the execution in a language like Haskell. I describe what I want or what I need, I don't say anything about to which degree I should do or the programming should go or anything like that. That makes me feel uneasy. I sometimes feel like I lost control of the program execution. 
                                                
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                                
                                                    16.
                                                    Does it surprise you the way people use Ruby? 
                                                Not really, but the application field can be unexpected. For example, when I wrote my book about Ruby, my first book on Ruby in 1999, I wrote that Ruby is not good for writing programs running un supercomputers or something like that and a couple of years later, people came in and said "I control my weather forecasting a program with a research program on supercomputer in Ruby" - I was surprised by that!
                                                
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                                
                                                    28.
                                                    Today, there are several implementations of Ruby - on .NET, on Java and even others. Are you satisfied with these implementations?
                                                Yes, it's quite interesting and I wish we communicate and share the technology and innovation. Sometimes I feel like if we went together into the single program, the progress of the Ruby might be much quicker, but the diversity is very important in the open source field, so this is very important for us to progress in certain fields, like the JVM, .NET or some other platforms. So, yes, I'm pretty happy with it. 

                                                
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                                
                                                    34.
                                                    What was the hardest feature to implement in your Ruby? 
                                                Continuation. By continuation you can easily jump out of the function and get back into the execution point. It can break a lot of existing code. A lot of bugs are found related to continuation, but it was quite tough. 
                                                
                                            
                                            
                                        
                                            
                                                
                                                    35.
                                                    Ruby is a dynamic language and there are a lot of dynamic languages out there like PHP, Python, JavaScript. What do you think about these other dynamic languages?
                                                Let me put the PHP aside. JavaScript and Python and Ruby and other languages share pretty much things in common, but they have different design priority. JavaScript is focusing on being embedded in browsers, so the core data model in the syntax should be kept small. Python has a very stable design choice. The people behind the Python are pretty professional and I respect them. They are equally important in the field of programming. Aside of the maturity and the richness of the libraries and the add-ons, the core language is equally powerful and descriptive. Actually the taste is most important to choose between these dynamic languages, aside from outside factors like the boss chose that specific language or something like that. With Python and Ruby, it is pretty interesting - some people love Ruby, some people love Python and it's just like a dog people and cat people. 
                                                
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                            
                                            
                                        
                                    