<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Leo mabuku</title>
    <description>The latest articles on DEV Community by Leo mabuku (@leomabuku).</description>
    <link>https://dev.to/leomabuku</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4241458%2Ff457521d-fd7d-49d5-9c17-75c378953541.jpg</url>
      <title>DEV Community: Leo mabuku</title>
      <link>https://dev.to/leomabuku</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leomabuku"/>
    <language>en</language>
    <item>
      <title>I Built TongaLang: An Educational Programming Language Using Tonga-Derived Keywords</title>
      <dc:creator>Leo mabuku</dc:creator>
      <pubDate>Thu, 12 Nov 2026 17:13:56 +0000</pubDate>
      <link>https://dev.to/leomabuku/i-built-tongalang-an-educational-programming-language-using-tonga-derived-keywords-45pf</link>
      <guid>https://dev.to/leomabuku/i-built-tongalang-an-educational-programming-language-using-tonga-derived-keywords-45pf</guid>
      <description>&lt;h1&gt;
  
  
  From an Idea to TongaLang: My Journey Building a Programming Language in Zambia
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;How a simple question during my final year at university led me into the world of programming language design, research, and engineering.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In January 2026, as I was preparing to undertake my final-year project, I knew I wanted to work on something related to &lt;strong&gt;ICT for Education (ICT4ED)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I wanted to build something meaningful, something that would challenge me technically while exploring how technology could contribute to education.&lt;/p&gt;

&lt;p&gt;At some point, a question came to mind:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How are programming languages actually created?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Throughout our studies, we had been introduced to the theory behind programming languages, compilers, interpreters, and related concepts. But I wanted to go beyond the classroom explanations. I wanted to understand the process by actually building one myself.&lt;/p&gt;

&lt;p&gt;That curiosity became the starting point of what is now &lt;strong&gt;TongaLang&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding a direction
&lt;/h2&gt;

&lt;p&gt;Initially, my goal was simply to develop my own programming language.&lt;/p&gt;

&lt;p&gt;But as I started researching existing programming languages and their implementations, I became interested in another question: why weren't more programming languages being developed around the indigenous languages spoken in my country, Zambia?&lt;/p&gt;

&lt;p&gt;There are many languages spoken across Zambia, yet the programming tools we commonly encounter in education are largely based on English terminology.&lt;/p&gt;

&lt;p&gt;I began exploring the possibility of building a programming language that used vocabulary from a local language.&lt;/p&gt;

&lt;p&gt;That is how the idea for TongaLang was born.&lt;/p&gt;

&lt;p&gt;I took the concept to my project supervisor, explained what I wanted to achieve, and received his support.&lt;/p&gt;

&lt;p&gt;At that point, I had an approved direction, but I was still far from understanding the full amount of work ahead of me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I was stepping into a field I had never explored at this depth before.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I knew it would be difficult. I also knew that if I was going to pursue it, I needed to start early.&lt;/p&gt;

&lt;h2&gt;
  
  
  Researching what I had signed up for
&lt;/h2&gt;

&lt;p&gt;I spent a considerable amount of time researching programming language implementation.&lt;/p&gt;

&lt;p&gt;I studied existing attempts at indigenous-language programming languages, explored different implementation approaches, and tried to understand how the major components of a language fit together.&lt;/p&gt;

&lt;p&gt;I looked into lexical analysis, parsing, grammar design, abstract syntax trees, interpreters, and runtime environments.&lt;/p&gt;

&lt;p&gt;I wanted to understand the process rather than simply take an existing language and replace its keywords.&lt;/p&gt;

&lt;p&gt;Eventually, I settled on developing my own language implementation using Python and PLY (Python Lex-Yacc).&lt;/p&gt;

&lt;p&gt;PLY would provide tools for lexical analysis and parsing, but I still had to design the language grammar, build its interpreter, implement its runtime behaviour, and decide how programs would be executed.&lt;/p&gt;

&lt;p&gt;The more I researched, the more I understood why building a programming language was not a small undertaking.&lt;/p&gt;

&lt;p&gt;But by then, I had made my decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  February 18: Defending the idea
&lt;/h2&gt;

&lt;p&gt;After completing my research and preparing my project proposal, I received approval from my supervisor.&lt;/p&gt;

&lt;p&gt;On &lt;strong&gt;18 February 2026&lt;/strong&gt;, I faced the next challenge: presenting and defending the proposal before a panel of lecturers.&lt;/p&gt;

&lt;p&gt;The format was straightforward but demanding: five minutes to present the project, followed by five minutes of technical examination and defence.&lt;/p&gt;

&lt;p&gt;I'll admit something here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public speaking has never been one of my strongest areas.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I was nervous. My presentation wasn't perfect. I stammered at certain points, and I knew I could have delivered it better.&lt;/p&gt;

&lt;p&gt;But I delivered it.&lt;/p&gt;

&lt;p&gt;Then came the technical questions.&lt;/p&gt;

&lt;p&gt;The panel questioned the feasibility of the project, the complexity of what I was proposing, and whether I fully understood what I was getting myself into.&lt;/p&gt;

&lt;p&gt;It was a tough examination.&lt;/p&gt;

&lt;p&gt;However, I had spent time researching the topic, studying different implementations, and understanding the technical requirements.&lt;/p&gt;

&lt;p&gt;Even though my presentation had been shaky, I was confident in my research and able to defend the engineering decisions behind the proposal.&lt;/p&gt;

&lt;p&gt;I stood my ground.&lt;/p&gt;

&lt;p&gt;By the time I walked out of that room, &lt;strong&gt;the panel had approved my project&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;One lecturer in particular had taken a strong interest in what I was proposing.&lt;/p&gt;

&lt;p&gt;I still remember his words:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"This is a complex system you're working on. You seem confident in what you've decided to do. I'm looking forward to seeing this project. Hope you deliver."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those words stayed with me.&lt;/p&gt;

&lt;p&gt;I knew that one of the toughest examiners had his eyes on my project, and I had given myself something serious to deliver.&lt;/p&gt;

&lt;p&gt;There was no time to waste.&lt;/p&gt;

&lt;h2&gt;
  
  
  From research to a working interpreter
&lt;/h2&gt;

&lt;p&gt;After the proposal defence, I moved straight into development.&lt;/p&gt;

&lt;p&gt;My first priority was getting the foundations of the language working.&lt;/p&gt;

&lt;p&gt;I started with the lexer, which breaks source code into tokens, and the parser, which checks whether those tokens follow the grammar of the language.&lt;/p&gt;

&lt;p&gt;From there, I worked on the abstract syntax tree (AST), runtime environments, and the interpreter responsible for executing programs.&lt;/p&gt;

&lt;p&gt;Each component introduced its own challenges.&lt;/p&gt;

&lt;p&gt;A change to the grammar could affect the parser. A new language feature could expose weaknesses in how the interpreter handled variables, functions, or execution flow.&lt;/p&gt;

&lt;p&gt;By &lt;strong&gt;April 2026&lt;/strong&gt;, I had developed a basic working prototype.&lt;/p&gt;

&lt;p&gt;That was an important milestone because I could finally begin seeing the results of the research in something executable.&lt;/p&gt;

&lt;p&gt;But I was nowhere near finished.&lt;/p&gt;

&lt;p&gt;I continued expanding the language, adding programming constructs and improving how the different components interacted.&lt;/p&gt;

&lt;p&gt;I also began giving more attention to the experience of someone learning to program.&lt;/p&gt;

&lt;p&gt;It wasn't enough for TongaLang to execute code correctly. I wanted it to provide useful feedback when something went wrong.&lt;/p&gt;

&lt;p&gt;That led me to work on clearer error messages, source locations, and explanations that could help beginners identify mistakes.&lt;/p&gt;

&lt;p&gt;By late June, I had a fully working prototype that I considered &lt;strong&gt;TongaLang version 0.1&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why testing became one of the most important parts
&lt;/h2&gt;

&lt;p&gt;As TongaLang grew, I encountered another engineering challenge.&lt;/p&gt;

&lt;p&gt;Every time I introduced a new feature or modified the interpreter, I needed to confirm that existing functionality still worked.&lt;/p&gt;

&lt;p&gt;Initially, I could manually run example programs and inspect their output.&lt;/p&gt;

&lt;p&gt;But as the language became more complex, manually testing everything after every change was no longer efficient.&lt;/p&gt;

&lt;p&gt;I needed a more reliable approach.&lt;/p&gt;

&lt;p&gt;That pushed me into developing automated test suites covering different parts of the language.&lt;/p&gt;

&lt;p&gt;I also built the &lt;strong&gt;TongaLang Test Lab&lt;/strong&gt;, which became part of the development environment.&lt;/p&gt;

&lt;p&gt;The Test Lab helped me identify failures more quickly and examine how changes affected the language.&lt;/p&gt;

&lt;p&gt;It became particularly useful as I continued refining the grammar, interpreter, error handling, and other features.&lt;/p&gt;

&lt;p&gt;This was one of the biggest lessons I took from the project.&lt;/p&gt;

&lt;p&gt;Building a feature is one part of engineering. Making sure that feature continues to work as the system evolves is another.&lt;/p&gt;

&lt;p&gt;The automated tests and Test Lab became essential tools in improving the reliability of TongaLang.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the TongaLang IDE
&lt;/h2&gt;

&lt;p&gt;With continued development and guidance from my supervisor, the language had become much more polished by early August.&lt;/p&gt;

&lt;p&gt;I also developed a graphical integrated development environment (IDE) for TongaLang.&lt;/p&gt;

&lt;p&gt;I wanted people to interact with the language through something more accessible than a command-line interface alone.&lt;/p&gt;

&lt;p&gt;The IDE, built using Python's Tkinter library, brought together source editing, syntax highlighting, program execution, input and output, and other developer tools.&lt;/p&gt;

&lt;p&gt;One feature I particularly value is the AST explorer.&lt;/p&gt;

&lt;p&gt;When learning about programming languages, abstract syntax trees can feel like concepts that exist only in diagrams and textbooks.&lt;/p&gt;

&lt;p&gt;The AST explorer makes it possible to see how TongaLang represents a program internally.&lt;/p&gt;

&lt;p&gt;Over time, the IDE also gained improved diagnostics, guided error handling, visual settings, and a Test Lab for examining the system's behaviour.&lt;/p&gt;

&lt;p&gt;What had started as a question about how programming languages were created had become a language with its own interpreter and development environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  The final project defence
&lt;/h2&gt;

&lt;p&gt;Eventually, the day of our final-year project presentations and demonstrations arrived.&lt;/p&gt;

&lt;p&gt;It was also my last day at university.&lt;/p&gt;

&lt;p&gt;When the list of examiners was released, I checked who had been assigned to evaluate my work.&lt;/p&gt;

&lt;p&gt;And there it was.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dr George Mufungulwa.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The same lecturer whose words had stayed with me since the proposal presentation.&lt;/p&gt;

&lt;p&gt;I had a feeling our paths would cross again during the final examination, and now it was confirmed.&lt;/p&gt;

&lt;p&gt;I remembered his challenge: he was looking forward to seeing the project, and he hoped I would deliver.&lt;/p&gt;

&lt;p&gt;This time, I had a working system to demonstrate.&lt;/p&gt;

&lt;p&gt;The presentations and project demonstrations went smoothly with my examiners.&lt;/p&gt;

&lt;p&gt;I was able to show the language, explain its architecture, demonstrate its functionality, and defend the engineering work behind it.&lt;/p&gt;

&lt;p&gt;After months of research, development, debugging, testing, and improvement, it was rewarding to see everything come together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My academic project received an A grade in the Project Seminars course.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That meant a great deal to me, not simply because of the grade, but because I knew how much work had gone into building the system.&lt;/p&gt;

&lt;p&gt;I had challenged myself to explore something unfamiliar, dealt with the uncertainty of developing a complex system, and followed the idea through to a working implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  TongaLang beyond university
&lt;/h2&gt;

&lt;p&gt;Although TongaLang began as my final-year project, I don't want the journey to end with an academic submission.&lt;/p&gt;

&lt;p&gt;I want to take the work further.&lt;/p&gt;

&lt;p&gt;The language currently uses Tonga-derived programming keywords and includes support for variables, conditional statements, loops, functions, expressions, input, and output.&lt;/p&gt;

&lt;p&gt;It has its own lexer, parser, abstract syntax tree, and interpreter, implemented in Python using PLY.&lt;/p&gt;

&lt;p&gt;The project has also grown to include a desktop IDE, automated testing, technical documentation, and executable example programs.&lt;/p&gt;

&lt;p&gt;In September 2026, I documented further improvements, including the Windows installation package and a test suite reporting 179 passing tests.&lt;/p&gt;

&lt;p&gt;There is still more to explore, particularly around language design, accessibility, educational evaluation, and making the software easier for others to use.&lt;/p&gt;

&lt;p&gt;I don't consider TongaLang a finished answer to programming education. I see it as a foundation that can be studied, tested, improved, and built upon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bringing TongaLang to the world
&lt;/h2&gt;

&lt;p&gt;I'm now making TongaLang available beyond the university environment.&lt;/p&gt;

&lt;p&gt;Anyone interested in exploring the project can access its public GitHub repository, review the source code, examine the language documentation, and try the available examples.&lt;/p&gt;

&lt;p&gt;A Windows installer is available through the project's GitHub Releases page. The project has also been tested on Linux, with source installation and build instructions provided in the documentation.&lt;/p&gt;

&lt;p&gt;Further distribution and improvements are ongoing.&lt;/p&gt;

&lt;p&gt;I welcome contributions from software developers, programming-language enthusiasts, educators, researchers, and anyone interested in exploring how local languages can be represented in programming tools.&lt;/p&gt;

&lt;p&gt;Whether it's testing the language, reporting bugs, contributing code, reviewing the grammar, or sharing ideas about educational applications, there is room for collaboration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explore TongaLang:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/leomabuku/PROJECT" rel="noopener noreferrer"&gt;https://github.com/leomabuku/PROJECT&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Download releases:&lt;/strong&gt; &lt;a href="https://github.com/leomabuku/PROJECT/releases/latest" rel="noopener noreferrer"&gt;https://github.com/leomabuku/PROJECT/releases/latest&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project overview:&lt;/strong&gt; &lt;a href="https://leomabuku.me/work/tongalang/" rel="noopener noreferrer"&gt;https://leomabuku.me/work/tongalang/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive playground:&lt;/strong&gt; &lt;a href="https://leomabuku.me/playground/" rel="noopener noreferrer"&gt;https://leomabuku.me/playground/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Looking back, the journey started with a simple question:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How are programming languages created?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I didn't fully understand what I was signing up for when I decided to answer that question by building one.&lt;/p&gt;

&lt;p&gt;But I knew I wanted to learn, and I was willing to put in the work.&lt;/p&gt;

&lt;p&gt;From that first idea in January, through a nervous proposal defence in February, to a working interpreter in April, version 0.1 in June, and a polished project by August, TongaLang has been one of the most demanding and rewarding engineering experiences I've undertaken.&lt;/p&gt;

&lt;p&gt;I am proud of how far the project has come, and I'm looking forward to seeing what it can become.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is TongaLang. And the journey continues.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;— Leo Mabuku&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>programming</category>
      <category>beginners</category>
      <category>leomabuku</category>
    </item>
  </channel>
</rss>
