00:00:08.190
Why do we write Ruby? Any ideas?
00:00:11.440
Well, it's fast, no, not really. Actually, if you've used Truffle, then you might get some real performance benefits there, but generally, it’s not just about speed. We write Ruby because we like it—in fact, we love Ruby. As Tim mentioned yesterday, there's something almost visceral about Ruby. We really like it, but we can't quite put our finger on why. Saying 'because I like it' might sound a bit like a cliché. To someone outside of our community, it might seem defensive to say that we like it. However, ask yourself: Would someone be so similarly enthusiastic about another language like C++, PHP, or Java?
00:00:41.380
I will contend today that we like Ruby because it is the most human among mainstream computing languages. Historically, language has always worked in relation to other agents— that is, the world, things, everything that doesn't speak or write: a coffee cup, a chair, or a boomerang. This includes not just objects but also nations or individuals. The other agent is people and their words. Humans are almost unique among animals in this regard. I say 'almost unique' because dolphins arguably also have a language, but today we will just focus on humans and what we can do with language.
00:01:09.070
What we can do with language is we can replace things, people, and vast regions with words. It’s a bit like pointers in C; you don’t need the thing to be right there—you have an abstraction. If I say 'sea,' you can visualize it in your mind even if there’s no sea in sight. Throughout this talk, when I refer to people, I'll discuss them as 'speakers' or 'the speaker.' In singular, those that are actually writing are thinking in a specific language. For several decades, there has been something of a quiet revolution in language, and in this relationship, that I described a few moments ago, we can add one more member to our schema: computing software and hardware, in the abstract, also known as ICT (Information Communication Technologies). Analyzing these relations can shed light on what languages do for us and what we can do with our particular language of choice—Ruby.
00:02:34.480
So, I invite you to follow me for the next 15 to 20 minutes as I explore these possible relations. Good afternoon, Melbourne! Just a few quick words about me: I am not the Australian Broadcasting Corporation; I have nothing to do with them. I’m also not related to a supermarket baron, although I wish I were. I currently live in England but was previously in Berlin for quite some time. The Ruby community is something that I value, hence this particular talk. I have found myself attending a couple of conferences.
00:03:01.990
I’ve been part of RubyCamp and RubyConf or EU and have also emceed at EuroCocoa in Salzburg. I've contributed in the past to some cool projects like DataMapper and Refinery CMS. I mention those projects because those people may or may not be in the room. Currently, I’m hacking on Trailblazer, and I also have part-time availability—there's my shameless plug. Now, how do people affect language? There are various types of languages: natural languages, evolving organically, shaped by history, literature, and significant political or social changes. We also construct languages, such as the international auxiliary language Esperanto, which I’m afraid I don’t speak.
00:03:56.690
We develop formal languages in specialized areas like mathematics and computing. For example, in natural language, there's often an academy that validates usage. These days, it's commonly accepted that usage comes before the rules, but in informal languages like JavaScript, we need more rigidity to be accurate. For instance, ECMAScript, the formal name for JavaScript, is governed by the European Computer Manufacturers Association (ECMA). As a group, people evolve languages in ways that are not deliberate and cannot necessarily be foreseen, so understanding language requires us to understand history.
00:05:26.170
We wouldn’t be speaking English today if not for the history of European colonization in the 1700s. If James Cook hadn’t landed in Botany Bay in 1770 or if Captain Arthur Phillip and British settlers hadn't arrived in 1788 to establish a penal colony in New South Wales, we might be speaking something entirely different amongst ourselves. Language influences our discussions on politics and commerce: Ask anyone in the United Kingdom what 'post-truth,' 'Brexit,' or 'flat white' meant ten years ago, and they would look at you blankly. Language adapts to cultural and political events— to new tastes, to changes.
00:06:15.239
However, as long as there has been language, there have also been deliberate attempts by various societal groups, sometimes the powerful and sometimes marginalized, to reform and revive language. A good example is Modern Hebrew. Modern Hebrew was the result of a language revival that began in the late 19th and early 20th century, largely in Europe, predating Zionism. After a large scale migration of Jews beginning in 1862 to what was then British Palestine, there was a revival of the spoken language. The Israeli Declaration of Independence in 1948 recognized modern Hebrew as an official language.
00:07:02.540
Modern Hebrew is unique among major natural languages as, at one point, it had no native speakers. Closer to home, in the Adelaide Plains of South Australia, the language of Kaurna has been revived. The language became extinct when the last known native speaker died in 1931. However, thanks to the efforts of linguists and elders in the 1990s, it is now taught in schools and at the University of Adelaide. While it’s usually groups of people that affect language, some notable individuals have had an impact as well.
00:08:01.320
I'm sure you're familiar with Shakespeare, whose influence on the English language is profound. He is the most quoted author in the English language and coined a vast number of new words. In the book 'Mother Tongue' by Bill Bryson, it's mentioned that Shakespeare used 17,677 unique words in all of his writings, and of those, one-tenth had never been used before. Similarly, our very own Yukihiro Matsumoto, or Matz, gave us Ruby. Although Ruby borrows heavily from other languages, Matz’s linguistic ecology has given us something truly unique.
00:09:36.650
Ultimately, however, language, whether it be Kaurna or Ruby, needs a community to flourish. It's not an individual endeavor, but rather, a whole community of language users that guarantees the survival and practicality of a language. Let's consider the other side of this relation: language with its words gives shape to the world. For example, when we determine that a shade is too clear to be labeled as white, but we recognize it has a tint or shadow, we might then call it gray. We decide on the boundaries for the usage of words.
00:10:23.600
Language reflects our collective decisions. We group animals together and refer to them as dogs, despite the difficulty of distinguishing which characteristics they share with wolves, for example. Additionally, grammar and the repeated use of specific phrases by a particular language influence our worldview. When we refer to certain concepts, we should be mindful that we are discussing the worldview of a particular community and express that through precision in language.
00:11:05.690
This brings to mind the Sapir-Whorf hypothesis, which suggests that the structure of a language affects its speakers' worldview and cognition. This is not only about vocabulary but is deeply rooted in structure and grammar. A stronger form of this concept, known as linguistic determinism, posits that language structure determines the speaker's worldview. Different languages shape thought processes and cognitive styles in distinct ways. Humboldt, a cultural anthropologist, found that common cultures share many characteristics, with the most significant being their shared language. Over time, this concept evolved into the idea of a nation bound together by a common language.
00:12:01.610
Now let's take a closer look at Ruby. Ruby is often likened to English in its syntax, especially its RSpec testing framework, which has been designed to allow expressive syntax for test creation. Some of this is attributed to good choices in method naming, yet much is a product of Ruby itself. Ruby permits good punctuation and allows question marks in method names, adhering to a convention for predicate methods. Matz introduced the use of question marks from Scheme, and similarly, we see the use of exclamation marks in method names to signify modifications to the receiver.
00:13:02.180
The absence of semicolons and excessive parentheses and braces, often seen as visual noise in other languages, makes Ruby feel more fluid and human-like in expression. Moreover, modern versions of Ruby support Unicode characters in identifiers, allowing for the use of non-Latin characters and emojis in variables and methods. This can enhance expressiveness of the language, aligning with how we communicate today through vernacular languages, which often include emojis and emoticons. This flexibility mirrors our current communication methods on platforms like Facebook and Telegram.
00:14:27.590
Most of us in this room are native English speakers, which can lead us to assume writing systems are universal, yet we often forget the implications of directionality in text. Despite Ruby’s Japanese origins, we don’t write Ruby code vertically, as is customary in Japanese, nor do we utilize Ruby characters, which provide pronunciation guidance. Assumptions in programming languages often reflect mathematical equations originating from ancient civilizations. While previous languages enforce specific structures, we must be aware of how the language we use can shape our thinking patterns.
00:15:49.970
In Ruby, operators exhibit English-like characteristics. While some may advise against using logical operators, I find value in their application, advocating for flexibility. Languages affect each other, often seen through lexical borrowings and grammatical influences. Ruby, for instance, prospered due to the rapid advancements in computing languages during the 1950s and 1960s, drawing inspiration from Matz’s favorite languages—Perl, Smalltalk, Eiffel, Ada, and Lisp. The 'do-end' blocks in Ruby are a direct borrowing and enriching contribution from the Eiffel language.
00:16:56.930
As we shift from computing languages back to human languages, it’s important to recognize that the distinction between the two is not always clear. Software development transcends the code we write; it also involves meta-information through documentation. We possess both economic and social interests in creating maintainable code. Ideally, we should strive for code to be self-documenting, reducing reliance on constant documentation. When we achieve this, we encounter the essence of human-centered programming, which Ruby embodies.
00:17:37.320
Why do we write Ruby, then? We do so because we aspire to communicate with each computer as if it were another human being. Writing code enables us to shape our digital world, exerting the same kind of control over it as we do with our own children. Yet, as adults, we are not solely motivated by individual desires; we also aim to contribute positively to society.
00:18:08.240
This makes coding inherently social, prompting us to create understandable code that we can share with others. In conclusion, if we accept the hypothesis that language shapes community, then Ruby may be the most human and natural of programming languages at our disposal. Thus, the computing language contributes to making us more human. That's quite a mouthful.