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

Duwa 简介,一种 Chichewa 编程语言

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

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]删除
最新教程 更多>
  • 购买亚马逊评论
    购买亚马逊评论
    https://dmhelpshop.com/product/buy-amazon-reviews/ 购买亚马逊评论 当谈到在亚马逊上进行商务和销售产品时,评论的重要性怎么强调都不为过。一条评论就可以决定购买的成败,而潜在的买家往往会犹豫是否购买缺乏评论的产品。缺乏评论可以起到威慑作用,这就是为什么...
    编程 发布于2024-11-07
  • 使用 DTO 简化 Laravel 中的数据传输
    使用 DTO 简化 Laravel 中的数据传输
    这是有关如何使用 Laravel Data: 创建数据传输对象 (DTO) 的分步示例 1. 安装Laravel数据包 首先,使用 Composer 安装 spatie/laravel-data 包。该软件包有助于创建 DTO 并有效管理数据。 composer require sp...
    编程 发布于2024-11-07
  • Go中如何查找与源文件相关的文件?
    Go中如何查找与源文件相关的文件?
    在Go中查找相对于源文件的文件与解释性语言不同,Go程序是经过编译的,执行时不需要源文件。因此,Ruby 中使用 __FILE__ 来相对于源文件定位文件的概念在 Go 中并不适用。相反,Go 提供了 runtime.Caller 函数,该函数返回调用时的文件名。汇编。但是,此信息对于动态定位文件并...
    编程 发布于2024-11-07
  • 如何在 Python 中高效地统计项目出现次数?
    如何在 Python 中高效地统计项目出现次数?
    提高效率的 Python 中项目频率计数计算列表中项目的出现次数是一项常见的编程任务。这个问题探讨了在 Python 中解决此问题的更有效方法。最初提供的代码虽然功能强大,但涉及到对列表进行两次迭代,从而导致性能不佳。关键的挑战在于找到一种 Pythonic 方法来计算项目出现次数,而无需重复遍历列...
    编程 发布于2024-11-07
  • 探索异步 Deepgram API:使用 Python 进行语音转文本
    探索异步 Deepgram API:使用 Python 进行语音转文本
    今天将探索用于将语音转换为文本的 Deepgram API [转录]。无论是构建语音助手、转录会议还是创建语音控制应用程序,Deepgram 都让入门变得比以往更容易。 什么是 Deepgram? Deepgram 是一个强大的语音识别平台,它使用先进的机器学习模型来实时转录音频。它...
    编程 发布于2024-11-07
  • 如何处理 PHP JSON 编码中格式错误的 UTF-8 字符?
    如何处理 PHP JSON 编码中格式错误的 UTF-8 字符?
    处理 PHP JSON 编码中格式错误的 UTF-8 字符使用 json_encode() 序列化包含俄语字符的数组时,您可能会遇到与格式错误的 UTF-8 字符相关的错误。要解决此问题,请执行以下步骤:步骤 1:识别字符编码使用 mb_detect_encoding() 确定包含俄语字符的字段的编...
    编程 发布于2024-11-07
  • 在 Java 认证考试中使用 Var 的 ips
    在 Java 认证考试中使用 Var 的 ips
    Java 认证考试需要深入了解该语言及其各种功能,包括使用 var 进行局部变量类型推断。虽然这看起来像是一个小细节,但它会极大地影响代码的可读性和效率。为了帮助您在 Java 认证考试中取得好成绩,这里有四个在代码中使用 var 的技巧: 1.在增强的 for 循环中使用 var: 由于循环控制变...
    编程 发布于2024-11-07
  • 通过制作(愚蠢的)故事生成器来学习状态管理(学习 Modulo.js - 第 f 部分
    通过制作(愚蠢的)故事生成器来学习状态管理(学习 Modulo.js - 第 f 部分
    ?欢迎回来!没听懂第 1 部分吗?不用担心,您可以从头开始,也可以直接从这里开始! 简介:SillyStory Web 组件 本教程中我们的任务是构建一个故事生成组件。这将为我们提供大量使用 State 的练习。上次我们以一个有点像下面的片段结束。然而,在本教程中,我们更改了“模板”...
    编程 发布于2024-11-07
  • 获取下一行学习如何处理文件描述符和系统 I/O 的项目
    获取下一行学习如何处理文件描述符和系统 I/O 的项目
    在 C 编程领域,有效管理输入、输出和内存是基础。为了帮助您掌握这些关键概念,您将在 get_next_line 项目中编写一个使用文件描述符逐行读取文件的函数。每次调用该函数都会从文件中读取下一行,从而允许您一次一行处理整个文件内容。 了解系统中的文件描述符和 I/O ...
    编程 发布于2024-11-07
  • 为什么Go的main函数有死循环?
    为什么Go的main函数有死循环?
    Go 运行时:主函数中无限循环之谜Go 运行时的核心位于 src/runtime/proc.go,其中有一个令人费解的功能:主函数末尾有一个无限的 for 循环。人们可能想知道为什么运行时中存在这样一个看似毫无意义的构造。目的:检测致命错误深入研究代码,很明显循环服务于错误处理的关键目的。当发生致命...
    编程 发布于2024-11-07
  • iostream 与 iostream.h:在现代 C++ 中应该使用哪个?
    iostream 与 iostream.h:在现代 C++ 中应该使用哪个?
    iostream 和 iostream.h 之间的区别在 C 中,程序员可能会遇到两个具有类似目的的术语:iostream 和 iostream.h 。本指南旨在阐明两者之间的根本区别。iostream.h:已弃用的旧版本iostream.h 是 C 库中的一个头文件,它提供一组输入/输出函数。对于...
    编程 发布于2024-11-07
  • VLONE Clothing:重新定义都市时尚的街头服饰品牌
    VLONE Clothing:重新定义都市时尚的街头服饰品牌
    VLONE 是少数几个在快速变化的市场中取得超越街头服饰行业所能想象的成就的品牌之一。 VLONE 由 A$AP Mob 集体的电影制片人之一 A$AP Bari 创立,现已发展成为一个小众项目,有时甚至成为都市时尚界的国际知名品牌。 VLONE 凭借大胆的图案、深厚的文化联系和限量版发售,在时尚界...
    编程 发布于2024-11-07
  • 如何使用PDO查询单行中的单列?
    如何使用PDO查询单行中的单列?
    使用 PDO 查询单行中的单列处理针对单行中特定列的 SQL 查询时,通常需要检索直接取值,无需循环。要使用 PDO 完成此操作,fetchColumn() 方法就派上用场了。fetchColumn() 的语法为:$col_value = $stmt->fetchColumn([column_...
    编程 发布于2024-11-07
  • 我是如何构建 PeerSplit:一款免费的点对点费用分摊应用程序 — 从构思到发布仅需数周时间
    我是如何构建 PeerSplit:一款免费的点对点费用分摊应用程序 — 从构思到发布仅需数周时间
    我构建了 PeerSplit——一个免费的、点对点的 Splitwise 替代品——从想法到发布仅用了两周时间! PeerSplit 是一款本地优先的应用程序,用于分配团体费用。它可以离线工作,100% 免费且私密,不需要注册或任何个人数据。 以下是我如何构建它以及我在此过程中学到的一切。 ...
    编程 发布于2024-11-07

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

Copyright© 2022 湘ICP备2022001581号-3