Web Development

I quit my job to write my own language: Goby

I quit my job to write my own language: Goby

by Stan Lo

In the presentation "I quit my job to write my own language," Stan Lo shares his unconventional journey of creating a programming language called Goby. Aimed at inspiring others, Stan details the development process and key features of Goby, highlighting its roots in Ruby while enhancing its adaptability for modern needs.

Key points discussed include:

- Motivation and Inspiration: Stan reflects on his transformative journey in programming, which led him to create Goby, driven by passion and the desire to innovate in language development.

- Philosophy of Goby: Goby inherits many traits from Ruby but is designed to be versatile, showcasing its capabilities through a sample site built with the language itself.

- Plugin System: A notable feature of Goby is its plugin system, allowing developers to extend its functionalities using Go programs. This includes a generator for creating custom plugins, enhancing Goby’s usability.

- Optimization Techniques: Stan emphasizes the importance of optimizing expressions within Goby, where the compiler can recognize unused variables and remove unnecessary instructions, thus improving efficiency.

- Adaptive Compiler: The compiler's adaptability is highlighted, explaining how it maintains necessary values and manages function returns based on context, crucial for creating a dynamic programming environment.

- Community Acknowledgement: Stan expresses gratitude to the supportive community that contributed to the development of Goby, highlighting the collaborative nature of programming language development.

In conclusion, Stan encourages attendees to explore Goby further and engage in discussions about language development. He emphasizes the value of clarity in code and the creative potential of programming, aiming to foster a deeper interest in language and compiler design among the audience. Stan is open to questions, inviting dialogue about Goby and its development.

Overall, his journey illustrates the profound impact of following one's passion and the collaborative spirit in programming communities.

00:00:00 The next speaker is Stan, who will be discussing his journey in creating a programming language.
00:00:06 His title is 'I quit my job to write my own language.'
00:00:44 I understand that many of you are from Taiwan, which is wonderful. I love being here, and I appreciate every part of this opportunity. I don't have an English name yet, and when I started speaking, I realized how much my life has changed.
00:01:20 I've been on a journey with programming. Just yesterday, as I was pondering my path, I thought about how I would share my experiences. I want to show you all how I have developed my language, Goby.
00:01:31 This journey has helped me to think critically about the language development process. I find the title of this talk very meaningful because not many people can call themselves language developers. My hope is to inspire others to explore this field.
00:01:48 So, what is Goby? How many of you know about it? I will try to explain the essence of Goby. Firstly, Goby inherits much from Ruby, and it is neutral, meaning it is intended to be versatile. We have built the Goby sample site using Goby itself, which showcases its capabilities.
00:03:06 The libraries in Goby are built to have unique personalities, just like Ruby. I encourage you to check out our repository for more information. Next, I want to introduce one of the key features of Goby: the plugin system.
00:04:04 The plugin system allows you to extend Goby with Go programs. Goby provides two methods for using plugins. The first is a simple flat approach where you can augment existing code. The second is a generator that creates customized plugins.
00:04:30 In the Goby program, you can use plugins to call content from the Go program. Internally, Goby compiles your program, generates a shared object file, and utilizes the plugin package to open this shared object and execute functions accordingly.
00:06:06 Let’s have a closer look at the generation process. The plugin generator is a bit more complex, as it produces both standard and custom packages. Using a function tied to the plugin structure, Goby can process defined instructions effectively. The compiler is designed to handle the intricacies of these operations intelligently.
00:07:15 I want to emphasize the usage of unused expressions and how they can be optimized. For instance, if a variable is defined but not used, Goby’s compiler can recognize this and eliminate unnecessary instructions, thus optimizing efficiency.
00:09:08 This brings us to the topic of expressions in programming languages and their significance in Goby. Statements and expressions are vital, and understanding how they interact can greatly affect how a program runs.
00:10:08 For example, if an assignment is made without considering its use, it could lead to inefficiencies. Through my experiences with Goby, I found that ensuring clarity in code can prevent such pitfalls.
00:12:00 Further, I'd like to point out how Goby's compiler is not merely a traditional compiler; it adapts based on context. It ensures that the necessary values are maintained and returns are handled correctly.
00:12:45 This adaptability is critical in creating a dynamic programming environment. The features of Goby aim to make programming not just a task, but a creative process.
00:13:50 Why did I quit my job to focus on Goby? It was my passion for language development and the desire to learn more about compilers and virtual machines. I wanted to bring something new into the programming community.
00:15:12 I learned invaluable lessons through my experiences that shaped Goby, and today, I hope to share that knowledge with all of you.
00:16:10 As I continue to develop Goby, I'm constantly thinking of ways to improve its functionality while maintaining its foundational principles.
00:17:04 I want to express my gratitude to everyone involved in this project: those who have contributed code, provided feedback, or supported the project in any capacity. Without the community's support, Goby would not be what it is today.
00:19:00 If you're interested in exploring Goby further or want to engage in discussions about language development, I encourage you to reach out or join us on our communication platforms.
00:20:00 As I wrap up my talk, I'd like to extend my thanks to the sponsors and the community for empowering this project. I appreciate your time and interest.
00:25:35 Lastly, I would be happy to answer any questions you have regarding Goby, its features, or my experience developing it. Please feel free to ask about anything!