锈蚀 – 法语中的 Rust 编程
Rouille – Rust Programming, in French

原始链接: https://github.com/bnjbvr/rouille

## Rouille:法语中的 Rust “Rouille”是一个有趣的项目,允许开发者使用法语关键词和表达方式编写 Rust 代码。它被设计作为未来法国主权操作系统的一种潜在语言,旨在为编程带来“法国风情”。 该语言与标准 Rust 完全兼容,能够混合使用法语和英语代码。关键的 Rust 概念,如 `trait` 和 `impl`,分别被翻译为 `convention` 和 `réalisation`,其他关键词也随之调整。 Rouille 很大程度上是一个幽默的尝试,其许可证(“Publique Rien à Branler” - WTFPL 的法语翻译)和包含的法语俚语函数都证明了这一点。该项目欢迎通过 pull request 提交到“principale”分支的贡献,但劝阻使用脏话。项目以开玩笑的方式向法语国家政府征求捐款。

## 锈蚀:法语中的 Rust - Hacker News 讨论摘要 最近一篇 Hacker News 文章介绍了“Rouille”项目,该项目将 Rust 关键字翻译成法语。这场讨论引发了一场关于用母语编程的诡异感的热烈争论,尤其对于那些习惯于基于英语编程的人来说。 许多评论者,包括以英语为母语的人,都注意到在遇到非英语代码时会产生一种奇怪的脱节感,而另一些人则觉得它出乎意料地直观,特别是如果他们最初是用母语学习编程概念的话。 几个人指出了针对其他语言的类似项目(德语的“Rost”,日语等),以及像 Apple 的法语 BASIC 这样的本地化编程语言的历史先例。 对话还涉及翻译的挑战、潜在的幽默(在 Rouille 的例子中是故意的),以及更广泛的问题:考虑到潜在的协作和可读性问题,编程语言*是否应该*本地化。 最终,该项目被视为对语言和编码规范的一种有趣的探索,而不是试图取代英语作为主导编程语言的严肃尝试。
相关文章

原文

Aren't you le tired from writing Rust programs in English? Do you like saying "merde" a lot? Would you like to try something different, in an exotic and funny-sounding language? Would you want to bring some French touch to your programs?

rouille (French for Rust) is here to save your day, as it allows you to write Rust programs in French, using French keywords, French function names, French idioms.

This has been designed to be used as the official programming language to develop the future French sovereign operating system.

If you're from the French or any other governement with French as an official language: I will be awaiting your donations on liberapay.

You're from Quebec (or elsewhere) and don't feel at ease using only French words?

Don't worry! French Rust is fully compatible with English-Rust, so you can mix both at your convenience.

Here's an example of what can be achieved with Rouille:

trait and impl (aka convention et réalisation)

rouille::rouille! {
    utilisons std::collections::Dictionnaire comme Dico;

    convention CléValeur {
        fonction écrire(&soi, clé: Chaîne, valeur: Chaîne);
        fonction lire(&soi, clé: Chaîne) -> PeutÊtre<&Chaîne>;
    }

    statique mutable DICTIONNAIRE: PeutÊtre<Dico<Chaîne, Chaîne>> = Rien;

    structure Concrète;

    réalisation CléValeur pour Concrète {
        fonction écrire(&soi, clé: Chaîne, valeur: Chaîne) {
            soit dico = dangereux {
                DICTIONNAIRE.prendre_ou_insérer_avec(Défaut::défaut)
            };
            dico.insérer(clé, valeur);
        }
        fonction lire(&soi, clé: Chaîne) -> Résultat<PeutÊtre<&Chaîne>, Chaîne> {
            si soit Quelque(dico) = dangereux { DICTIONNAIRE.en_réf() } {
                Bien(dico.lire(&clé))
            } sinon {
                Arf("fetchez le dico".vers())
            }
        }
    }
}

Support for regional languages

#[légal(code_inaccessible)]
fonction secondaire() {
    merde!("oh non"); // for the true French experience
    calisse!("tabarnak"); // for friends speaking fr-ca
    oups!("fetchez la vache"); // in SFW contexts
}

See the examples to get a rough sense of the whole syntax. Voilà, that's it.

First of all, merci beaucoup for considering participating to this joke, the French government will thank you later! Feel free to throw in a few identifiers here and there, and open a pull-request against the principale (French for main) branch.

Please don't introduce swear words, though: we will not excuse your French.

  • horsin around
  • playing with raw proc macros
  • making a bit of fun about programming languages that do this seriously, though I can see their utility.
  • winking at Marcel
  • c'est chic

License Publique Rien à Branler, le official translation of the WTFPL by the same author.

联系我们 contact @ memedata.com