杜瓦?是我热爱的劳动——一种简单深奥的语言(esolang),它将传统语言与现代编程融为一体。作为一个以奇切瓦语为母语的人和一名程序员,我想创造一些独特的东西来弥合我的语言传统和科技世界之间的差距。 Duwa 以马拉维班图语 Chichewa 为核心,使其成为学习和文化保护的独一无二的工具。
创建 Duwa 是由几个关键目标驱动的:
Duwa 反映了我对编程和母语的热情,我希望它成为奇切瓦语社区中其他人的欢迎平台。
如果您想亲自尝试 Duwa,请按以下步骤开始:
./duwa -f path/to/your/program.duwa
让我向您展示 Duwa 的一些基础知识。
ndondomeko pano() { lemba("Moni Dziko"); } pano();
在此示例中:
Duwa支持多种变量类型:
// 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
我选择对 if 语句使用 ngati,对 else 使用 kapena,使 Chichewa 中的逻辑流程更加自然:
// If statement ngati(yoyamba > yachiwiri) { // panga zinthu (do something) } // If-else statement ngati(yoyamba > yachiwiri) { // panga zinthu } kapena { // panga zinthu }
Duwa 还支持 while 和 for 循环:
// While loop pamene(yoyamba > 2) { // panga zinthu yoyamba } // For loop za(nambala x = 0; x > 5; x ) { // panga zinthu }
为了让您体验一下 Duwa 的功能,这里有一个简单的线性搜索算法。
在您最喜欢的编辑器中创建一个名为 Kufufuza.duwa 的新文件
ndondomeko kufufuza(arr, x) { za(nambala i = 0; i通过运行
来运行程序duwa -f Kufufuza.duwa您将在控制台上打印出索引 10
分解代码
- ndondomeko kufufuza(arr, x):该函数执行线性搜索。 “Kufufuza”在奇切瓦语中的意思是“搜索”。
- za 循环 迭代数组,检查目标值。
- ngati (arr[i] == x):如果找到该元素,函数返回其索引。
- 如果没有找到该元素,函数返回-1。
- ndondomeko doLinearSearch():该函数设置测试用例并调用搜索函数。
- 结果使用lembanzr打印,我选择它的意思是“写行”。
这个示例让我们了解 Duwa 如何在忠实于 Chichewa 语言的同时处理算法。
杜瓦现状
Duwa 仍在进行中,有一些单词和结构尚未完全翻译成 Chichewa。我正在积极进行这些翻译,我计划在 Duwa 达到 1.0 版本时准备好一切。
即使在目前的状态下,Duwa 也功能齐全,我很高兴看到它在我不断完善的过程中如何成长。我很想听听您在尝试时的反馈!
奖励: 我创建了一个简单的 vscode 扩展,用于向 vscode 添加对 Duwa 的支持,目前,您只会获得语法突出显示,但正在努力添加更多功能。在 vscode 扩展选项卡中搜索 Duwa Language,或者在这里下载
未来发展
展望未来,我对 Duwa 有一些雄心勃勃的计划:
Duwa 完全是用 Golang 从头开始构建的,利用其优势创建了一个快速、高效、可靠的编程环境。这是一个充满挑战但有益的旅程,我很高兴看到它的发展方向。
无论您是对编码感到好奇的奇切瓦语使用者,还是寻求不同事物的编程爱好者,我希望 Duwa 能够像激励我一样激励您。这个旅程才刚刚开始,我很高兴与您分享。通过让 Chichewa 成为编码世界的一部分,Duwa 为教育、文化保护和创意表达开辟了新的可能性。
查看原帖
查看github。
查看文档(仍在进行中)
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3