【100 种语言速成】第 2 节:Emojicode

举报
海拥 发表于 2022/04/30 17:29:45 2022/04/30
【摘要】 💂 个人网站:【 海拥】【摸鱼小游戏】🤟 风趣幽默的人工智能学习网站:👉人工智能💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】💬 便宜且实用的计算机相关书籍:👉进来逛逛大多数编程语言都是为了满足一些真正的需求而创建的,但有些只是一种艺术声明。有一个这样的艺术声明是Emojicode语言 —— 自称为“由 emojis 组成的成熟编程语言”。 Hello World让我们...

大多数编程语言都是为了满足一些真正的需求而创建的,但有些只是一种艺术声明。有一个这样的艺术声明是Emojicode语言 —— 自称为“由 emojis 组成的成熟编程语言”。

Hello World

让我们从写 Hello World 开始:

💭𝔀𝓸𝔀
🏁 🍇
  😀 🔤🄷🄴🄻🄻🄾, 🅆🄾🅁🄻🄳🔤❗️
🍉

如你所见,通常的关键字已被表情符号取代:

  • 💭 是注释行
  • 🏁 🍇 …🍉是主要功能
  • 🔤 就像引号
  • 😀…❗️就像打印
  • 一般来说,❗️ 结束参数列表

字符串和注释的内容不一定是表情符号,但我也用我的应用程序来制作花哨的文字来为它们增添趣味。

变量

我们可以使用 ➡️ 将事物放入变量中。变量在右边,这是相当非常规的选择,但并非完全闻所未闻。🧲 进行字符串插值:

🏁 🍇
  🔤ⓔⓥⓔⓡⓨⓞⓝⓔ🔤➡️who
  😀 🔤🄷🄴🄻🄻🄾, 🧲who🧲🔤❗️
🍉

列表和 for 循环

列表由🍿…🍆. 我得到了第一个表情符号,对第二个不太确定。

你可以使用 循环🔂 iterator list 🍇 body 🍉,这是一个不错的循环表情符号:

🏁 🍇
  🍿
    🔤Python🔤
    🔤JavaScript🔤
    🔤Ruby🔤
    🔤Emojicode🔤
    🔤PHP🔤
  🍆➡️languages
  😀 🔤Most important languages to learn🔤❗️
  🔂 language languages 🍇
    😀 language❗️
  🍉
🍉

FizzBu​​zz

我们这里还需要提前准备一些东西。

🔂 变量 🆕⏩ start afterend step 相当于 在(start, afterend, step)范围循环
i 🚮 15 🙌 0相当于 i % 15 == 0
↪️、🙅‍↪️ 和 🙅 相当于 if、else if 和else
有了它,我们可以编写一个 FizzBu​​zz,也可以使用花哨的字体进行输出:

🏁 🍇
  🔂 i 🆕⏩ 1 101 1 ❗ 🍇
    ↪️ i 🚮 15 🙌 0 🍇
      😀 🔤𝔽𝕚𝕫𝕫𝔹𝕦𝕫𝕫🔤 ❗
    🍉
    🙅↪️ i 🚮 3 🙌 0 🍇
      😀 🔤𝔽𝕚𝕫𝕫🔤 ❗
    🍉
    🙅↪️ i 🚮 5 🙌 0 🍇
      😀 🔤𝔹𝕦𝕫𝕫🔤 ❗
    🍉🙅🍇
      😀 🔤🧲i🧲🔤 ❗
    🍉
  🍉
🍉

函数

我们还需要知道一件事——函数。

我有点迷了,文档里没有说明任何关于函数的内容。它有闭包,所以我们认为这可能有效:

🏁 🍇
  🍇 i 🔢➡️🔢
    ↩️ i➕i
  🍉 ➡️ double

  😀 🔤🧲⁉️ double 21❗🧲🔤❗
🍉

我们需要声明类型。🔢➡️🔢 表示接受一个整数,并返回一个整数。↩️是回报。⁉️…❗ 是函数调用。还不错。

Y组合器失败

不幸的是这些不能递归,所以这根本不起作用!

🏁 🍇
  🍇 n 🔢➡️🔢
    ↪️ n ◀️ 3 🍇
      ↩️ 1
    🍉🙅🍇
      💭 Does not work
      ↩️ ⁉️ fib n➖1❗➕⁉️ fib n➖2❗
    🍉
  🍉 ➡️ fib

  😀 🔤🧲⁉️ fib 5❗🧲🔤❗
🍉

我考虑过使用旧的 Lisp 技巧,并将 fib 闭包作为参数传递给 fib,这样它就可以调用自己,但这只有在没有愚蠢的类型妨碍时才有效。如果类型系统支持递归类型,则类型系统可能支持 Y 组合器,但我认为 Emojicode 不支持。

Classes

它的文档没有说明任何关于函数的内容,但它有类。所以让我们用方法 🚀 定义类 🤖 来做 fib:

🐇 🤖 🍇
  🆕🍇
  🍉

  ❗️ 🚀 n 🔢➡️🔢 🍇
    ↪️ n ◀️ 3 🍇
      ↩️ 1
    🍉🙅🍇
      ↩️ 🚀👇 n➖1❗➕🚀👇 n➖2❗
    🍉
  🍉
🍉

🏁 🍇
  🆕🤖❗️ ➡️ fib

  🔂 i 🆕⏩ 1 31 1 ❗ 🍇
    🚀fib i❗️ ➡️ x
    😀 🔤🧲x🧲🔤❗
  🍉
🍉

如果你已经有了一定的研究,那么这段代码应该不会太难理解。

  • 🆕🤖❗️ ➡️ fib- 创建一个新的🤖并将其分配给fib变量
  • 🚀fib i❗️ ➡️ x- 在实例上调用🚀 fib,使用参数调用我们唯一的方法i
  • 🐇 🤖 🍇 … 🍉- 定义一个名字为🤖的类(类名必须是表情符号)
  • 🆕🍇🍉- 空构造函数,我们需要为每个类创建一些构造函数,即使它不做任何事情
  • ❗️ 🚀 n 🔢➡️🔢 🍇…🍉- 定义方法🚀…❗️ 接受一个整数参数n并返回一个整数
  • ↩️ 🚀👇 n➖1❗➕🚀👇 n➖2❗- 递归调用,🚀👇 n➖1❗ 是this.🚀(n-1)更常用的语言

统一码

这种语言当然是作为一种艺术声明而创造的(或者如果你更喜欢这样说的话,也可以作为一个笑话),但它提出了一个重要的问题。在整个编程历史中,几乎所有语言(APL 和 Raku 是最值得注意的例外,别担心——我们肯定会在本系列中介绍这两种语言)仅限于带有 ASCII 字符的纯文本。

即使 ASCII 符号显然还不够,所以符号被重用来表示十种不同的东西(尝试列出 JavaScript 或实际上几乎任何语言中字符的所有句法含义),以及像,这样{}的长字符串被用作假的额外字符。!==**=

所以问题是 - 编程语言是否应该继续将自己限制在 ASCII 上,还是终于到了拥抱整个 Unicode 的时候了?一个有趣的中间地带是像 Fira Code 这样的连字字体- 源代码仍然会说!==,但在编辑器中你会看到≢。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。