./duwa -f path/to/your/program.duwa
Basic Syntax
Let me show you some of the basics of Duwa.
Hello World
ndondomeko pano() {
lemba("Moni Dziko");
}
pano();
In this example:
ndondomekois how I decided to declare a function in Duwa.
lemba, which means "write" in Chichewa, outputs text.- The program simply prints "Moni Dziko" ("Hello World") to the screen.
Variables
Duwa supports a variety of variable types:
// Numbers
nambala yoyamba = 1;
nambala yachiwiri = 2;
nambala yomaliza = yoyamba + yachiwiri;
// Strings
mawu dzina = "Maliko";
// Maps
mgwirizano munthu = {
"dzina": "Soma",
"zaka": 3
}
// Other types like boolean are not strongly typed
Conditional Statements
I chose to use ngati for if statements and kapena for else, making the logic flow more naturally in Chichewa:
// If statement
ngati(yoyamba > yachiwiri) {
// panga zinthu (do something)
}
// If-else statement
ngati(yoyamba > yachiwiri) {
// panga zinthu
} kapena {
// panga zinthu
}
Loops
Duwa also supports both while and for loops:
// While loop
pamene(yoyamba > 2) {
// panga zinthu
yoyamba++
}
// For loop
za(nambala x = 0; x > 5; x++) {
// panga zinthu
}
Let's Code: Linear Search Example
To give you a taste of what Duwa can do, here’s a simple linear search algorithm.
Create a new file called Kufufuza.duwa in your favorite editor
ndondomeko kufufuza(arr, x) {
za(nambala i = 0; i < arr.length(); i++) {
ngati (arr[i] == x) {
bweza i;
}
}
bweza -1;
}
ndondomeko doLinearSearch() {
nambala[] arr = [2, 3, 4, 10, 40];
nambala x = 10;
nambala result = kufufuza(arr, x);
ngati (result == -1) {
lembanzr("Linear Search: Element is not present in array");
} kapena {
lembanzr("Linear Search: Element at index " + result);
}
}
doLinearSearch();
Run the program by running
duwa -f Kufufuza.duwa
You will get the index of 10 printed out on your console
Breaking Down the Code
ndondomeko kufufuza(arr, x): This function performs the linear search. "Kufufuza" means "to search" in Chichewa.- The
zaloop iterates through the array, checking for the target value.
ngati (arr[i] == x): If the element is found, the function returns its index.- If the element is not found, the function returns -1.
ndondomeko doLinearSearch(): This function sets up the test case and calls the search function.- The result is printed using
lembanzr, which I chose to mean "write line."
This example gives a glimpse of how Duwa handles algorithms while staying true to the Chichewa language.
Current State of Duwa
Duwa is still a work in progress, and there are some words and constructs that haven't been fully translated into Chichewa yet. I'm actively working on these translations, and I plan to have everything ready by the time Duwa reaches version 1.0.
Even in its current state, Duwa is fully functional, and I'm excited to see how it grows as I continue to refine it. I’d love to hear your feedback as you experiment with it!
Bonus: I created a simple vscode extension for adding support for Duwa to vscode, for now, you will only get syntax highlighting but working on adding more features. Search for Duwa Language in the vscode extension tab, or download
Check out the (Still a work inprogress)
SOCIAL SHARE CARD GENERATOR