”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Duwa 简介,一种 Chichewa 编程语言

Duwa 简介,一种 Chichewa 编程语言

发布于2024-10-31
浏览:120

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的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。 引言在编程世界中,PHP一直是网页开发的中流砥柱。作为一个从1994年就开始发展...
    编程 发布于2025-07-17
  • Java的Map.Entry和SimpleEntry如何简化键值对管理?
    Java的Map.Entry和SimpleEntry如何简化键值对管理?
    A Comprehensive Collection for Value Pairs: Introducing Java's Map.Entry and SimpleEntryIn Java, when defining a collection where each element com...
    编程 发布于2025-07-17
  • 同实例无需转储复制MySQL数据库方法
    同实例无需转储复制MySQL数据库方法
    在同一实例上复制一个MySQL数据库而无需转储在同一mySQL实例上复制数据库,而无需创建InterMediate sqql script。以下方法为传统的转储和IMPORT过程提供了更简单的替代方法。 直接管道数据 MySQL手动概述了一种允许将mysqldump直接输出到MySQL clie...
    编程 发布于2025-07-17
  • 如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    为有效的slug生成首先,该函数用指定的分隔符替换所有非字母或数字字符。此步骤可确保slug遵守URL惯例。随后,它采用ICONV函数将文本简化为us-ascii兼容格式,从而允许更广泛的字符集合兼容性。接下来,该函数使用正则表达式删除了不需要的字符,例如特殊字符和空格。此步骤可确保slug仅包含...
    编程 发布于2025-07-17
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,将常数列添加到Spark DataFrame,该列具有适用于所有行的任意值的Spark DataFrame,可以通过多种方式实现。使用文字值(SPARK 1.3)在尝试提供直接值时,用于此问题时,旨在为此目的的column方法可能会导致错误。 df.withCo...
    编程 发布于2025-07-17
  • `console.log`显示修改后对象值异常的原因
    `console.log`显示修改后对象值异常的原因
    foo = [{id:1},{id:2},{id:3},{id:4},{id:id:5},],]; console.log('foo1',foo,foo.length); foo.splice(2,1); console.log('foo2', foo, foo....
    编程 发布于2025-07-17
  • 如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求和假用户代理绕过网站块?
    如何使用Python的请求模拟浏览器行为,以及伪造的用户代理提供了一个用户 - 代理标头一个有效方法是提供有效的用户式header,以提供有效的用户 - 设置,该标题可以通过browser和Acterner Systems the equestersystermery和操作系统。通过模仿像Chro...
    编程 发布于2025-07-17
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案: args)抛出异常{ 日历cal = calendar.getInstance(); SimpleDateFormat SDF =新的SimpleDateFormat(“...
    编程 发布于2025-07-17
  • 找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    找到最大计数时,如何解决mySQL中的“组函数\”错误的“无效使用”?
    如何在mySQL中使用mySql 检索最大计数,您可能会遇到一个问题,您可能会在尝试使用以下命令:理解错误正确找到由名称列分组的值的最大计数,请使用以下修改后的查询: 计数(*)为c 来自EMP1 按名称组 c desc订购 限制1 查询说明 select语句提取名称列和每个名称...
    编程 发布于2025-07-17
  • 如何将MySQL数据库添加到Visual Studio 2012中的数据源对话框中?
    如何将MySQL数据库添加到Visual Studio 2012中的数据源对话框中?
    在Visual Studio 2012 尽管已安装了MySQL Connector v.6.5.4,但无法将MySQL数据库添加到实体框架的“ DataSource对话框”中。为了解决这一问题,至关重要的是要了解MySQL连接器v.6.5.5及以后的6.6.x版本将提供MySQL的官方Visual...
    编程 发布于2025-07-17
  • 在GO中构造SQL查询时,如何安全地加入文本和值?
    在GO中构造SQL查询时,如何安全地加入文本和值?
    在go中构造文本sql查询时,在go sql queries 中,在使用conting and contement和contement consem per时,尤其是在使用integer per当per当per时,per per per当per. 在GO中实现这一目标的惯用方法是使用fmt.spr...
    编程 发布于2025-07-17
  • 如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    如何修复\“常规错误:2006 MySQL Server在插入数据时已经消失\”?
    How to Resolve "General error: 2006 MySQL server has gone away" While Inserting RecordsIntroduction:Inserting data into a MySQL database can...
    编程 发布于2025-07-17
  • 哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    哪种方法更有效地用于点 - 填点检测:射线跟踪或matplotlib \的路径contains_points?
    在Python Matplotlib's path.contains_points FunctionMatplotlib's path.contains_points function employs a path object to represent the polygon.它...
    编程 发布于2025-07-17
  • 为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    使用php dateTime修改月份:发现预期的行为在使用PHP的DateTime类时,添加或减去几个月可能并不总是会产生预期的结果。正如文档所警告的那样,“当心”这些操作的“不像看起来那样直观。 ; $ date->修改('1个月'); //前进1个月 echo $ date->...
    编程 发布于2025-07-17
  • 在PHP中如何高效检测空数组?
    在PHP中如何高效检测空数组?
    在PHP 中检查一个空数组可以通过各种方法在PHP中确定一个空数组。如果需要验证任何数组元素的存在,则PHP的松散键入允许对数组本身进行直接评估:一种更严格的方法涉及使用count()函数: if(count(count($ playerList)=== 0){ //列表为空。 } 对...
    编程 发布于2025-07-17

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3