This talk is held during RubySG ❤️ Matz Meetup (September 2019)
Checkout the video by Engineers.sg here!
Below are just some mini notes in text that I took down for Matz's talk! Thanks @Matz for the walkthrough of how he designed the language's reserved words.
EDIT: I also attached links if you wanted to read up about the less commonly known languages that he mentioned. Please leave comments below if there is anything you wanna add in!
EDIT: Changed the Ending thoughts section to Other Thoughts.
Begin/end
-> 1950s Algol programming lang style.- Comb indentation style +
rescue, ensure, retry
-> 1980s Eiffel programming lang. Rescue, ensure, entry
-> exception handling should be usual. So he don't want people to have the mentality of "this region might cause an error so try ...", but instead the code should already have exceptions that your code would rescue than just trying.Break/next/redo
& nocontinue
&unless
&while
&and/next/or
-> from Perl, as he enjoys its succintness. Tho, he regret copying too much.Class/def
-> Python/Lisp(flavours)/Mixinelsif
instead ofelseif/elif
-> It is the shortest pronunciation of this word to Matz haha.Nil/false
are both falsy -> But Ruby still three value model for Nil, False and True, because they are objects of their own. There is no boolean object class.do/yield
-> CLU 1970s of MIT only used these words for loops, but Ruby can use for callbacks loops scopes many cases. Biggest invention of Ruby. Similar to higher order functionself/super
-> Derived from Smalltalk lang.alias/undef
-> from Santher 1980s, ucb school. The purpose of these keywords are against the Liskov principle of oop.BEGIN{}/END{}
-> NOT recommend anymore. Derived from Awk, a scripting language. Ruby also started off as a scripting language but now ppl just use Ruby more for web dev, so not in use liao.- Chain pipeline operator -> #F, Elixier also have. But for Ruby, add primary argument as the receiver.
- Making your own programming language will improve your programming skills as you think about the optimization and speed of the language.
- Decision changes for Ruby are done by benevolent dictator for life (BDFL). So what happens if he retire as he mentioned that he has plans to retire 2025? He say that was more of a joke and for motivating the team to better plans. Definitely they will get someone/ a committee to lead the development of Ruby in future. If it was just a lead like now, would he/she be a dictator? Who knows.
Not to sound pedantic, but when Matz said "I believe making your own programming language will make you a better programmer", it was at the beginning of the talk.
I'm not sure if Matz said it again at the end of the talk - what @lyqht suggests in the document above, in the section 'Ending thoughts by Matz', is that Matz mentioned it at the end of the talk