 Well Good morning I love Ruby conference except for keynotes and I love you people. Thank you for coming This year I'm going to talk about the 0.82 language. I Know you don't know what it what does mean, but let me tell you about that And the whole earth was of one language and of one speech in the book of Genesis Long time ago it is said in the Bible we had a we The people spoke One language the one true language this book the perfect language but the they they made a Very great things and build up a great tower and that that that tower was destroyed and We have we have no longer same language. Therefore the the name The name of the tower is called Babel and because the load did the confound the language of all the earth so we did Since that so we did speak we have spoken Different language like English Japanese Russian It is correct version. I don't know that I just copy and paste Correct, oh good and they're very big Yeah, thanks to uni code and love about the language By the way this year I changed my presentation software that this one is called rabbit It's written in Ruby Yeah, and it understands uni code and many programming languages We speak Ruby Some of them some of us speak Python Some of us speak force to speak Java and some some speak gold You know go language. Yeah, it's quite interesting language. I I love gold but the the bad things is it's quite difficult to to Google And it and uh the back tracker of gold languages that Someone posted a some kind of complain And that I made up the language named go in 10 years ago So you should rename the language. I I came first And then in the in that's let the everyone talked about the new name or the Google should change the name They don't they shouldn't be evil evil and Yeah, some proposed to rename the goal language into oh, I'm sorry. It's quite new for me Issue nine that just because the that complaint was filed as an issue nine in the back tracker And yeah, it reminds us a plan nine as well We we speak some procedural language Like for plan C and Pascal and I started programming in basic and it was horrible at that time No, no obstruction. No data structure. No nothing just just line numbers and when I started Learned Pascal by book. I didn't have any computers like then back then So I I studied Pascal without writing any line of Pascal code and it was fantastic experience I Learned the recursion through Pascal. I learned the structure data structure a data structure in from Pascal and It helped me a lot when I learned the C and other language like this or small talk or anything like that and Some of us big some object oriented language like some hot dog C++ Java and Ruby and some language is a functional like this some may feel some kind of reluctance of To consider this buzzer functional language. It's it's a Plenty of language Yeah, you can easily write a procedure called in the in list But but still it's it's kind of you know, they are the origin of functional language And we have El Camo, Haskell, and Al along that each has different aspect, but they are still still functional languages Some esoteric language they they are language to to Confuse people's brain like an intercal and brain And white space do you know white space? Yes, you know the white space is the language the that character contains the white spaces like space paths the the new lines and That's all The every other characters are considered as a comment So it is quite difficult to learn white space in a book Mata machiget an APL and Few years back I was surprised by we have every APL characters defined in unicode so Now we can program in APL Without any special keyboards There are so many language with the different opinion. So the And naturally each programming language has its designer and They have different opinion about What what programming language should be or different The opinion and the different trade-offs or different policies for the languages, so You know, there there's no single Way to define the programming language Yeah, I you know, I'm a I don't believe in that one true language So there's no perfect language. No perfect programming language. Nothing fits all we have some kind of system programming We have some kind of the number crunching programming or some kind of scripting for waves We have the various purposes and various goals to achieve in the programming programming language, so nothing fits all but Nothing fits all So use your favorite language and the language fits your goal Thank you Bob I have a little more things to tell you The key person number one is that the real fledo Flederico domaso Pareto Did I get in front of us, right? he's Italian and And then he's a Italian industrialist socialist Economist the philosopher and he's best known by the Pareto principle or 80 20 rules It that means the roughly 80% of the effect comes from 20% of the causes It's it's quite common that could according to Pareto principles, even if there's no perfect language There can be a language that covers 80% of the programming task well at the reasonable cost, so There's no even if there's No, the one true language one true language, but there could be that 0.82 80% two lines So I call it the 0.82 language So I call it that the pet the pet It's quite hard for us and That reminds me the pet Who to try to create a human boy But made a living for her pet 80% real boy instead so so in this presentation, I'm going to talk about a little bit about the pet and To support 80% and we need to understand the common tasks and their backgrounds, so So we have the how for far hardware's we have faster how we're cheaper and it's ubiquitous and Yeah, we really has a faster computers PC's are faster than super computers of 20 years ago So you can buy a super computer in 20 years ago In a best buy or something somewhere in appliance shop and we can buy a laptop PC PC Appliance stores for $400 or less And and the computers are now ubiquitous. No everyone wants computers not only a computer Almost everyone owns the several or many computers Like this one Do you have iPhones? Raise your hand So many iPhones Apple rules I do actually But you know, I know we know this this is a computer This is a computer But you know in these days usual computers It's this is Japanese cell phone from Panasonic and then I bought this one for my daughter and It's I thought it was a typical cell phone, but it has a Bluetooth MPC music players digital TV receiver and even JBM It's a computer It's a computer. I was astonished. He was She was downloading some kind of Java by Java rating games into the cell phone and Now everyone is connected by broadband or Wi-Fi and mobile networks and Yeah, even here in hotel volume and They achieve not the main bus in hotel rooms But anyway, we can buy the 100 mega meg Optic fiber connection for the 60,000 a month In Japan, I don't know how much that class in in the United States that other countries But you know, it's quite cheap at least in some advanced countries But everyone gets connected And in some countries like the country's in Asia or Africa, so it's the They don't they don't put the cables. They just use cell phones The mobile networks is far easier to build up than the lining cables anyway So we have moves law That means the number of transistors in LSI doubles every 18 months and it's they it's almost the single reason of the hardware laws in computer science computer field, but We are seeing the a lot of days of law So we no longer see the clock loss plate in we used to have like this one This is the graph that copied from Wikipedia and the green line is the number of transistors it's a Go like this. It's exponential lines the so the Seeing green lines the move was lost to exist but the the dark blue line is a the clock the CPU clock which Which represents the performance of the CPU and in Year somewhere in the early 21st century the saturated that line was saturated So we no longer have the the fastest CPUs even though we had the Still have the number of transistors growing so the dot The hardware vendors ID the CPU bed industries goes to multi-course or for we have the two CPUs on it on a chip or for eight chips and We even going to have the many cores in the near future Some companies announced that they build up the There are hundreds of CPUs Intel compatible CPUs and the tip It's quite interesting and some people goes to more distributed way So we put many computers Into the day center. So just we just use it So and the name it as a cloud and the full software They're in our society. The software is getting more and more important and We our society does not goes anywhere without computers and computers does nothing with a Without software so the importance of soft is getting more and more but So we need more software, but we need more software cheaper Just because you know that we have limited number of the programmers We have limited budget for software. So even even though We the importance of the software is growing the Budget does not grow that much unfortunately, and in these days every everything done in web and Network is the computer Is that this is the catchphrase of the company which is both dioracle. So according to these backgrounds that the basic requirement for the pet is It should be general purpose and it should be productive. It should be concise and it should be dynamic mean so the difference should be a general purpose language just because you know, so even though web dominates the world almost but It does not cover 80% of tasks. We still have some kind of the GUI programming the scripting programming There's a lot testing programming. We have a lot of fields that does not run well So it should be general purpose not web centric and then but I think we can leave out the system programming So we we can have the the other 20 percent leave it into other 20 percent and is but Since computers are faster, so the We don't have to focus too much on their performance and a high-performance performance computing HPC requires special language like Portland or for less or something others and The Japan should be productive So we need more software in cheaper and quicker so that the language focus on product productivity and it should be concise according to the the Fred Brooks in a mythical month It says the the programming program are generous About same amount of code today 500 lines for example so he Generates the same amount of code regardless of the language so that he means if the Programmer creates the 500 lines a day so he creates the 500 lines in assemblers in See in Java and five lines of Ruby called in a day So but think about it, you know, you can do something in 500 lines with assembly But you can do so many things in 500 lines Ruby code So if you choose Ruby or any other productive language, so you can be there I don't know several magnitude Better program you can be a similar magnitude better program So the present day application requires dynamics for flexibility. So think about the Java program Java application the decent application with Java application with decent size Has some kind of the XML code so just because the it requires some kind of a dynamics, but Java is relatively Well inflexible language So so we that the Java programmers put some kind of the dynamics Required by application into the XML code. So XML is a DSL for Java programmers Indeed I'm serious. I'm serious Yeah, the think about it the XMS is best best syntax for making external DSL So just because you know, you don't have to implement the new parser for external DSL You Java comes with the the best XML parser in the world. So you don't have to program it and programming and XML parser that it comes with Java with any cost And then yeah, Ruby Ruby tends to be to that the dynamic language, but You know, it's recent people programmers use metaprogramming to To get or abuse more dynamics from the language Look at the rails It's it's quite amazing to to use or abuse The metaprogramming, but we need more The key feature for the jpeg the new the the nearly perfect language is I think the DSL and distributed programming and the functional part so DSL stands for domain-specific language as you know and language the specifically designed for particular domain and There are two kind of DSLs one in internal DSL and the second Is the external DSL the internal DSL means Wait, oh DSL DSL has a lot of advantage like it provides a high abstraction and it's it provides self-degmenting called and Quality productivity reliability maintenance ability portability and we use the building. It's from Wikipedia And the variation at the main level so even non professional programmer can be programming and DSL some somewhat And there are two kind of DSL and one external and one internal the external DSL means that Domain-specific language designed and implemented for particular purpose and the internal DSL means that DSL On top of the host language so adding vocabulary and some kind of the control structure So making existing language into DSL so There's a need for productivity in the nearly perfect language. So There is a Programming for non programmer is important and by DSL that one can retrieve expect knowledge in their language ish so Internal DSL are as I already explained, but the internal DSL is DSL on top of the existing language like rails as a web DSL or You know aspect as a testing DSL On top of Ruby language it was a Ruby syntax and adding some vocabulary for web or testing. So it makes it the web Domain-specific language on top of Ruby language external DSL is DSL is specially implemented for the domain like Eximifiers in Java or I don't know oak at a small small language in Unix world or a Lot we can see a lot of external DSL and then internal DSL Provides the familiar control structure You can use any any Ruby code in internal DSL like in rails But still you can keep it in higher instruction if you want and so you can Learn from the existing language. So it is easy to learn and read and it Internal DSL can be implemented by adding some vocabulary. So it's quite easy to implement But on the other hand, it's limited by house language expressiveness So if the house language is not really expressive so the DSL on top of the House language is quite limited external DSL a lot of special syntax for the Specific dedicate to the task and it's flexible. So you can design any syntax Suitable for the task or the main and it's Quite easy to implement only if there's not growing host language Like you can easily define external DSL on top of this If you can stand the plant this I do I I I see no problem with part of this. Yeah, Emax helps But it you have to learn about new language new whole new language for the main to for each domain so You know, you you have no clue about new language. So you have to learn from from the the Scratch to You have to learn that the new DSL from scratch So my boat goes to each and the DSL Ruby is quite easy to make up the new DSL and there's some Yeah, as I said before rails aspect and other things It actually the DSL on top of Ruby language. So in fact Dave Thomas once told me that the Creating software is a kind of the step of Defining DSL the particular to that application so you you prepare the DSL for that the application and you end up in The programming in that DSL for that for the specific application so and in addition to DSL the distributed programming is quite Become and will become quite important. We have no single computer can handle enormous data of present world We genuine that humankind generate. I don't know hundred. It's so bad in a year these days I It's quite big and we need to to use more more cores and more computers So we have map reduce or cloud something. So It's kind of buzzword. I know I know but still the I don't care about buzzwords like but you know that the importance of distributed programming is still still real and the functional programming We see some sessions about functional programming in this conference and the functional program is Becoming very important just because it can be Decloutive for the task you can focus on what not how to to solve this problem and then It it opens up the new world about invasion by for example lazy variation So in a summary as a summary the pet should be a general purpose productive and concise and dynamic And it's the pet should support internal DSL and distributed programming functional programming and a question Do we only have such a language or something close enough? Ruby Ruby is general purpose productive concise and dynamic and fun that's important and Ruby's Supposed internal DSL very well as you know and far beyond other languages As far as I know the Ruby is the best language to implement the internal DSL that's the key I believe and Ruby provides reset literals and blocks and flexible yet complex syntax so if if I didn't allow some For example, I'm adding the parentheses around the arguments the syntax will be much much much simpler but you know that You have to put the parentheses around everywhere so by amending Departed argument parentheses you can write better internal DSL or abuse the syntax to look like natural language Yeah, like English like language So a few years back in this conference. I was surprised to to attend the session which encouraged to abuse the Ruby syntax to Look cold similar to English You know English is my second language or third or I don't know anyway so But my so he abused my language Formed into English so it's quite interesting and then at the first time I saw the session I was quite an easy you know seeing My language abused someone but after the session I realized if My language and my policy to describe the expression in the language can be used To to make it similar make the code similar to English Why not? Why not? So I changed my mind and and I I became a true believer of internal DSL but Ruby is pretty close to jpeg but not yet We need to have the good support for distributed programming and the functional program For we are working on distributed programming like the Ruby render after libel is on the multiple VM in the process We are working on it on them, but still underway We are working on functional programming to we added down the expression which is very Unpopular Few years back and then we added in emulator like it's kind of kind of like a lazy variation we are we can implement combinator in ruby and Ruby provides continuation and I'd like to add a lazy array in the some future ruby As a conclusion they can be the 0.82 language and the jpeg that that nearly perfect language requires the productivity as I love and Ruby is not yet the jpeg but close and We are working on make it better So yeah, you can attend the session by the Ugui song who is a one-line maintenance lead and you can Hear you can listen about what would be in our new future We could have any future Come join us working on language design. It's very fun. Yeah, I bet you and Then you can create the future programming by working on Ruby just because you know you Ruby is the leading Language for implementing internal DSL. So I I believe it would change the world in some walks and then As you've changed the world the will field via rails, you know after rails will programming changed It's kind of like a revolution as Somebody said in his blog and then I accept more revolution would come with internal DSL It's about the it's about okay. I finished the slides. Okay. Thank you