」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Duwa 簡介,一種 Chichewa 程式語言

Duwa 簡介,一種 Chichewa 程式語言

發佈於2024-10-31
瀏覽:250

Introducing Duwa a Chichewa Programming Language

杜瓦是什么?

杜瓦?是我热爱的劳动——一种简单深奥的语言(esolang),它将传统语言与现代编程融为一体。作为一个以奇切瓦语为母语的人和一名程序员,我想创造一些独特的东西来弥合我的语言传统和科技世界之间的差距。 Duwa 以马拉维班图语 Chichewa 为核心,使其成为学习和文化保护的独一无二的工具。

杜瓦的目的

创建 Duwa 是由几个关键目标驱动的:

  1. 让编程变得触手可及:我希望通过使用熟悉的语言结构,让奇切瓦语使用者更容易上手编程,帮助他们将编码视为触手可及的事情。
  2. 保护和推广奇切瓦语:在一个以英语为主的领域,我觉得在科技领域为奇切瓦语开辟一个空间非常重要,确保语言与时俱进。
  3. 创建独特的教育工具:通过设计 Duwa,我的目的是提供一种新的编程教学方式,特别是对于那些可能对传统编程语言感到疏远的人。

Duwa 反映了我对编程和母语的热情,我希望它成为奇切瓦语社区中其他人的欢迎平台。

设置和安装

如果您想亲自尝试 Duwa,请按以下步骤开始:

  1. 前往 Duwa GitHub 发布页面:https://github.com/sevenreup/duwa/releases
  2. 从最新版本下载与您的操作系统匹配的二进制文件。
  3. 使用二进制文件运行 Duwa 程序(请注意,二进制文件名称可能会有所不同):
   ./duwa -f path/to/your/program.duwa

基本语法

让我向您展示 Duwa 的一些基础知识。

你好世界

ndondomeko pano() {
    lemba("Moni Dziko");
}

pano();

在此示例中:

  • ndondomeko 是我决定在 Duwa 中声明函数的方式。
  • lemba,在奇切瓦语中的意思是“写”,输出文本。
  • 程序只是将“Moni Dziko”(“Hello World”)打印到屏幕上。

变量

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

分解代码

  1. ndondomeko kufufuza(arr, x):该函数执行线性搜索。 “Kufufuza”在奇切瓦语中的意思是“搜索”。
  2. za 循环 迭代数组,检查目标值。
  3. ngati (arr[i] == x):如果找到该元素,函数返回其索引。
  4. 如果没有找到该元素,函数返回-1。
  5. ndondomeko doLinearSearch():该函数设置测试用例并调用搜索函数。
  6. 结果使用lembanzr打印,我选择它的意思是“写行”。

这个示例让我们了解 Duwa 如何在忠实于 Chichewa 语言的同时处理算法。

杜瓦现状

Duwa 仍在进行中,有一些单词和结构尚未完全翻译成 Chichewa。我正在积极进行这些翻译,我计划在 Duwa 达到 1.0 版本时准备好一切。

即使在目前的状态下,Duwa 也功能齐全,我很高兴看到它在我不断完善的过程中如何成长。我很想听听您在尝试时的反馈!


奖励: 我创建了一个简单的 vscode 扩展,用于向 vscode 添加对 Duwa 的支持,目前,您只会获得语法突出显示,但正在努力添加更多功能。在 vscode 扩展选项卡中搜索 Duwa Language,或者在这里下载

未来发展

展望未来,我对 Duwa 有一些雄心勃勃的计划:

  • 扩展语言功能,使其更加强大
  • 构建标准库以支持更复杂的程序
  • 创建学习资源以帮助其他人开始使用 Duwa
  • 鼓励社区做出贡献,丰富语言及其生态系统

Duwa 完全是用 Golang 从头开始​​构建的,利用其优势创建了一个快速、高效、可靠的编程环境。这是一个充满挑战但有益的旅程,我很高兴看到它的发展方向。

结论

无论您是对编码感到好奇的奇切瓦语使用者,还是寻求不同事物的编程爱好者,我希望 Duwa 能够像激励我一样激励您。这个旅程才刚刚开始,我很高兴与您分享。通过让 Chichewa 成为编码世界的一部分,Duwa 为教育、文化保护和创意表达开辟了新的可能性。

查看原帖
查看github。
查看文档(仍在进行中)

版本聲明 本文轉載於:https://dev.to/sevenreup/introducing-duwa-a-chichewa-programming-language-126k?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 但是,PHP工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活地重新定義函數。 runkit_function_renction_...
    程式設計 發佈於2025-07-02
  • 為什麼PYTZ最初顯示出意外的時區偏移?
    為什麼PYTZ最初顯示出意外的時區偏移?
    與pytz 最初從pytz獲得特定的偏移。例如,亞洲/hong_kong最初顯示一個七個小時37分鐘的偏移: 差異源利用本地化將時區分配給日期,使用了適當的時區名稱和偏移量。但是,直接使用DateTime構造器分配時區不允許進行正確的調整。 example pytz.timezone(&#...
    程式設計 發佈於2025-07-02
  • 在Ubuntu/linux上安裝mysql-python時,如何修復\“ mysql_config \”錯誤?
    在Ubuntu/linux上安裝mysql-python時,如何修復\“ mysql_config \”錯誤?
    mysql-python安裝錯誤:“ mysql_config找不到”“ 由於缺少MySQL開發庫而出現此錯誤。解決此問題,建議在Ubuntu上使用該分發的存儲庫。使用以下命令安裝Python-MysqldB: sudo apt-get安裝python-mysqldb sudo pip in...
    程式設計 發佈於2025-07-02
  • 如何限制動態大小的父元素中元素的滾動範圍?
    如何限制動態大小的父元素中元素的滾動範圍?
    在交互式接口中實現垂直滾動元素的CSS高度限制問題:考慮一個佈局,其中我們具有與用戶垂直滾動一起移動的可滾動地圖div,同時與固定的固定sidebar保持一致。但是,地圖的滾動無限期擴展,超過了視口的高度,阻止用戶訪問頁面頁腳。 $("#map").css({ margin...
    程式設計 發佈於2025-07-02
  • 查找當前執行JavaScript的腳本元素方法
    查找當前執行JavaScript的腳本元素方法
    如何引用當前執行腳本的腳本元素在某些方案中理解問題在某些方案中,開發人員可能需要將其他腳本動態加載其他腳本。但是,如果Head Element尚未完全渲染,則使用document.getElementsbytagname('head')[0] .appendChild(v)的常規方...
    程式設計 發佈於2025-07-02
  • Python環境變量的訪問與管理方法
    Python環境變量的訪問與管理方法
    Accessing Environment Variables in PythonTo access environment variables in Python, utilize the os.environ object, which represents a mapping of envir...
    程式設計 發佈於2025-07-02
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    在使用GO MOD時,在GO MOD 中克服模塊路徑差異時,可能會遇到衝突,其中3個Party Package將另一個PAXPANCE帶有導入式套件之間的另一個軟件包,並在導入式套件之間導入另一個軟件包。如迴聲消息所證明的那樣: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    程式設計 發佈於2025-07-02
  • 如何使用FormData()處理多個文件上傳?
    如何使用FormData()處理多個文件上傳?
    )處理多個文件輸入時,通常需要處理多個文件上傳時,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    程式設計 發佈於2025-07-02
  • Java字符串非空且非null的有效檢查方法
    Java字符串非空且非null的有效檢查方法
    檢查字符串是否不是null而不是空的 if(str!= null && str.isementy())二手: if(str!= null && str.length()== 0) option 3:trim()。 isement(Isement() trim whitespace whites...
    程式設計 發佈於2025-07-02
  • 人臉檢測失敗原因及解決方案:Error -215
    人臉檢測失敗原因及解決方案:Error -215
    錯誤處理:解決“ error:((-215)!empty()in Function Multultiscale中的“ openCV 要解決此問題,必須確保提供給HAAR CASCADE XML文件的路徑有效。在提供的代碼片段中,級聯分類器裝有硬編碼路徑,這可能對您的系統不准確。相反,OPENCV提...
    程式設計 發佈於2025-07-02
  • 如何使用Python理解有效地創建字典?
    如何使用Python理解有效地創建字典?
    在python中,詞典綜合提供了一種生成新詞典的簡潔方法。儘管它們與列表綜合相似,但存在一些顯著差異。 與問題所暗示的不同,您無法為鑰匙創建字典理解。您必須明確指定鍵和值。 For example:d = {n: n**2 for n in range(5)}This creates a dict...
    程式設計 發佈於2025-07-02
  • MySQL中如何高效地根據兩個條件INSERT或UPDATE行?
    MySQL中如何高效地根據兩個條件INSERT或UPDATE行?
    在兩個條件下插入或更新或更新 solution:的答案在於mysql的插入中...在重複鍵更新語法上。如果不存在匹配行或更新現有行,則此功能強大的功能可以通過插入新行來進行有效的數據操作。如果違反了唯一的密鑰約束。 實現所需的行為,該表必須具有唯一的鍵定義(在這種情況下為'名稱'...
    程式設計 發佈於2025-07-02
  • 如何在Java的全屏獨家模式下處理用戶輸入?
    如何在Java的全屏獨家模式下處理用戶輸入?
    Handling User Input in Full Screen Exclusive Mode in JavaIntroductionWhen running a Java application in full screen exclusive mode, the usual event ha...
    程式設計 發佈於2025-07-02
  • 如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    將pandas dataframe列轉換為dateTime格式示例:使用column(mycol)包含以下格式的以下dataframe,以自定義格式:})指定的格式參數匹配給定的字符串格式。轉換後,MyCol列現在將包含DateTime對象。 date oped filtering > = ...
    程式設計 發佈於2025-07-02
  • 為什麼在我的Linux服務器上安裝Archive_Zip後,我找不到“ class \” class \'ziparchive \'錯誤?
    為什麼在我的Linux服務器上安裝Archive_Zip後,我找不到“ class \” class \'ziparchive \'錯誤?
    class'ziparchive'在Linux Server上安裝Archive_zip時找不到錯誤 commant in lin ins in cland ins in lin.11 on a lin.1 in a lin.11錯誤:致命錯誤:在... cass中找不到類z...
    程式設計 發佈於2025-07-02

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3